我注意到Stack支持使用package.yaml它将用于生成.cabal文件的文件.例如,yi-core/package.yaml.它的结构看起来非常类似于Cabal文件,但不完全相同.某些键已重命名(例如,Stack使用source-dirs而不是hs-source-dirs).
我还没有找到有关此功能的任何文档.堆栈文档似乎根本没有提及package.yaml.是否存在规范?
在我的项目的.cabal文件中,我在以下executable部分中有以下内容:
executable ArchPkgstatsScraper
hs-source-dirs: app
main-is: Main.hs
ghc-options: -threaded -rtsopts -with-rtsopts=-N
build-depends: base
, ArchPkgStatsScraper
, text
, conduit
, html-conduit
, http-conduit
, xml-conduit
, resourcet
, transformers
Run Code Online (Sandbox Code Playgroud)
在我成功安装/构建上面的堆栈之后,我该如何检查安装了哪个版本的xml-conduit?
我试图从MiranLipovača 的书" 了解你的哈斯克尔 "一书中学习Haskell.本书和haskell.org都建议安装Haskell平台,但我没有下载Manjaro Linux(基于Arch).
我从2014年开始找到这个指南,并决定从Manjaro的存储库安装这些软件包.这很好用,直到我想在Emacs中使用haskell-mode.我对此进行了故障排除,发现它是包的问题(主要是Stack).
寻找解决方法,我找到了这个Reddit线程,它描述了安装Haskell(不是平台)的方法,以及包的问题.我跟着一个评论,并结束了与脚本安装堆栈(GHC和)的描述在这里:
wget -qO- https://get.haskellstack.org/ | sh
stack setup
stack update
Run Code Online (Sandbox Code Playgroud)
我的问题与此有关:
$HOME/.stack/programs/x86_64-linux/ghc-tinfo6-nopie-8.2.2/lib/ghc-8.2.2其中许多似乎已经安装.我用堆栈创建了一个非常简单的项目.它包含:相关cabal文件中的可执行文件,库和测试目标.当我通过stack ghci将代码加载到ghci时,我无法访问那里的测试,即使它们位于单独的模块中.有没有办法以这种方式使用它?
作为我的编译器的一部分,我需要alex并happy作为构建过程的一部分运行.Stack如何支持这种情况?
额外:我如何注册alex和happy编译时依赖?
我想用Stack设置一个现有的Haskell项目.现有项目在test目录下使用多个文件; 这些单独的测试文件默认情况下,Stack(或cabal?)似乎使用单个test/Spec.hs测试文件.如何继续使用此项目的多个文件?
注意:我正在学习Haskell,这个项目接近我从"kata"方法学习.因此,测试是孤立的,一次只关注语言的一个方面.
我正在使用Stack从命令行设置,构建和运行我的Haskell项目.我想使用IntelliJ作为我的IDE,但是遇到了将Stack配置为我的构建工具的问题.
我使用Stack按照"堆栈用户指南"中的说明在命令行上创建并运行"Hello,World"Haskell程序.一切都很好.
我在IntelliJ上安装了HaskForce插件.构建,执行,部署 - >编译器 - > Haskell编译器选项卡为您提供了使用Stack构建和使用Cabal构建之间的选择.我选择使用堆栈构建并像这样配置它.
我可以使用Haskell Stack Run配置运行项目.控制台输出是正确的.
/Users/williammcneill/Library/Haskell/bin/stack exec hellohaskell-exe --
Hello, Haskell.
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何通过IDE重建项目.例如,如果我更改输出文本并重新运行程序,我仍然会看到原始的"Hello,Haskell"输出.构建 - >制作项目| 制作模块| 重建项目都无所事事.
项目设置 - >工件选项卡没有列出任何内容,我没有看到在这里添加Haskell可执行文件的方法.
我的解决方法是从命令行构建我的Haskell程序,即使我正在从IDE进行编辑.
(这也看起来很奇怪,我指定给特定项目的路径stack.yaml在一般Haskell编译设置文件,但这是我能看到如何使用堆栈来构建的唯一方式.)
如何设置IntelliJ以使用Stack构建Haskell项目?
ghc 7.10.3,堆栈1.1.2,HaskForce 0.3-beta.33,IntelliJ IDEA Ultimate 2016.1.3,OS X 10.11.5
这是Haskforce 问题282.
在我的 Haskell 项目中stack run,它显示以下内容,但仍在运行。这是什么警告?我怎样才能摆脱它?
Stack has not been tested with GHC versions above 8.6, and using 8.8.2, this may fail
Stack has not been tested with Cabal versions above 2.4, but version 3.0.1.0 was found, this may fail
Run Code Online (Sandbox Code Playgroud) 我正在关注堆栈指南,我得到了一个新的项目设置(耶!).
它生成了以下文件布局:
.
??? app
? ??? Main.hs
??? .gitignore
??? LICENSE
??? helloworld.cabal
??? Setup.hs
??? src
? ??? Lib.hs
??? stack.yaml
??? test
??? Spec.hs
Run Code Online (Sandbox Code Playgroud)
根据指南中的" helloworld中的文件 "部分:
app/Main.hs,src/Lib.hs和test/Spec.hs文件都是构成项目实际功能的Haskell源文件(我们在此不再赘述).
我真的希望他们暂时停留在那一秒钟,因为我不知道它之间的区别app/Main.hs和src/Lib.hs应该是什么.我应该把哪个代码放在哪里?
在哪些方面我应该划分之间的代码app/,src/,app/Main.hs和src/Lib.hs?
如果我只是编写应用程序或只是编写库,我是否需要这两个文件/目录?
首先,我创建了一个新工作区:
stack new xxxx
stack init
stack build
Run Code Online (Sandbox Code Playgroud)
然后
cd xxx\app
stack ghci
import Data.Map
Run Code Online (Sandbox Code Playgroud)
我可以导入像Data.Char和的其他模块Data.List,但我无法导入Data.Map.GHCi告诉我:
Could not find module 'Data.Map'
It is a member of the hidden package 'containers-0.5.7.1@containers-0.5.7.1'.`
Run Code Online (Sandbox Code Playgroud) haskell ×10
haskell-stack ×10
cabal ×4
happy ×1
import ×1
linux ×1
module ×1
tdd ×1
unit-testing ×1