找不到模块“Data.Map”——它是隐藏包的成员
Could not find module `Data.Map' -- It is a member of the hidden package
首先,我创建了一个新的工作区:
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'.`
您可以导入 Data.Char
和 Data.List
的原因是它们是软件包 base
的一部分,它包含在 GHC 中并且始终与 GHCi 一起加载。相比之下,Data.Map
在外部库 containers
中。使用 stack ghci
加载它的一种方法是在 containers
上添加一个带有 build-depends
的 cabal 文件。这会将其安装在 xxxx
的堆栈环境中,因此之后即可访问。
These general steps 对我解决类似问题很有帮助:
-
请注意 Hoogle and Stackage are case-sensitive. Looking up Data.Map
in Hoogle yields a list similar to the one below. 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 中使用它)
首先,我创建了一个新的工作区:
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'.`
您可以导入 Data.Char
和 Data.List
的原因是它们是软件包 base
的一部分,它包含在 GHC 中并且始终与 GHCi 一起加载。相比之下,Data.Map
在外部库 containers
中。使用 stack ghci
加载它的一种方法是在 containers
上添加一个带有 build-depends
的 cabal 文件。这会将其安装在 xxxx
的堆栈环境中,因此之后即可访问。
These general steps 对我解决类似问题很有帮助:
-
请注意 Hoogle and Stackage are case-sensitive. Looking up
Data.Map
in Hoogle yields a list similar to the one below. 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 中使用它)