为什么使用-XSafe时runghc会失败?

时间:2014-10-09 13:04:43

标签: haskell

我正在尝试使用runghc运行一些安全Haskell代码,但它似乎对我不起作用。

bgeron@tinker:/tmp/wtf$ ls
Strange.hs
bgeron@tinker:/tmp/wtf$ cat Strange.hs 
module Strange where

main :: IO ()
main = do
    return ()
bgeron@tinker:/tmp/wtf$ runghc -XSafe Strange

Strange:1:1: Not in scope: `System.Environment.withArgs'
bgeron@tinker:/tmp/wtf$ runghc --version
runghc 7.6.3

我认为这是对runghc的有效使用;这个错误最令人困惑。这是一个错误吗?

我正在使用64位的Ubuntu 14.04。

2 个答案:

答案 0 :(得分:1)

观察到的行为可以通过以下方式解释。

runghc的实施在这里: https://ghc.haskell.org/trac/ghc/browser/ghc/utils/runghc/runghc.hs

它会对ghc进行以下调用,这也会显示奇怪的行为:

ghc -XSafe -e ':main' Strange.hs

在evalatue-expression模式下执行ghc会添加违规导入: https://ghc.haskell.org/trac/ghc/browser/ghc/ghc/InteractiveUI.hs#L1154

我不确定这是不是一个错误。我同意这令人困惑。

答案 1 :(得分:-1)

如评论中所述,只需添加import System.Environment

即可