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

Haskell 为什么在使用-XSafe时runghc会失败?,haskell,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:

我试图用
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
的有效使用;错误是最令人困惑的。这是虫子吗


我正在使用Ubuntu 14.04,64位。

如评论中所述,只需添加导入系统。环境观察到的行为可以用以下解释

runghc
的实现如下:

它将调用
ghc
,这也显示了奇怪的行为:

ghc -XSafe -e ':main' Strange.hs
在evalatue表达式模式下实现ghc将添加有问题的导入:


我不确定这是不是一只虫子。我同意这很混乱。

不混乱。添加
import System.Environment
。orig程序在Ubuntu 12.04下的ghc 7.4.1上对我有效,但在Win7下的Haskell平台14.2.0.0下的ghc 7.8.3下失败。添加导入是不必要的,因为代码既不调用
getArgs
,也不调用
System.Environment
中的任何函数,而且也不能解决问题(对我来说,在Win7上的Haskell平台14.2.0.0上)。现在我发现这很奇怪。我无法在fedora上使用ghc-7.8.3复制您的错误。你能显示
runghc-v Strange.hs的输出吗?谢谢@ja!这似乎是一只虫子。我会很快报告的。@d8d0d65b3f7cf42:请参阅。