首先,我创建了一个新工作区:
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 '[email protected]'.`
您可以导入Data.Char
和Data.List
的原因是它们是base
包的一部分,它包含在GHC中并且始终加载GHCi。相比之下,Data.Map
在外部库containers
。使用stack ghci
加载它的一种方法是在build-depends
上添加一个带有containers
的cabal文件。这会将它安装在xxxx
的堆栈环境中,因此可以访问它。
These general steps帮助我解决类似的问题:
Data.Map
中查找Hoogle会得到一个类似下面的列表。 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
来下载和构建依赖项
(如果您计划在REPL中使用它,还是stack ghci
)