Filter 方案过滤函数
到目前为止,我已经制作了两个函数来对列表应用过滤器。我试图让函数只返回操作适用的元素,例如所有奇数。我只返回一个布尔值,判断每个数字是否为奇数Filter 方案过滤函数,filter,scheme,filtering,Filter,Scheme,Filtering,到目前为止,我已经制作了两个函数来对列表应用过滤器。我试图让函数只返回操作适用的元素,例如所有奇数。我只返回一个布尔值,判断每个数字是否为奇数 (define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define (my-filter
(define (accumulate op initial sequence)
(if (null? sequence)
initial
(op (car sequence)
(accumulate op initial (cdr sequence)))))
(define (my-filter predicate sequence)
(accumulate (lambda (element rest)(cons (predicate element) rest)) '() sequence))
(my-filter odd? (list 1 2 3 4 5 6 7))
您只需在条件表达式中使用
谓词
。如果谓词的计算结果为#t
,则将当前元素添加到答案中,否则跳过它:
(define (my-filter predicate sequence)
(accumulate (lambda (element rest)
(if (predicate element)
(cons element rest)
rest))
'()
sequence))
例如:
(my-filter odd? (list 1 2 3 4 5 6 7))
=> '(1 3 5 7)