Нужна помощь в программировании схем

#list #lambda #functional-programming #scheme #lisp

#Список #лямбда #функциональное программирование #схема #lisp

Вопрос:

Я хочу, чтобы программа подсчитывала, сколько раз определенная подстрока была найдена в выражении.Я написал следующий код, но я не получаю ожидаемый результат.

 (define (count-occurrences s slist)
    (if (null? slist)
            0
        (  (count-occurrences-in-s-sexp s (car slist))
           (count-occurrences s (cdr slist)))))

(define (count-occurrences-in-s-sexp s sexp)
    (if (symbol? sexp)
            (if (eqv? sexp s) 1 0)
        (count-occurrences s sexp)))

Input: (count-occur '(a x) '((x y z) x (z (a x) y)) )
Output: 0
Expected O/p : 1

Input: (count-occur 'x '((x y z) x (z (a x) y)))
Output: 3
Expected O/p : 3
  

Когда я даю ввод списка.Я не получаю ожидаемый результат.Кто-нибудь может мне помочь :/

Комментарии:

1. Каков ожидаемый результат?

Ответ №1:

Вы хотите использовать equal? вместо eqv? , чтобы определить, совпадают ли два списка.

Комментарии:

1. Это все то же самое. Он не сравнивает список: ( . Я получаю ноль