2016-03-20 5 views
6

У меня есть некоторое знакомство с языком Haskell, но не с помощью инструментальной цепочки. (Я играл с Haskell до того, как была найдена кабала и стек.) Мне сказали, что стек - это инструмент, который я должен использовать для управления проектами Haskell. Я пытаюсь изучить библиотеку скоростей, и я попал в тупик в первом учебнике, которое я пробовал, потому что я не могу установить hplayground. Я создал проект стека; мой stack.yaml имеетКак использовать ускорение/hplayground со стеклом

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 файл 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

APIs событий поспешности получили переработан между рядами 0,4 и 0,5, и HPlayground еще на 0,4. Если вы хотите использовать его, вам, к сожалению, придется вернуться к 0,4 до тех пор, пока HPlayground не получит патч за 0,5.

Для начала работы вы должны установить pre-build binaries, если вы находитесь на платформе, отличной от Linux, и, возможно, если вы тоже на платформе Linux, так как вы получаете man-страницы и другие тонкости; процесс сборки может быть сложным и подвержен ошибкам.

Как только вы это сделаете, вы можете обратиться к странице docs and resources на haste-lang.org, которая содержит ссылки на документы API, видеоуроки, примеры исходного кода и многое другое.

3

После того, как вы установили GHC и заговорщики установлены вам нужно будет установить спешка компилятор следующим образом (из http://haste-lang.org/downloads/):

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

После этого, «hastec» (спешка компилятор) должна быть доступна использовать для компиляции haskell в javascript. Кроме того, «haste-cabal» (ускоренная версия cabal) должна быть доступна для установки для установки библиотек, таких как ускорение для использования в ваших программах.

В файле readme для haste-perch (https://github.com/agocorona/haste-perch) содержатся инструкции по установке ускорения. Эти инструкции используют «haste-inst» для установки спешки, но «haste-inst» устарел (и больше не существует). Используйте модифицированную ниже инструкцию для установки скорости судака:

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

я смог установить спешка судак и успешно построить пример, который он пришел с.

Я также попытался построить hplayground, но столкнулся с проблемами компиляции, которые выглядели так, как если бы они были из-за того, что код не обновлялся, чтобы использовать ускорение 0.5. Например, «OnClick» является действительным идентификатором в более ранних версиях спешки, но не больше:

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