“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 70 — #80
i
i
i
i
i
i
i
i
70
2
• La programmation déclarative
Voici une traduction en langage noyau en regroupant les local pour la clarté :
s ≡
⎧
⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎨
⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎩
local Max in
local A in
local B in
local C in
s 1 ≡
⎧
⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎨
⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎩
Max=proc {$ X Y Z}
s 3 ≡
⎧
⎪ ⎪ ⎨
⎪ ⎪ ⎩
local T in
T=(X>=Y)
s 4 ≡ if T then Z=X else Z=Y end
end
end
A=3
B=5
s 2 ≡ {Max A B C}
end
end
end
end
Vous remarquez que la syntaxe du langage noyau est assez encombrante à cause de sa
simplicité. La simplicité du langage noyau est importante parce qu’elle nous permet
d’avoir une sémantique simple. Le code original a trois raccourcis pour la lisibilité :
– La déclaration de plusieurs variables dans une instruction local.
– L’utilisation des valeurs directement dans les expressions au lieu des identificateurs, comme {P 3} qui est un raccourci pour local X in X=3 {P X}
end.
– L’utilisation d’opérations imbriquées, comme de remplacer le booléen de l’instruction if par l’opération X>=Y.
À partir de maintenant nous utiliserons ces trois raccourcis dans tous les exemples.
Maintenant on peut exécuter l’instruction s. Pour la clarté, nous omettons quelques
pas intermédiaires.
1. L’état initial est :
( [(s, f)], f )
L’environnement et la mémoire sont tous les deux vides (E = f et s = f).
2. Après l’exécution des quatre déclarations local, nous avons :
( [(s 1 , {Max → m, A → a, B → b, C → c})],
{m, a, b, c} )
Précédent

- 85/370

Suivant