listdiff是一对汽车为L并且其cdr为eq的一对?到L,或到(cdr L),或到(cdr(cdr L)))等.listdiff的cdr不必是列表;它可能是任何物体。
listdiff D表示(cd D)之前的(车辆D)的前缀。例如,假设ils是不正确的列表(e i o u.y)。然后(cons ils)返回一个空的listdiff,(cons ils(cdr(cdr ils)))返回一个listdiff,其元素与列表(ae)相同,并且(cons(cdr ils)' y)返回与(eiou)元素相同的listdiff。相反,(cons'()ils)和(consil(追加'(e e o o u)' y))都不会返回listdiff。
我想在Racket上创建以下程序:
(listdiff?obj)
如果obj是listdiff,则返回#t,否则返回#f。
有人可以给我指示吗?
答案 0 :(得分:0)
这是您可以使用的骨架。
(define (listdiff? pair)
(define l (car pair)) ; l
(define needle (cdr pair)) ; needle is what to look for in l
(define (search haystack)
;; #t when haystack looks the same as needle
;; #f if haystackk is the empty list
;; otherwise recurse to (cdr haystack)
)
(search l))