Les Fi sont des motifs lexicaux qui introduisent de
nouveau noms. Ils permettent de produire un environnement d'exécution de
la clause.
Les Ei sont des expressions qui constituent le corps de
la clause, elles sont évaluées dans l'environnement de définition de la
fonction augmenté des liaisons produites pendant le filtrage.
Chaque clause de filtrage|Fi ® Ei
va :
permettre de sélectionner un sous-ensemble de valeurs du type
sv que doit avoir V.
permettre de produire un environnement dans lequel va s'évaluer
l'expression Ei qui définit le corps de la clause comme dans :
letFi=VinEi exécuté dans
un environnement E tel que ( V -E-> V). On
notera Ei les liaisons produites pendant ce filtrage Ei Å E
l'environnement obtenu après avoir augmenté E de ces liaisons.
À l'appel, le paramètre effectif V qui est l'évaluation de l'expression
V dans l'environnement courant est ``superposé'' avec les
filtres Fidans l'ordre du texte.
On peut donc énoncer une règle pour l'évaluation d'un filtre :
V -E-> V,
$ i (|Fi ® Ei) Î
(|F ® E)
et i est le premier indice qui
produise des liaisons Ei de
letFi=V,
Ei -(Ei Å E)-> R
[matchVwith
(|F ® E)] -E-> R
La construction
matchVwith |F ® E est équivalente à (function |F ® E) V.
On peut ajouter des conditions a une clause de filtrage Fi qui
a alors la forme :
|FiwhenCi->Ei
Où Ci est une expression qui doit être de type bool. Elle est
évaluée dans l'environnement d'exécution du corps de la clause :
Si V est le paramètre effectif, et si E est l'environnement courant,
Ei et Ci s'évaluent tous deux dans Ei Å E qui est
E augmenté des liaisons Ei produites pendant le filtrage.