我有一个函数,它采用一个有两个或三个元素的列表.
;; expecting either ((a b c) d) or ((a b c) d e) (define (has-third-item ls) (if (null? (caddr ls)) false true) )
但是这段代码失败了
mcar: expects argument of type; given ()
在(null?(caddr ls))表达式上.
我也试过了
(eq? '() (caddr ls))
但它也没有用.如何判断是否有第三项?
你不想要caddr(if(null?(cddr ls))...或者只是使用length来查找列表的长度,并将它与你感兴趣的值进行比较.
终止列表的'()将始终位于一对的cdr位置,因此在汽车位置(cad + r将执行)查找它不会有效.