外部依赖项,Haskell,堆栈:我应该修改一些东西还是 'import' 应该就足够了?
External dependencies, Haskell, stack: should I modify something or 'import' suppose to be sufficient?
我对 Haskell 和堆栈都很陌生。
import Data.Set
import Data.Stack
以上语句触发编译错误:Could not find module 'Data.Set'. Perhaps you meant 'Data.Int'
。我尝试 google 并没有发现类似的东西。
因此,我的问题是:我需要手动指定外部依赖项还是只需要我的 stack build
命令,为什么无法从缓存或存储库中获取适当的模块?
如果我必须手动指定依赖项,我应该选择 .cabal
还是 .yaml
?处理版本控制的正确方法是什么?
[Do] I need to specify external dependencies manually [...]?
是的。
由于您使用的是 Stack,因此很容易在代码中指定您导入的依赖包。根据您的 Stack 版本,默认配置可能会略有不同:
如果您使用最新版本的 Stack 创建项目,您将在项目的根目录中看到 package.yaml
(在这种情况下使用 hpack
来指定配置)。您需要在那里添加包依赖项,例如 containers
for Data.Set
。这是我的一个项目中的依赖项部分的示例:
dependencies:
- base >= 4.7 && < 5
- containers
- time
- network
- bytestring
如果您使用的是旧版本的 stack
并且没有看到 package.yaml
,您需要编辑 your-project-name.cabal
以添加依赖项。这是告诉您如何操作的完整文档:https://docs.haskellstack.org/en/stable/GUIDE/#adding-dependencies
就我个人而言,我更喜欢hpack
(package.yaml
) 的新系统。基本上,它更简单,并且可以节省您声明所有模块的时间(与依赖无关)。如果你有package.yaml
,不要编辑.cabal
,它是由hpack
自动生成的。
我对 Haskell 和堆栈都很陌生。
import Data.Set
import Data.Stack
以上语句触发编译错误:Could not find module 'Data.Set'. Perhaps you meant 'Data.Int'
。我尝试 google 并没有发现类似的东西。
因此,我的问题是:我需要手动指定外部依赖项还是只需要我的 stack build
命令,为什么无法从缓存或存储库中获取适当的模块?
如果我必须手动指定依赖项,我应该选择 .cabal
还是 .yaml
?处理版本控制的正确方法是什么?
[Do] I need to specify external dependencies manually [...]?
是的。
由于您使用的是 Stack,因此很容易在代码中指定您导入的依赖包。根据您的 Stack 版本,默认配置可能会略有不同:
如果您使用最新版本的 Stack 创建项目,您将在项目的根目录中看到
package.yaml
(在这种情况下使用hpack
来指定配置)。您需要在那里添加包依赖项,例如containers
forData.Set
。这是我的一个项目中的依赖项部分的示例:dependencies: - base >= 4.7 && < 5 - containers - time - network - bytestring
如果您使用的是旧版本的
stack
并且没有看到package.yaml
,您需要编辑your-project-name.cabal
以添加依赖项。这是告诉您如何操作的完整文档:https://docs.haskellstack.org/en/stable/GUIDE/#adding-dependencies
就我个人而言,我更喜欢hpack
(package.yaml
) 的新系统。基本上,它更简单,并且可以节省您声明所有模块的时间(与依赖无关)。如果你有package.yaml
,不要编辑.cabal
,它是由hpack
自动生成的。