我今天更新了ghc,我的小程序停止了工作:
https://github.com/BrisFunctional/misere-oxo/blob/master/OXO/misere.hs
GHC现在是版本7.4.1-2,从我设法理解它现在默认为haskell2010标准,而不是haskell98.(正如我从ghc-pkg列表的输出中看到的):
haskell2010-1.1.0.1
(haskell98-2.0.0.1)
Run Code Online (Sandbox Code Playgroud)
所以我将"import List"更改为"import Data.List",我认为这是唯一的问题,但现在我得到以下内容:
misere.hs:1:1: Not in scope: `System.Environment.withArgs'
Run Code Online (Sandbox Code Playgroud)
这是从哪里来的,因为我从来没有导入System.Environment?任何提示?谢谢
编辑:我更新了github上的版本以反映此错误.实际上使用Data.List ghc完美地编译文件,因此runhaskell会产生这个问题.
Dan*_*her 14
不仅需要改变List
到Data.List
,而且还Random
对System.Random
进口getArgs
自System.Environment
(但此刻,代码既不使用getArgs
也不是从什么System.Random
,所以暂时,还可以去除这些进口).
旧的非分层模块只能从haskell98
包中访问,该包不再兼容base
.这意味着使用haskell98
模块还需要显式隐藏base
在命令行上,或者不在文件base
的依赖项字段中列出.cabal
.
我对错误信息感到有些惊讶,我希望它能说出来
Could not find module `System'
It is a member of the hidden package `haskell98-2.0.0.1'.
Run Code Online (Sandbox Code Playgroud)
但这种差异可能是一个怪癖runhaskell
.
如果你的程序是纯Haskell98,你可以使用以下GHC invokation:
ghc -package haskell98 -hide-package base
Run Code Online (Sandbox Code Playgroud)
但从长远来看,如果至少升级到分层模块名称会更好.使用Hoogle查找模块的名称.例如,http://www.haskell.org/hoogle/?hoogle=withArgs
列出System.Environment
为导出模块.