Choreographic programming is an emerging programming paradigm for concurrent and distributed systems, whereby developers write the communications that should be enacted and then a distributed implementation is automatically obtained by means of a compiler. Theories of choreographic programming typically come with strong theoretical guarantees about the compilation process, most notably: the generated implementations operationally correspond to their source choreographies and are deadlock-free. 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 introduced the possibility of expressing higher-order choreographies (choreographies parameterised over choreographies) that are fully distributed. As a consequence, it is unclear if the usual guarantees of choreographies can still hold in the more general setting of higher-order ones. We introduce Chor{\lambda}, the first functional choreographic programming language: it introduces a new formulation of the standard communication primitive found in choreographies as a function, and it is based upon the {\lambda}-calculus. Chor{\lambda} is the first theory that explains the core ideas of higher-order choreographic programming (as in Choral). Bridging the gap between practice and theory requires developing a new evaluation strategy and typing discipline for {\lambda} terms that accounts for the distributed nature of computation in choreographies. We illustrate the expressivity of Chor{\lambda} with a series of examples, which include reconstructions of the key examples from the original presentation of Choral. Our theory supports the expected properties of choreographic programming and bridges the gap between the communities of functional and choreographic programming.
翻译:舞蹈编程是同时和分布系统正在形成的编程模式,据此,开发者将编写应当颁布的通信,然后通过编译者自动获得分布式的落实。舞蹈编程的理论通常会给编程过程带来强烈的理论保障,其中最显著的是:制作的编程在操作上符合其来源的编程,并且没有僵局。目前,该范式最先进的演化方式是Choral,这是针对Java的面向目标的编程编程语言。Choral大大偏离了已知的合编理论,并引入了表达完全分布式的更高级编程(舞蹈编程比合编程的编程比较的编程)的可能性。因此,如果通常的编程保证仍然能维持在更普遍的编程中。我们引入了Chororal-lam 编程的第一个功能语言:它引入了在编程中发现的标准传播原始缩略图支持功能的新版本,并且它基于直径的编程性质(缩略图的编程性质)直径直径直径的编程 和直径直径序的编程的编程的编程理论 。