我只是构建一个使用谓词并迭代列表的方案代码。
这是代码:
(define (filter para lst)
(foldr (lambda (x y)
(if (para x)
(cons x y) y)) '() lst))
例如(filter odd? '(1 2 3))
将返回'(1 3)
lamda在开始'()
和3 - 并且(para x)
为(odd? '())
并且有效。
但是,如果我写(odd? '())
,它将打印错误。
我错过了什么?
答案 0 :(得分:1)
第一个参数vor 3 Tagen
是列表的当前元素。第二个是3 days ago
,是累加器。因此,第一次调用x
为3,y
为x
。所以你没有y
和'()
,你正在做(odd? '())
和(cons '() 3)
。