listdiff 是一对其 car 为 L 且其 cdr 为 eq 的对?到 L,或到 (cdr L),或到 (cdr (cdr L))),等等。 listdiff 的 cdr 不必是列表;它可以是任何对象。
一个 listdiff D 表示 (car D) 在 (cdr D) 之前的前缀。例如,假设 ils 是不正确的列表 (aeiou . y)。然后 (cons ils ils) 返回一个空的 listdiff, (cons ils (cdr (cdr ils))) 返回一个与列表 (ae) 具有相同元素的 listdiff,并且 (cons (cdr ils) 'y) 返回一个 listdiff与 (eiou) 相同的元素。相反, (cons '() ils) 和 (cons ils (append '(aeiou) 'y)) 都不会返回 listdiff。
我想在 Racket 上创建以下程序:
(listdiff?obj)
如果 obj 是一个 listdiff,则返回 #t,否则返回 #f。
任何人都可以给我指示吗?