www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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:
Mlisp/notes/soutenance.markdown | 10++++------
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 ================================