Haskell: проверьте, является ли целое число или проверяет тип переменной
Итак, скажем, у вас есть переменная n.
Вы хотите проверить, целое ли оно, или еще лучше, проверить, какой тип он есть.
Я знаю, что есть функция в haskell, isDigit, которая проверяет, является ли это char.
Однако существует ли функция, которая проверяет, является ли n целым или даже лучше, дает тип n?
Ответы
Ответ 1
Если вы используете интерактивную подсказку Haskell (например, GHCi), вы можете ввести :t <expression>
, и это даст вам тип выражения.
например.
Prelude> :t 9
дает
9 :: (Num t) => t
или, например,
Prelude> :t (+)
дает
(+) :: (Num a) => a -> a -> a
Ответ 2
import Data.Typeable
isInteger :: (Typeable a) => a -> Bool
isInteger n = typeOf n == typeOf 1
Но вы должны подумать о своем коде, это не очень похоже на Haskell, и это, вероятно, не то, что вы хотите.