Az ERLANG programozási nyelv

Utasítások, vezérlési szerkezetek

Értékadás, üres utasítás

Funkcionális nyelvekben, így az ERLANG-ban sem beszélhetünk értékadásról, csak változókötésekről. Ez az "=" operátorral valósul meg, amikor is mintaillesztés történik.

Üres utasítás nyelvi elemként nem szerepel.

Szekvencia

A függvények törzsében ","-vel választhatjuk el egymástól a kifejezéseket. A ","-nek nincs lezáró szerepe, csak elválasztó: pl. a case szerkezet end zárása elé nem kell.

-module(vesszo). -export([f/1]). f(A)-> A=A+1, 2*A.

Elágazás

Az ERLANG feltételes kiértékelésre a klóztörzsben a case és if primitíveket biztosítja.

Case

A case kifejezés a klóztörzsben minták közti választásra ad módot. Szintaxisa:

case Expr of Pattern1 [when Guard1] -> Seq1; Pattern2 [when Guard2] -> Seq2; ... PatternN [when GuardN] -> SeqN end

Először az Expr értékelődik ki, majd az Expr értéke és a Pattern1, …, PatternN minták szekvenciálisan illesztésre kerülnek, az első illeszkedésig. Illeszkedés esetén ha az (opcionális) őrfeltétel teljesül, a ‘->’ jelet követő szekvencia értékelődik ki. Legalább egy mintának illeszkednie kell, különben futás-idejű kivétel váltódik ki. Ennek elkerülésére gyakran szerepel egy _ -> true ág utolsóként a case primitívben. A case ágak törzseit ";"-vel zárjuk, kivéve az utolsó, melyre fordítási hibát kapunk.

If

Az if kifejezést használjuk a klasszikus értelemben vett elágazások helyett, szintaxisa:

if Guard1 -> Sequence1; Guard2 -> Sequence2; ... end

A Guard1, … feltételek szekvenciálisan értékelődnek ki. Ha egy feltétel igaz, a hozzá tartozó szekvencia kiértékelődik. Az értéke az if szerkezet értéke is lesz egyben. A case–hez hasonlóan kivétel váltódik ki, ha egy feltétel sem teljesül. Ezért gyakran true -> true az utolsó, end előtti sora az if primitívnek, mely az else ágat hivatott helyettesíteni.

Ciklus

Funkcionális nyelv lévén, nincs ilyen nyelvi elem, viszont helyette használhatunk végrekurziót. Végtelen rekurzió írása esetén sem kell félnünk a futási verem telítődésétől, hiszen a fordítóprogram optimalizál.