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;