Haskell Language
Stos
Szukaj…
Instalowanie stosu
Mac OS X
Korzystanie z Homebrew :
brew install haskell-stack
Tworzenie prostego projektu
Aby utworzyć projekt o nazwie helloworld run:
stack new helloworld simple
Spowoduje to utworzenie katalogu o nazwie helloworld
z plikami niezbędnymi do projektu Stack.
Struktura
Struktura pliku
Prosty projekt zawiera następujące pliki:
➜ helloworld ls
LICENSE Setup.hs helloworld.cabal src stack.yaml
W folderze src
znajduje się plik o nazwie Main.hs
To jest „punkt początkowy” projektu helloworld
. Domyślnie Main.hs
zawiera proste „Hello, World!” program.
Main.hs
module Main where
main :: IO ()
main = do
putStrLn "hello world"
Uruchamianie programu
Upewnij się, że znajdujesz się w katalogu helloworld
i uruchom:
stack build # Compile the program
stack exec helloworld # Run the program
# prints "hello world"
Pakowanie pakietów i zmiana wersji LTS (resolvera)
Stackage to repozytorium pakietów Haskell. Możemy dodać te pakiety do projektu stosu.
Dodawanie soczewki do projektu.
W projekcie stosu znajduje się plik o nazwie stack.yaml
. W stack.yaml
znajduje się segment, który wygląda następująco:
resolver: lts-6.8
Stackage przechowuje listę pakietów dla każdej wersji lts
. W naszym przypadku chcemy listę pakietów dla lts-6.8
Aby znaleźć te pakiety odwiedź:
https://www.stackage.org/lts-6.8 # if a different version is used, change 6.8 to the correct resolver number.
Przeglądając paczki, znajduje się Obiektyw 4.13 .
Możemy teraz dodać pakiet językowy, modyfikując sekcję helloworld.cabal
:
build-depends: base >= 4.7 && < 5
do:
build-depends: base >= 4.7 && 5,
lens == 4.13
Oczywiście, jeśli chcemy zmienić nowszy LTS (po jego wydaniu), po prostu zmieniamy numer resolvera, np .:
resolver: lts-6.9
Przy następnym stack build
Stack będzie korzystał z wersji LTS 6.9, a zatem pobierze kilka nowych zależności.
Zbuduj i uruchom projekt stosu
W tym przykładzie nazwa naszego projektu to „helloworld”, który został utworzony przy użyciu stack new helloworld simple
Najpierw musimy zbudować projekt przy użyciu stack build
a następnie możemy go uruchomić
stack exec helloworld-exe
Instalacja stosu
Uruchamiając polecenie
stack install
Stos skopiuje plik wykonywalny do folderu
/Users/<yourusername>/.local/bin/
Profilowanie za pomocą stosu
Skonfiguruj profilowanie projektu za pomocą stack
. Najpierw zbuduj projekt z flagą --profile
:
stack build --profile
Flagi GHC nie są wymagane w pliku cabal, aby to działało (jak -prof
). stack
automatycznie włączy profilowanie zarówno biblioteki, jak i plików wykonywalnych w projekcie. Następnym razem, gdy plik wykonywalny zostanie uruchomiony w projekcie, można użyć zwykłych flag +RTS
:
stack exec -- my-bin +RTS -p
Wyświetlanie zależności
Aby dowiedzieć się, od których pakietów bezpośrednio zależy twój projekt, możesz po prostu użyć tego polecenia:
stack list-dependencies
W ten sposób możesz dowiedzieć się, która wersja twoich zależności została faktycznie ściągnięta przez stos.
Projekty Haskell często pośrednio przyciągają wiele bibliotek, a czasem te zewnętrzne zależności powodują problemy, które należy wyśledzić. Jeśli znajdziesz fałszywą zależność zewnętrzną, którą chcesz zidentyfikować, możesz przejrzeć cały wykres zależności i określić, które z Twoich zależności ostatecznie przyciągają niepożądany pakiet:
stack dot --external | grep template-haskell
stack dot
drukuje wykres zależności w postaci tekstu, który można przeszukiwać. Można go również wyświetlić:
stack dot --external | dot -Tpng -o my-project.png
Możesz także ustawić głębokość wykresu zależności, jeśli chcesz:
stack dot --external --depth 3 | dot -Tpng -o my-project.png