首先,我创建了一个新工作区:
stack new xxxx
stack init
stack build
然后
cd xxx\app
stack ghci
import Data.Map
我可以导入其他模块,例如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'.`
答案 0 :(得分:22)
These general steps对我解决类似问题很有帮助:
请注意,Hoogle和Stackage 区分大小写。在Hoogle中查找Data.Map
会产生类似于下面的列表。 Stackage的风格略有不同,但基本相同(主要是因为它还使用Hoogle进行查找)。
结果标题下的绿色线条显示包含
的名称(1)包裹(小型)和
(2)模块(大写)。
打开 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中使用它
答案 1 :(得分:12)
您可以导入Data.Char
和Data.List
的原因是它们是包base
的一部分,它包含在GHC中并始终加载GHCi。相比之下,Data.Map
位于外部库containers
中。使用stack ghci
加载它的一种方法是在build-depends
上添加一个containers
的cabal文件。这将把它安装在xxxx
的堆栈环境中,这样就可以访问它了。