31 Yieldable procedures
Implements the "yield" operator of Ruby / Python using continuations. The "yield" command pauses the execution of a procedure and returns a result. Execution continues from the same point in the next invocation of the procedure (rather from the beginning of the procedure as usual).
Supports procedures with multiple arguments and return types.
Examples: | |||||||
| |||||||
> (calc 1 2) | |||||||
1 | |||||||
2 | |||||||
> (calc 1 2) | |||||||
2 | |||||||
4 |
Creates a target procedure that can use yield-proc to suspend operation. yield-proc and target-proc have symmetric contracts:
yield-proc : a b c -> d e |
target-proc : d e -> a b c |