方案 - 谓词为空

Scheme - predicate gets null

我只是构建了一个使用谓词并遍历列表的方案代码。

这是代码:

(define (filter para lst)
       (foldr (lambda (x y) 
                (if (para x) 
                    (cons x y) y)) '() lst))

例如 (filter odd? '(1 2 3)) 将 return '(1 3)

lamda 进入开始 '() 和 3 - 并使 (para x)(odd? '()) 并且有效。

但是如果我写(odd? '())它会打印一个错误。

我错过了什么?

第一个参数x是列表的当前元素。第二个 y 是累加器。所以在第一次调用时 x 是 3 而 y'()。所以你不是在做 (odd? '())(cons '() 3),你在做 (odd? 3)(cons 3 '()).