GHC-Paketkonflikte

7

Ich versuche den folgenden Code mit GHC zu kompilieren:

%Vor%

Wenn ich nur ghc Test.hs starte, bekomme ich:

%Vor%

Also probiere ich ghc -package haskell98 Test.hs :

aus %Vor%

Es scheint nicht richtig, aber ich versuche ghc -package haskell98 -hide-package base Test.hs :

%Vor%

Also versuche ich ghc -package haskell98 -hide-package base -package haskell2010 Test.hs :

%Vor%

Wie kompiliere ich diesen Code? Ich benutze GHC 7.4.1.

    
Adam Crume 06.05.2012, 21:21
quelle

2 Antworten

13

Import Data.Maybe . Das haskell98 -Paket ist nicht länger kompatibel mit base , daher bringt die Verwendung der haskell98 -Module nur unnötigen Schmerz.

    
Daniel Fischer 06.05.2012, 21:26
quelle
12

Die Idee ist, dass Sie genau eines von haskell98 , base oder haskell2010 verwenden. Die haskell* -Pakete sind die Bibliotheken, die vom entsprechenden Sprachstandard vorgeschrieben sind. Wenn Sie also eines davon verwenden, haben Sie eine bessere Chance, mit Nicht-GHC-Compilern kompatibel zu sein. Allerdings verwenden die meisten Pakete auf Hackage sowieso base , also solltest du besser dran bleiben.

Haskell98 ist streng genommen älter als hierarchische Module, deshalb heißen sie alle Maybe und List und IO und so weiter. (Eigentlich denke ich, das sind bessere Namen als das, was sie jetzt sind, aber das ist eine andere Geschichte). Ihr Problem ist, dass Sie versucht haben, die alte Maybe und die neue System.IO gleichzeitig zu verwenden, und weder das alte noch das neue Paket bietet beides.

    
Ben Millwood 07.05.2012 10:45
quelle