Correction de quelques bugs dans le markdown.

This commit is contained in:
Georges Dupéron 2011-01-09 20:19:14 +01:00
parent 6109acc947
commit e724ebc4a6

View File

@ -34,7 +34,7 @@ Cette transformation est assurée par la fonction squash-lisp décrite ci-dessou
* simplification globale de la syntaxe :
*
(let (a (b 2) c) (list a b c))
-> (let ((a nil) (b 2) (c nil)) (list a b c))
(let ((a nil) (b 2) (c nil)) (list a b c))
* unification de la syntaxe des let, let*, flet, labels.
* tous les appels de fonction sont transformés en funcall.
* ré-écriture des `tagbody`/`go`, `throw`/`catch`, `block`/`return`/`return-from` en termes de `unwind`/`unwind-protect`,
@ -45,15 +45,15 @@ Cette transformation est assurée par la fonction squash-lisp décrite ci-dessou
* Passe 2 :
* noms uniques pour les variables locales. Il n'y a donc plus besoin de connaître l'imbrication des environnements pour savoir à quelle
définition fait référence l'utilisation d'une variable.
* toutes les déclarations de variables locales (`let`,`let*`,`flet`,`labels`,`lambda`) sont transformées en `simple-let`
* toutes les déclarations de variables locales (`let`, `let*`, `flet`, `labels`, `lambda`) sont transformées en `simple-let`
* le `simple-let` ne fait que déclarer, il n'afecte pas de valeurs :
(let ((a nil) (b 2)) (list a b))
-> (simple-let (a b) (setq a nil) (setq b 2) (list a b))
(simple-let (a b) (setq a nil) (setq b 2) (list a b))
* simplification de la lambda-list (élimination de `&optional`, `&rest`, `&key`, `&allow-other-keys`, `&aux`)
* suppression des paramètres de la `lambda` :
```lisp
(lambda (x y) (+ x y))
-> (simple-lambda (simple-let (x y) (setq x (get-param 0)) (setq y (get-param 1)) (+ x y)))
```lisp
(lambda (x y) (+ x y))
(simple-lambda (simple-let (x y) (setq x (get-param 0)) (setq y (get-param 1)) (+ x y)))
```
* Passe 3
* On lorsqu'une variable à l'intérieur d'une `lambda` référence une déclaration à l'extérieur de la `lambda`, on la marque comme étant *capturée*.