【发布时间】:2010-11-09 08:05:37
【问题描述】:
假设你有一个变量 n。
你想检查它是否是一个整数,或者更好的是检查它是什么类型。
我知道 haskell 中有一个函数 isDigit 可以检查它是否是一个字符。
但是有一个函数可以检查 n 是否为整数,或者更好的是,给出 n 的类型?
【问题讨论】:
标签: haskell
假设你有一个变量 n。
你想检查它是否是一个整数,或者更好的是检查它是什么类型。
我知道 haskell 中有一个函数 isDigit 可以检查它是否是一个字符。
但是有一个函数可以检查 n 是否为整数,或者更好的是,给出 n 的类型?
【问题讨论】:
标签: haskell
import Data.Typeable
isInteger :: (Typeable a) => a -> Bool
isInteger n = typeOf n == typeOf 1
但是您应该考虑一下您的代码,这与 Haskell 应该的不太一样,而且它可能不是您想要的。
【讨论】:
isDigit,我认为他想检查一个字符串是否代表一个整数 - 而不是给定变量 是否 一个整数,即使那是标题说。您的类型签名也错误:您缺少 Typeable 约束。
如果您使用交互式 Haskell 提示符(如 GHCi),您可以输入 :t <expression>,这将为您提供表达式的类型。
例如
Prelude> :t 9
给予
9 :: (Num t) => t
或例如
Prelude> :t (+)
给予
(+) :: (Num a) => a -> a -> a
【讨论】: