我正在尝试使用runghc运行一些Safe 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。

最佳答案

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

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

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

关于haskell - 为什么使用-XSafe时runghc失败?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26279174/

10-11 22:34