liquid> Je sais pas. C'est vrai que ça paraît pas utile, mais pour toutes les instructions de manipulation de listes, je pense qu'une classe de liste chaînée serait intéressante. Puis je fais ça seulement pour apprendre le C++ donc je m'en fous. ^^
Mais tu voudrais qu'il fasse quoi l'interpréteur? Je connais pas le lisp, je fais juste un truc capable de traiter ce genre d'expression:
"(+ 1 2)" -> "3"
"(* 2 4)" -> "8"
"(/ 2 4)" -> "0"
"(+ (- 3 2) 1)" -> "2"
"(< 1 2 3)" -> "1" (car 1 < 2 et 2 < 3)
"(> 1 2 3)" -> "0" (car on n'a pas 1 > 2)
"(car (1 2 3))" -> "1"
"(cdr (1 2 3))" -> "(2 3)"
"(cdar (1 2 3))" -> "2"
"(cddar (1 2 3))" -> "3"
(Copier/Coller de prologin)
Je pense qu'en lisp on peut déclarer des fonctions, variables, etc. mais là je vais pas le faire.
En revanche, dans la question de prologin sur l'interpréteur RPL, on doit gérer des variables.
Si tu veux, on code ça à deux. (Après la réussite de ****, je suis pas très sûr que ça sortira, mais bon...

)
geogeo> RPL faut voir ça comme une pile. Dernier élément entré, premier sorti.
Quand on donne un nombre il l'empile, quand on donne un nom de fonction, il dépile les arguments de la fonction de la pile.
Par exemple "2 3 +" ça donne une pile avec un élement, 5.
Si je fais "2 3 + 2 *" ça fera 10.
Il existe en plus quelques fonctions particulières pour gérer la pile, comme DUP pour dupliquer l'élement en haut de la pile, DROP pour le supprimer, ou encore SWAP pour échanger les 2 premiers élements de la pile.