尝试为Scheme创建过滤器函数

时间:2015-02-04 20:22:10

标签: scheme

所以我有

(define (countNumber lats)
  (let loop ((lats2 lats)
    (count 0))(cond ((null? lats2) count)
     ((number? (car lats2)) 
      (loop (cdr lats2) (+ count 1)))
        (else (loop (cdr lats2) count)))))

我希望制作类似

的过滤功能
(define (filter func lst)
  (countNumber (filter lst)))

所以基本上你传递的东西(过滤甚至?'(1 2 3 4))然后返回2和4. filter:arity mismatch是给出的错误。

1 个答案:

答案 0 :(得分:0)

您忘记传递func谓词,并且不会将您的函数filter命名为与内置过程发生冲突。试试这个:

(define (my-filter func lst)
  (countNumber (filter func lst))