Я только начинаю на Лиспе. Я пытаюсь сделать функцию продукта написанной на Лиспе. Функция должна принимать произвольный параметр x и возвращать произведение всех числовых значений, содержащихся в x. Должно выдать следующее:
>(product 'x) -> 1
>(product '(x 5)) -> 5
>(product '((2 2)3)) -> 12
>(product '((a 3)(2 1))) -> 6
Мне удалось сделать следующее:
(defun product (x)
"This function takes in an arbitrary parameter x, and returns the product of all numeric values contained within x."
(cond
((consp x) (* (car x)(product (cadr x))))
((numberp x) x)
(t 1)
)
)
Это обрабатывает случаи как
(product '(2 5))-> 10
(product 'x) -> 1
Но не для таких, как:
>(product '(x 5)) -> 5
>(product '((2 2)3)) -> 12
Я не уверен, куда идти отсюда.