标签: haskell-stack

无法使用堆栈设置servant应用程序 - "无法找到模块'Servant'"

我正在尝试使用servant和堆栈松散地设置基本项目,遵循官方仆人教程和堆栈指南.一旦我添加import Servant堆栈构建失败:

Could not find module ‘Servant’
Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)

我已经定义servant为此模块的依赖项,并且堆栈注意到它stack dependencies显示为:

aeson 0.8.0.2
array 0.5.1.0
attoparsec 0.12.1.6
base 4.8.1.0
binary 0.7.5.0
blaze-builder 0.4.0.1
bytestring 0.10.6.0
bytestring-conversion 0.3.1
case-insensitive 1.2.0.4
containers 0.5.6.2
deepseq 1.4.1.1
dlist 0.7.1.2
double-conversion 2.0.1.0
ghc-prim 0.4.0.0
hashable 1.2.3.3
http-media 0.6.2
http-types 0.8.6
integer-gmp 1.0.0.0
mtl 2.2.1
network-uri 2.6.0.3
parsec 3.1.9
primitive 0.6
scientific 0.3.3.8
servant 0.4.4.2
string-conversions 0.4 …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-stack

5
推荐指数
1
解决办法
911
查看次数

Haskell GHC构建错误:不支持加载存档

我正在尝试将外部cpp库与haskell链接.运行stack build似乎正确构建它,但当我尝试运行时,stack repl我收到此错误:

ghc: panic! (the 'impossible' happened)
  (GHC version 8.0.1 for x86_64-unknown-linux):
    Loading archives not supported
Run Code Online (Sandbox Code Playgroud)

app.cabal

executable app-server
  ...
  include-dirs: /usr/local/include
  extra-libraries: symengine stdc++ gmpxx gmp
  ...
Run Code Online (Sandbox Code Playgroud)

stack.yml

flags: {}
packages:
- '.'
extra-include-dirs:
- /usr/local/include
extra-lib-dirs:
- /usr/local/lib
extra-deps: []
extra-package-dbs: []
resolver: lts-7.1
Run Code Online (Sandbox Code Playgroud)

我在mac osx sierra和debian jessie上尝试过.使用ghc-8.0.1(来自lts-7.1).我symengine stdc++ gmpxx gmp在我的机器上安装了.

有谁知道我在这里做错了什么?

haskell ghc haskell-stack

5
推荐指数
0
解决办法
142
查看次数

如何使用Stack在另一个项目中导入个人库?

所以我有一个个人堆栈库,让我们称之为Foo.在Foo,我有一个FooModule名为的模块文件FooModule.hs.我有另一个名为的堆栈项目Bar.如何将FooModule.hs模块导入项目Bar?

haskell haskell-stack

5
推荐指数
1
解决办法
379
查看次数

传递 +RTS 选项以使用 stack exec 运行程序

如何将+RTS选项传递给使用 运行的程序stack exec?

我已经添加-rtsopts到ghc-options我的 cabal 文件中,并使用stack build. 如果我手动运行程序,普通和+RTS命令行参数都可以工作:

>.stack-work\dist\ca59d0ab\build\iterate-strict-exe\iterate-strict-exe.exe 25 +RTS -s
OK
   3,758,156,184 bytes allocated in the heap
         297,976 bytes copied during GC
         ...
Run Code Online (Sandbox Code Playgroud)

但是如果我stack exec只用普通选项运行它到达程序

>stack exec iterate-strict-exe -- 25 +RTS -s
OK
Run Code Online (Sandbox Code Playgroud)

其他不起作用的东西

如果我按照@epsilonhalbe 的建议调整参数的顺序,我会得到相同的结果。

>stack exec -- iterate-strict-exe 25 +RTS -s
OK
Run Code Online (Sandbox Code Playgroud)

似乎没有建议的--rts-options选项传递给stack exec.

