TP

# The F# Asynchronous Programming Model

Don Syme, Tomas Petricek and Dmitry Lomov

We describe the asynchronous programming model in F#, and its applications to reactive, parallel and concurrent programming. The key feature combines a core language with a non-blocking modality to author lightweight asynchronous tasks, where the modality has control flow constructs that are syntactically a superset of the core language and are given an asynchronous semantic interpretation.

This allows smooth transitions between synchronous and asynchronous code and eliminates callback-style treatments of inversion of control, without disturbing the foundation of CPU-intensive programming that allows F# to interoperate smoothly and compile efficiently. An adapted version of this approach has recently been announced for a future version of C#.

 1: 2: 3: 4: 5: 6: 7: 8:  @inproceedings{async-padl11, author = {Syme, Don and Petricek, Tomas and Lomov, Dmitry}, title = {The {F}\# {A}synchronous {P}rogramming {M}odel}, booktitle = {Proceedings of Practical Aspects of Declarative Languages}, series = {PADL 2011}, location = {Austin, TX, USA}, year = {2011} }