Functional Choreographic Programming

Luís Cruz-Filipe, Eva Graversen, Lovro Lugovic, Fabrizio Montesi, Marco Peressotti [2022].
In proceedings of ICTAC 2022, pp. 212-237.


Choreographic programming is an emerging programming paradigm for concurrent and distributed systems, where developers write the communications that should be enacted and a compiler then automatically generates a distributed implementation.

Currently, the most advanced incarnation of the paradigm is Choral, an object-oriented choreographic programming language that targets Java. Choral deviated significantly from known theories of choreographies, and in particular introduced the possibility of expressing higher-order choreographies that are fully distributed.

In this article, we introduce Chorλ, the first functional choreographic programming language. It is also the first theory that explains the core ideas of higher-order choreographic programming. We show that bridging the gap between practice and theory requires developing a new evaluation strategy and typing discipline for λ terms that accounts for the distributed nature of computation in choreographies.

Additional notes
Cite (BibTeX)
Click to expand
  author       = {Lu{\'{\i}}s Cruz{-}Filipe and
                  Eva Graversen and
                  Lovro Lugovic and
                  Fabrizio Montesi and
                  Marco Peressotti},
  editor       = {Helmut Seidl and
                  Zhiming Liu and
                  Corina S. Pasareanu},
  title        = {Functional Choreographic Programming},
  booktitle    = {Theoretical Aspects of Computing - {ICTAC} 2022 - 19th International
                  Colloquium, Tbilisi, Georgia, September 27-29, 2022, Proceedings},
  series       = {Lecture Notes in Computer Science},
  volume       = {13572},
  pages        = {212--237},
  publisher    = {Springer},
  year         = {2022},
  url          = {\_15},
  doi          = {10.1007/978-3-031-17715-6\_15},
  timestamp    = {Mon, 05 Dec 2022 13:35:50 +0100},
  biburl       = {},
  bibsource    = {dblp computer science bibliography,}

A PDF is available (possibly a preprint):

Download PDF