【请教】 在list里面鉴定是不是一样的元素
scheme吧
全部回复
仅看楼主
level 1
Viper882 楼主
请教怎样在scheme写这个, 我从C++刚过来学习,有点搞不清了
我想从一个list里面找相同element,如果有就输出
#f, 如果没有就输出#
t
比如(diff? '(2 7 1 4 1) ;表示这这个list里面的element是不是都是不一样
#f
如果 (diff? (1 2 3 4 5 6))
#t
(define diff?
(lambda (L)
(cond
((null? L) #f)
((equal? (car L) (car(cdr L))) (diff (cdr L)))
((diff? (cdr L)))
)))
(all-different? '(1 2 3 1))
我这里有error出现:
car: contract violation
expected: pair?
given: '()
2017年02月21日 04点02分 1
level 1
这是我的代码:
(define all-different?
(lambda (ls)
(if [or (null? ls) (null? (cdr ls))]
#t
(and (not (member (car ls) (cdr ls)))
(all-different? (cdr ls))))))
你的第二个case中,(cdr L)如果是'(),就不能取car了
2017年08月05日 14点08分 2
1