我试图为数学表达式编写一个简单的数据类型。我现在的代码是:
data Expr
= Num Double
| Add Expr Expr
| Mul Expr Expr
| Sin Expr
| Cos Expr
| X
deriving Eq
这可以按预期工作,但我想简单一点,只有一行用于二元运算符(Add和Mul),一个用于一元运算符(Sin和Cos)。有什么建议吗?
答案 0 :(得分:6)
您可以使用,例如,
data BinOp = Add | Mul
data UnaryOp = Sin | Cos
data Expr
= Num Double
| Binary BinOp Expr Expr
| Unary UnaryOp Expr
YMMV是否更简单。