如果package-conf和source路径都包含它,GHCI无法加载模块

时间:2014-03-28 15:40:01

标签: haskell ghci

我在 GHCI 中遇到一个奇怪的情况,不知道是否有人观察过类似的情况。对于某些模块,当我在-package-conf-i的搜索路径中都有它时,当我尝试使用'module is not loaded: FooModule'导入模块时,GHCI会失败。

  • :module加载正常
  • 或者我可以:load FooModule:m清除导入列表,然后import FooModule
  • 或者我可以从-i删除路径然后导入正常

GHC中跟踪此为otherwise -> modNotLoadedError m loc个案,其中otherwisemodulePackageId = this_pkg(其中我不知道的含义)。

这不是完全系统化的,有一些模块既包含在源包中,也包含在源路径中,但可以导入。

1 个答案:

答案 0 :(得分:1)

GHC只知道已安装的软件包。要查看已安装的软件包,请使用ghc-pkg list命令:

$ ghc-pkg list
/usr/lib/ghc-6.12.1/package.conf.d:
    Cabal-1.7.4
    array-0.2.0.1
    base-3.0.3.0
    base-4.2.0.0
    bin-package-db-0.0.0.0
    binary-0.5.0.1
    bytestring-0.9.1.4
    containers-0.2.0.1
    directory-1.0.0.2
    (dph-base-0.4.0)
    (dph-par-0.4.0)
    (dph-prim-interface-0.4.0)
    (dph-prim-par-0.4.0)
    (dph-prim-seq-0.4.0)
    (dph-seq-0.4.0)
    extensible-exceptions-0.1.1.0
    ffi-1.0
    filepath-1.1.0.1
    (ghc-6.12.1)
    ghc-prim-0.1.0.0
    haskeline-0.6.2
    haskell98-1.0.1.0
    hpc-0.5.0.2
    integer-gmp-0.1.0.0
    mtl-1.1.0.2
    old-locale-1.0.0.1
    old-time-1.0.0.1
    pretty-1.0.1.0
    process-1.0.1.1
    random-1.0.0.1
    rts-1.0
    syb-0.1.0.0
    template-haskell-2.4.0.0
    terminfo-0.3.1
    time-1.1.4
    unix-2.3.1.0
    utf8-string-0.3.4