从 Scheme 中的列表中删除重复项

Remove duplicates from a list in Scheme

我需要从 Scheme 的列表中删除 连续 个重复项,例如:

(remove '(e f f g h h e e))

应该return

(e f g h e)

这就是我所拥有的,但我一直收到错误消息:

(define (remove lst)
  (cond
    ((null? lst '())
    ((null? (cdr lst)) '())
    ((equal? (car lst)(car(cdr lst)))(remove(cdr lst)))
    (cons(car lst)(remove (cdr lst))))))

我以为我在正确的轨道上,但我看不出我做错了什么。

第一种情况括号不正确,最后一种情况你忘了写else。另外,第二种情况是不正确的;这就是我的意思:

(define (remove lst)
  (cond
    ((null? lst) '())
    ((null? (cdr lst)) lst)
    ((equal? (car lst) (car (cdr lst))) (remove (cdr lst)))
    (else (cons (car lst) (remove (cdr lst))))))