Отрицательные удваивания или поплавки в Haskell (Macports)
Вопрос
Почему я получу ошибку сегментации, когда пытаюсь показать отрицательный двойник или поплавить? Нет проблем для негативных целых чисел.
Prelude> let a = 4
Prelude> :t a
a :: Integer
Prelude> let b = -4
Prelude> b
-4
Prelude> :t b
b :: Integer
Prelude> let c = 5.6
Prelude> :t c
c :: Double
Prelude> let d = -5.6
Prelude> :t d
d :: Double
Prelude> show d
"-Segmentation fault
Я попробовал это по -разному, кажется, что число правильно понято, но не показано. Информация о версии:
ghci --version
The Glorious Glasgow Haskell Compilation System, version 6.10.4
Решение
GHC на Macports, кажется, сломан. Видеть https://trac.macports.org/ticket/25265
Вместо этого рассмотрим установку платформы Haskell от haskell.org, которая включает в себя GHC 6.12.3 и пакет вкусностей Haskelly.
- Информация: http://hackage.haskell.org/platform/
- Связь: http://hackage.haskell.org/platform/mac.html
Другие советы
Самое важное, что вы должны понимать, это то, что недостатки сегментации должны никогда происходит в Хаскелле. Его типовая система гарантирует, что ничего подобного не идет неправильно »во время выполнения. Если вы видите ошибку сегментации, то в вашем компиляторе Haskell есть ошибка, либо вы взаимодействуете с C -кодом с Haskell FFI, и что -то пошло не так с вашим C -кодом. Однако в Pure Haskell Code вы никогда не должны видеть этого.
Март 2011 года: Это исправлено в выпуске GHC 7 Платформа Haskell, где и 32-битные, так и 64-битные порыты MAC на местном состоянии.
Работает для меня на 6.12.3. Может быть ошибка в этой версии.