【发布时间】:2017-03-18 07:55:38
【问题描述】:
我正在尝试在 Scheme 中使用“foldr”过滤列表,并仅保留列表中的元素为某些给定谓词返回“true”。 我尝试使用前面关于 foldr/l in scheme 的讨论(例如,this one),并得出以下代码:
(define (filterb pred? lst)
(foldr (lambda (e a)
(if (pred? e)
(cons e a)
a))
lst
'()))
运行命令例如:
(filterb 偶数?'(1 2 3 4))
但不幸的是,它总是返回给定的列表。
我很乐意就我做错了什么以及为什么没有进行过滤获得一些帮助。 谢谢!
【问题讨论】:
-
foldr通常不会按此顺序获取其参数。检查您的文档。 -
谢谢!就是这样……