Scheme - 谓词变为空

时间:2017-04-02 14:48:12

标签: lambda scheme predicate

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

这是代码:

(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? '()),它将打印错误。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

第一个参数vor 3 Tagen是列表的当前元素。第二个是3 days ago,是累加器。因此,第一次调用x为3,yx。所以你没有y'(),你正在做(odd? '())(cons '() 3)