>stack exec --rts-options "-s" -- iterate-strict-exe 25
Invalid option `--rts-options'

Usage: stack exec CMD …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-stack

5
推荐指数
1
解决办法
1160
查看次数

加速 Haskell 堆栈项目编译和 git 分支

我不能改变 GHC 的编译时间,但我可以控制编译的环境。我可以用git和stack做什么来最大程度地减少由于(重新)构建造成的停机时间?

Haskell 堆栈在.stack-work目录中缓存已编译的依赖项,它非常适合一次处理一件事。但是,我发现自己在分支之间来回切换。我已经git checkout到位了,也许有些.stack-work缓存是可用的。但是我非常喜欢git worktree在完全不同的目录中获取分支的副本。工作树在构建时间上尤其困难,因为每个工作树目录都有自己的.stack-work的 .

我一直在阅读有关 Nix 和 Haskell 的文章,但是由于堆栈创建了自己的缓存,因此它会忽略 Nix 编译和安装的任何内容。从我读到的内容来看,我真的希望 Nix 处理依赖项并使用堆栈来处理我的个人代码。我从 stackage and 中受益匪浅stack solver,所以我不想放弃它们。但是当我在运行时看到一整屏“取消注册”消息时stack build --only-dependencies && stack ghci,我知道我至少有 10-15 分钟的时间才能收到提示。

非常感谢!

haskell haskell-stack git-worktree

5
推荐指数
0
解决办法
102
查看次数

升级haskell堆栈使用的ghc版本

我正在尝试将我为 haskell 堆栈安装的 ghc 版本从 8.0.2 版更新到 8.2.1 版,但似乎我遗漏了一些东西。

[user@localhost ~]$ stack --resolver ghc-8.2.1 setup
stack will use a sandboxed GHC it installed
For more information on paths, see 'stack path' and 'stack exec env'
To use this GHC and packages outside of a project, consider using:
stack ghc, stack ghci, stack runghc, or stack exec

[user@localhost ~]$ stack ghci
Configuring GHCi with the following packages: 
GHCi, version 8.0.2: http://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from /tmp/ghci7878/ghci-script
Prelude> :q …
Run Code Online (Sandbox Code Playgroud)

haskell haskell-stack

5
推荐指数
1
解决办法
1244
查看次数

intero-goto-definition 不包括库?

我试图使用M-.去定义一个函数,但它似乎intero-goto-definition只适用于我目前正在开发的库,而不适用于我正在导入的库。

这是我的 stack.yaml:

flags: {}
extra-package-dbs: []
packages:
- location: libs/not-gloss/not-gloss # the library I am trying to C-. into
- .
extra-deps:
- spatial-math-0.4.0.0
resolver: lts-9.0
Run Code Online (Sandbox Code Playgroud)

emacs haskell haskell-stack

5
推荐指数
1
解决办法
267
查看次数

使用nix时不使用stack --nix的原因是什么?

我在,NixOS但我认为这个问题应该适用于任何使用的平台nix。

我通过试用发现stack可以与几个选项一起使用来构建项目,但我不完全了解它们之间的区别,

  1. stack
  2. stack --system-ghc
  3. stack --nix

问题:

  1. 如果我使用的是nix(在我的情况下为NixOS),我有什么理由不想使用--nix参数吗?
  2. nix处理haskell项目的方式是什么,应该使用cabal(cabal2nix)代替stack?
  3. 我发现堆栈正在重建许多已经由安装的库nix,这是什么原因?

nix haskell-stack

5
推荐指数
1
解决办法
224
查看次数

如何在Haskell Stack中包含依赖C库

我想创建一个Haskell Stack包,其中包含另一个Haskell Stack包extra-dep.有问题的是,我试图包含的包是使用Haskell的FFI绑定到某些C代码.

如果我只是stack unpack 和stack build那个包(HasCacBDD)它工作得很好,但当我把它包含在一个extra-dep堆栈抱怨丢失的库.

望着Setup.hs那原包的,我看到它基本上创建了一个叫做静态库libHasCacBDD.a,并将其放在正确的文件夹里面.stack-work的路径为它进行连接.当我将它包含在我自己的项目中时,这个库正好是一个错误.

仔细查看.stack-work我自己项目的文件夹,我看到提到libHasCacBDD.a的确实在隐藏在某个地方的目录中.幸运的是,库正在构建正确但我的项目找不到它.

官方的Haskell Stack文档说明了在这种情况下该怎么做,但我认为它不够具体,无法给我一个满意的答案.

我需要做的是指定libHasCacBDD.a存储库的路径作为extra-lib-dirs选项.然而,我不知道如何以独立于平台的方式做到这一点(如果我在计算机中对路径进行硬编码,它将在其中工作,并且在这种情况下执行包的重点是什么).

我在Github上创建了一个问题,其中包含有关详细信息的更多信息.

有什么建议?

haskell haskell-stack

5
推荐指数
1
解决办法
296
查看次数

如何为使用Stack构建的Haskell项目设置可执行输出位置?

在build使用Stack project/dist/编译Haskell程序时,我试图将可执行文件写入其中,但是无论我使用什么命令行参数或更改的配置文件,它始终以结尾project/.stack-work/dist/x86_64-osx/Cabal-2.2.0.1/build/project/。

花时间寻找在命令行参数体面的数额后stack命令,以及期权project.cabal,Setup.hs以及stack.yaml,我似乎无法找到如何配置的输出位置stack build。

如何配置可执行文件的输出位置stack build?

haskell compilation build haskell-stack

5
推荐指数
2
解决办法
569
查看次数

标签 统计

haskell-stack ×10

haskell ×9

build ×1

compilation ×1

emacs ×1

ghc ×1

git-worktree ×1

nix ×1