fay项目的.cabal文件示例

时间:2014-08-17 09:41:45

标签: haskell fay scotty

我有一个用scotty编写的简单Web应用程序。 我想用fay生成前端JS代码,并在前端和后端之间使用共享类型。

目前,我使用cabal run运行我的应用:在我的.cabal文件中,我定义了一个"可执行文件"和#34; build-depends"取决于base。 当我包括" fay"和" fay-base"在" build-depends"中,编译失败,因为Prelude是不明确的。

我理解" fay-base"应该取代标准前奏,但我仍然希望在后端代码中使用标准前奏。

那么,我应该如何编写我的.cabal文件以及我应该在我的.hs文件中使用哪些语言扩展名,这样std Prelude和fay Prelude可以共存?这是正确的做法吗?

我正在使用fay-0.20.1.1。

1 个答案:

答案 0 :(得分:1)

  • 您可以将fay作为依赖项,它是一个普通的Haskell程序包,并且不会导致任何冲突。
  • fay-base不会替换base。它是Fay的基础版本,只能与Fay代码一起使用,反之亦然。
  • 如果您想确保fay-base作为依赖项被提取,您可以依赖另一个fay包(例如小fay-text来获取fay-base作为传递依赖项)

您可以选择何时构建您的fay代码:

  • 在程序启动时使用Fay's APIfay-builder,您可以在Cabal文件中指定fay选项(请参阅this blog post,但跳过有关自定义cabal挂钩的部分!)
  • 在每个HTTP请求上,对开发很有用。你可以使用Fay API,fay-builder,yesod-fay,snaplet-fay或者happystack-fay。
  • 作为带有自定义Setup.hs的Cabal挂钩(再次,糟糕的主意)