Я пытаюсь создать функцию lisp, которая оценивает и упрощает арифметику умножения и сложения. Функция должна работать таким образом, чтобы когда пользователь вызывает функцию (simplify-Mult'(* 1 2)) она печатала только 2 или (simplify-Mult'(*0 3 3 7)) печатала только 0.
Пока у меня это
(defun simplify-multiplication (lis)
(if (not (null lis))
(if (member '0 lis) 0
(if (member '1 lis) cdr lis
(if (listp (car lis))
(cons(simplify(car lis)))
(if (numberp (car lis))
(if (null (cdr lis))
lis
(cons (car lis) (simplify-multiplication (cdr lis)))
)
(if (eq (car lis) '+)
(cons (car lis) (simplify-multiplication (cdr lis)))
(if (eq (car lis) '*)
(cons (car lis) (simplify-multiplication (cdr lis)))
lis
)
)
)
)
)
)
)
)