Можно создать дубликат:
Symbolic simplification in Haskell (using recursion?)Как упростить приведенные ниже выражения с использованием примитивной рекурсии?
Упрощения я имею в виду, являются
0*e = e*0 = 0
1*e = e*1 = 0+e = e+0 = e-0 = e
и упрощающие постоянные подвыражения, например, Plus (Const 1) (Const 2)
будет Const 3
. Я бы не ожидал, что переменные (или переменные и константы) будут объединены: Var "st"
- это отличная переменная от Var "s"
.
Например simplify(Plus (Var "x") (Const 0))= Var "x"
Синтаксис здесь немного выключен - вам нужно поставить парсеры, например, (Plus (Const 0) (Expr x)), но в противном случае на правильной дорожке – bdonlan 2009-05-07 05:29:18