• [^] # Re: L'exemple du lisp

    Posté par (site web personnel) . En réponse au message Homoiconicité. Évalué à 3.

    Ça permet d'écrire des programmes qui manipulent leur propre code comme si c'était des données (car c'est des données)

    Oui mais ce n'est pas du tout ce que fait ton exemple, que tu pourrais écrire en C (sans même un paradigme fonctionnel).

    Ce qui illustrerait bien l'homoïcononicité serait de prendre d'écrire des fonctions de ce type:

    (defun find-global-variables (f) …) => liste des variables globales présentes dans f
    (defun preserve-global-variables (f) …) => fonction ayant le même effet que f mais l'appel à f ne change pas les varaibles globales
    (defun trace-variable (f symbol) …) => fonction ayant le même effet que f mais affiche toutes les modifications de la variable symbol
    (defun change-method (f g1 g2)…) => fonction déduite de f en remplaçant tous les appels à g1 par des appels à g2.