Haskell Language
Stack
Sök…
Installera stack
Mac OSX
Använda Homebrew :
brew install haskell-stack
Skapa ett enkelt projekt
Så här skapar du ett projekt som heter helloworld run:
stack new helloworld simple
Detta skapar en katalog som heter helloworld
med de filer som krävs för ett Stack-projekt.
Strukturera
Filstruktur
Ett enkelt projekt har följande filer inkluderade i det:
➜ helloworld ls
LICENSE Setup.hs helloworld.cabal src stack.yaml
I mappen src
finns en fil med namnet Main.hs
Detta är "utgångspunkten" för helloworld
projektet. Som standard innehåller Main.hs
en enkel "Hej, världen!" program.
Main.hs
module Main where
main :: IO ()
main = do
putStrLn "hello world"
Kör programmet
Se till att du är i katalogen helloworld
och kör:
stack build # Compile the program
stack exec helloworld # Run the program
# prints "hello world"
Stackage-paket och ändra LTS-version (resolver)
Stackage är ett arkiv för Haskell-paket. Vi kan lägga till dessa paket i ett stackprojekt.
Lägga till lins i ett projekt.
I ett stackprojekt finns det en fil som heter stack.yaml
. I stack.yaml
finns det ett segment som ser ut:
resolver: lts-6.8
Stackage håller en lista med paket för varje revision av lts
. I vårt fall vill vi ha listan över paket för lts-6.8
För att hitta dessa paket besök:
https://www.stackage.org/lts-6.8 # if a different version is used, change 6.8 to the correct resolver number.
Titta igenom paketen finns det en Lens-4.13 .
Vi kan nu lägga till språkpaketet genom att ändra avsnittet i helloworld.cabal
:
build-depends: base >= 4.7 && < 5
till:
build-depends: base >= 4.7 && 5,
lens == 4.13
Uppenbarligen, om vi vill ändra en nyare LTS (efter att den har släppts), ändrar vi bara upplösningsnumret, t.ex.
resolver: lts-6.9
Med nästa stack build
kommer Stack att använda LTS 6.9-versionen och därmed ladda ner några nya beroenden.
Bygg och kör ett stackprojekt
I det här exemplet är vårt projektnamn "helloworld" som skapades med stack new helloworld simple
Först måste vi bygga projektet med stack build
och sedan kan vi köra det med
stack exec helloworld-exe
Stack installera
Genom att köra kommandot
stack install
Stack kopierar en körbar fil till mappen
/Users/<yourusername>/.local/bin/
Profilering med Stack
Konfigurera profilering för ett projekt via stack
. --profile
projektet med --profile
flagga:
stack build --profile
GHC-flaggor krävs inte i kabelfilen för att detta ska fungera (som -prof
). stack
aktiverar automatiskt profilering för både biblioteket och körbara program i projektet. Nästa gång en körbar körs i projektet kan de vanliga +RTS
flaggorna användas:
stack exec -- my-bin +RTS -p
Visa beroenden
För att ta reda på vilka paket ditt projekt direkt beror på kan du helt enkelt använda det här kommandot:
stack list-dependencies
På det här sättet kan du ta reda på vilken version av dina beroenden som faktiskt dras ner för stapel.
Haskell-projekt drabbas ofta indirekt i många bibliotek, och ibland orsakar dessa yttre beroenden problem som du behöver spåra. Om du befinner dig med ett oseriöst externt beroende som du vill identifiera, kan du gå igenom hela beroendegrafiken och identifiera vilka av dina beroenden som i slutändan drar in det oönskade paketet:
stack dot --external | grep template-haskell
stack dot
skriver ut ett beroende diagram i textform som kan sökas. Det kan också ses:
stack dot --external | dot -Tpng -o my-project.png
Du kan också ställa in djupet för beroende grafen om du vill:
stack dot --external --depth 3 | dot -Tpng -o my-project.png