IntegerをIntにキャストすることは可能ですか?他の方向も可能です:toInteger。私はIntegerがより大きな値を格納できることを知っていますが、std-lib関数を使うために会話が必要になることがあります。私は(n :: Int)と私が見つけた他のコードサンプルを試しました - しかし何も動作しません。Haskell IntegerをIntに変換しますか?
takeN :: Integer -> [a] -> [a]
takeN n l = take n l
IntegerをIntにキャストすることは可能ですか?他の方向も可能です:toInteger。私はIntegerがより大きな値を格納できることを知っていますが、std-lib関数を使うために会話が必要になることがあります。私は(n :: Int)と私が見つけた他のコードサンプルを試しました - しかし何も動作しません。Haskell IntegerをIntに変換しますか?
takeN :: Integer -> [a] -> [a]
takeN n l = take n l
fromIntegral
を使用してください。
takeN :: Integer -> [a] -> [a]
takeN n l = take (fromIntegral n) l
注ので、時にはあなたは、余分な型注釈(例えば(fromIntegral n :: Int)
)が必要になりますが、通常、コンパイラはあなたが望むどのタイプを推測することができ、fromIntegral :: (Integral a, Num b) => a -> b
います。あなたの例の特殊な場合には
は、Data.List
にgenericTake :: (Integral i) => i -> [a] -> [a]
はtake
としてではなく、より一般的なタイプで同じことをしている、そこにあります。
fromInteger
は(fromIntegral
がちょうどfromInteger . toInteger
ですが、第二の部分をスキップすることができますので、あなたがとにかくInteger
を持っているので)