【发布时间】:2013-09-26 02:45:48
【问题描述】:
我正在尝试在 Alloy 中构造一个递归函数。根据丹尼尔杰克逊书中显示的语法,这是可能的。我的功能是:
fun auxiliaryToAvoidCyclicRecursion[idTarget:MethodId, m:Method]: Method{
(m.b.id = idTarget) => {
m
} else (m.b.id != idTarget) => {
(m.b = LiteralValue) => {
m
} else {
some mRet:Method, c:Class | mRet in c.methods && m.b.id = mRet.id => auxiliaryToAvoidCyclicRecursion[idTarget, mRet]
}
}
}
但求解器声称调用 auxiliaryToAvoidCyclicRecursion[idTarget, mRet] 时说:
"This must be a formula expression.
Instead, it has the following possible type(s):
{this/Method}"
【问题讨论】:
-
您应该发布模型的其余部分,以便我们运行它。