方案 - 谓词为空
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 '())
.
我只是构建了一个使用谓词并遍历列表的方案代码。
这是代码:
(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 '())
.