NaN*_*NaN 38 int haskell types integer casting
是否可以将Integer转换为Int?另一个方向是可能的:toInteger.我知道Integer能够存储更大的值,但有时需要使用std-lib函数进行对话.我试过(n :: Int)和我找到的其他代码示例 - 但没有任何作用.
takeN :: Integer -> [a] -> [a]
takeN n l = take n l
Run Code Online (Sandbox Code Playgroud)
dav*_*420 47
使用fromIntegral.
takeN :: Integer -> [a] -> [a]
takeN n l = take (fromIntegral n) l
Run Code Online (Sandbox Code Playgroud)
请注意fromIntegral :: (Integral a, Num b) => a -> b,有时您需要额外的类型注释(例如(fromIntegral n :: Int)),但通常编译器可以推断出您想要的类型.
在你的例子的特殊情况下,在Data.List那里genericTake :: (Integral i) => i -> [a] -> [a],它做同样的事情,take但有一个更通用的类型.