Retourner au contenu associé (entrée de forum : Homoiconicité)
Posté par GaMa (site web personnel) le 03 octobre 2012 à 18:26. En réponse au message Homoiconicité. Évalué à 1.
Je ne connaissais pas ce terme mais je comprend ce qu'il veut dire, m'en vais donc te l'expliquer (enfin, je vais essayer)
Prenons l'exemple du lisp (que j'ai appris à l'école et que je n'ai pas touché depuis, il peut y avoir des fautes).
En lisp tout ce représente par des listes. Un liste pouvant contenir des atomes (entier,…) ou d'autre listes. Ainsi
(1 2 3 4)
représente une liste d'entier et
((1 2) (3 4))
représente une liste de liste d'entier (jusque là rien de compliqué)
Là où ça se corse (ça devient intéressant) c'est que le programme s’écrit aussi avec des listes (Homoiconicité):
(+ 1 2 3 4)
représente la somme des 4 entiers.
Ainsi on a : "la principale représentation des programmes est aussi une structure de données d'un type primitif du langage." Tada!!!
Ça permet d'écrire des programmes qui manipulent leur propre code comme si c'était des données (car c'est des données)
(defun operate (operators index arg1 arg2) ( (nth index operators) arg1 arg2 ) ) (operate (list + - / *) 0 3 4) # => (+ 3 4) => 7 (operate (list + - / *) 2 12 4) # => (/ 12 4) => 3 (operate (list min max) 1 12 4) # => (max 12 4) => 12
en c on serait obligé de passer par des (tableaux de) pointeurs de fonction. C'est jouable pour un cas d'école comme celui-ci, mais tout l’intérêt du lisp est justement de l'utiliser pour des cas qui ne sont pas évident.
Matthieu Gautier|irc:starmad
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
# L'exemple du lisp
Posté par GaMa (site web personnel) . En réponse au message Homoiconicité. Évalué à 1.
Je ne connaissais pas ce terme mais je comprend ce qu'il veut dire, m'en vais donc te l'expliquer (enfin, je vais essayer)
Prenons l'exemple du lisp (que j'ai appris à l'école et que je n'ai pas touché depuis, il peut y avoir des fautes).
En lisp tout ce représente par des listes. Un liste pouvant contenir des atomes (entier,…) ou d'autre listes. Ainsi
représente une liste d'entier et
représente une liste de liste d'entier (jusque là rien de compliqué)
Là où ça se corse (ça devient intéressant) c'est que le programme
s’écrit aussi avec des listes (Homoiconicité):
représente la somme des 4 entiers.
Ainsi on a : "la principale représentation des programmes est aussi une structure de données d'un type primitif du langage." Tada!!!
Ça permet d'écrire des programmes qui manipulent leur propre code comme si c'était des données (car c'est des données)
en c on serait obligé de passer par des (tableaux de) pointeurs de fonction. C'est jouable pour un cas d'école comme celui-ci, mais tout l’intérêt du lisp est justement de l'utiliser pour des cas qui ne sont pas évident.
Matthieu Gautier|irc:starmad