Добавить символ звездочки после каждого неотрицательного элемента списка - Lisp

Формулировка задачи:

Не получается написать функцию, которая принимает на вход список, и преобразует его следующим образом: после каждого неотрицательного элемента добавляет звездочку. Например: исходный список: (0 b a -2 4) преобразованный список: ((0 *) b a -2 (4 *)) Помогите, пожалуйста! Добавлено через 22 минуты Ошибку выдает компилятор: sh-4.4$ clisp main.lisp *** - >: NIL is not a real number
(defun f1 (list n)
           (if (>= (car list) 0)
           (append (cons (car list) n) (f1 (cdr list) n))
           (append(f1 (cdr list) n))
           )
)
 
(f1 '(2 -1 11) '*)

Код к задаче: «Добавить символ звездочки после каждого неотрицательного элемента списка - Lisp»

textual
(defun f (lst)
  (cond ((null lst) nil)
        ((numberp (car lst)) 
         (cons (if (>= (car lst) 0) (list (car lst) '*) (car lst)) (f (cdr lst))))
        (t (cons (car lst) (f (cdr lst))))))
          
==> F
 
(f  '(0 b a -2 4))
 
==> ((0 *) B A -2 (4 *))

7   голосов, оценка 3.714 из 5


СОХРАНИТЬ ССЫЛКУ