TODO : - Ajouter la fonction map-case-analysis - Changer les 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 :) ).