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)