Как я могу оценить выражение? - PullRequest
0 голосов
/ 28 ноября 2008

Как я могу оценить выражение, учитывая список значений для переменных, которые оно содержит?

eval::[(Variable,Integer)]->Expr->Integer

Пример:

eval[("x",2), ("y",4)](Mult(Plus(Var "x") (Const))(Var "y"))= 12

1 Ответ

1 голос
/ 28 ноября 2008

Переменная и Expr не являются встроенными типами в Haskell.

Если вы используете библиотеку или работаете над частью более крупной программы, возможно, она обладает теми возможностями, которые вам нужны.

Если вы сами определили эти типы, то решать вам.

Если это для курсовой работы, то вы можете прочитать о грамматиках и методах синтаксического анализа. Попробуйте разбить строку на токены и создать символическое представление, которое вы сможете оценить. Если вы еще не нашли его, http://www.zvon.org/other/haskell/Outputglobal/index.html - хороший справочный сайт.

Если вы увлекаетесь чем-то более тяжелым (и обладаете твердым контролем над haskell и монадическим программированием), то я бы рекомендовал потратить время на обучение использованию Parsec http://www.haskell.org/haskellwiki/Parsec.

...