尝试为 Scheme 创建过滤函数

Trying to Create a filter function for 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)))

所以基本上你传递了类似 (filter even? '(1 2 3 4)) 和它 returns 2 和 4.filter: arity mismatch 是给出的错误。

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

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