Je viens de commencer à apprendre LISP et je suis juste en train de faire la tête autour de la logique pour cela, mais j'ai couru dans une erreur que je ne trouve pas la solution pour..I ' Je suis sûr que c'est parce que j'ai mal utilisé une parenthèse quelque part ou que j'ai abusé d'une fonction en général, mais je l'ai regardé pendant une heure maintenant et je n'ai fait aucun progrès!liste devrait être une expression lambda
(defun not-touching (pos player move)
(let (legal? t)
if ((not (eq (member move '(0 1 2 3 4 7 8 11 12 13 14 15)) nil))
(mapcar #'(lambda(x) (if (not (member move x) nil)
(cond ((and (eq (nth (- (position move x) 1) x) nil)
(not (eq (nth (+ (position move x) 1) x) player))) t)
((and (not (eq (nth (- (position move x) 1) x) player))
(not (eq (nth (+ (position move x) 1) x) player))) t)
((and (not (eq (nth (- (position move x) 1) x) player))
(eq (nth (+ (position move x) 1) x) nil)) t)
(t setf legal? nil))
nil)) *outside-lines*))
legal?))
et l'erreur que je suis en train ressemble à ceci:
SYSTEM::%EXPAND-FORM: (NOT (EQ (MEMBER MOVE '(0 1 2 3 4 7 8 11 12 13 14 15)) NIL)) should be
a lambda expression
Toute aide serait grandement appréciée!
Trop de parenthèses. Enlevez-en une avant "non", sinon elle ressemble à une application de fonction. Et il vous manque des parenthèses dans 'let'. –