我有一个名为expr的数据类型如下:
data Expr = C Float | Expr :+ Expr | Expr :- Expr | Expr :* Expr| Expr :/ Expr
我想做的是扩展Expr数据类型,以允许变量和'let'表达式
您需要在传统上称为"环境"的环境中传递活动绑定:
evaluate :: Environment -> Expr -> Float
有许多表示环境的方法。
您需要两个操作:查找绑定以获取值,并使用新绑定扩展它。
lookup :: Environment -> String -> Float
extend :: Environment -> String -> Float -> Environment
将实现留作练习。