5

ghc 7.4にアップグレードした後import System、さまざまなスクリプトから削除する必要がありましたが、それにより、多くの環境でまだ使用されているGHC6.0のrunhaskellと互換性がなくなります。

両方のバージョンをサポートする方法はありますか?

import Systemghc 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.
4

2 に答える 2

6

このSystemモジュールは、非推奨の非階層型Haskell98モジュールです。System.Environment代わりに、必要な関連する階層モジュール( 、、、System.IOなど。完全なリストについては基本パッケージSystem.Exitを参照してください)をインポートする必要があります。これを実現する最も簡単な方法は、インポートを削除し、 Hoogleを使用して、コンパイラエラーから必要な定義が含まれているモジュールを見つけることです。System

古いGHCでは、Haskell 98モジュールを階層モジュールと組み合わせて使用​​できましたが、これは不可能になりました。インポートの変更は比較的簡単で、プログラムを最新のHaskell2010標準に更新します。

于 2012-05-07T16:30:23.597 に答える
5

モジュールはSystem古いHaskell-98互換性モジュールであり、そのすべての機能はSystem.CmdSystem.EnvironmentおよびSystem.Exitモジュールにあります。これらはすべて、少なくともGHC 5.04までさかのぼって利用可能であるため、修正するだけで簡単にできます。ステートメントをインポートして、代わりにそれらのモジュールの適切なサブセットを使用します。

于 2012-05-07T16:45:47.693 に答える