从列表Scheme中删除所有非唯一元素(包括原子,对,列表)

时间:2016-10-20 17:10:47

标签: list scheme unique

我正在尝试编写一个Scheme函数,它将返回输入列表中找到的唯一元素。此函数应与原子,对和列表一起使用。我的意思是如果输入列表看起来像'(1 1 2(2.2)(2.2)(4 3)(4 3)3 5 2 4),该函数应该返回(5)。

这是我目前的代码:

arr

这个问题是它只删除了重复项。

1 个答案:

答案 0 :(得分:0)

I've done this so far:

(define (delduplicates L)
(cond ((null? L) '())
((list? (member (car L) (cdr L)))(delduplicates(cdr L)))
(#T (cons (car L) (delduplicates (cdr L))))))
(delduplicates '(1 1 2 3 3 4 4 5))
> (1 2 3 4 5)

As u can see, it only removes duplicates. I'm new to this type of programming and my imperative mindset prevents any attempts to think in a declarative way.