У меня есть функция, которая различает уравнение и выводит его в виде списка на экран. Сейчас я хочу сделать функцию, которая принимает выражение, возвращаемое следующим образом: '(+ (* x 0) (* 2 1)) и упрощает ответ. Избавляется от x * 0, так как это всегда оценивается как ноль и заменяет 2 * 1 на 2, в конечном итоге возвращая только 2, поскольку 2 + 0 равно 2. Это то, что у меня есть до сих пор, и, очевидно, этого очень не хватает, любая помощь в получении этого начатые будут высоко оценены.
(define (simplify expr)
(if (not (list? expr))
expr
(if (null? (cdr expr))
(car expr)
(case (car expr)
((+
))
))