假设我有一个定义如下的数据类型:
data Constraint=type1(Lab al,Lab a2)| type2(Lab a1,TypeRoot tt)|....
其中一般模式是每个构造函数的第一个参数是“实验室”类型。那么,是否有一种有效/清晰的方式来表达模式匹配以执行以下操作?
for (Constraint cc <- constraints)
if( type1(Lab label,_):= cc || type2(Lab label,_):=cc || .... )
//do something useful with label. Infact, this snippet of code appears within
//a function body, and I need to perform the match for a specific label; as follows:
if(label==labelOfInterest) return cc;
虽然我在这里,并且反对 StackOverflow 提出一个问题/线程的建议,但 Rascal 是否支持简单的类似 Java 的递归?