Purely functional lazy non-deterministic programming
Lazy evaluation and delimited control