Erlang - Boucles

Erlang est un langage de programmation fonctionnel et ce qu'il faut se rappeler de tous les langages de programmation fonctionnels, c'est qu'ils n'offrent aucune construction pour les boucles. Au lieu de cela, la programmation fonctionnelle dépend d'un concept appelé récursivité.

pendant la mise en œuvre de la déclaration

Puisqu'il n'y a pas d'instruction while directe disponible dans Erlang, il faut utiliser les techniques de récursivité disponibles dans Erlang pour effectuer une implémentation d'instruction while.

Nous allons essayer de suivre la même implémentation de la boucle while que dans d'autres langages de programmation. Voici le flux général qui sera suivi.

Regardons un exemple de la façon dont nous pouvons utiliser la récursivité pour implémenter le while boucle à Erlang.

Exemple

-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).

Les points clés suivants doivent être notés à propos du programme ci-dessus -

  • Définissez une fonction récursive appelée while qui simulerait l'implémentation de notre boucle while.

  • Entrez une liste de valeurs définies dans la variable X dans notre fonction while à titre d'exemple.

  • La fonction while prend chaque valeur de liste et stocke la valeur intermédiaire dans la variable «Acc».

  • La boucle while est alors appelée récursivement pour chaque valeur de la liste.

La sortie du code ci-dessus sera -

Production

0
1
2
3

pour Statement

Puisqu'il n'y a pas de direct for instruction disponible dans Erlang, il faut utiliser les techniques de récursion disponibles dans Erlang pour effectuer une for mise en œuvre de la déclaration.

Nous essaierons de suivre la même implémentation du forboucle comme il est suivi dans d'autres langages de programmation. Voici le flux général qui doit être respecté.

Regardons un exemple de la façon dont nous pouvons utiliser la récursivité pour implémenter le for boucle à Erlang.

Exemple

-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).

Les points clés suivants doivent être notés à propos du programme ci-dessus -

  • Nous définissons une fonction récursive qui simulerait l'implémentation de notre for loop.

  • Nous utilisons une garde dans la fonction «pour» pour nous assurer que la valeur de N ou la limite est une valeur positive.

  • Nous appelons récursivement la fonction for, en réduisant la valeur de N à chaque récursivité.

La sortie du code ci-dessus sera -

Production

Hello
Hello
Hello
Hello
Hello