我正在尝试在 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]
}
}
}
Run Code Online (Sandbox Code Playgroud)
但求解器声称该调用auxiliaryToAvoidCyclicRecursion[idTarget, mRet]是这样的:
"This must be a formula expression.
Instead, it has the following possible type(s):
{this/Method}"
Run Code Online (Sandbox Code Playgroud)