´
Evaluation d’une application de fonction (1/4)
M´
ecanisme d’´
evaluation de f x
Soit E = b(x,3),...,(f,y y+1, Env f)CEnv fc
l’environnement dans lequel on applique f x ;;
1x est ´
evalu´
e dans l’environnement courant E =⇒3
2f est ´
evalu´
ee dans E =⇒fermeture :
y y+1, Env f
3on cr´
ee un env local E loc = b(y,3) CEnv fc:
on rajoute donc `
a Env f une liaison entre y, le param`
etre
formel de f, et sa valeur (3)
4On ´
evalue le corps de f (ici y+1) dans E loc =⇒4
5On retourne la valeur 4 et on d´
etruit E loc
Christophe Gonzales – Pierre-Henri Wuillemin Cours num´
ero 2: environnements – fonctions – fonctions r´
ecursives
´
Evaluation d’une application de fonction (2/4)
#let y = 3 ;;
letfx=ify=2thenxelsex-2;;
let y = 2 ;;
f 3;;
Que vaut f 3 ? 3 ou 1 ?
Indice : constituer l’environnement :
Au d´
epart, environnement E0
puis E1=b(y,3) CE0c
puis E2=b(f,x ..., E1),(y,3) CE0c
puis E3=b(y,2),(f,x ..., E1),(y,3) CE0c
f 3 est ´
evalu´
ee dans E3
Christophe Gonzales – Pierre-Henri Wuillemin Cours num´
ero 2: environnements – fonctions – fonctions r´
ecursives
´
Evaluation d’une application de fonction (3/4)
#let y = 3 ;;
letfx=ify=2thenxelsex-2;;
let y = 2 ;;
f 3;;
E1=b(y,3) CE0c
E3=b(y,2),(f,x ..., E1),(y,3) CE0c
13 est ´
evalu´
e dans E3=⇒3
2f est ´
evalu´
e dans E3=⇒fermeture :
x ify=2thenxelsex-2,E1
3on cr´
ee un environnement local E loc = b(x,3) CE1c
4on ´
evalue ify=2thenxelsex-2dans E loc ⇒1
5on retourne 1 et on d´
etruit E loc
Christophe Gonzales – Pierre-Henri Wuillemin Cours num´
ero 2: environnements – fonctions – fonctions r´
ecursives
´
Evaluation d’une application de fonction (4/4)
R`
egle : Les valeurs des «identifiants»utilis´
ees dans le corps
d’une fonction (except´
es celles des param`
etres formels) sont
celles que ces identifiants avaient lors de la d ´
eclaration de la
fonction
=⇒vous pouvez d´
efinir de nouvelles liaisons avec des
identifiants utilis´
es dans une fonction, cela n’a aucun impact sur
la fonction.
Christophe Gonzales – Pierre-Henri Wuillemin Cours num´
ero 2: environnements – fonctions – fonctions r´
ecursives