找不到模块`Data.Map'

时间:2016-09-25 06:14:31

标签: 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'.`

2 个答案:

答案 0 :(得分:22)

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

  1. 使用HoogleStackage查找模块所在的软件包

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

  2. 结果标题下的绿色线条显示包含

    的名称

    (1)包裹(小型)和

    (2)模块(大写)。

    Hoogle result for Data.Map

      项目根目录中
    1. 打开 project-name.cabal 并在 build-depends:下添加所需的包

      library
        hs-source-dirs:
            src
      
        build-depends:
            base >= 4.7 && < 5
          , containers
      
        exposed-modules:
            Lib
      
    2. 问题 stack build 下载和构建依赖关系

      (或stack ghci如果您打算在REPL中使用它

答案 1 :(得分:12)

您可以导入Data.CharData.List的原因是它们是包base的一部分,它包含在GHC中并始终加载GHCi。相比之下,Data.Map位于外部库containers中。使用stack ghci加载它的一种方法是在build-depends上添加一个containers的cabal文件。这将把它安装在xxxx的堆栈环境中,这样就可以访问它了。