找不到模块`Data.Map'

Aur*_*ier 14 import haskell module haskell-stack

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

stack new xxxx
stack init
stack build
Run Code Online (Sandbox Code Playgroud)

然后

cd xxx\app
stack ghci
import Data.Map
Run Code Online (Sandbox Code Playgroud)

我可以导入像Data.Char和的其他模块Data.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'.`
Run Code Online (Sandbox Code Playgroud)

tor*_*tte 27

这些一般步骤有助于我解决类似的问题:

  1. 使用Hoogle或Stackage查找模块所在的包

    需要注意的是Hoogle和Stackage是区分大小写的.仰望Data.Map在Hoogle产生类似下面的一个列表.Stackage的风格略有不同,但基础是相同的(主要是因为它也使用Hoogle进行查找).
    结果标题下的绿色线条显示包含的名称

    (1)包装(小瓶盖)和

    (2)模块(大写).

    在此输入图像描述

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

    library
      hs-source-dirs:
          src
    
      build-depends:
          base >= 4.7 && < 5
        , containers
    
      exposed-modules:
          Lib
    
    Run Code Online (Sandbox Code Playgroud)
  3. 发行 stack build 下载和编译依赖

    (或者stack ghci如果你计划在repl中使用它)

  • 感谢您的解释!(之前的回答"给了我一条鱼"而不是"告诉我如何捕鱼") (3认同)

cro*_*eea 15

你可以导入的原因Data.Char,并Data.List为他们包的一部分base,它是包含在GHC并始终装有GHCI.相比之下,Data.Map是在外部库中containers.加载它的一种方法stack ghci是添加一个带有build-dependson 的cabal文件containers.这将把它安装在堆栈环境中xxxx,因此可以访问它.


Ava*_*Ava 5

我的情况是,我必须添加containers依赖项package.yaml,而不是直接将依赖项添加到.cabal文件中:

dependencies:
- base >= 4.7 && < 5
- containers
Run Code Online (Sandbox Code Playgroud)