Haskell:检查是否为整数,或检查变量的类型

Jak*_*ake 14 haskell

所以假设你有一个变量n.

你想检查它是否是一个整数,或者更好,但检查它是什么类型.

我知道haskell中有一个函数,isDigit检查它是否是一个char.

但是,是否有一个函数检查n是否为整数,或者甚至更好,给出n的类型?

edo*_*don 20


import Data.Typeable
isInteger :: (Typeable a) => a -> Bool
isInteger n = typeOf n == typeOf 1
Run Code Online (Sandbox Code Playgroud)

但是你应该考虑你的代码,这与Haskell应该是不一样的,它可能不是你想要的.

  • 这几乎总是一种错误的做法.看起来这张海报是Haskell的初学者,我们应该尝试更好地理解他的问题,而不是给出这样的解决方案. (19认同)

Mat*_*len 11

如果您正在使用交互式Haskell提示符(如GHCi),则可以键入:t <expression>,这将为您提供表达式的类型.

例如

Prelude> :t 9
Run Code Online (Sandbox Code Playgroud)

9 :: (Num t) => t
Run Code Online (Sandbox Code Playgroud)

或者例如

Prelude> :t (+)
Run Code Online (Sandbox Code Playgroud)

(+) :: (Num a) => a -> a -> a
Run Code Online (Sandbox Code Playgroud)