我正在尝试编写一个谓词函数,该函数在将列表定义为拉链时返回 TRUE。拉链被定义为一个正确的列表,其中每个元素都是一个只有两个元素的列表,并且可以是任何表达式。
一个例子是
(zipper? '((a 1)(b 2)))
#t
(zipper? '((a (1)) ((b) 2)))
#t
(zipper? '((a 1 2)(b 1)))
#f
我尝试首先检查参数列表是否已满并返回 false,然后检查列表的 car 到其元素长度,并通过我的函数将列表的 cdr 传回,但我无法让它运行。
(define (zipper? l)
(if (empty? l)
#f
(if (> 1 (length car(l)))
#t
(zipper? (cdr (l))))))
知道我做错了什么以及如何解决吗?我还在学习计划。