如何使用堆栈的haste / hplayground

时间:2016-03-20 02:18:45

标签: haskell haste

我对Haskell这个语言有一定的了解,但对工具链却没那么熟悉。 (在cabal和堆栈存在之前我和Haskell一起玩过。)我告诉堆栈是我应该用来管理Haskell项目的工具。我试图学习匆忙的图书馆,并且我在第一个尝试的教程上受到了阻碍,因为我无法安装hplayground。我创建了一个堆栈项目;我的stack.yaml有

extra-deps:
- ghc-simple-0.3
- haste-compiler-0.5.3
- shellmate-0.2.3
- haste-perch-0.1.0.9
- hplayground-0.1.3.1

我的.cabal文件在build-depends中列出了hplayground。但是当我运行堆栈构建时,我得到了这些错误:

Configuring haste-perch-0.1.0.9...
Building haste-perch-0.1.0.9...
Preprocessing library haste-perch-0.1.0.9...

Haste/Perch.hs:17:15: Warning:
    -XOverlappingInstances is deprecated: instead use per-instance pragmas OVERLAPPING/OVERLAPPABLE/OVERLAPS

Haste/App/Perch.hs:18:15: Warning:
    -XOverlappingInstances is deprecated: instead use per-instance pragmas OVERLAPPING/OVERLAPPABLE/OVERLAPS
[1 of 2] Compiling Haste.App.Perch  ( Haste/App/Perch.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.4.0/build/Haste/App/Perch.o )

Haste/App/Perch.hs:61:15: Not in scope: ‘newTextElem’

Haste/App/Perch.hs:71:9:
    Not in scope: ‘setAttr’
    Perhaps you meant ‘jsSetAttr’ (imported from Haste.App)

Haste/App/Perch.hs:76:15:
    Not in scope: ‘newElem’
    Perhaps you meant one of these:
    ‘nelem’ (line 75), ‘notElem’ (imported from Prelude)

和很多类似的错误。对我做错了什么的想法?

更广泛地说:对于那些没有Haskell工具链经验的人来说,快速,轻松地启动和运行的方法是什么?

2 个答案:

答案 0 :(得分:3)

一旦安装了ghc和cabal,就需要安装haste编译器,如下所示(来自http://haste-lang.org/downloads/):

$ cabal update
$ cabal install haste-compiler
$ haste-boot

执行此操作后,“hastec”(加速编译器)应该可用于将haskell编译为javascript。此外,应该可以使用“haste-cabal”(快速版本的cabal)来安装诸如haste-perch之类的库,以便在程序中使用。

haste-perch(https://github.com/agocorona/haste-perch)的自述文件包含有关安装haste-perch的说明。这些指令使用“haste-inst”来安装haste-perch,但“haste-inst”已经过时(并且不再存在)。使用下面修改的说明安装haste-perch:

>git clone http://github.com/agocorona/haste-perch.git
>cd haste-perch
>haste-cabal install

我能够安装haste-perch并成功构建它附带的示例。

我也尝试构建hplayground但遇到了编译问题,看起来好像是由于代码没有更新而使用的是haste 0.5。例如,“OnClick”是早期版本的haste中的有效标识符,但不再是:

src/Haste/HPlay/View.hs:820:45:
    Not in scope: data constructor ‘OnClick’
    Perhaps you meant ‘Click’ (line 1017)

答案 1 :(得分:2)

Haste的事件API在0.4和0.5系列之间进行了大修,而HPlayground仍然在0.4。如果你想使用它,你将不得不回到0.4,直到HPlayground被修补为0.5。

一般来说,如果您使用的是非Linux平台,则应安装this SO post(如果您使用的是Linux平台,也可以安装pre-build binaries,因为您获得了man-pages和其他细微);构建过程可能很棘手,容易出错。

完成后,您可以参考haste-lang.org上的docs and resources页面,其中包含API文档,视频教程,源代码示例等链接。