12
假設你有一個變量n。Haskell:檢查整數或變量的檢查類型
你想檢查它是否是一個整數,或者更好的檢查它是什麼類型。
我知道haskell中有一個函數,isDigit檢查它是否是char。
但是有沒有函數檢查n是否是整數,甚至更好,給出了n的類型?
假設你有一個變量n。Haskell:檢查整數或變量的檢查類型
你想檢查它是否是一個整數,或者更好的檢查它是什麼類型。
我知道haskell中有一個函數,isDigit檢查它是否是char。
但是有沒有函數檢查n是否是整數,甚至更好,給出了n的類型?
如果您使用的是交互式Haskell提示(如GHCi),則可以輸入:t <expression>
,這將爲您提供表達式的類型。
例如
Prelude> :t 9
給出
9 :: (Num t) => t
或例如
Prelude> :t (+)
給
(+) :: (Num a) => a -> a -> a
import Data.Typeable
isInteger :: (Typeable a) => a -> Bool
isInteger n = typeOf n == typeOf 1
但是,你應該想想你的代碼,這是不是很喜歡哈斯克爾是應該的,它可能不是你想要的。
考慮到他提到'isDigit',我想他想檢查一個字符串是否代表一個整數 - 而不是一個給定的變量*是一個整數,儘管這是標題所說的。你的類型簽名也是錯誤的:你錯過了Typeable約束。 – sepp2k 2010-11-09 13:21:24
這幾乎總是一個錯誤的方法。它看起來像海報是一個Haskell初學者,我們應該嘗試更好地理解他的問題,而不是像這樣的解決方案。 – 2010-11-09 16:51:53