【问题标题】:GHCI can't load module if both package-conf and source path contains it如果 package-conf 和源路径都包含它,GHCI 无法加载模块
【发布时间】:2014-03-28 15:40:01
【问题描述】:

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

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

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

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

【问题讨论】:

  • 模块是否有花哨的名称或路径(例如,包括点或与模块名称不同的大小写)。能举个具体的例子吗?

标签: haskell ghci


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多