commit cccf02f8c6d8871774de4519a4d902b6ed4b3b39
parent e724ebc4a66f951eaa0f299881c6535c421ff64f
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Sun, 9 Jan 2011 20:33:21 +0100
soutenance.markdown : 100%.
Diffstat:
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/lisp/notes/soutenance.markdown b/lisp/notes/soutenance.markdown
@@ -30,7 +30,7 @@ Cette transformation est assurée par la fonction squash-lisp décrite ci-dessou
=============
* En 3 passes :
* Passe 1 :
- * macro-expansion (on utilise `mini-meval`) et `eval-when`
+ * macro-expansion (on utilise `mini-meval`) et `eval-when`.
* simplification globale de la syntaxe :
*
(let (a (b 2) c) (list a b c))
@@ -51,10 +51,8 @@ Cette transformation est assurée par la fonction squash-lisp décrite ci-dessou
→ (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)))
-```
+ (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*.
* On fusionne tous les `let` d'une `lambda` en les remontant dans un `let` unique à la racine de la `lamdba`.
@@ -94,7 +92,7 @@ Ramasse-miettes
* On a un gc très simpliste qui copie les données d'une zone de la mémoire vers une autre et vice versa à chaque fois qu'elle est pleine.
* Ce type de gc s'appelle un [two-finger garbage collector](http://en.wikipedia.org/wiki/Cheney's_algorithm "Article wikipédia").
* La raison de ce choix de modèle de gc est que les autres types de gc nécessitent une occupation variable de la mémoire pour l'exécution du
- gc (nécessaire pour le parcours en largeur/profondeur) qui peut être aussi grosse que la mémoire occupée (O(n)) dans le pire des cas.
+ gc (nécessaire pour le parcours en largeur/profondeur) qui peut être aussi grosse que la mémoire occupée (𝑶(𝑛)) dans le pire des cas.
Implémentation de fonctions LISP
================================