Resumables

Resumables are functions that implement cooperative suspension, allowing execution to pause at yield points and resume later. This provides a cleaner alternative to explicit iterator state machines, drawing from coroutine theory to enable lazy evaluation and on-demand computation. The syntax mirrors regular functions, but yield replaces return for suspension points.

Syntax

pub fn* each(array) {
    for let i = 0; i < array.len(); i += 1 {
        yield array[i];
    }
}

Composable

Composable resumables enable functional composition patterns where resumable computations can be chained, transformed, and combined while preserving their lazy evaluation properties. This design allows resumables to act as first-class values that can be passed to higher-order functions.

Example

pub fn* enum(inner) {
    let i = 0;
    
    for elem in inner {
        yield [i, elem];
        i += 1;
    } 
}

Last updated