Scheme 查找一个s表达式在另一个s表达式中出现的频率

Scheme 查找一个s表达式在另一个s表达式中出现的频率,scheme,racket,counter,frequency,Scheme,Racket,Counter,Frequency,我正在做一个小的个人项目来自学球拍。我目前正在创建一个函数,它接受两个s表达式,并返回第一个表达式在第二个表达式中出现的次数 如果我输入类似于1和'(123123)的内容并返回2,则该程序将按预期工作,但不适用于'(123code>和((12)1221(2)(12)),后者应返回2 这是我目前掌握的代码 (define (count item lst) (cond ((null? lst) 0) ((= item (car lst)) (+ 1 (count item (cd

我正在做一个小的个人项目来自学球拍。我目前正在创建一个函数,它接受两个s表达式,并返回第一个表达式在第二个表达式中出现的次数

如果我输入类似于1和
'(123123)
的内容并返回2,则该程序将按预期工作,但不适用于
'(123code>和
((12)1221(2)(12))
,后者应返回2

这是我目前掌握的代码

(define (count item lst)
  (cond ((null? lst) 0)
        ((= item (car lst)) (+ 1 (count item (cdr lst))))
        (else (count item (cdr lst)))))
试试这个:

(define (count item lst)
  (cond ((null? lst) 0)
        ((equal? item (car lst)) (+ 1 (count item (cdr lst))))
        (else (count item (cdr lst)))))
请记住,
=
用于比较数字。要进行更一般的相等比较,请使用
equal?
。现在它如预期的那样工作:

(count '(1 2) '((1 2) 1 2 (1) (2) (1 2)))
=> 2

非常感谢你!我甚至没有想到=符号在球拍中是如何工作的。