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。

以上是Haskell计算算术表达式并分配变量的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>