listdiff是一对车是L,cdr是eq的人to L,or to(cdr L),or to(cdr(cdr L))等。listdiff的cdr不必是列表;它可以是任何对象。
listdiff D表示(cdr D)前面的前缀(card)例如,假设ils是不正确的列表(a e i o u)是的)然后(cons-ils-ils)返回一个空listdiff,(cons-ils(cdr(cdr-ils))返回一个listdiff,其元素与列表(a e)相同,(cons(cdr-ils)'y)返回一个listdiff,其元素与列表(e i o u)相同相反,(cons'()ils)和(cons ils(append'(a e i o)'y))都不返回listdiff。
我想在Racket上创建以下过程:
(listdiff目标)
如果obj是listdiff,则返回t,否则返回f。
有人能给我做这件事的指示吗?
最佳答案
这是你可以用的骨架。
(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))
关于scheme - 检查对象是否为Scheme中的“listdiff”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42506547/