Je fais un programme qui accepte une liste et deux atomes et remplace atom-1 par atom-2 si atom-1 apparaît dans la liste.
Je fais la programmation dans un éditeur de texte à l'aide d'un système UbuntuCommon Lisp: erreur "CDR LST devrait être une expression lambda"
Voici mon code:
#! /usr/bin/clisp
(defun my-replace (lst x y)
(cond
((eq lst nil) nil)
((eq (cdr lst) nil) nil)
((eq (car lst) x) (setq (car lst) y))
(t (my-replace ((cdr lst) x y)))))
Lorsque je tente d'exécuter ce, Clisp montre cette erreur:
*** - SYSTEM::%EXPAND-FORM: (CDR LST) should be a lambda expression
Je suis débutant en Lisp.
Dites-moi comment résoudre cette erreur.
Ceci pourrait probablement être fermé en tant que doublon de [Erreur lisp commune: "devrait être l'expression lambda"] (http://stackoverflow.com/q/2575819/1281433), ou [lisp - devrait être une expression lambda] (http://stackoverflow.com/q/22163216/1281433), ou [Pourquoi mon code Lisp me donne-t-il ... devrait être une expression lambda?] (http://stackoverflow.com/q/26941771/1281433), ou [erreur lisp: devrait être l'expression lambda] (http://stackoverflow.com/q/23746775/1281433), ou [liste devrait être une expression lambda] (http://stackoverflow.com/q/12561779/1281433), etc., qui ont tous le même problème sous-jacent: '((...) ...)'. –
@JoshuaTaylor: le message d'erreur CLISP n'est pas très bon ... –