afficher >><< masquer ]
SAMPI - Editeur structuré
1. Le Problème et la Proposition
2. Le Langage Primitif de Représentation Textuelle
2.1. Présentation de la Syntaxe Concrète
2.2. Notations
2.3. Exemple de structuration des données
2.4. Exemple de structuration des traitements
2.5. Exemple de structurations connexes
3. Le Langage Complété pour la Structuration des Textes
3.1. Présentation de la Syntaxe Complétée
3.2. Etude quantitative de l'évolution des programmes
3.3. L'édition syntaxique
3.4. étude de cas : le langage LTR3 et l'atelier ENTREPRISE
4. L'Enrichissement du Langage par de Nouveaux Concepts
4.1. Présentation de la Syntaxe Abstraite
4.2. Les difficultés
4.3. Compléter la Syntaxe
5. La Formalisation des Solutions Techniques
5.1. L'évaluation fonctionnelle
5.2. La structuration par les objets
5.3. Modèle sémantique comparé de l'évaluateur
5.3.1. Notations
5.3.2. La fermeture lexicale : le langage Scheme
5.3.3. Les Lisps standards : LeLisp
5.3.4. L'évaluation retardées : « Moi aussi »
5.3.5. Lisp parallèle : Symmetric Lisp
5.3.6. Glossaire
5.4. Comparaison critique
5.5. Construction de la Syntaxe Abstraite
6. Les Comparaisons avec d'autres Approches
7. Les Perspectives
8. Les Editeurs
8.0. brisé sur la barrière de la complexité (une fois de plus)
8.1. L'éditeur ligne : Manuel de l'utilisateur
8.2. L'éditeur page : Guide de l'utilisateur
9. Les Aspects d'Implantation
9.1. Contexte d'évaluation
9.2. La Syntaxe Abstraite : Manuel du concepteur
9.3. L'éditeur page : Guide de l'implanteur
Références
Rubrique Perl-Javascript

Glossaire

application

C'est l'application d'une fonction sur ses arguments :
- notation traditionnelle : M (e)
- notation Lisp : (M e)
- notation du λ-calcul : (M) e
- notation adoptée : (apply M e)
On explicite l'application par le symbole apply.
Par exemple : (apply λx.(+ x 3) 2) retourne 5.

contexte d'évaluation

voir environnement d'évaluation

définition

C'est la définition, en Lisp, d'un nouveau symbole. Son évaluation retourne une valeur d'environnement.
Syntaxe : (def x val-x)
Par exemple : (def x (let ((a 3)) (+a 2))) définit x comme un symbole de valeur 5.

environnement

(d'évaluation) : c'est une fonction partielle d'interprétation des symboles, prolongée sur les termes par des règles qui varient selon les langages.
Par exemple : (x:→1):(y:→2):(x:→3)
 est l'environnement qui à x associe la valeur 1 et à y la valeur 2.
des définitions (locales) : ce sont des définitions locales à la définition d'un symbole, en Lisp.
Par exemple : 
(def x (let ((a 3))
         (lambda(u) (+ a u))))
 définit x comme un symbole de valeur la λ-expression : λu.(+ a u)a vaut 3.

indéfini

C'est une valeur conventionnelle qui symbolise les cas d'erreur à l'évaluation des termes du λ-calcul.

interprétation

C'est la donnée d'un ensemble de valeurs S et d'un ensemble d'environnements d'évaluation.
L'application d'une interprétation à un terme du λ-calcul retourne une valeur.
d'environnement : l'application retourne une valeur d'environnement.
de représentation : l'application retourne une valeur de représentation.

lambda-expression

C'est une abstraction sur un terme : on l'interprète intuitivement comme une fonction à appliquer sur ses arguments.
Par exemple : λx.(+ x 1) s'interprète intuitivement comme la fonction successeur.

parallèle (évaluation)

C'est l'évaluation d'une liste de définitions dans un contexte d'évaluation formé d'un contexte initial prolongé par cette liste de définitions : formellement, c'est la limite d'une suite d'évaluations.
Par exemple : 
(define x 1)
(define y x)
(define z (+ x y))
est évalué en parallèle : 
(define x 1)
(define y 1)
(define z 2)

primitif (symbole, fonction)

Ce sont des symboles du λ-calcul qui ont une interprétation intuitive (+,-,···,1,2,3,···) et pour lesquels, dans une interprétation, on choisit l'interprétation intuitive – on identifie alors dans les notations le symbole et sa valeur d'interprétation.

prolongement (d'environnement)

C'est le prolongement d'un environnement d'évaluation sur l'ensemble des symboles du λ-calcul.
Par exemple : (x:→1):env prolonge la fonction env en x.
(x:→2):(x:→1):env "prolonge" la fonction précédente, en redéfinissant la valeur de la fonction en x.

réflexif (domaine)

C'est un domaine interprété sur lui-même : Lisp est presque un domaine réflexif, exception faite des λ-expressions Lisp qui ne sont jamais tout à fait des éléments du langage.

représentation

C'est l'expression qui définit un nouveau symbole, abstraction faite des environnements des définitions qu'on trouve dans la définition du symbole.
Par exemple : 
(define x (let ((a 1))
            (let ((b 2))
              (+ a b))))
La définition de x est :
  • l'environnement (a:→1)
  • l'expression (let ((b 2)) (+ a b)) qu'on décompose à nouveau :
    • l'environnement (b:→2)
    • l'expression (+ a b)
(+ a b) est la représentation du symbole x.

simultanée (évaluation)

C'est l'évaluation d'une liste de définitions dans un contexte d'évaluation initial commun à toutes les évaluations.
Par exemple : 
(let ((x 1)
      (y x))
     ...)
est évalué en simultané
(si x est défini auparavant par la valeur 2)
(let ((x 1)
      (y 2))
     ...)

symbole

Un symbole est un objet du λ-calcul :

terme (du λ-calcul)

Un terme est un élément de S*, de la forme :

valeur

C'est un élément du domaine d'interprétation S.
On note : I[env t]
env est un environnement d'évaluation et t un terme du λ-calcul.
d'environnement : c'est un élément de l'ensemble [S → S] des fonctions partielles qui à un symbole associent une valeur.
On note : Ienv[env t]
de représentation : c'est un élément de l'ensemble S ; on introduit cette notion pour distinguer cette valeur de la valeur d'environnement d'un terme.
On note : Irep[env t]
de lambda-expression : c'est, formellement, un élément de S.
On note : Iλ[env λx.E]

valeur (en Lisp)

Le domaine d'interprétation est l'ensemble :
S ∪ [S → S] ∪ [S → S]×S*
  • un terme s'interprète dans S : 
I[env t] = Irep[env t]
  • une définition s'interprète dans [S → S] : 
I[env t] = Ienv[env t]
  • une λ-expression s'interprète dans [S → S]×S* : 
I[env t] = Iλ[env λx.E]
Dire que Lisp est rélexif, c'est :