Ç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.
[^] # Re: L'exemple du lisp
Posté par Michaël (site web personnel) . En réponse au message Homoiconicité. Évalué à 3.
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: