Cómo eliminar todos los duplicados en una lista usando el esquema (solo se permiten funciones de lista abstracta)

Sé cómo escribir esto de manera recursiva.

(define (removed2 lst)
  (cond
       [(empty? lst) empty]
       [(not (member? (first lst) (rest lst)))
        (cons (first lst) (removed2 (rest lst)))]
       [else (removed2 (rest lst))]))

entonces (eliminado2 (lista 1 1 1 2 2 2 3 3 3 3 3 3)) da (lista 1 2 3)

Sin embargo, ¿cómo se reescribe solo usando funciones abstractas (filter, foldr, map y build-list)?

Intenté usar el filtro pero simplemente no funciona.

Respuestas a la pregunta(2)

Su respuesta a la pregunta