【问题标题】:runhaskell - how to make a script compatible with ghc 7.4 and 6?runhaskell - 如何使脚本与 ghc 7.4 和 6 兼容?
【发布时间】:2012-05-07 16:26:17
【问题描述】:

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

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

当我在 ghc 7.4 中使用 import System 运行脚本时收到的消息:

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

【问题讨论】:

  • 为什么还在使用 GHC 6.0?它是从 2003 年开始的。
  • 我会说,{-#Language CPP#-}the usual manipulations,但我认为 GHC-6.0 不支持这种写法:) 请注意,即使是最近的拥抱也支持分层命名方案。

标签: haskell


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    System 模块是一个旧的 Haskell-98 兼容性模块,它的所有功能都可以在 System.CmdSystem.EnvironmentSystem.Exit 模块中找到,至少早在很久以前这些模块就已经可用了如GHC 5.04,因此只需修复您的导入语句以使用这些模块的某个适当子集,这应该是一件简单的事情。

    【讨论】:

    • 我使用System.Process导入systemSystem.Cmd 是兼容方式,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    相关资源
    最近更新 更多