【问题标题】:External dependencies, Haskell, stack: should I modify something or 'import' suppose to be sufficient?外部依赖项、Haskell、堆栈:我应该修改某些东西还是“导入”就足够了?
【发布时间】:2018-02-11 17:49:46
【问题描述】:

我对 Haskell 和堆栈都很陌生。

import Data.Set
import Data.Stack

以上语句触发编译错误:Could not find module 'Data.Set'. Perhaps you meant 'Data.Int'。我尝试谷歌并没有发现类似的东西。

因此,我的问题是:我是否需要手动指定外部依赖项或只是我的stack build 命令无法从某些缓存或存储库中获取适当的模块?

如果我必须手动指定我的依赖项,我应该更喜欢.cabal 还是.yaml?处理版本控制的正确方法是什么?

【问题讨论】:

    标签: haskell dependency-management haskell-stack


    【解决方案1】:

    [是否] 我需要手动指定外部依赖项[...]?

    是的。

    由于您使用的是 Stack,因此很容易在代码中指定您导入的依赖包。根据您的 Stack 版本,默认配置可能会有所不同:

    1. 如果您使用最新版本的 Stack 创建项目,您将在项目的根目录中看到 package.yaml(在这种情况下,hpack 用于指定配置)。您需要在此处添加包依赖项,例如,containers 用于 Data.Set。这是我的一个项目中的依赖项部分的示例:

      dependencies:
      - base >= 4.7 && < 5
      - containers
      - time
      - network
      - bytestring
      
    2. 如果您使用的是旧版本的 stack 并且看不到 package.yaml,则需要编辑 your-project-name.cabal 以添加依赖项。这是完整的文档,告诉您如何操作:https://docs.haskellstack.org/en/stable/GUIDE/#adding-dependencies

    就个人而言,我更喜欢hpack (package.yaml) 的新系统。基本上,它更简单,并且可以节省您声明所有模块的时间(与依赖无关)。如果你有package.yaml,不要编辑.cabal,它是由hpack自动生成的。

    【讨论】:

      猜你喜欢
      • 2014-12-07
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      相关资源
      最近更新 更多