Erlang (linguaggio)

Lo Erlang è un linguaggio di programmazione non orientato a contesti specifici ma in grado di lavorare con la programmazione concorrente; può gestire cioè più processi che interferiscono tra loro in esecuzione) e su sistemi runtime (vale a dire senza una compilazione ed esecuzione ma con una continua modifica).

Fu progettato per gestire applicazioni non-stop, distribuite e stabili. Da quando è uscita una versione open-source nel 1998 è stato adottato da vari compagnie multi nazionali come la Nortel e T-Mobile.

Il "sottoinsieme sequenziale di Erlang" è un linguaggio funzionale, a valutazione rigida, non polimorfo e con typing dinamico.

Il suo codice ha il seguente aspetto:

-module(fact).
 -export([fac/1]).
 
 fac(0) -> 1;
 fac(N) where N > 0 -> N * fac(N-1).
 

Qui di seguito una implementatione dell'algoritmo di ordinamento veloce 'quicksort'

%% quicksort(List)
 %% Sort a list of items
 -module(quicksort).
 -export([qsort/1]).
 
 qsort([]) -> [];
 qsort([Pivot|Rest]) ->
     qsort([ X || X <- Rest, X < Pivot]) ++ [Pivot] ++ qsort([ Y || Y <- Rest, Y >= Pivot]).
 

L'esempio di cui sopra richiama ricorsivamente la funzione qsort fino a quando non c'è più nulla da ordinare. L'espressione

[ X || X <- Rest, X < Pivot]

può essere letta come un

"Scegli tutte le X per le quali X è un membro di Rest e X è minore di Pivot",

ciò finisce col divenire un modo molto facile per gestire le liste.

Dal momento che è possibile valutare una qualsiasi espressione booleana tra due differenti tipi, il calcolo è diretto, per esempio 1 < a restituirà true. In ogni caso una funzione di confronto può essere usata se l'ordinamento col quale il linguaggio Erlang restituisce i valori true o false) che occorre cambiare. Per esempio, se noi volessimo una lista ordinata per la quale a > 1 restituisce true.

Collegamenti esterni

See also: Erlang (linguaggio), Linguaggio di programmazione, Valutazione rigida