我已经定义了一个AlgebraicDataType及其实例:
data Expr = const(int n)
| var(str name)
| add(Expr lhs, Expr rhs)
| mult(Expr lhs, Expr rhs)
;
我需要一个布尔值,指示其给定实例是否为type add
:
isAdd(add(var("x"), const(3))); // true
isAdd(var("x")); // false
isAdd(const(3)); // false
isAdd(mult(var("x"), const(3))); //false
也许它存在一个内置函数或运算符,它将比:]更通用。
bool isAdd(add(Expr lhs, Expr rhs)) = true;
bool isAdd(Expr e) = false;
我已经定义了一个AlgebraicDataType及其实例:data Expr = const(int n)| var(str名称)| add(Expr lhs,Expr rhs)| mult(Expr lhs,Expr rhs);我...
确实有一个内置运算符is
:isAdd(expr) = expr **is** add
。