Aller au contenu
EN FR

Listes, fonctions et contrôle de flux

Statut documentaire : guide — voir Maturité et preuves.

functionalP comprend des expressions de listes, des intervalles, conditions, boucles, fonctions nommées et formes fonctionnelles avancées.

Listes et intervalles

(1, 2, 3);
();
(1, 2, (5, 4, 6));
1 .. 5;

Parmi les opérateurs de listes utiles : head, tail, last, length, reverse, drop et take.

tail (1, 2, 3);
length (1, 2, 3, 4);
reverse (1, 2, 3);

Condition

status := 0;
if (status = 0) then
begin
  Result := 'ready';
end
else
begin
  Result := 'blocked';
end;

Boucles

sum := 0;
for value in (1, 2, 3, 4) do
begin
  sum := sum + value;
end;
Result := sum;

Les boucles doivent rester petites. La coordination longue ou multi-objets appartient à un modèle de processus.

Fonctions nommées

function double(value)
begin
  value * 2;
end;

Result := double(4);

Une fonction peut être utilisée avec les opérateurs fonctionnels :

Result := map double (1 .. 5);

Lambdas et expressions case

Ce sont des fonctionnalités avancées. Utilisez-les pour des transformations locales, pas pour masquer des règles métier durables.

Result := (lambda(x) x * x) 4;
function normalize(value)
begin
  case value of
    () :- ()
  | _  :- value
  end;
end;