2016-03-20 9 views
6

Ho una certa familiarità con Haskell, il linguaggio, ma non tanto con la toolchain. (Ho giocato con Haskell prima che esistessero cabal e stack.) Mi è stato detto che stack è lo strumento che dovrei usare per gestire i progetti Haskell. Sto cercando di imparare la rapidità della libreria, e sto diventando stymied sul primo tutorial che ho provato, perché non riesco a installare hplayground. Ho creato un progetto di stack; il mio stack.yaml haCome usare rapidità/hplayground con stack

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 

e il mio file .cabal ha hplayground elencato nella build-dipende. Ma quando eseguo lo stack build, ottengo questi errori:

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) 

e un sacco di errori simili. Qualche idea su cosa sto facendo male?

Più in generale: cos'è un modo rapido e semplice per iniziare subito a correre con qualcuno che non ha esperienza con la toolchain Haskell?

risposta

2

API per gli eventi di Haste ricevuti revisionati tra la serie 0.4 e 0.5, ed è ancora in HPlayground 0.4. Se si desidera utilizzarlo, sarà purtroppo necessario tornare a 0,4 fino a quando HPlayground non viene riparato per 0,5.

Per iniziare, in generale, è necessario installare pre-build binaries se si è su una piattaforma non Linux (e probabilmente se si è su una piattaforma Linux, poiché si ottengono pagine man e altre sottigliezze); il processo di compilazione può essere complicato ed è soggetto a errori.

Una volta fatto, è possibile fare riferimento alla pagina docs and resources su haste-lang.org, che contiene collegamenti a documenti API, esercitazioni video, esempi di codice sorgente e altro.

3

Una volta installato ghc e cabala installato sarà necessario installare il compilatore fretta come segue (da http://haste-lang.org/downloads/):

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

Dopo aver fatto questo, "hastec" (il compilatore fretta) dovrebbe essere disponibile per utilizzare per compilare haskell in javascript. Inoltre, "haste-cabal" (la versione rapidissima della cabala) dovrebbe essere disponibile per l'uso per installare librerie come la rapidissima per l'uso nei programmi.

Il file readme per lo slider (https://github.com/agocorona/haste-perch) contiene le istruzioni per l'installazione di fast-perch. Quelle istruzioni usano "haste-inst" per installare haste-perch ma "haste-inst" è obsoleto (e non esiste più). installare fretta-persico Utilizzare le istruzioni qui di seguito modificati:

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

sono stato in grado di installare la fretta-persico e con successo costruire l'esempio che è venuto con.

Ho anche provato a creare hplayground ma ho incontrato problemi di compilazione che sembravano dovuti al fatto che il codice non veniva aggiornato per utilizzare la rapidità 0.5. Ad esempio, "OnClick" è stato un identificatore valido nelle versioni precedenti di fretta ma ora non più:

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