Computation expressions
Michael R. Hansen, Hans Rischel · Cambridge University Press eBooks · 2013
A computation expression of F# provides the means to express a specific kind of computations in a way where low-level details are hidden and only visible through the use of special syntactic constructs like yield, let!, return, etc. These constructs are not part of the normal F# syntax and are only allowed inside computation expressions. Each kind of computation expression is defined by a computation builder object that contains the meaning of the special constructs. A computation expression ce belonging to the builder object comp appears in the F# program in a construct of the form: comp {ce} This construct is an expression that evaluates to a value called a computation . We have already seen examples of computation expressions in the form of sequence expressions with builder object seq (cf. Table 11.2) and query expressions with builder object query (cf. Section 11.8). The sequence computation expressions allow us to define computations on sequences without having to bother about the laziness and other implementation details, and the query expressions allow you to make database queries. In Chapter 13 we introduce asynchronous computation expressions with builder object async where you can define asynchronous computations without having to bother about low-level details in the current state of the system. The seq, query and async computation expressions are parts of F#.