L'"expérience" montre qu'on peut dégager deux sortes d'attributs :
On trouve généralement pour le premier cas :
On trouve généralement pour le deuxième cas :
Note : on présente ici les vrais attributs de phyla et d'opérateurs (et non les schémas d'attributs) : l'argument des fonctions sera donc toujours la liste préfixée par l'opérateur, privée de ce préfixe.
ENVattributs de phylum
cpltt-ENV-nil ‹arg› ...
(env) – schéma cpltt-phylLST-nil.imptt-ENV-nil ‹arg› ...
imptt-phylLST-nil.evale-ENV ‹arg› ...
evale-phylLST.opérateur : env
evalt-env ‹arg› ...
recht-env ‹arg› ...
cpltt-env ‹arg› ...
cpltt-operLST.imptt-env ‹arg› ...
imptt-operLST.imptc-env ‹arg› ...
imptc-operLST.entre-env ‹arg› ...
entre-operLST.sorte-env ‹arg› ...
sorte-operLST.REPattributs de phylum
cpltt-REP-nil ‹arg› ...
(rep) – schéma cpltt-phylLST-nil.imptt-REP-nil ‹arg› ...
imptt-phylLST-nil.evale-REP ‹arg› ...
evale-phylLST.opérateur : rep
evalt-rep ‹arg› ...
cpltt-rep ‹arg› ...
cpltt-operLST.imptt-rep ‹arg› ...
imptt-operLST.imptc-rep ‹arg› ...
imptc-operLST.entre-rep ‹arg› ...
entre-operLST.sorte-rep ‹arg› ...
sorte-operLST.Remarques :
recht-rep de recherche dans une représentation, qui est un cas d'erreur, ce qui est bien naturel.operLST ; par souci de lisibilité, on imprime les atomes atm de la représentation sur une même ligne, sauf mention expresse – le retour à la ligne "^M.
En conséquence, les attributs d'impression ne sont pas des appels aux dmacros du schéma operLST, mais des fonctions "en ligne". L'introduction des schémas n'est donc pas faite pour mieux lier encore des concepts mais juste pour faciliter l'écriture du programme, et on les utilise tant que c'est possible.
LSPattributs de phylum
cpltt-LSP-nil ‹arg› ...
(lsp) – schéma cpltt-phylLST-nil.imptt-LSP-nil ‹arg› ...
imptt-phylLST-nil.evale-LSP ‹arg› ...
evale-phylLST.opérateur : lsp
evalt-lsp ‹arg› ...
cpltt-lsp ‹arg› ...
cpltt-operLST.imptt-lsp ‹arg› ...
imptt-operLST.imptc-lsp ‹arg› ...
imptc-operLST.entre-lsp ‹arg› ...
entre-operLST.sorte-rep ‹arg› ...
sorte-operLST.Remarques :
Ici encore on ne définit pas de fonction recht-lsp de recherche dans un texte Lisp.
TRMattributs de phylum
Complétion et impression dans les cas exceptionnels (nul, atome, liste) seront des cas d'erreur.
evale-TRM ‹arg› ...
opérateur : def
evalt-def ‹nom› ‹env› ‹rep›
recht-def ‹nom› ‹env› ‹rep›
ctx.cpltt-def ‹arg› ...
imptt-def ‹nom› ‹env› ‹rep›
imptc-def ‹nom› ‹env› ‹rep›
entre-def ‹arg› ...
e1 = nom, e2 = environnement, e3 = représentation.sorte-def ‹arg› ...
opérateur : ref
evalt-ref ‹nom› ‹env›
recht-ref ‹nom› ‹env›
'faux' – on ne réévalue pas une référence indéfinie.cpltt-ref ‹arg› ...
ref,cpltt-operUTI.imptt-ref ‹nom› ‹env›
imptt-operUTI.imptc-ref ‹nom› ‹env›
imptc-operUTI.entre-ref ‹arg› ...
e1 = nom, e2 = environnement – schéma entre-operUTI.sorte-ref ‹arg› ...
sorte-operUTI.ATMattributs de phylum
cpltt-ATM-atome ‹arg›
‹arg› s'il s'agit d'une chaîne de caractères (string), et la valeur nil sinon – cas d'erreur.imptt-ATM-atome ‹arg›
‹arg› : s'il s'agit d'une chaîne de caractères, on l'encadre par des guillemets et on tient compte du cas où cette chaîne spécifie un retour à la ligne "^M".evale-ATM ‹arg› ...
opérateur : stg
evalt-stg ‹nom›
stg : on retourne la conversion en chaîne de caractères du nom (fonction Lisp string).cpltt-stg ‹arg› ...
stg.imptt-stg ‹nom›
stg.imptc-stg ‹nom›
stg : on n'imprime que le nom.entre-stg ‹arg› ...
entre-nom.sorte-stg.opérateur : use
evalt-use ‹nom› ‹env›
cpltt-use ‹arg› ...
cpltt-operUTI.imptt-use ‹nom› ‹env›
imptt-operUTI.imptc-use ‹nom› ‹env›
imptc-operUTI.entre-use ‹arg› ...
e1 = nom, e2 = environnement – schéma entre-operUTI.sorte-use ‹arg› ...
sorte-operUTI.Remarques :
On n'a encore aucune fonction de recherche, ni pour stg ni pour use.
SEXOn regroupe ici les attributs attachés aux phyla "prédéfinis" ATOME et LISTE.
On ne définit pas de fonction de recherche pour les cas exceptionnels (nul, atome, liste) : ce seront toujours des cas d'erreur.
cpltt-atome ‹arg›
cpltt-liste ‹arg› ...
imptt-atome ‹arg›
string) sont encadrées par des guillemets.imptt-liste ‹arg› ...
entre-atome ‹arg›
entre-liste ‹arg›
lsp, qui construit un objet sur le modèle de l'opérateur lsp. On en déduit qu'on n'a pas d'attribut de sortie, ni sur les atomes, ni sur les listes.Ces deux fonctions sont toujours les attributs attachés aux cas exceptionnels des autres phyla, respectivement pour le cas atome et le cas liste. On obtient donc éventuellement des impressions "surchargées", où apparaissent des termes où on n'en attend pas, mais aussi on a une impression plus conforme à l'état courant de la représentation interne des objets qu'on manipule.