haskell - 找不到模块 `Data.Map' -- 它是隐藏包的成员

标签 haskell import module haskell-stack

首先,我创建了一个新工作区:

stack new xxxx
stack init
stack build

然后
cd xxx\app
stack ghci
import Data.Map

我可以导入其他模块,如 Data.CharData.List ,但我无法导入 Data.Map . GHCI 告诉我:
Could not find module 'Data.Map'
 It is a member of the hidden package 'containers-0.5.7.1@containers-0.5.7.1'.`

最佳答案

These general steps对我解决类似问题有帮助:

  • 使用HoogleStackage找到模块所在的包

    请注意 HoogleStackage区分大小写。抬头 Data.MapHoogle产生一个类似于下面的列表。 Stackage风格略有不同,但基本相同(主要是因为它也使用 Hoogle 进行查找)。

  • 结果标题下的绿色线条显示了包含的名称

    (1) 包装(小写)和

    (2) 模块(大写)。

    Hoogle result for Data.Map
  • 打开 project-name.cabal 在项目根目录下添加所需的包 build-depends:
    library
      hs-source-dirs:
          src
    
      build-depends:
          base >= 4.7 && < 5
        , containers
    
      exposed-modules:
          Lib
    
  • 问题 stack build 下载和构建依赖项

    (或 stack ghci 如果您打算在 REPL 中使用它)
  • 关于haskell - 找不到模块 `Data.Map' -- 它是隐藏包的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39683998/

    相关文章:

    haskell - 可执行文件的 ghc-options 会覆盖链接库的 ghc-options 吗?

    java - 从字符串中分配 freemarker 中的命名空间

    eclipse - 导入 Guava 源时无法解析导入 javax.inject

    xml - 如何在 Haskell 中验证 XML(通过 XSD 文件)?

    haskell - 使用 Data 和 Typeable 获取构造函数的参数类型

    haskell - 我将如何以无点风格重写这个回文验证器?

    php - 将csv文件上传并导入到mysql中的多个表中

    linux - 将 linux 内核中的函数导出到 linux 模块

    Perl:动态加载模块并访问导出的内容

    vue.js - 在vue中使用url-loader来获取特定目录中的图像