假设你有一个变量 n。
您想检查它是否是整数,或者更好的是检查它是什么类型。
我知道haskell中有一个函数isDigit可以检查它是否是一个字符。
但是有没有一个函数可以检查 n 是否为整数,或者更好的是,给出 n 的类型?
import Data.Typeable
isInteger :: (Typeable a) => a -> Bool
isInteger n = typeOf n == typeOf 1
但是你应该考虑一下你的代码,这不太像 Haskell 应该的样子,而且它可能不是你想要的。
如果您使用交互式 Haskell 提示符(如 GHCi),您可以输入
:t <expression>
,这将为您提供表达式的类型。
例如
Prelude> :t 9
给予
9 :: (Num t) => t
或者例如
Prelude> :t (+)
给予
(+) :: (Num a) => a -> a -> a
您可以使用 Data.Typeable 包中的 typeOf 方法来实现此目的。
import Data.Typeable
typeOf myVar
这个 VS Code 扩展包含一些片段,可以让您更轻松地记住这一点(
checkType
、getType
、typeOf
等)