Отрицательные двойные или плавающие в Haskell (macports) - PullRequest
4 голосов
/ 05 ноября 2010

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

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

Ответы [ 4 ]

6 голосов
/ 05 ноября 2010

GHC на MacPorts, кажется, сломан. Смотри https://trac.macports.org/ticket/25265

Попробуйте вместо этого установить платформу Haskell с сайта haskell.org, который включает в себя GHC 6.12.3 и набор полезностей Haskelly.

2 голосов
/ 05 ноября 2010

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

1 голос
/ 03 мая 2011

Март 2011 : это исправлено в выпуске GHC 7 Haskell Platform , где 32-битные и 64-битные собственные порты Mac находятся в хорошем состоянии.

0 голосов
/ 05 ноября 2010

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

...