是否可以将整数转换为整数?另一个方向是可能的:toInteger。我知道Integer可以存储更大的值,但有时需要使用std-lib函数进行对话。我尝试了(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一样,但具有更通用的类型。

07-24 09:48