Functional programming 我如何使用过滤器来称呼我的功能工厂?
我在Scheme中创建了一个函数工厂,它接收一个二进制函数f,并将其调用到一个包含1个或多个变量的列表中Functional programming 我如何使用过滤器来称呼我的功能工厂?,functional-programming,scheme,racket,Functional Programming,Scheme,Racket,我在Scheme中创建了一个函数工厂,它接收一个二进制函数f,并将其调用到一个包含1个或多个变量的列表中 (define makeDoForAll (lambda (f) (define (helper a lst) (if (null? lst) a (if (null? (cdr lst)) (f a (car lst)) (helper (f a (car lst))
(define makeDoForAll
(lambda (f)
(define (helper a lst)
(if (null? lst)
a
(if (null? (cdr lst))
(f a (car lst))
(helper (f a (car lst))
(cdr lst)))))
(lambda (x . others)
(helper x others))))
我想创建一个新函数,使用此函数工厂对给定列表中的所有偶数求和,以便(sumEvens 1 2 3 4 5)
将输出6
实现过滤器时如何调用函数工厂(偶数?x)
?一些备注:
- 嵌套的
最好写成if
表达式李>cond
- 看起来您正在实现一个函数
(foldl + 0 (filter even? '(1 2 3 4 5)))
=> 6
请格式化您的代码。“f”应该进行过滤。我认为第二个论点是偶数,加在a上。如果不是,则返回一个未更改的。我怀疑它是否有效,因为您使用的是列表元素作为基本大小写,而没有通过
f
。换句话说,您的“factored”函数对一个元素列表没有任何作用。