Prenez cette fonction:Pourquoi un defun LISP n'a-t-il pas besoin d'un devis avant son argument de paramètre?
(defun sum-greater (x y z)
(> (+ x y) z))
Je crois comprendre que LISP le premier élément dans une liste représente toujours une fonction à exécuter sur les atomes suivants/listes. Alors, pourquoi LISP ne traite pas le x
dans (x y z)
comme une fonction à effectuer sur y
et z
. Clairement ce ne serait pas un comportement souhaitable, mais ce serait le comportement attendu.
Vraisemblablement, la fonction qui définit defun
annule d'une certaine manière l'évaluation LISP standard d'une liste? Si oui, pourriez-vous détailler cela?
Merci
Il retarde aussi l'évaluation sur tous ses autres arguments: vous ne voulez évidemment pas que '(> ...)' soit évalué lorsque vous évaluez la forme 'defun', soit! – Ken
Bon point, j'aurais dû reconnaître que le defun était plus qu'une simple fonction de ce seul. –