Instructional Effection
Effection based on the idea that there are three primitive "instructions"
- resource
- action
- suspend
This allows us to express all operations as a composition of these three
primitives, which means that all operation results are consumed using yield*
instead of yield
This is good because it is
- as friendly with TypeScript as
await
- task trees are very shallow. Only as deep as the primitives needed
Task
api has only a single method beyondPromise
, whichh ishalt()
- tasks do not have a reference to themselves, so cannot be self-halting.