Так что я должен посчитать вхождение слова (или символа, если быть более точным) в список в lisp. Например, входные данные:
(freq 'c '(a c c c c (c c c e)))
должны произвести счет 7, поскольку в аргументе списка есть 7 c. У меня есть следующий код, но он не работает. Я могу сосчитать 4 с, которые являются базовыми элементами, и 3 с, которые находятся в подсписке, но я не знаю, как добавить их вместе. Кроме того, я использую только примитивные типы данных.
(defun freq (a L)
(cond
((null L) 0)
((listp (car L)) ( (freq a (car L))) ((freq a (cdr L))))
((eq a (car L))(+ 1 (freq a (cdr L))))
(t ((freq a (cdr L))))))