代码之家  ›  专栏  ›  技术社区  ›  Zazaeil

外部依赖,Haskell,stack:我应该修改一些东西还是“导入”就足够了?

  •  0
  • Zazaeil  · 技术社区  · 7 年前

    我对哈斯克尔和斯塔克都是新手。

    import Data.Set
    import Data.Stack
    

    上述语句触发编译错误: Could not find module 'Data.Set'. Perhaps you meant 'Data.Int' . 我试着在谷歌上搜索,但没有找到类似的结果。

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

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

    1 回复  |  直到 6 年前
        1
  •  6
  •   duplode    6 年前

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

    因为您使用的是堆栈,所以很容易指定在代码中导入的依赖包。根据堆栈版本的不同,默认配置可能略有不同:

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

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

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