如果给出包含它所包含变量的值列表,我该如何计算表达式?
eval::[(Variable,Integer)]->Expr->Integer
示例:
eval[("x",2), ("y",4)](Mult(Plus(Var "x") (Const))(Var "y"))= 12
答案 0 :(得分:1)
在Haskell中,Variable和Expr不是inbuild类型。
如果您正在使用图书馆或处理较大程序的一部分,那么它可能具有您所追求的功能。
如果您自己定义了这些类型,那么由您决定。
如果这是课程作业,那么您可能想要了解语法和解析技巧。尝试将字符串分解为标记并构建可以评估的符号表示。如果您还没有找到它http://www.zvon.org/other/haskell/Outputglobal/index.html是一个很好的参考网站。
如果你进入更重量级的东西(并且坚定地控制haskell和monadic编程)那么我会建议花时间学习使用Parsec http://www.haskell.org/haskellwiki/Parsec。