1

我有一个名为 expr 的数据类型,如下所示:

data Expr = C Float | Expr :+ Expr | Expr :- Expr | Expr :* Expr| Expr :/ Expr

我想要做的是扩展 Expr 数据类型以允许变量和“让”表达式

4

1 回答 1

5

您需要在传统上称为“环境”的环境中传递活动绑定:

evaluate :: Environment -> Expr -> Float

表示环境的方法有很多种。
您需要两个操作:查找绑定以获取值,并使用新绑定对其进行扩展。

lookup :: Environment -> String -> Float
extend :: Environment -> String -> Float -> Environment

实施留作练习。

于 2021-08-17T06:20:43.887 回答