Haskell计算算术表达式并分配变量
我有一个名为 expr 的数据类型,如下所示:
data Expr = C Float | Expr :+ Expr | Expr :- Expr | Expr :* Expr| Expr :/ Expr
我想要做的是扩展 Expr 数据类型以允许变量和“让”表达式
回答
您需要在传统上称为“环境”的环境中传递活动绑定:
evaluate :: Environment -> Expr -> Float
有很多方法可以表示环境。
您需要两个操作:查找绑定以获取值,并使用新绑定扩展它。
lookup :: Environment -> String -> Float
extend :: Environment -> String -> Float -> Environment
实施留作练习。
- @molbdnilo 像这样的声明可能会吓跑更多的新手,而不是真正接触*`Reader` monad。