5

在我升级到 ghc 7.4 后,我不得不import System从各种脚本中删除,但这使得它们与 GHC 6.0 中的 runhaskell 不兼容,后者仍在许多环境中使用。

有没有办法同时支持这两个版本?

import System在 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.
4

2 回答 2

6

System模块是已弃用的非分层 Haskell 98 模块;您应该导入您需要的相关分层模块(例如System.EnvironmentSystem.IOSystem.Exit;请参阅基本包以获取完整列表)。完成此操作的最简单方法可能是简单地删除System导入,并使用Hoogle从编译器错误中找出您需要的定义所在的模块。

在较旧的 GHC 中,Haskell 98 模块可以与分层模块一起使用,但这不再可能。更改导入应该相对容易,并且将使您的程序与最新的 Haskell 2010 标准保持同步。

于 2012-05-07T16:30:23.597 回答
5

System模块是一个旧的 Haskell-98 兼容模块,它的所有功能都可以在System.Cmd,System.EnvironmentSystem.Exit模块中找到,这些模块至少早在GHC 5.04就已经可用,所以只需修复你的import 语句来使用这些模块的一些适当的子集。

于 2012-05-07T16:45:47.693 回答