Во-первых, признайте, что ваш вопрос немного противоречив. Если вы хотите удалить первый элемент в списке, у вас останется
((cat dig) (e))
потому что первый элемент в списке - (apple bob car)
.
Если вы пытаетесь избавиться только от apple
, то если глава (машина) списка - это сам список, вы хотите заменить его на его cdr. Я предполагаю, что вы хотите, чтобы это работало независимо от глубины списка, поэтому вам понадобится рекурсивный метод (в отличие от других ответов).
Таким образом, если первый элемент является списком, то вам необходимо удалить первый элемент из списка и рекурсивно добавить его в остальную часть списка. Это похоже на работу:
(define removeFirst
(lambda (input)
(cond
((list? (car input)) (cons (removeFirst (car input)) (cdr input)))
(else (cdr input))
)
)
)
> (removeFirst '((apple bob car) (cat dig) (e)))
((bob car) (cat dig) (e))