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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow