【发布时间】:2015-06-05 22:07:25
【问题描述】:
我的任务是编写一个名为 any? 的程序,该程序需要输入一个列表和一个参数的过程,然后告诉您该列表中是否有任何元素满足该过程。
例如:(any? odd? (list 2 4 6 8)) -> 错误
我需要在程序中使用foldr。
(define (any? procedure list1)
(foldr (lambda (x y) (if (procedure x) true (any? procedure y))) false list1))
这是我目前所拥有的,但是当我在(any? odd? (list 2 4 6 8)) 上运行程序时,我不断收到错误消息“foldr:第三个参数必须是一个列表,给定假”。我认为这是因为空的基本情况变成了布尔值 false,然后将其替换为 y,这是无效的,因为您需要一个列表来运行递归调用。
有人可以帮我解决这个问题吗?
【问题讨论】: