Как использовать haste/hplayground со стеком

Я немного знаком с языком Haskell, но не так хорошо с набором инструментов. (Я играл с Haskell до того, как существовали клика и стек.) Мне сказали, что стек — это инструмент, который я должен использовать для управления проектами Haskell. Я пытаюсь изучить библиотеку ускорения, и я застреваю в первом учебнике, который я пробовал, потому что я не могу установить hplayground. Я создал проект стека; мой стек.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 есть hplayground, указанный в файле build-depends. Но когда я запускаю сборку стека, я получаю следующие ошибки:

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?


person Kevin S. Van Horn    schedule 20.03.2016    source источник


Ответы (2)


API-интерфейсы событий Haste были переработаны между сериями 0.4 и 0.5, а HPlayground все еще находится на версии 0.4. Если вы хотите использовать его, вам, к сожалению, придется вернуться к версии 0.4, пока HPlayground не будет исправлен для версии 0.5.

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

Сделав это, вы можете перейти на страницу документов и ресурсов на сайте haste-lang.org. , который содержит ссылки на документы API, видеоуроки, примеры исходного кода и многое другое.

person valderman    schedule 21.03.2016

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

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

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

Файл readme для haste-perch (https://github.com/agocorona/haste-perch ) содержит инструкции по установке haste-perch. В этих инструкциях для установки haste-perch используется "haste-inst", но "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)
person Dave Compton    schedule 20.03.2016