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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta