Comment Comment by ssp The equivalent in Oort produces: localhost:~/oort/examples% ../oort callcc2.nl 2 1 as expected since Oort uses heap allocated activation records.The Oort program: typedef continuation_t = fn (p: int32) -> void; call_cc (fun: fn(k: continuation_t) -> void) -> int32 { retval: int32; fun (fn (v: int32) -> void { retval = v; goto current_continuation; }); // If fun returns without calling the continuation, // then just return 0 return 0; @current_continuation: return retval; } x: int32 = 0; print call_cc (fn (k: continuation_t) { x = 1; k (2); }); print x; parent ssp 12 years ago
The Oort program: