Как я могу оценить выражение?

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

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

Пример:

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

1 ответ

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

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

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

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

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

Другие вопросы по тегам