Haskell je pokročilý, čistě funkční a obecný programovací jazyk. Tato příručka se zabývá tím, jak nainstalovat Haskell a jak začít s programovacím jazykem Haskell v operačních systémech podobných Unixu. Haskell lze nainstalovat třemi způsoby; ruční instalaci, pomocí zásobníku a pomocí platformy Haskell. Instalace Haskellu pomocí zásobníku je zatím oficiálně doporučená a nejjednodušší metoda. V této příručce uvidíme, jak nainstalovat Haskell a jak začít s programovacím jazykem Haskell v systémech podobných Unixu.
Nainstalujte sadu nástrojů Haskell
Haskell Tool Stack je multiplatformní program pro vytváření projektů Haskell. S Haskell Stack získáváme komplexní vývojové prostředí pro Haskell. Pomocí sady nástrojů Haskell můžeme snadno nainstalovat následující komponenty:
- Zásobník :Tvůrce projektů pro projekty Haskell s více balíčky,
- GHC :Kompilátor a interpret pro programy Haskell,
- Meddock :Generátor dokumentace pro balíčky Haskell,
- A tisíce balíčků lze nainstalovat na vyžádání.
Nejprve nainstalujme Haskell stack pomocí příkazu:
$ wget -qO- https://get.haskellstack.org/ | sh
Nebo,
$ curl -sSL https://get.haskellstack.org/ | sh
Výše uvedené příkazy stáhnou nejnovější verzi Stack a ihned ji nainstalují.
Tyto příkazy jsou stejné pro téměř všechny distribuce Linuxu a FreeBSD. Komunita Arch však udržuje oficiální verzi v [komunitě] úložiště. Pokud tedy používáte Arch Linux a/nebo jakýkoli systém založený na Arch, stačí spustit následující příkaz a nainstalovat nejnovější stabilní verzi Stack.
$ sudo pacman -S stack
Po instalaci spusťte následující příkaz a nastavte proměnnou prostředí PATH tak, aby zahrnovala $HOME/.local/bin :
$ echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc
Aktualizuje změny provedené v souboru ~/.bashrc pomocí příkazu:
$ source ~/.bashrc
Podívejme se na nainstalovanou verzi Stack:
$ stack --version Version 1.6.1, Git revision f25811329bbc40b0c21053a8160c56f923e1201b (5435 commits) x86_64 hpack-0.20.0
Chcete-li Stack kdykoli aktualizovat, stačí spustit:
$ stack upgrade
Chcete-li aktualizovat index balíčku, spusťte:
$ stack update
Nainstalovali jsme Stack. Pojďme do toho a vytvořte nový projekt.
Nastavení nového projektu
Aby se náš nový projekt rozběhl, potřebujeme nějaké soubory, jako je zdrojový kód haskell, package.yaml, stack.yaml a .cabal soubor a několik dalších adresářů. Tyto soubory můžeme vytvořit ručně. Haskell má však mnoho předdefinovaných šablon. Můžeme je tedy použít místo ručního vytváření.
Chcete-li zobrazit všechny dostupné šablony, spusťte:
$ stack templates
Nyní vytvořím nový projekt s názvem "ostechnix" a použijte "new-template" . Chcete-li to provést, spusťte:
$ stack new ostechnix new-template
Ukázkový výstup by byl:
Downloading template "new-template" to create project "ostechnix" in ostechnix/ ... The following parameters were needed by the template but not provided: author-email, author-name, category, copyright, github-username You can provide them in /home/sk/.stack/config.yaml, like this: templates: params: author-email: value author-name: value category: value copyright: value github-username: value Or you can pass each one as parameters like this: stack new ostechnix new-template -p "author-email:value" -p "author-name:value" -p "category:value" -p "copyright:value" -p "github-username:value" Looking for .cabal or package.yaml files to use to init the project. Using cabal packages: - ostechnix/ Selecting the best among 12 snapshots... Downloaded lts-10.0 build plan. Populated index cache. * Matches lts-10.0 Selected resolver: lts-10.0 Initialising configuration using resolver: lts-10.0 Total number of user packages considered: 1 Writing configuration to file: ostechnix/stack.yaml All done.
Instalace GHC
Přejděte do adresáře nově vytvořeného projektu a spusťte stažení 'stack setup' a nainstalujte požadovaný kompilátor.
$ cd ostechnix/
$ stack setup
Tento příkaz nainstaluje správný kompilátor GHC do vašeho nového projektu Haskell. GHC bude instalováno na izolovaném místě. To znamená, že to nebude kolidovat s žádnou instalací na úrovni systému.
Vezměte prosím na vědomí, že GHC se nainstaluje do vašeho globálního kořenového adresáře zásobníku. Nemůžete to tedy zavolat ze svého shellu pomocí příkazu ghc . Místo toho zvažte použití:stack ghc , zásobník ghci , zásobník runghc nebo stack exec . Další informace o cestách získáte spuštěním:
$ stack path
a...
$ stack exec env
Nyní jsme vytvořili nový projekt a nainstalovali správný kompilátor pro náš projekt. Je čas ji postavit.
Projekt stavby
Chcete-li sestavit projekt, spusťte:
$ stack build
Ujistěte se, že jste tento příkaz spustili v adresáři vašeho projektu. Po dokončení sestavení spusťte spustitelný soubor pomocí příkazu:
$ stack exec ostechnix-exe
Ukázkový výstup by byl:
someFunc
Vezměte prosím na vědomí, že spustitelný soubor "ostechnix-exe" bude skrytý v ./.stack-work adresář v hlavním adresáři vašeho projektu.
Hraní s Haskellem
Otevřete kompilátor ghci:
$ stack exec ghci
Nebo,
$ stack exec -- ghci
Zobrazí se výzva ghci.
GHCi, version 8.2.2: http://www.haskell.org/ghc/ :? for help Prelude>
Jako všichni ostatní začněme slovy „ahoj světe!“.
Prelude> "hello world!" "hello world!"
Zkusme nějaké aritmetické operace.
Prelude> 14+90 104 Prelude> 14-90 -76 Prelude> 34/2 17.0
Některé složité operace:
Prelude> (67*98) - 50 - (24-2) 6494
Pojďme zjistit, které číslo je větší nebo menší:
Prelude> max 34 17 34 Prelude> min 45 98 45
Najděte nástupce:
Prelude> succ 89 90
Najděte, zda jsou dané vstupy stejné nebo ne:
Prelude> 10 == 10 True Prelude> 10 == 20 False Prelude> "ostechnix" == "ostechnix" True Prelude> "ostechnix" == "windows" False
Je také snadné použít booleovské hodnoty, jak je uvedeno níže:
Prelude> True && False False Prelude> True && True True Prelude> False || True True Prelude> False && False False
Ve výchozím nastavení je název výzvy Prelude> . Toto můžete změnit na něco jiného, například ghci>, zadáním:
:set prompt "ghci> "
Nápovědu získáte zadáním:
:?
Pro ukončení zadejte:
:quit
Nebo,
:q
Upozorňujeme, že nemusíme vytvářet adresář projektu. Můžeme začít pracovat se Stack pouhým spuštěním 'stack ghci' z shellu. Stáhne správnou verzi GHC a dostane vás do předehry výzva.
Kompilace a spuštění kódu Haskell
Spuštění kódu Haskell je snadné. Zkontrolujte následující příklad.
Vytvořte soubor s názvem "ostechnix.hs" s následujícím obsahem.
#!/usr/bin/env stack -- stack --install-ghc runghc main :: IO () main = putStrLn "Welcome To OSTechNix"
Nyní můžete tento program spustit pomocí příkazu:
$ stack ostechnix.hs Welcome To OSTechNix
Zde je další příklad.
Vytvořte haskell program s názvem myhaskell.hs s následujícím kódem:
module Main where main :: IO () main = putStrLn "Welcome To OSTechNix!"
Poté jej zkompilujte pomocí příkazu:
stack exec -- ghc myhaskell.hs -o test.hs
Ukázkový výstup by byl:
[1 of 1] Compiling Main ( myhaskell.hs, myhaskell.o ) Linking ostechnix.hs ...
Nakonec jej spusťte, jak je uvedeno níže:
$ ./test.hs Welcome To OSTechNix!
Probrali jsme jen základy. Je toho mnohem víc, co se naučit! Pokud se chcete dozvědět více o programování Haskell, podívejte se do následujících zdrojů, kde se dozvíte Haskell od základů až po pokročilé úrovně.
- Výukové programy Haskell
- Learnyouhaskell
- Real World Haskell
- Vyzkoušejte Haskell ve svém prohlížeči
- Oficiální wiki Haskell