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
Czy ktoś ma pojęcie, dlaczego tak się dzieje?Błąd segmentacji haskell z silnikiem
fac 10000
działa
działa na OS X 10.8.2
Hmm, tak ładuje z pliku:
fac :: Integer -> Integer
fac 0 = 1
fac n = product [1..n]
przebiegów.
również interesujące jest to, że za pomocą
fac :: Int -> Int
powraca 0
dla fac 100000
. Spodziewałbym się (tak jak JohnL) błędu.
this site wspomina:
- Dokładniej SegmentationFault jest sposobem językiem typu niebezpieczne zaklęcia DoesNotUnderstand. W typowo statycznych językach, takich jak Haskell, nie powinieneś widzieć segfaultów.
jest to coś zrobić z monady IO?
Jeśli zamierzasz przegłosować, proszę przynajmniej wyjaśnić, dlaczego. – beoliver
Nie jestem pewien, czy jest wystarczająco dużo informacji, aby zdiagnozować problem. To jest zdecydowanie w kategorii "nigdy nie powinno się zdarzyć", więc coś bardzo dziwnego dzieje się z twoim systemem. –
'fac 100000 :: Integer' daje tutaj 456574 cyfry na os x. 'fax 100000 :: Int' to' 0 :: Int', ponieważ, mówiąc krótko, jest to wielokrotność 2^32 (lub 2^64). – applicative