haskell - 无法向 Stack 项目添加额外的 deps

标签 haskell haskell-stack

我正在尝试使用 Stack 建立一个 Haskell 项目。我创建了一个项目:stack new project1 并添加了建议的依赖项 (acme-missile) 只是为了看看它是如何工作的。

extra-deps:
- acme-missiles-0.3

但是当我尝试在 Main 中调用 launchMissile 时,它不起作用。我明白了

Error:(3, 1)     Could not find module ‘Acme.Missiles’
    Use -v to see a list of the files searched for.
  |
3 | import Acme.Missiles
  | ^^^^^^^^^^^^^^^^^^^^

有什么问题吗?我错过了什么?

编辑

当我运行堆栈求解器时,我得到:

Using configuration file: stack.yaml
Using cabal packages:
- ./


The following changes will be made to stack.yaml:
* Dependencies to be deleted
    extra-deps:
    - acme-missiles-0.3

To automatically update stack.yaml, rerun with '--update-config'

这不是很奇怪吗?就像它认为不需要我的依赖一样?

最佳答案

您还需要将依赖项添加到 project1.cabal 中:

build-depends:
    base >=4.7 && <5
  , project1
  , acme-missiles

或者,在较新版本的 Stack 上,您似乎应该使用 package.yaml 来代替:

dependencies:
- base >= 4.7 && < 5
- acme-missiles

我不能说我对其工作原理有深入的了解,但如果我理解正确的话,您应该添加依赖项的主文件位于 .cabalpackage.yaml 文件。您可以在 stack.yaml 中的 extra-deps 字段中指示您是否具有偏离当前使用的 LTS 的依赖项。

关于haskell - 无法向 Stack 项目添加额外的 deps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48251027/

相关文章:

Haskell 依赖 hell

haskell - 构建黑线鳕时如何排除依赖项?

haskell - 使用堆栈将命令行参数传递给基准程序

haskell - 使用 randomR 生成奇怪的有偏差随机数

haskell - 我想在 Haskell 中编写一个类似于 `flip` 的函数来摆脱 lambda 表达式。但我无法处理它的类型

haskell - 我是否需要为小型、导出的函数使用 INLINE/INLINABLE 编译指示,还是 GHC 会为我做这件事?

haskell - 为什么将 sq 更改为 point-free 会改变类型

haskell - nixOS + Haskell + 堆栈 + OpenGL + freeglut

haskell - 使用堆栈生成覆盖率报告

haskell - 我的 Haskell 包可以依赖哪些版本的包?