Отрицательные удваивания или поплавки в Haskell (Macports)

StackOverflow https://stackoverflow.com/questions/4101599

  •  29-09-2019
  •  | 
  •  

Вопрос

Почему я получу ошибку сегментации, когда пытаюсь показать отрицательный двойник или поплавить? Нет проблем для негативных целых чисел.

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.

Другие советы

Самое важное, что вы должны понимать, это то, что недостатки сегментации должны никогда происходит в Хаскелле. Его типовая система гарантирует, что ничего подобного не идет неправильно »во время выполнения. Если вы видите ошибку сегментации, то в вашем компиляторе Haskell есть ошибка, либо вы взаимодействуете с C -кодом с Haskell FFI, и что -то пошло не так с вашим C -кодом. Однако в Pure Haskell Code вы никогда не должны видеть этого.

Март 2011 года: Это исправлено в выпуске GHC 7 Платформа Haskell, где и 32-битные, так и 64-битные порыты MAC на местном состоянии.

Работает для меня на 6.12.3. Может быть ошибка в этой версии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top