Como encomendar minha variável acumulada neste caso no Racket?

Estou codificando com Racket por razões educacionais.

Foi-me dada uma tarefa na qual eu deveria criar uma função que, sem filtro, receberia uma lista como entrada e retornaria outra lista apenas com os números pares da primeira lista.

Eu vim com esta definição recursiva de um processo iterativo:

(define (add-even lista)
  (define (iter lista accu)
    (cond ((null? lista) accu)
          ((even? (car lista)) (iter (cdr lista)
                                     (cons (car lista) accu)))
          (else (iter (cdr lista) accu))))
  (iter lista empty))

Funciona bem. No entanto, recebo o resultado em uma ordem inversa, por exemplo:

(add-even '(1 2 3 4 5 6 7))
>> '(6 4 2)

O que devo fazer para ter a saída na mesma ordem de aparência na entrada?

Eu sei como fazê-lo com uma função reversa. Mas essa não é uma maneira muito eficiente ..

questionAnswers(2)

yourAnswerToTheQuestion