是否可以將Integer轉換爲Int?另一個方向是可能的:toInteger。我知道Integer能夠存儲更大的值,但有時需要使用std-lib函數進行對話。我試過(n :: Int)和我找到的其他代碼示例 - 但沒有任何效果。Haskell將整數轉換爲Int?
takeN :: Integer -> [a] -> [a]
takeN n l = take n l
是否可以將Integer轉換爲Int?另一個方向是可能的:toInteger。我知道Integer能夠存儲更大的值,但有時需要使用std-lib函數進行對話。我試過(n :: Int)和我找到的其他代碼示例 - 但沒有任何效果。Haskell將整數轉換爲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
反正這樣你就可以跳過第二部分)