I have some familiarity with Haskell, the language, but not so much with the toolchain. (I played around with Haskell before cabal and stack existed.) I'm told that stack is the tool I should be using to manage Haskell projects. I'm trying to learn the haste library, and I'm getting stymied on the first tutorial I've tried, because I can't get hplayground installed. I created a stack project; my stack.yaml has
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
and my .cabal file has hplayground listed in the build-depends. But when I run stack build, I get these errors:
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)
and a whole lot of similar errors. Any thoughts on what I'm doing wrong?
More broadly: what is a fast, easy way to get up and running with haste for someone who's not experienced with the Haskell toolchain?
Haste's event APIs got overhauled between the 0.4 and 0.5 series, and HPlayground is still on 0.4. If you want to use it, you will unfortunately have to fall back to 0.4 until HPlayground gets patched for 0.5.
For getting started in general, you should install the pre-build binaries if you're on a non-Linux platform (and probably if you're on a Linux platform as well, since you get man-pages and other niceties); the build process can be tricky and is prone to errors.
Once you've done that, you can refer to the docs and resources page on haste-lang.org, which contains links to API docs, video tutorials, source code examples and more.
Once you have installed ghc and cabal installed you will need to install the haste compiler as follows ( from http://haste-lang.org/downloads/ ):
$ cabal update
$ cabal install haste-compiler
$ haste-boot
After doing this, "hastec" ( the haste compiler ) should be available to use to compile haskell to javascript. In addition, "haste-cabal" ( the haste version of cabal ) should be available to use to install libraries such as haste-perch for use in your programs.
The readme file for haste-perch (https://github.com/agocorona/haste-perch) contains the instructions for installing haste-perch. Those instructions use "haste-inst" to install haste-perch but "haste-inst" is obsolete ( and no longer exists ). Use the modified instructions below to install haste-perch:
>git clone http://github.com/agocorona/haste-perch.git
>cd haste-perch
>haste-cabal install
I was able to install haste-perch and successfully build the example that it came with.
I also tried building hplayground but ran into compile problems that looked as if they were due to the code not being updated to use haste 0.5 . For example, "OnClick" was a valid identifier in earlier versions of haste but not anymore:
src/Haste/HPlay/View.hs:820:45:
Not in scope: data constructor ‘OnClick’
Perhaps you meant ‘Click’ (line 1017)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With