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.11.1. Généralités
5.3.11.2. Notations sur les environnements
5.3.11.3. Le cas de Lisp
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

Notations

1. Généralités

2. Notations sur les environnements

3. Le cas de Lisp

3. Le cas de Lisp

Lisp n'implante pas à proprement parler le λ-calcul, parce que dans le langage on interprète les termes Lisp dans le même ensemble, à savoir S=S* (S* est alors dit réflexif). Ceci signifie que l'interprétation d'une formule est susceptible de modifier l'environnement d'interprétation par "effet de bord" – c'est encore plus vrai avec l'emploi des fonctions Lisp eval et apply (on prendra soin de distinguer la fonction Lisp apply du symbole du λ-calcul apply). Pour cette raison on ne peut pas donner de sémantique dénotationnelle "pure" aux expressions Lisp, puisqu'on doit faire intervenir le contexte d'évaluation.

Définition

On a par conséquent un autre symbole "spécial" de S : def, qui définit un nouveau symbole qui va compléter le contexte d'évaluation.

Le schéma général d'une définition est :

(def x val-x)

x est le symbole défini, et val-x la définition proprement dite (elle sera généralement décomposable en deux champs : un champ env-x qui est l'environnement des définitions locales et un champ rep-x qui est la représentation – à nouveau décomposable).

L'interprétation d'une telle définition fournit l'environnement :

(x:→x)

qui est l'interprétation d'environnement du terme (def x val-x), x étant l'interprétation de valeur de ce même terme.

On distingue ainsi deux types d'interprétation des termes :

Ienv : qui retourne un environnement qui va compléter l'environnement courant d'évaluation (c'est donc un élément de [S → S]) ;
Irep : qui retourne une valeur (un élément de S) ;

λ-expressions

L'une des difficultés essentielles dans l'interprétation des expressions Lisp est l'interprétation qu'on doit donner à l'évaluation d'une λ-expression Lisp, de la forme :

(lambda(x) E)

Tant qu'on n'applique pas cette forme évaluée, on en peut pas réellement la dénoter dans le modèle précédent. On introduit donc une troisième forme d'évaluation :

Irep[env (lambda(x) E)]
= Iλ[env λx.E]

la forme Iλ étant conservée "telle quelle" dans l'attente d'une application (de ce fait le domaine des termes Lisp peut ne pas être réflexif : la forme Iλ, avec la sémantique qu'on lui attache, n'étant jamais tout à fait un terme du langage).

Environnement

Un « environnement » (au sens des termes Lisp) est un ensemble de définitions connexes, qu'on note ici :

env = ((def x A) (def y B)···)

et dont l'interprétation d'environnement a principalement deux formes possibles :