GHCi, version 7.4.2: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> let fac 0 = 1
Prelude> let fac n = product [1..n]
Prelude> fac 100000
Segmentation fault: 11
これはなぜ起こっているのでしょうか?factorialでhaskellセグメント化エラーが発生する
fac :: Integer -> Integer
fac 0 = 1
fac n = product [1..n]
実行:
fac 10000
ので、ファイルからの読み込み、うーんOS X 10.8.2に
を実行している
に動作します。
も興味深いのは
fac :: Int -> Int
戻りfac 100000
ため0
を使用していることです。私は、(ちょうどJohnLと同じように)エラーが予想されます。
this siteは言及:
- は具体的には、SegmentationFaultは、タイプセーフでない言語がDoesNotUnderstandを綴る方法です。 Haskellのような型保証された静的型言語では、segfaultsは表示されません。
IOモナドとは何か?それが動作しますそれを型シグネチャ
fac :: Integer -> Integer
を与えることによって
downvoteに行く場合は、少なくとも理由を説明してください。 – beoliver
問題を診断するのに十分な情報がここにあるかどうかわかりません。これは「起こるべきではない」というカテゴリーにしっかりと入っているので、あなたのシステムでは非常に奇妙なことが起きています。 –
'fac 100000 :: Integer'は、ここにos xの456574桁の番号を与えます。 'fax 100000 :: Int'は' 0 :: Int'です。なぜなら、それは少し粗悪なので、2^32(または2^64)の倍数です。 – applicative