23 lines
1.5 KiB
Plaintext
23 lines
1.5 KiB
Plaintext
TODO :
|
|
- Ajouter la fonction map-case-analysis
|
|
- Changer les <signal> par les fonctions warn (warning ?) ou error selon le cas d'utilisation.
|
|
- Remplacer les ";; cas machin" par le code effectif.
|
|
|
|
|
|
Questions :
|
|
- Le prof a dit qu'on ne devait pas gérer le tas, donc pas d'affectations (setf, ...).
|
|
Or, il est marqué dans notre poly que notre compilo doit se compiler lui-même. Et il est déjà bourré de setf.
|
|
Du coup qu'est-ce qu'on fait ? On ré-écrit le compilo tout en purement fonctionnel ? (quasi-impossible...)
|
|
Ou on implémente une gestion rudimentaire du tas (garbage-collector stop-the-world qu'on lance quand le tas est plein) ?
|
|
|
|
- Comment compiler un code qui définit à l'exécution des fonctions avec des noms aléatoires, et qui les exécute ensuite ?
|
|
Réponse (?) : lorsqu'on appelle une fonction, on l'appelle directement si elle est connue à la compilation, sinon
|
|
on cherche dans une table des fonctions, et un fait un jump indirect dessus. Lorsqu'on tombe sur une définition
|
|
"non statique" comme celle-là, on appelle l'eval embarqué, pour qu'il définise la fonction et la stocke dans sa table
|
|
de fonctions.
|
|
|
|
- Peut-on faire funcall sur des macros ? Si oui, on peut réécrire mapcar de manière beaucoup plus efficace dans
|
|
inplementation-fonctions.lisp. Si non, vu qu'on a defmacro les fonctions car & cdr & d'autres, on ne peut pas les
|
|
funcall :(
|
|
Réponse : non, on ne peut pas faire de funcall, mapcar etc. sur des macros (erreur "undefined function". Normal : ce
|
|
ne sont pas des fonctions :) ). |