scalaz
A sink that waits for a single value and returns it.
A trampoline step that doesn't do anything.
A source that produces the given value.
Collapse a trampoline to a single step.
Suspend the given computation in a single step.