Haskell环境

时间:2015-07-08 18:08:59

标签: haskell cabal yesod

我最近完成了“learnyouahaskell”这本书,现在我想通过构建一个yesod应用程序来应用我获得的知识。

但是我不确定如何开始。

关于如何设置yesod项目似乎有两种选择。一个是Stack,另一个是cabal沙箱。

但是有什么区别(如果有的话?)和它们之间的相似之处?一个算是最佳做法而另一个不算?

yesod quickstart建议使用堆栈,这样可以,还是应该使用cabal sanbox?

2 个答案:

答案 0 :(得分:3)

实际上有三种不同的包在这里讨论过。

  1. cabal-install是构建应用程序的当前稳定二进制文件。
  2. stack最近刚刚向公众发布。我相信它正在尝试将cabal-install替换为更好,更方便的工具。至少,它向Haskell社区展示了不同的东西。
  3. Cabalcabal-installstack所依据的图书馆。
  4. 至于前两个工具之间的差异。

    cabal-install是一个成熟的应用程序,几乎在Haskell社区的所有地方都使用过(至少在开源中,我不知道人们在闭门造车时做了什么)。

    stack仍然是一些新项目中使用的新应用程序(至少对公众而言)。可以找到更多信息here。但其中一些亮点是:

    • 在项目目录中运行stack build将安装GHC(Haskell编译器)以及项目所需的依赖项。
    • 默认情况下,
    • stack运行stackage。这是hackage的精选版本。意思是你可以期望不同的包能够很好地相互配合。导致可重复的构建。
    • 如果你选择,你仍然可以依靠hackage。

    这两个应用程序的优点在于它们可以被不同的人用于同一个项目。如果您决定要将cabal-install与沙箱一起使用,并且有人出现并想要帮助您完成项目,他们只需添加stack需要的文件,他们就可以使用stack你继续使用cabal-install。反之亦然。

    here是第一次使用stack后的一次体验。他们声称开始使用起来有点容易,因为开始时需要的步骤少一些。如果不出意外,人们会强调每种工具的优缺点。

    注意:我仍然是Haskell的新手,并且从未真正使用过stack我实际上被告知要远离它,除非在yesod 中构建一些东西。

    编辑:正如此回答中的评论中所述,我认为我错误地代表了人们告诉我有关堆栈的内容。当我问我是否应该切换到堆栈时,人们给我的评论更多的是,如果你使用cabal沙箱足够舒服,除非遇到问题,否则没有理由切换到堆栈< / em>的

答案 1 :(得分:3)

Yesod的首席开发人员(Michael Snoyman)积极参与Stack工具。所以,我建议你用Stack设置Yesod。此外,Yesod有一组非常复杂的依赖项,并使用Stackage作为默认的策划源,在安装过程中非常有用(默认情况下Stack负责)。

同样read this post用于理解Stack与cabal的区别。