Warning: session_start(): open(/var/lib/php/sessions/sess_iaf8hjn1macvvgl57c97hmno0i, 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
sclass VStack implements Steppable {
new L stack;
O latestResult;
// A is what the function returns
interface Computable {
public void step(VStack stack, O subComputationResult);
}
void push(Computable computation) {
stack.add(computation);
}
// perform a computation step. returns false iff done
public bool step() {
if (empty(stack)) false;
O latestResult = this.latestResult;
this.latestResult = null;
last(stack).step(this, latestResult);
true;
}
// called from computation to return a value
void _return(O value default null) {
latestResult = value;
removeLast(stack);
}
// called from computation to tail-call another routine
void tailCall(Computable computation) {
removeLast(stack);
stack.add(computation);
}
compute(Computable computation) {
if (computation == null) null;
push(computation);
stepAll(this);
ret latestResult;
}
}