Haskell:检查整数,或者检查变量的类型

18

假设您拥有一个变量n。

您想要检查它是否为整数,甚至更好的是检查它的类型。

我知道在Haskell中有一个名为isDigit的函数,可以检查它是否为字符。

但是,是否有一个函数可以检查n是否为整数,或者更好的是,提供n的类型信息呢?

2个回答

21

import Data.Typeable
isInteger :: (Typeable a) => a -> Bool
isInteger n = typeOf n == typeOf 1

但是你应该考虑一下你的代码,它并不太像Haskell应该是什么样子的,而且很可能也不是你想要的。


鉴于他提到了isDigit,我认为他想要检查一个字符串是否表示一个整数,而不是检查一个给定的变量是否为整数,尽管标题是这样说的。此外,你的类型签名是错误的:你漏掉了Typeable约束条件。 - sepp2k
24
这几乎总是一种错误的方法。看起来发帖者是Haskell初学者,我们应该尽力更好地理解他的问题,而不是给出这样的解决方案。 - Chris Eidhof

16
如果您正在使用交互式的Haskell提示符(例如GHCi),则可以键入:t <expression>,这将显示表达式的类型。
例如:
Prelude> :t 9

提供

9 :: (Num t) => t

或例如。
Prelude> :t (+)

提供

(+) :: (Num a) => a -> a -> a

如果您正在使用Intellij的Haskell插件呢? - Displee
@Displee edon的回答似乎已经涵盖了这个问题。 - Matt Ellen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接