Introducing asynchronous workflow
Asynchronous support in F# is implemented nicely using async workflow computations.
The initial release of F# 1.0 did not have it. Asynchronous workflow was introduced in F# 1.9.2.9, and it is categorized as a workflow because it is actually an implementation of a computation expression (builder) that is escalated as a language block of async
. It is also a good sample of a best practice in implementing function compositions and in expressively implementing Monad. Monad is one of the functional composition implementations, an idea taken from or inspired by the category theory knowledge domain.
Function composition is actually a composition of computation operations; they can be functions or composite statements such as for loop constructs. It is also quite intuitive, and it's also easier to use as the necessary detailed composition operations are hidden. Usually, there is a bind
operator to compose two functions (or computations).
The foundational theory of...