我正在尝试运行这个来自Haskell wiki的简单示例.
import GHC
import GHC.Paths ( libdir )
import DynFlags
main =
defaultErrorHandler defaultFatalMessager defaultFlushOut $ do
runGhc (Just libdir) $ do
dflags <- getSessionDynFlags
setSessionDynFlags dflags
target <- guessTarget "test_main.hs" Nothing
setTargets [target]
load LoadAllTargets
Run Code Online (Sandbox Code Playgroud)
我得到的错误消息是:
amy@wombat$ ghc --make amy15.hs
amy15.hs:1:8:
Could not find module ‘GHC’
It is a member of the hidden package ‘ghc-7.8.3’.
Use -v to see a list of the files searched for.
amy15.hs:3:8:
Could not find module ‘DynFlags’
It is a member of the hidden package ‘ghc-7.8.3’.
Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)
现在,ghc-7.8.3我正在使用它进行编译,所以显然已经安装了包.
amy@wombat$ cabal info ghc
* ghc (library)
Versions available: [ Not available from server ]
Versions installed: 7.8.3
... and so on
Run Code Online (Sandbox Code Playgroud)
为什么GHC不能看到ghc包装?
显然ghc,默认情况下隐藏包,至少如果你按照我的方式手动安装ghc,而不是安装Haskell平台.所以我需要"取消隐藏"包,如下所示:
sudo ghc-pkg expose ghc
Run Code Online (Sandbox Code Playgroud)
大多数包都是隐藏的.
暂时取消隐藏它们,您可以使用ghc --make amy15.hs -package ghc-7.8.3.
要永久取消隐藏,请使用@mhwombat建议的方法.