Warning: session_start(): open(/var/lib/php/sessions/sess_obdo9ra5jimidnj9e8kmk15lfv, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
cprint {
srecord f_ackermann(BigInt a, BigInt b) implements VStack.Computable {
void step(VStack stack, O subComputationResult) {
if (!stack.hasSubResult()) {
if (a.equals(BigInt.ZERO))
stack._return(plus(b, BigInt.ONE));
else if (b.equals(BigInt.ZERO))
stack.tailCall(new f_ackermann(a.subtract(BigInt.ONE), BigInt.ONE);
else
stack.push(new f_ackermann(a, minus(b, BigInt.ONE)));
} else
stack.tailCall(new f_ackermann(minus(a, BigInt.ONE), subComputationResult/BigInt));
}
}
start-thread {
print("Result: " + vStackComputeWithStats(new f_ackermann(bigInt(2), bigInt(2))));
// detailed run
VStack stack = new(new f_ackermann(bigInt(2), bigInt(2)));
printStruct(stack);
while ping (stack.step()) {
printStruct(stack);
stack = restructure(stack); // persist to string and re-create
}
}
}