Comment by kazinator

7 years ago

Algebraic effects are synchronous; they can't be a generalization of async anything, because that uses threads.

A generalization has to do everything that the specialization does, like dispatch on multiple processors.

The synchronous version of async/await is delay/force; that is just macrology over some lambdas.

Not all implementations of async are thread-based. For instance, in C# it's task-based. In F# it's thread-based.