2012-05-07 9 views
5

ghc 7.4'e yükseltildikten sonra, çeşitli komut dosyalarından import System'u kaldırmak zorunda kaldım, ancak bu, birçok ortamda hala kullanılmakta olan GHC 6.0'dan runhaskell ile uyumsuz hale getiriyor.runhaskell - ghc 7.4 ve 6 ile uyumlu bir senaryo nasıl oluşturulur?

Her iki sürümü de desteklemenin bir yolu var mı?

I ghc 7.4 import System bir senaryo çalıştırmak zaman elde mesajı:

% ./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

Neden GHC 6.0 hala kullanılıyor? 2003. –

+0

diyorum ki, {- # Dil CPP # -} 'ile [olağan manipülasyonlar] (http://hackage.haskell.org/packages/archive/containers/0.5.0.0/doc/html /src/Data-Graph.html), ama GHC-6.0'ın bu şekilde yazıldığını düşünmüyorum :) En son sarılmalar bile hiyerarşik adlandırma şemasını destekliyor. – applicative

cevap

5

System modül eski Haskell-98 uyumluluk modülü ve tüm işlevselliği tüm en azından kadar geriye GHC 5.04 olarak beri mevcut olmuştur System.Cmd, System.Environment ve System.Exit modülleri bulunabilir, böylece olmalıdır Bunun yerine, söz konusu modüllerin bazı uygun alt kümelerini kullanmak için içe aktarma ifadelerinizi basitçe düzeltmeniz yeterlidir.

+0

'system'ı içe aktarmak için' System.Process' kullanıyordum; System.Cmd' ile uyumlu bir yoldur, teşekkürler! – Penz

6

System modülü kaldırılmış hiyerarşik olmayan Haskell 98 modüldür; İlgili hiyerarşik modülleri (örneğin, System.Environment, System.IO ve System.Exit; tam bir liste için base package'a bakın) almanız gerekir. Bunu gerçekleştirmenin en kolay yolu, System içeri aktarımını kaldırmak ve gereksinim duyduğunuz tanımların hangi modüllerde olduğunu bulmak için Hoogle'u kullanmak olabilir.

Daha eski GHC'lerde, Haskell 98 modülleri hiyerarşik modüller ile birlikte kullanılabilir, ancak bu artık mümkün değildir. İthalatların değiştirilmesi nispeten kolay olmalı ve programınızı en güncel Haskell 2010 standardı ile güncel hale getirmelidir.

İlgili konular