“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 147 — #157
i
i
i
i
i
i
i
i
3.6 L’efficacité en temps et en espace
147
local Wrap Unwrap in
{NewWrapper Wrap Unwrap}
fun {NewStack} {Wrap nil} end
fun {Push S E} {Wrap E|{Unwrap S}} end
fun {Pop S E}
case {Unwrap S} of X|S1 then E=X {Wrap S1} end
end
fun {IsEmpty S} {Unwrap S}==nil end
end
La figure 3.13 montre l’opération Pop. La boîte avec un trou de serrure représente une
valeur protégée. La clé représente le nom, qui est utilisé par Wrap pour fermer la boîte
(emballer) et par Unwrap pour ouvrir la boîte (déballer). La portée lexicale garantit
que l’emballage et le déballage ne sont possibles qu’à l’intérieur de l’implémentation
de la pile. Les identificateurs Wrap et Unwrap ne sont visibles qu’à l’intérieur de
l’instruction local. En dehors de cette portée, ils sont cachés. Parce que Unwrap
est cachée, il n’y a aucune manière de regarder à l’intérieur d’une valeur de pile. Parce
que Wrap est cachée, il n’y a aucune manière de bricoler les valeurs de pile.
Déballer avec
[a b c]
S
Valeur protégée
[b c]
S1
[a b c]
Pop
X=a
[b c]
Emballer avec
Implémentation de pile sécurisée
Figure 3.13 Faire S1={Pop S X} avec une pile sécurisée.
3.6 L’EFFICACITÉ EN TEMPS ET EN ESPACE
La programmation déclarative est toujours de la programmation ; même avec ses
propriétés mathématiques fortes elle donne toujours de vrais programmes qui tournent
sur de vrais ordinateurs. Il est donc important de réfléchir sur l’efficacité de ses calculs.
Il y a deux côtés à l’efficacité : le temps d’exécution (par exemple, en secondes) et
© Dunod – La photocopie non autorisée est un délit
i
i
i
i
i
i
i
i
3.6 L’efficacité en temps et en espace
147
local Wrap Unwrap in
{NewWrapper Wrap Unwrap}
fun {NewStack} {Wrap nil} end
fun {Push S E} {Wrap E|{Unwrap S}} end
fun {Pop S E}
case {Unwrap S} of X|S1 then E=X {Wrap S1} end
end
fun {IsEmpty S} {Unwrap S}==nil end
end
La figure 3.13 montre l’opération Pop. La boîte avec un trou de serrure représente une
valeur protégée. La clé représente le nom, qui est utilisé par Wrap pour fermer la boîte
(emballer) et par Unwrap pour ouvrir la boîte (déballer). La portée lexicale garantit
que l’emballage et le déballage ne sont possibles qu’à l’intérieur de l’implémentation
de la pile. Les identificateurs Wrap et Unwrap ne sont visibles qu’à l’intérieur de
l’instruction local. En dehors de cette portée, ils sont cachés. Parce que Unwrap
est cachée, il n’y a aucune manière de regarder à l’intérieur d’une valeur de pile. Parce
que Wrap est cachée, il n’y a aucune manière de bricoler les valeurs de pile.
Déballer avec
[a b c]
S
Valeur protégée
[b c]
S1
[a b c]
Pop
X=a
[b c]
Emballer avec
Implémentation de pile sécurisée
Figure 3.13 Faire S1={Pop S X} avec une pile sécurisée.
3.6 L’EFFICACITÉ EN TEMPS ET EN ESPACE
La programmation déclarative est toujours de la programmation ; même avec ses
propriétés mathématiques fortes elle donne toujours de vrais programmes qui tournent
sur de vrais ordinateurs. Il est donc important de réfléchir sur l’efficacité de ses calculs.
Il y a deux côtés à l’efficacité : le temps d’exécution (par exemple, en secondes) et
© Dunod – La photocopie non autorisée est un délit
