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.