I programmi Haskell sono composti da definizioni ed espressioni.
Un valore costante si definisce con name = expression.
five = 5
six = 3 + 3
Le funzioni si definiscono con name parameters... = expression, dove i parametri sono separati solo da uno spazio.
add number1 number2 = number1 + number2
Anche chiamare una funzione è un'espressione, e si fa specificando il suo nome e passando un argomento per ogni parametro della funzione, separati da spazi, proprio come per le definizioni di funzioni.
five = add 2 3
Le parentesi si possono usare per specificare l'ordine di valutazione di un'espressione.
six = add 2 (1 * 4)
twelve = add 2 1 * 4
Haskell usa gli spazi bianchi e l'indentazione per specificare i confini del codice. Il codice che fa parte di un'espressione deve essere indentato più avanti rispetto all'inizio di quell'espressione.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
number1 + number2
https://en.wikibooks.org/wiki/Haskell/Indentation
I moduli esportano funzioni. Questo significa che puoi usare le funzioni che il modulo rende disponibili nella sua istruzione di esportazione. Un modulo può anche definire funzioni solo per uso interno. Per impostazione predefinita, le funzioni che non sono esplicitamente esportate non possono essere usate dall'esterno del modulo.
All'inizio di un modulo specifichiamo il nome del modulo. Se abbiamo un file chiamato Calculator.hs, allora dovremmo chiamare il nostro modulo Calculator. Poi specifichiamo le funzioni che esporta, e dopo possiamo iniziare a scrivere le funzioni. Quindi iniziamo così.
module Calculator ( add ) where
https://learnyouahaskell.github.io/modules#making-our-own-modules
Un commento è un testo all'interno del file Haskell che non viene interpretato come codice.
È pensato principalmente per essere letto da te e dagli altri programmatori.
Esiste una sintassi leggera per i commenti su una sola riga, basata sui doppi trattini.
Sono possibili anche i commenti su più righe, con la coppia di delimitatori di apertura e chiusura {- e -}.
-- a single line comment
-- another single line comment
{- a multiline comment
spanning multiple lines
-}
Questa introduzione all'esercizio attinge ampiamente da Learn You a Haskell for Great Good!, sotto Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
In questo esercizio scriverai del codice per aiutarti a cucinare una lasagna eccezionale tratta dal tuo libro di cucina preferito.
Hai tre compiti, tutti legati al tempo impiegato per cucinare la lasagna.
Definisci la costante expectedMinutesInOven per verificare quanti minuti la lasagna deve stare in forno. Secondo il libro di cucina, il tempo previsto in forno è di 40 minuti:
expectedMinutesInOven
--> 40
Definisci la funzione preparationTimeInMinutes che prende come parametro il numero di strati che hai aggiunto alla lasagna e restituisce quanti minuti hai impiegato a prepararla, supponendo che ogni strato richieda 2 minuti.
preparationTimeInMinutes 3
--> 6
Definisci la funzione elapsedTimeInMinutes che prende due parametri: il primo parametro è il numero di strati che hai aggiunto alla lasagna, il secondo è il numero di minuti che la lasagna è stata in forno. La funzione deve restituire quanti minuti hai dedicato alla cottura della lasagna, cioè la somma del tempo di preparazione in minuti e del tempo, in minuti, che la lasagna ha passato in forno fino a quel momento.
elapsedTimeInMinutes 3 20
--> 26
Iscriviti a Exercism per imparare e padroneggiare Haskell con 107 esercizi e il mentoring di persone reali, tutto gratis.