ghci segfault с простой математикой
Кто-нибудь может мне это объяснить? Я использую последнюю версию GHC.
Prelude> let f x = 1/((x**2)-36)
Prelude> f (0 - 6.5)
0.16
Prelude> f (0 - 5.999)
-Segmentation fault
Prelude> f (0 - 5)
-Segmentation fault
Спасибо!
Изменить: GHCi версия 6.10.4, Mac OS 10.6, Intel Macbook Pro
Edit2: GHCi 7.0.3 не имеет этой проблемы.
3 ответа
Интересно, что здесь я не вижу ошибки (в MacOS это так):
GHCi, version 7.0.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.
Loading package ffi-1.0 ... linking ... done.
Prelude> let f x = 1/((x**2)-36)
Prelude> f (0 - 6.5)
0.16
Prelude> f (0 - 5)
-9.090909090909091e-2
Prelude>
Работает на Windows XP с GHC 7.02:
GHCi, version 7.0.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.
Loading package ffi-1.0 ... linking ... done.
Prelude> let f x = 1/((x**2)-36)
Prelude> f (0 - 6.5)
0.16
Prelude> f (0 - 5.999)
-83.34027835650902
Prelude> f (0 - 5)
-9.090909090909091e-2
Prelude>
GHCi версия 6.10.4, Mac OS 10.6, Intel Macbook Pro
Первое, что нужно сделать в такой ситуации, - это проверить последнюю стабильную версию программного обеспечения.
- GHC 6.10.4 был выпущен в июле 2009 года.
- GHC 7.0.3 доступен сейчас, в мае 2011 года.
Поэтому обновитесь до GHC 7.0.3 через платформу Haskell и проверьте снова.
Если у вас все еще есть ошибка, сообщите о ней через систему отслеживания ошибок, так как любой сбой требует исправления ошибки с высоким приоритетом.