12
假设你有一个变量n。Haskell:检查整数或变量的检查类型
你想检查它是否是一个整数,或者更好的检查它是什么类型。
我知道haskell中有一个函数,isDigit检查它是否是char。
但是有没有函数检查n是否是整数,甚至更好,给出了n的类型?
假设你有一个变量n。Haskell:检查整数或变量的检查类型
你想检查它是否是一个整数,或者更好的检查它是什么类型。
我知道haskell中有一个函数,isDigit检查它是否是char。
但是有没有函数检查n是否是整数,甚至更好,给出了n的类型?
如果您使用的是交互式Haskell提示(如GHCi),则可以输入:t <expression>
,这将为您提供表达式的类型。
例如
Prelude> :t 9
给出
9 :: (Num t) => t
或例如
Prelude> :t (+)
给
(+) :: (Num a) => a -> a -> a
import Data.Typeable
isInteger :: (Typeable a) => a -> Bool
isInteger n = typeOf n == typeOf 1
但是,你应该想想你的代码,这是不是很喜欢哈斯克尔是应该的,它可能不是你想要的。
考虑到他提到'isDigit',我想他想检查一个字符串是否代表一个整数 - 而不是一个给定的变量*是一个整数,尽管这是标题所说的。你的类型签名也是错误的:你错过了Typeable约束。 – sepp2k 2010-11-09 13:21:24
这几乎总是一个错误的方法。它看起来像海报是一个Haskell初学者,我们应该尝试更好地理解他的问题,而不是像这样的解决方案。 – 2010-11-09 16:51:53