什么是构建Haskell项目的最新标准工作流程?

Mai*_*tor 10 haskell module cabal stackage

由于事情变化如此之快,我发布了这个问题,所以希望能够澄清社区同意的启动Haskell项目的方法.想象一下,我有两个独立的项目:

与GHC 7.10.2计算机开始,栈和卡瓦尔安装,和一个单独的目录,~/OrganizeMe~/OrganizeMe/Square.hs,~/OrganizeMe/Hypotenuse.hs~/OrganizeMe/Main.hs,如上面介绍- 什么是一套完整的UNIX命令的有经验的Haskeller会用建筑师的项目?那包括:

  1. 组织这些项目的目录树;

  2. 配置Stack/ Cabal/ etc(和git,可选);

  3. 在本地建造/安装;

  4. 发布到Hackage/ Stackage.

Sam*_*den 4

这不是一个完整的答案,它不是从您的OrganizeMe目录开始(您的代码中有一些错误),也不包括发布到 Hackage/Stackage。我从一个stackenv包含这两个包的目录开始,但当然您可以完全不同地执行此操作。

mkdir stackenv && cd stackenv/
mkdir square && cd square
vim Square.hs # The file you describe without the x in the type of square
cabal init # Go through the questions and choose "library"
stack init
cd ../ && mkdir hypotenuse && cd hypotenuse/
vim Hypotenuse.hs # The file you describe
vim Main.hs # The file you describe but importing Hypotenuse
cabal init # Go through the questions... "executable" this time
stack init
vim hypotenuse.cabal # add "square" or chosen package name to build-depends
vim stack.yaml # add "- '../square/'" below packages
stack install
hypotenuse 3 4 # works because ~/.local/bin is in my PATH
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。

  • @SamvanHerwaarden如果您将所有文件都放在同一目录中,并更改“Hypotenuse.hs”,它将被重建两次:一次用于库,一次用于可执行文件。如果将库放在可执行文件不可见的自己的目录中,则在重建库时只会重建一次,然后该库将在可执行文件中使用。 (2认同)