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

问题描述 投票:0回答:3

假设你有一个变量 n。

您想检查它是否是整数,或者更好的是检查它是什么类型。

我知道haskell中有一个函数isDigit可以检查它是否是一个字符。

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

haskell
3个回答
21
投票

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

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


16
投票

如果您使用交互式 Haskell 提示符(如 GHCi),您可以输入

:t <expression>
,这将为您提供表达式的类型。

例如

Prelude> :t 9

给予

9 :: (Num t) => t

或者例如

Prelude> :t (+)

给予

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

0
投票

您可以使用 Data.Typeable 包中的 typeOf 方法来实现此目的。

import Data.Typeable

typeOf myVar

这个 VS Code 扩展包含一些片段,可以让您更轻松地记住这一点(

checkType
getType
typeOf
等)

© www.soinside.com 2019 - 2024. All rights reserved.