Ваш код работает нормально
(defun my-replace (lst source target)
"Replace every first-level occurrence of source with target in lst."
(cond ((null lst) nil) ; stopping condition
((equalp (car lst) source)
(cons target (my-replace (cdr lst) source target))) ; if head matches source, replace head with target
(t (cons (car lst) (my-replace (cdr lst) source target))))) ; otherwise use head and check rest of the list
Например,
(my-replace '(a b c) 'b 2) => (A 2 C)
Возможно, вам следует опубликовать сообщение об ошибке.