2010-11-04 37 views
4

Pourquoi ai-je une erreur de segmentation lorsque j'essaie d'afficher un double négatif ou un flottant? Il n'y a pas de problème pour les entiers négatifs.Double négatif ou flottant dans 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 

Je l'ai essayé de diverses manières, il semble que le nombre soit correctement compris mais pas montré. Version info:

ghci --version 
The Glorious Glasgow Haskell Compilation System, version 6.10.4 
+1

Non reproductible, 6.12.3. – kennytm

+1

définitivement un bug – Andrey

+0

Non reproductible sur 6.10.4 non plus. Aussi, quand je lance le code, ': t' montre les types généraux, et non les types par défaut (c'est-à-dire que j'ai' Num t => t' et 'Fractional t => t' comme types). – sepp2k

Répondre

6

GHC sur MacPorts semble être cassé. Voir https://trac.macports.org/ticket/25265

Envisagez plutôt d'installer la plate-forme Haskell à partir de haskell.org, qui inclut GHC 6.12.3 et un ensemble de goodies Haskelly.

+0

Oui, et macports est * vraiment * cassé. J'ai essayé d'installer macports haskell-platform à distance. Il a échoué, craché un rapport de journal, et je ne peux plus atteindre ma machine distante. – highBandWidth

+0

Je crains de ne pas avoir été très clair. Je voulais dire que vous pourriez vouloir installer le binaire fourni sur le lien ci-dessus plutôt que d'installer celui via MacPorts. Je suppose que la plate-forme MacPorts haskell inclurait à nouveau GHC 6.10.4. – Wesley

0

Fonctionne pour moi sur 6.12.3. Peut-être un bug dans cette version.

2

La chose la plus importante que vous devez réaliser est que les erreurs de segmentation doivent jamais se produire dans Haskell. Son système de type garantit que rien de tel ne se passe mal à l'exécution. Si vous voyez une erreur de segmentation, alors il y a un bogue dans votre compilateur Haskell ou vous vous interfacez avec le code C avec Haskell FFI et quelque chose s'est mal passé avec votre code C. Dans le code pur Haskell, cependant, vous ne devriez jamais voir cela.

1

Mars 2011: Ceci est corrigé dans la version GHC 7 du Haskell Platform, où les ports natifs Mac 32 bits et 64 bits sont en parfait état.