Recursion Racket-如何使用foldr评估列表中的任何元素是否满足参数?

Recursion Racket-如何使用foldr评估列表中的任何元素是否满足参数?,recursion,racket,fold,Recursion,Racket,Fold,我的任务是编写一个名为any?这需要输入一个列表和一个参数过程,然后告诉您该列表中的任何元素是否满足该过程 有吗?古怪的列表2 4 6 8->false 我需要在程序中使用foldr (define (any? procedure list1) (foldr (lambda (x y) (if (procedure x) true (any? procedure y))) false list1)) 这就是我到目前为止所拥有的,但是当我在任何计算机上运行程序时?古怪的列表2 4 6 8我不

我的任务是编写一个名为any?这需要输入一个列表和一个参数过程,然后告诉您该列表中的任何元素是否满足该过程

有吗?古怪的列表2 4 6 8->false

我需要在程序中使用foldr

(define (any? procedure list1)
  (foldr (lambda (x y) (if (procedure x) true (any? procedure y))) false list1))
这就是我到目前为止所拥有的,但是当我在任何计算机上运行程序时?古怪的列表2 4 6 8我不断收到一个错误,说foldr:第三个参数必须是列表,如果是false。我认为这是因为基本情况下的empty变成了boolean false,然后用y代替,这是无效的,因为您需要一个列表来运行递归调用

有人能帮我解决这个问题吗?

foldr为您处理递归;你不应该给任何人打电话?还是在lambda里面。相反,假分支可以是y

或者,更明显一点,也许:

(define (any? procedure lst)
  (foldr (lambda (x y) (or (procedure x) y)) #f lst))
此外,您得到的错误是因为在lambda内部,y是一个布尔值。然后将其作为第二个参数传递给any?,在这里您需要一个列表。悲伤的结果。

foldr为您处理递归;你不应该给任何人打电话?还是在lambda里面。相反,假分支可以是y

或者,更明显一点,也许:

(define (any? procedure lst)
  (foldr (lambda (x y) (or (procedure x) y)) #f lst))

此外,您得到的错误是因为在lambda内部,y是一个布尔值。然后将其作为第二个参数传递给any?,在这里您需要一个列表。悲伤的结果。

谢谢!我正在读更多关于折叠的书,我不敢相信我没有看到那部分。谢谢!我正在读更多关于折叠的书,我不敢相信我没有看到这一部分