Lista inversa en Raqueta en O (n)
Necesito escribir una función recursiva en Scheme que tome una lista de átomos y la invierta en tiempo lineal. ¿Solo se me permite usar define, lambda, contras, car, cdr, cond, let y null? . Esto es lo que tengo hasta ahora:
(define reverse
(lambda (lat)
(cond
((null? lat) lat)
(else (cons (reverse (cdr lat)) (cons (car lat) '()))))))
Entonces cuando llamo a la función:
(reverse '(a b c d))
Me sale el siguiente resultado:
'(() (((() 4) 3) 2) 1)
Cualquier ayuda sería muy apreciada.