J'écris une fonction appelée flatten
qui est censée prendre la liste qui a la liste incorporée et renvoie une version simplifiée de celle-ci. Lorsque j'essaie d'exécuter ma fonction, j'obtiens une erreur, indiquant que "la liste Lambda avec des points n'est autorisée que dans les macros, pas ici: LISTE" Des suggestions sur la façon dont je peux résoudre ce problème?Erreur: La liste Lambda avec des points n'est autorisée que dans les macros, pas ici: LISTE?
C'est actuellement ce que j'ai.
(defun flatten list
(cond
(null list)'()
(list (first list))
(append (flatten (first list))
(flatten (rest list)))
(cons (first list (flatten (rest list))))))
Ne pas utiliser 'list' comme nom de symbole; il a déjà une valeur, et cela cachera cela. –
@ScottHunter Dans Common Lisp, les fonctions et les variables (et d'autres choses) se trouvent dans des espaces de noms différents, donc il est parfaitement possible d'utiliser 'list' comme nom de variable. – jkiiski
La [syntaxe de 'defun'] (http://www.lispworks.com/documentation/HyperSpec/Body/m_defun.htm) implique une [liste lambda ordinaire] (http://www.lispworks.com/documentation/ HyperSpec/Body/03_da.htm): le symbole 'list' n'est pas une liste, encore moins une liste lambda ordinaire. Il y a d'autres choses qui ne vont pas ici aussi. – tfb