Como calcular o número de vezes que o padrão em uma lista aparece em outra lista no Esquema
Estou preso em um programa de esquema por cerca de 5 horas. O programa em que estou trabalhando deve receber duas listas como entrada e depois calcular o número de vezes que o padrão na primeira lista aparece na segunda list
Por exemplo:>(patt '(b c) '(a b c d e b c))
==> answer = 2
(patt '(a b c)' (a b c a b c d e a b c c c)) ==> answer = 3
(patt '((a b) c)' (a b (a b) c d e b c)) ==> answer = 1
Abaixo é o código que tenho até agor
(define (patt lis1 lis2)
(cond
((null? lis1) 0)
((null? lis2) 0)
[(and (> (length lis1) 1) (eq? (car lis1) (car lis2))) (patt (cdr lis1) (cdr lis2))]
((eq? (car lis1) (car lis2)) (+ 1 (patt lis1 (cdr lis2))))
(else (patt lis1 (cdr lis2)))
))
Pode alguém por favor me ajudar a resolver isso. Obrigado