如何构建一个返回的same?
谓词?我坚持编写一个-predicate 来返回if和是相等的集合,否则。还有一个类似的谓词确定是否是 的元素。#t
(same? '(4 6) '(6 4))
(same? a b)
#t
a
b
#f
(element? el set)
el
set
(是的,这是家庭作业,所以我不是在寻求完全完成的解决方案。我只需要在正确的方向上获得一个或几个凹凸,因为我们的老师几乎找不到任何帮助。)
我们使用列表来表示集合。我们被要求自己建造我们需要的一切。地图等高阶函数几乎被禁止。
问题是我的元素?和一样吗?不适用于:
(same? '(4 6) '(6 4))<br/>
(element? '(2 3) '(1 8 5 '(3 2) 4))
这些应该返回#t
,他们没有,我明白为什么,但我仍然无法修复它。
我的element?
样子是这样的,我知道它只适用于相同顺序的列表,但问题是我如何改进它?(setEmpty
, setFirst
,setRest
被定义为null?
,car
和cdr
。出于某种原因,我们被要求自己制作。)
(define element?
(lambda (x set)
(cond ((setEmpty? set) #f)
((equal? x (setFirst set)) #t)
(else (element? x (setRest set)))
)
)
)
我有一个set?
看起来像这样的工作谓词,可能有用:
(define set?
(lambda (set)
(cond ((setEmpty? set) #t)
((list? (setFirst set))
(if (element? (setFirst set) (setRest set))
#f
(set? (setFirst set))))
(else (if (element? (setFirst set) (setRest set))
#f
(set? (setRest set))
)
)
)
)
)
#t
如果列表及其“子列表”没有重复项,则返回。我还有一个程序可以从一个列表中创建一个真正的集合,其中的重复项可以正常工作。