哪个是ADT的实例?

问题描述 投票:0回答:1

我已经定义了一个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);我...

rascal
1个回答
0
投票

确实有一个内置运算符isisAdd(expr) = expr **is** add

© www.soinside.com 2019 - 2024. All rights reserved.