haskell - 如果 package-conf 和源路径都包含该模块,则 GHCI 无法加载该模块

标签 haskell ghci

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

  • :module不过加载效果很好
  • 或者我可以:load FooModule , :m清除导入列表,然后 import FooModule
  • 或者我可以从 -i 中删除路径然后就可以正常导入了

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

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

最佳答案

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

关于haskell - 如果 package-conf 和源路径都包含该模块,则 GHCI 无法加载该模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22717279/

相关文章:

postgresql - 我应该使用哪个 postgresql 包?

haskell - 为什么 mconcat 需要一个列表而不是一个可折叠的?

macos - 在 MacOS X 上的 GHCi 中工作的 Haskell 图形库

haskell - 内存在 ghci 中因严格求和/严格折叠而爆炸

Haskell:数据类型

haskell - 被 (->) 作为 monad 和 functor 的实例所吸引

haskell - 使用列表理解的带有谓词的自定义过滤器函数

haskell - 如何使用Hcodecs编写WAV文件

haskell - 在 Haskell 中查找列表的最大元素和索引

debugging - 测试顶级函数内定义的内部函数并与之交互的最佳方法是什么?