Haskell è un linguaggio di programmazione avanzato, puramente funzionale e generico. Questa guida spiega come installare Haskell e come iniziare con il linguaggio di programmazione Haskell in sistemi operativi simili a Unix. Haskell può essere installato in tre modi; installazione manuale, utilizzo dello stack e piattaforma Haskell. L'installazione di Haskell tramite stack è il metodo ufficialmente consigliato e più semplice finora. In questa guida vedremo come installare Haskell e come iniziare a utilizzare il linguaggio di programmazione Haskell in sistemi simili a Unix.
Installa lo stack di strumenti Haskell
Haskell Tool Stack è un programma multipiattaforma per la creazione di progetti Haskell. Con Haskell Stack otteniamo un ambiente di sviluppo completo per Haskell. Utilizzando lo stack di strumenti Haskell, possiamo installare facilmente i seguenti componenti:
- Impila :un costruttore di progetti per progetti Haskell multi-pacchetto,
- GHC :un compilatore e interprete per i programmi Haskell,
- Eglefino :un generatore di documentazione per i pacchetti Haskell,
- E migliaia di pacchetti possono essere installati su richiesta.
Innanzitutto, installiamo lo stack Haskell usando il comando:
$ wget -qO- https://get.haskellstack.org/ | sh
Oppure,
$ curl -sSL https://get.haskellstack.org/ | sh
I comandi precedenti scaricheranno l'ultima versione dello Stack e la installeranno immediatamente.
Questi comandi sono gli stessi per quasi tutte le distribuzioni Linux e FreeBSD. Tuttavia, la community di Arch mantiene una versione ufficiale nella [community] deposito. Quindi, se stai utilizzando Arch Linux e/o qualsiasi sistema basato su Arch, esegui semplicemente il comando seguente per installare l'ultima versione stabile dello Stack.
$ sudo pacman -S stack
Una volta installato, esegui il comando seguente per impostare la variabile di ambiente PATH in modo da includere $HOME/.local/bin :
$ echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc
Aggiorna le modifiche apportate al file ~/.bashrc usando il comando:
$ source ~/.bashrc
Vediamo la versione installata di Stack:
$ stack --version Version 1.6.1, Git revision f25811329bbc40b0c21053a8160c56f923e1201b (5435 commits) x86_64 hpack-0.20.0
Per aggiornare Stack in qualsiasi momento, esegui:
$ stack upgrade
Per aggiornare l'indice del pacchetto, esegui:
$ stack upgrade
Abbiamo installato Stack. Andiamo avanti e creiamo un nuovo progetto.
Impostazione di un nuovo progetto
Per avviare il nostro nuovo progetto, abbiamo bisogno di alcuni file come del codice sorgente haskell, un package.yaml, uno stack.yaml e un file .cabal e poche altre directory. Possiamo creare questi file manualmente. Tuttavia, Haskell ha molti modelli predefiniti. Quindi, possiamo usarne uno invece di crearli manualmente.
Per elencare tutti i modelli disponibili, esegui:
$ stack templates
Ora creerò un nuovo progetto chiamato "otechnix" e usa "nuovo-modello" . Per farlo, esegui:
$ stack new ostechnix new-template
L'output di esempio sarebbe:
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.
Installazione di GHC
Vai alla directory del progetto appena creato ed esegui il download 'stack setup' e installa il compilatore richiesto.
$ cd ostechnix/
$ stack setup
Questo comando installerà il compilatore GHC corretto nel tuo nuovo progetto Haskell. GHC sarà installato in una posizione isolata. Ciò significa che ciò non interferirà con alcuna installazione a livello di sistema.
Tieni presente che GHC verrà installato nella directory principale dello stack globale. Quindi, non puoi semplicemente chiamarlo dalla tua shell usando il comando ghc . Considera invece l'utilizzo di:stack ghc , impila ghci , impila runghc o stack exec . Per maggiori informazioni sui percorsi, corri:
$ stack path
e..
$ stack exec env
Ora abbiamo creato un nuovo progetto e installato il compilatore corretto per il nostro progetto. È tempo di costruirlo.
Progetto edilizio
Per creare il progetto, esegui:
$ stack build
Assicurati di eseguire questo comando all'interno della directory del tuo progetto. Una volta completata la compilazione, esegui l'eseguibile usando il comando:
$ stack exec ostechnix-exe
L'output di esempio sarebbe:
someFunc
Tieni presente che l'eseguibile "otechnix-exe" sarà nascosto in ./.stack-work directory nella directory principale del tuo progetto.
Giocare con Haskell
Apri il compilatore ghci:
$ stack exec ghci
Oppure,
$ stack exec -- ghci
Verrai reindirizzato al prompt di ghci.
GHCi, version 8.2.2: http://www.haskell.org/ghc/ :? for help Prelude>
Come tutti gli altri, iniziamo con "ciao mondo!".
Prelude> "hello world!" "hello world!"
Proviamo alcune operazioni aritmetiche.
Prelude> 14+90 104 Prelude> 14-90 -76 Prelude> 34/2 17.0
Alcune operazioni complesse:
Prelude> (67*98) - 50 - (24-2) 6494
Scopriamo quale numero è maggiore o minore:
Prelude> max 34 17 34 Prelude> min 45 98 45
Trova il successore:
Prelude> succ 89 90
Trova che gli input forniti siano uguali o meno:
Prelude> 10 == 10 True Prelude> 10 == 20 False Prelude> "ostechnix" == "ostechnix" True Prelude> "ostechnix" == "windows" False
È anche facile usare valori booleani come di seguito:
Prelude> True && False False Prelude> True && True True Prelude> False || True True Prelude> False && False False
Per impostazione predefinita, il nome del prompt è Preludio> . Puoi cambiarlo in qualcos'altro, ad esempio ghci>, digitando:
:set prompt "ghci> "
Per assistenza, digita:
:?
Per uscire, digita:
:quit
Oppure,
:q
Tieni presente che non è necessario creare la directory di un progetto. Possiamo iniziare a lavorare con Stack semplicemente eseguendo 'stack ghci' dalla shell. Scaricherà la versione GHC corretta e ti atterrerà nel preludio> richiesta.
Compilazione ed esecuzione del codice Haskell
È facile eseguire un codice Haskell. Controlla il seguente esempio.
Crea un file chiamato "otechnix.hs" con i seguenti contenuti.
#!/usr/bin/env stack -- stack --install-ghc runghc main :: IO () main = putStrLn "Welcome To OSTechNix"
Ora puoi eseguire questo programma usando il comando:
$ stack ostechnix.hs Welcome To OSTechNix
Ecco un altro esempio.
Crea un programma haskell chiamato myhaskell.hs con il seguente codice:
module Main where main :: IO () main = putStrLn "Welcome To OSTechNix!"
Quindi compilalo usando il comando:
stack exec -- ghc myhaskell.hs -o test.hs
L'output di esempio sarebbe:
[1 of 1] Compiling Main ( myhaskell.hs, myhaskell.o ) Linking ostechnix.hs ...
Infine, eseguilo come mostrato di seguito:
$ ./test.hs Welcome To OSTechNix!
Abbiamo appena coperto le basi. C'è molto altro da imparare! Se sei interessato a saperne di più sulla programmazione Haskell, fai riferimento alle seguenti risorse per apprendere Haskell dalle basi al livello avanzato.
- Esercitazioni Haskell
- Impara a conoscere
- Haskell nel mondo reale
- Prova Haskell sul tuo browser
- Wiki ufficiale di Haskell