Scheme 让我知道代码中的错误并编辑它

Scheme 让我知道代码中的错误并编辑它,scheme,Scheme,定义一个名为symcount的函数,该函数接受符号和列表,并返回符号在列表中出现的次数。如果列表包含子列表,则无论嵌套的深度有多深,都应计算所有引用 (define syscount(lambda (n x) (if (empty? x) 0 (if (equal? n (car x)) (+ 1 syscount(n (cdr x))))))) 这是我写的“帮助我”请诸如此类: (define (my-flatten xs) (foldr (lambda(

定义一个名为symcount的函数,该函数接受符号和列表,并返回符号在列表中出现的次数。如果列表包含子列表,则无论嵌套的深度有多深,都应计算所有引用

(define syscount(lambda (n x)
  (if (empty? x)
    0
  (if (equal? n (car x))
    (+ 1 syscount(n (cdr x))))))) 
这是我写的“帮助我”请诸如此类:

(define (my-flatten xs)
  (foldr
   (lambda(x acc)
     (if (list? x)
         (append (my-flatten x) acc)
         (cons x acc)))
   (list)
   xs))

(define (my-filter pred xs)
  (let recur ((xs xs)
              (acc (list)))
    (if (empty? xs)
        (reverse acc)
        (if (pred (car xs))
            (recur (cdr xs) (cons (car xs) acc))
            (recur (cdr xs) acc)))))

(define (count-occur s ls)
  (let ((flatten-ls (my-flatten ls)))
    (foldl (lambda (e acc) (if (eq? s e)
                               (+ acc 1)
                               acc))
           0
           flatten-ls)))
测试:

输出为

(系统计数'1'(12 3))
1
(系统计数'1'(1(12)3))
2
(系统计数'1'(1(12)1(1)3))
四,


这看起来像是家庭作业,对吗?你可以看看这里,它将帮助你得到一些答案:)你完全改变了你的问题。。。我把零钱换回来了。如果您需要有关scheme的一般帮助,请开始阅读教程。
> (count-occur 'foo (list 1 'foo (list 2 'foo 3 'bar) 4 (list 5 (list 6 'foo)) 7 'foo 8))
4
(define (syscount n x) 
            (if (null? x) 0 
                  (if (list? (car x))  (+ (syscount n (car x)) (syscount n (cdr x))) 
                         (+ (syscount n (cdr x)) (if (equal? n (car x)) 1 0))))) 
(define (symcount n x)
  (cond((null? x) 0)
       ((list? (car x))(symcount n (car x)))
       ((eq? n (car x))(+ 1 (symcount n (cdr x))))
       (else(symcount n (cdr x)))))