Haskell Language
Pila
Ricerca…
Installazione dello stack
Mac OSX
Utilizzando l' homebrew :
brew install haskell-stack
Creare un semplice progetto
Per creare un progetto chiamato corsa helloworld :
stack new helloworld simple
Questo creerà una directory chiamata helloworld
con i file necessari per un progetto Stack.
Struttura
Struttura del file
Un semplice progetto include i seguenti file:
➜ helloworld ls
LICENSE Setup.hs helloworld.cabal src stack.yaml
Nella cartella src
c'è un file chiamato Main.hs
Questo è il "punto di partenza" del progetto helloworld
. Di default, Main.hs
contiene un semplice "Hello, World!" programma.
Main.hs
module Main where
main :: IO ()
main = do
putStrLn "hello world"
Esecuzione del programma
Assicurati di essere nella directory helloworld
ed esegui:
stack build # Compile the program
stack exec helloworld # Run the program
# prints "hello world"
Pacchetti di impilaggio e modifica della versione LTS (resolver)
Stackage è un repository per i pacchetti Haskell. Possiamo aggiungere questi pacchetti a un progetto di stack.
Aggiunta di obiettivi a un progetto.
In un progetto stack, c'è un file chiamato stack.yaml
. In stack.yaml
c'è un segmento che assomiglia a:
resolver: lts-6.8
Stackage mantiene un elenco di pacchetti per ogni revisione di lts
. Nel nostro caso vogliamo la lista dei pacchetti per lts-6.8
Per trovare questi pacchetti visitare:
https://www.stackage.org/lts-6.8 # if a different version is used, change 6.8 to the correct resolver number.
Guardando attraverso i pacchetti, c'è un Lens-4.13 .
Ora possiamo aggiungere il pacchetto della lingua modificando la sezione di helloworld.cabal
:
build-depends: base >= 4.7 && < 5
a:
build-depends: base >= 4.7 && 5,
lens == 4.13
Ovviamente, se vogliamo cambiare un LTS più recente (dopo il rilascio), cambiamo semplicemente il numero del resolver, ad es .:
resolver: lts-6.9
Con lo stack build
successivo, Stack utilizzerà la versione LTS 6.9 e quindi scaricherà alcune nuove dipendenze.
Costruisci ed esegui un progetto Stack
In questo esempio il nome del nostro progetto è "helloworld" che è stato creato con lo stack new helloworld simple
Per prima cosa dobbiamo costruire il progetto con lo stack build
e poi possiamo eseguirlo con
stack exec helloworld-exe
Stack di installazione
Eseguendo il comando
stack install
Stack copierà un file eseguibile nella cartella
/Users/<yourusername>/.local/bin/
Profilazione con Stack
Configura il profilo per un progetto tramite stack
. Per prima cosa costruisci il progetto con il flag --profile
:
stack build --profile
I flag GHC non sono richiesti nel file cabal perché funzioni (come -prof
). stack
accenderà automaticamente la profilazione sia per la libreria che per i file eseguibili nel progetto. La prossima volta che un eseguibile viene eseguito nel progetto, è possibile utilizzare i normali flag +RTS
:
stack exec -- my-bin +RTS -p
Visualizzazione delle dipendenze
Per scoprire da quali pacchetti dipende direttamente il tuo progetto, puoi semplicemente usare questo comando:
stack list-dependencies
In questo modo puoi scoprire quale versione delle tue dipendenze è stata effettivamente abbattuta per stack.
I progetti Haskell si trovano spesso a dover indirizzare molte librerie indirettamente ea volte queste dipendenze esterne causano problemi che è necessario rintracciare. Se ti trovi con una dipendenza esterna canaglia che vorresti identificare, puoi aprire l'intero grafico delle dipendenze e identificare quale delle tue dipendenze sta ultimamente inserendo il pacchetto indesiderato:
stack dot --external | grep template-haskell
stack dot
stampa un grafico delle dipendenze in forma di testo che può essere cercato. Può anche essere visualizzato:
stack dot --external | dot -Tpng -o my-project.png
Puoi anche impostare la profondità del grafico delle dipendenze se lo desideri:
stack dot --external --depth 3 | dot -Tpng -o my-project.png