So entfernen Sie alle Duplikate in einer Liste mithilfe des Schemas (nur abstrakte Listenfunktionen zulässig)

Ich weiß, wie man das rekursiv schreibt.

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

so (remove2 (liste 1 1 1 2 2 3 3 3 3 3 3)) ergibt (liste 1 2 3)

Wie kann man es jedoch nur mit abstrakten Funktionen (Filter, Foldr, Map und Build-Liste) umschreiben?

Ich habe versucht, Filter zu verwenden, aber es funktioniert einfach nicht.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage