小编Tar*_*ana的帖子

在合金中编程递归函数

我正在尝试在 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)

recursion alloy

3
推荐指数
1
解决办法
1390
查看次数

标签 统计

alloy ×1

recursion ×1