Erlang - Loops

Erlang è un linguaggio di programmazione funzionale e ciò che deve essere ricordato di tutti i linguaggi di programmazione funzionale è che non offrono alcun costrutto per i cicli. Invece, la programmazione funzionale dipende da un concetto chiamato ricorsione.

while Implementazione della dichiarazione

Poiché in Erlang non è disponibile un'istruzione while diretta, è necessario utilizzare le tecniche di ricorsione disponibili in Erlang per eseguire l'implementazione di un'istruzione while.

Cercheremo di seguire la stessa implementazione del ciclo while come viene seguita in altri linguaggi di programmazione. Di seguito è riportato il flusso generale che verrà seguito.

Diamo un'occhiata a un esempio di come possiamo usare la ricorsione per implementare il while giro in Erlang.

Esempio

-module(helloworld). 
-export([while/1,while/2, start/0]). 

while(L) -> while(L,0). 
while([], Acc) -> Acc;

while([_|T], Acc) ->
   io:fwrite("~w~n",[Acc]), 
   while(T,Acc+1). 
   
   start() -> 
   X = [1,2,3,4], 
   while(X).

I seguenti punti chiave devono essere annotati sul programma di cui sopra:

  • Definire una funzione ricorsiva chiamata while che simulerebbe l'implementazione del nostro ciclo while.

  • Immettere un elenco di valori definiti nella variabile X nella nostra funzione while come esempio.

  • La funzione while prende ogni valore di lista e memorizza il valore intermedio nella variabile "Acc".

  • Il ciclo while viene quindi chiamato in modo ricorsivo per ogni valore nell'elenco.

L'output del codice precedente sarà:

Produzione

0
1
2
3

per Statement

Poiché non esiste un file diretto for dichiarazione disponibile in Erlang, è necessario utilizzare le tecniche di ricorsione disponibili in Erlang per eseguire a for implementazione della dichiarazione.

Cercheremo di seguire la stessa implementazione del forloop come è seguito in altri linguaggi di programmazione. Di seguito è riportato il flusso generale a cui attenersi.

Diamo un'occhiata a un esempio di come possiamo usare la ricorsione per implementare il for giro in Erlang.

Esempio

-module(helloworld). 
-export([for/2,start/0]). 

for(0,_) -> 
   []; 
   
   for(N,Term) when N > 0 -> 
   io:fwrite("Hello~n"), 
   [Term|for(N-1,Term)]. 
   
start() -> 
   for(5,1).

I seguenti punti chiave devono essere annotati sul programma di cui sopra:

  • Stiamo definendo una funzione ricorsiva che simulerebbe l'implementazione del nostro for loop.

  • Stiamo utilizzando una guardia all'interno della funzione "for" per garantire che il valore di N o il limite sia un valore positivo.

  • Chiamiamo ricorsivamente la funzione for, riducendo il valore di N ad ogni ricorsione.

L'output del codice precedente sarà:

Produzione

Hello
Hello
Hello
Hello
Hello