“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 86 — #96
i
i
i
i
i
i
i
i
86
2
• La programmation déclarative
if expression 1 then true else expression 2 end
c’est-à-dire expression 2 n’est pas évaluée si expression 1 est true.
Les balises d’insertion
La balise d’insertion « $ » change toute instruction en une expression. La valeur de
l’expression est ce qui est à la position indiquée par la balise. Par exemple, l’instruction
{P X1 X2 X3} peut être écrite {P X1 $ X3}, qui est une expression avec la
valeur X2. Le code source peut donc être plus concis, parce que l’on évite de déclarer
et d’utiliser l’identificateur X2. La variable qui correspond à X2 est cachée du code
source.
Les balises d’insertion peuvent rendre le code source plus lisible pour un programmeur averti, quoiqu’il soit plus difficile pour un débutant de voir comment le code
est traduit en langage noyau. Nous les utiliserons uniquement quand elles augmentent
considérablement la lisibilité. Par exemple, au lieu d’écrire
local X in {Obj get(X)} {Browse X} end
nous écrivons {Browse {Obj get($)}}. Une fois que vous êtes habitué aux
balises d’insertions, elles deviennent concises et claires. Notez que la syntaxe des
valeurs procédurales expliquée dans la section 2.3.3 est cohérente avec la syntaxe des
balises d’insertion.
2.6.2 Les fonctions (l’instruction fun)
Le modèle déclaratif fournit une abstraction linguistique pour programmer avec des
fonctions. C’est notre premier exemple d’une abstraction linguistique comme nous
l’avons définie en section 2.1.2. Nous définissons la nouvelle syntaxe des définitions
et appels de fonction et montrons comment les traduire en langage noyau.
La définition d’une fonction
Une définition de fonction est différente d’une définition de procédure de deux points
de vue : elle commence avec le mot clé fun et le corps doit terminer avec une
expression. Voici un exemple d’une définition simple :
fun {F X1 ... XN} statement expression end
Cela devient la définition de procédure suivante :
proc {F X1 ... XN ?R} statement R=expression end
i
i
i
i
i
i
i
i
86
2
• La programmation déclarative
if expression 1 then true else expression 2 end
c’est-à-dire expression 2 n’est pas évaluée si expression 1 est true.
Les balises d’insertion
La balise d’insertion « $ » change toute instruction en une expression. La valeur de
l’expression est ce qui est à la position indiquée par la balise. Par exemple, l’instruction
{P X1 X2 X3} peut être écrite {P X1 $ X3}, qui est une expression avec la
valeur X2. Le code source peut donc être plus concis, parce que l’on évite de déclarer
et d’utiliser l’identificateur X2. La variable qui correspond à X2 est cachée du code
source.
Les balises d’insertion peuvent rendre le code source plus lisible pour un programmeur averti, quoiqu’il soit plus difficile pour un débutant de voir comment le code
est traduit en langage noyau. Nous les utiliserons uniquement quand elles augmentent
considérablement la lisibilité. Par exemple, au lieu d’écrire
local X in {Obj get(X)} {Browse X} end
nous écrivons {Browse {Obj get($)}}. Une fois que vous êtes habitué aux
balises d’insertions, elles deviennent concises et claires. Notez que la syntaxe des
valeurs procédurales expliquée dans la section 2.3.3 est cohérente avec la syntaxe des
balises d’insertion.
2.6.2 Les fonctions (l’instruction fun)
Le modèle déclaratif fournit une abstraction linguistique pour programmer avec des
fonctions. C’est notre premier exemple d’une abstraction linguistique comme nous
l’avons définie en section 2.1.2. Nous définissons la nouvelle syntaxe des définitions
et appels de fonction et montrons comment les traduire en langage noyau.
La définition d’une fonction
Une définition de fonction est différente d’une définition de procédure de deux points
de vue : elle commence avec le mot clé fun et le corps doit terminer avec une
expression. Voici un exemple d’une définition simple :
fun {F X1 ... XN} statement expression end
Cela devient la définition de procédure suivante :
proc {F X1 ... XN ?R} statement R=expression end
