【问题标题】:Haskell: Check if integer, or check type of variableHaskell:检查是否为整数,或检查变量的类型
【发布时间】:2010-11-09 08:05:37
【问题描述】:

假设你有一个变量 n。

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

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

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

【问题讨论】:

    标签: haskell


    【解决方案1】:
    
    import Data.Typeable
    isInteger :: (Typeable a) => a -> Bool
    isInteger n = typeOf n == typeOf 1
    

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

    【讨论】:

    • 鉴于他提到了isDigit,我认为他想检查一个字符串是否代表一个整数 - 而不是给定变量 是否 一个整数,即使那是标题说。您的类型签名也错误:您缺少 Typeable 约束。
    • 这几乎总是错误的方法。看来发帖者是 Haskell 初学者,我们应该试着更好地理解他的问题,而不是这样给出解决方案。
    【解决方案2】:

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

    例如

    Prelude> :t 9
    

    给予

    9 :: (Num t) => t
    

    或例如

    Prelude> :t (+)
    

    给予

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

    【讨论】:

    • 如果您使用 Intellij 的 Haskell 插件会怎样?
    • @Displee edon's answer 似乎涵盖了这一点。
    猜你喜欢
    • 1970-01-01
    • 2011-08-25
    • 2013-10-14
    • 2011-01-12
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2011-03-30
    相关资源
    最近更新 更多