将Haste集成到Stack工具链中

时间:2016-08-22 23:56:29

标签: haskell haskell-stack haste

我正在使用Haskell Stack作为项目,我希望包含Haste它编译客户端逻辑。我喜欢这样一个事实,即Stack在环境中抽象出不同的构建和安装问题,如果它建立在我的机器上,它将建立在别人的基础上。

如何将Haste集成到堆栈工具链中?进行一次设置很好,但是每次代码移动到新系统时我都不想重新创建整个工具链。

1 个答案:

答案 0 :(得分:4)

这应该可行,但由于this已知错误而导致额外问题,因此需要考虑到这一点。确保您的.cabal文件具有正确的依赖关系,尤其是if impl(haste) ..部分(see this)。看起来像Haste的大多数依赖项(并且因为Haste现在使用GHC 7.10.3)与lts-6.14一起使用,所以我将其用作解析器。

<强>急速-project.cabal

name:                haste-project
version:             0.1.0.0
category:            Web
build-type:          Simple
cabal-version:       >=1.10

executable haste-project-exe
  hs-source-dirs:      app
  main-is:             Main.hs
  build-depends:       base  >= 4.8 && < 4.9
  if impl(haste)
    build-depends:     haste-lib >= 0.5 && < 0.6
  else
    build-depends:     haste-compiler >= 0.5 && < 0.6
  default-language:    Haskell2010

<强> stack.yaml

extra-deps:
- HTTP-4000.2.23
- ghc-simple-0.3
- haste-compiler-0.5.4.2
- shellmate-0.2.3
resolver: lts-6.14

然后,从同一目录开始,您可以继续使用usual setup instructions for Haste,但使用Cabal命令的Stack补充:

$ stack build
$ stack install haste-compiler # installs haste-boot, haste-cat, haste-pkg, and hastec
$ stack exec haste-boot        # setup Haste (where I get the bug I mentioned above)

然后,您应该能够运行所有常用命令,但前缀为stack exec --。例如

$ stack exec -- hastec -O2 -fglasgow-exts myprog.hs