Olmo - Loop

Elm è un linguaggio di programmazione funzionale. Elm utilizza il concetto di ricorsione come alternativa ai tradizionali costrutti di loop.

Questo capitolo discute il concetto di ricorsione.

Ricorsione

Alcuni linguaggi di programmazione per computer consentono a un modulo o una funzione di chiamare se stesso. Questa tecnica è nota come ricorsione.

Illustrazione

In questo programma vedremo come utilizzare la ricorsione per visualizzare ciao cinque volte.

Step 1 − Create a file Loop.elm

Crea un loop del modulo e definisci una funzione sayHello. La funzione sayHello accetta un valore intero come input e restituisce un valore stringa.

module Loop exposing(..)
//function signature
sayHello:Int ->String
//function implementation
sayHello n =
   case n of
   1 -> "Hello:1 "
   _ -> "Hello:" ++ toString (n) ++ " " ++ sayHello(n-1)

La funzione sayHello controlla se il parametro passato è 1. Se il parametro è 1, la funzione tornerà, altrimenti creerà una stringa Hello e chiamerà la stessa funzione.

Step 2 − Invoke sayHello from REPL

Apri elm REPL dalla cartella del progetto corrente (posizione del file Loop.elm).

//import the module Loop
> import Loop exposing(..)
//invoke the sayHello function with parameter value as 5
> sayHello 5
"Hello:5 Hello:4 Hello:3 Hello:2 Hello:1 Hello:0 " : String
>

Illustrazione

L'esempio seguente stampa la somma di n numeri utilizzando la ricorsione.

> sumOfNos n =\
| if n==0 then 0 \
| else (n) + sumOfNos (n-1)
<function> : number -> number1

In elm REPL, abbiamo creato una funzione sumOfNos che prende un numero di input e somma tutti i numeri da 0 a quel numero.

Ad esempio, se passiamo l'input come 5, sommerà 1 + 2 + 3 + 4 + 5 che è 15 .

> ssumOfNos 5
15 : number

L'output del programma è mostrato sopra.