Обратный список в Ракетке за O (n)
Мне нужно написать рекурсивную функцию на схеме, которая берет список атомов и обращает его в обратном направлении за линейное время. Мне разрешено использовать только определение, лямбда, минусы, автомобиль, cdr, cond, let и null? , Вот что у меня так далеко:
(define reverse
(lambda (lat)
(cond
((null? lat) lat)
(else (cons (reverse (cdr lat)) (cons (car lat) '()))))))
Поэтому, когда я вызываю функцию:
(reverse '(a b c d))
Я получаю следующий вывод:
'(() (((() 4) 3) 2) 1)
Любая помощь будет очень высоко ценится.