Lista reversa na raquete em O (n)
Eu preciso escrever uma função recursiva no esquema que pega uma lista de átomos e a reverte em tempo linear. Eu só posso usar define, lambda, contras, carro, cdr, cond, let e nulo? . Aqui está o que eu tenho até agora:
(define reverse
(lambda (lat)
(cond
((null? lat) lat)
(else (cons (reverse (cdr lat)) (cons (car lat) '()))))))
Então, quando eu chamo a função:
(reverse '(a b c d))
Eu recebo a seguinte saída:
'(() (((() 4) 3) 2) 1)
qualquer ajuda seria muito bem vinda.