Je viens de commencer à apprendre Common Lisp il y a quelques jours, et j'essaye de construire une fonction qui insère un nombre dans un arbre. Je reçois une erreur,Erreur de lisp commune: "devrait être l'expression de lambda"
*** - SYSTEM::%EXPAND-FORM: (CONS NIL LST) should be a lambda expression
De googler autour, il semble que cela se produit lorsque vous avez trop de jeux de parenthèses, mais après avoir regardé cela pour une heure et changer les choses, je peux » Je ne sais pas où je pourrais faire ça.
C'est le code où ça se passe:
(defun insert (lst probe)
(cond ((null lst) (cons probe lst))
((equal (length lst) 1)
(if (<= probe (first lst))
(cons probe lst)
(append lst (list probe))))
((equal (length lst) 2)
((cons nil lst) (append lst nil) (insertat nil lst 3)
(cond ((<= probe (second lst)) (insert (first lst) probe))
((> probe (fourth lst)) (insert (fifth lst) probe))
(t (insert (third lst) probe)))))))
Je suis sûr que ça se produit après la ((égale (LST longueur) 2), où l'idée est d'insérer une liste vide dans l'existant liste, puis ajouter une liste vide sur l'extrémité, puis insérez une liste vide dans le milieu
Je crois que vous avez raison - j'ai oublié que par contre ne modifie pas réellement la liste. –