2012-05-07 10 views
5

Po aktualizacji do wersji 7.4, musiałem usunąć import System z różnych skryptów, ale to czyni je niekompatybilnymi z Runhaskell z GHC 6.0, który jest nadal używany w wielu środowiskach.runhaskell - jak zrobić skrypt zgodny z ghc 7.4 i 6?

Czy istnieje sposób na obsługę obu wersji?

komunikat dostaję kiedy uruchomić skrypt z import System w ghc 7.4:

% ./script.hs 
    Could not find module `System' 
    It is a member of the hidden package `haskell98-2.0.0.1'. 
    Use -v to see a list of the files searched for. 
+3

Dlaczego nadal używany jest GHC 6.0? Jest od 2003. –

+0

Powiedziałbym, '{- # Language CPP # -}' z [zwykłe manipulacje] (http://hackage.haskell.org/packages/archive/containers/0.5.0.0/doc/html /src/Data-Graph.html), ale nie sądzę, że GHC-6.0 wspierał ten sposób pisania :) Należy pamiętać, że nawet ostatnie uściski wspierają hierarchiczny schemat nazewnictwa. – applicative

Odpowiedz

5

Moduł System był stary Haskell-98 Moduł kompatybilność, a wszystkie jego funkcje można znaleźć w modułach System.Cmd, System.Environment i System.Exit, z których wszystkie są dostępne od co najmniej tak daleko jak GHC 5.04, więc powinno być prostą sprawą jest tylko poprawienie twoich instrukcji importu, aby zamiast tego użyć odpowiedniego podzestawu tych modułów.

+0

Używałem 'System.Process' do importowania' systemu'; 'System.Cmd' jest zgodny sposób, dzięki! – Penz

6

Moduł System jest przestarzała niehierarchiczne moduł Haskell 98; należy zaimportować odpowiednie moduły hierarchiczne (takie jak: System.Environment, System.IO i System.Exit; zamiast tego należy zapoznać się z base package dla pełnej listy). Najprostszym sposobem na to może być po prostu usunięcie importu System i użycie Hoogle, aby dowiedzieć się, które moduły zawierają definicje, od błędów kompilatora.

W starszych modułach GHC moduły Haskell 98 mogą być używane w połączeniu z modułami hierarchicznymi, ale nie jest to już możliwe. Zmiana importu powinna być stosunkowo łatwa i przyniesie twój program na bieżąco z najnowszym standardem Haskell 2010.