Haskell转换整型到整型



是否可以将Integer转换为Int ?另一种可能的方向是:toInteger。我知道Integer能够存储更大的值,但有时需要对话才能使用标准库中的函数。我尝试了(n :: Int)和我找到的其他代码样本-但没有任何工作。

takeN :: Integer -> [a] -> [a]
takeN n l = take n l

使用fromIntegral

takeN :: Integer -> [a] -> [a]
takeN n l = take (fromIntegral n) l

注意fromIntegral :: (Integral a, Num b) => a -> b,所以有时你需要一个额外的类型注释(例如(fromIntegral n :: Int)),但通常编译器可以推断出你想要的类型。

在您的示例中的特殊情况下,在Data.List中有genericTake :: (Integral i) => i -> [a] -> [a],它与take做同样的事情,但具有更一般的类型。

还有fromInteger (fromIntegral只是fromInteger . toInteger,但既然你有Integer,所以你可以跳过第二部分)

最新更新