Два полезных инструмента, которые должны начать вас на вашем пути:
1) Обход списка:
; traverse: takes a list of numbers
; Goes through each element, one-by-one, and alters it
(define traverse
(lambda (the_list)
(if (empty? the_list)
empty
(cons (+ 1 (first the_list))
(traverse (rest the_list))))))
(traverse (cons 3 (cons 4 empty)))
возврат (cons 4 (cons 5 empty))
2) list?
:
(list? (list 1 2 3))
возвращает #t
(list? 5)
возвращает #f