Track
/
Haskell
Haskell
/
Esercizi
/
Le deliziose lasagne di Lucian
Le deliziose lasagne di Lucian

Le deliziose lasagne di Lucian

Esercizio di apprendimento

Introduzione

Costanti e funzioni

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

Indentazione / spazi bianchi significativi

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.

  • Le definizioni di moduli, import e funzioni di primo livello devono iniziare dalla colonna più a sinistra.
  • Se un'espressione è divisa su più righe, il codice che fa parte di quell'espressione deve essere indentato sotto quell'espressione con almeno uno spazio.
  • Le parti dell'espressione raggruppate insieme dovrebbero essere indentate con lo stesso numero di spazi.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
    number1 + number2

https://en.wikibooks.org/wiki/Haskell/Indentation

Moduli

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

Commenti

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
-}

Crediti

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

Istruzioni

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.

1. Definisci il tempo previsto in forno, in minuti

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

2. Calcola il tempo di preparazione in minuti

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

3. Calcola il tempo trascorso in minuti

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
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Haskell Exercism

Vuoi iniziare Le deliziose lasagne di Lucian?

Iscriviti a Exercism per imparare e padroneggiare Haskell con 107 esercizi e il mentoring di persone reali, tutto gratis.