整数を整数にキャストすることは可能ですか?他の方向は可能です: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
と同じことをしますが、より一般的な型を持ちます。
fromInteger
もあります(fromIntegral
はfromInteger . toInteger
、しかし、とにかくInteger
があるので、2番目の部分をスキップできます)