Как избавиться от дубликатов в списке, но сохранить порядок

Я использую Студент среднего уровня с Lambda в DrRacket, мне было интересно, как можно удалить дубликаты в list, сохраняя при этом порядок. Например, (remove-dup (list 2 5 4 5 1 2)) создаст (list 2 5 4 1) . Пока у меня есть это:

(define (remove-duplicates lst)
  (cond
    [(empty? lst) empty]
    [(member? (first lst) (rest lst)) 
     (remove-duplicates (rest lst))]
    [else (cons (first lst) (remove-duplicates (rest lst)))]))

, но есть проблема, так как он не соблюдает порядок. Может ли кто-нибудь указать мне правильное направление? Спасибо за ваше время.

6
задан ruakh 18 November 2011 в 16:08
поделиться