548:
Yoshida, Nobuko; Vasconcelos, Vasco T.; Padovani, Luca; Bono, Nicholas Ng; Neykova, Rumyana; Montesi, Fabrizio; Mascardi, Viviana; Martins, Francisco; Johnsen, Einar Broch; Hu, Raymond; Giachino, Elena; Gesbert, Nils; Gay, Simon J.; Deniélou, Pierre-Malo; Castagna, Giuseppe; Campos, Joana; Bravetti,
158:
Client.(credentials, serviceID) -> CAS.authRequest if CAS.check(authRequest) then CAS.token = genToken(authRequest) CAS.Success(token) -> Client.result CAS.Success(token) -> Service.result else CAS.Failure -> Client.result CAS.Failure -> Service.result
219:
A key feature of choreographic programming is the capability of compiling choreographies to distributed implementations. These implementations can be libraries for software that needs to participate in a computer network by following a protocol, or standalone distributed programs.
288:
recv authRequest from Client if check(authRequest) then token = genToken(authRequest) send
Success(token) to Client send Success(token) to Service else send Failure to Client send Failure to Service
1571:
230:
Endpoint projection returns a program for each role described in the source choreography. For example, given the choreography above, endpoint projection would return three programs: one for
1477:
1541:
305:
The paradigm of choreographic programming originates from its titular PhD thesis. The inspiration for the syntax of choreographic programming languages can be traced back to
1490:
897:
1640:
1575:
627:
820:
1470:
1704:
2054:
1916:
2060:
1463:
1423:
1326:
1120:
1070:
973:
918:
756:
519:
325:
297:
For each role, its code contains the actions that the role should execute to implement the choreography correctly together with the others.
2245:
1993:
1713:
1396:
Pohjola, Johannes Åman; Gómez-Londoño, Alejandro; Shaker, James; Norrish, Michael (2022). Andronick, June; de Moura, Leonardo (eds.).
1212:
1018:
674:
620:
2085:
1765:
1709:
1945:
1818:
1749:
1684:
1607:
2311:
2123:
1886:
1516:
601:
Giallorenzo, Saverio; Montesi, Fabrizio; Peressotti, Marco; Richter, David; Salvaneschi, Guido; Weisenburger, Pascal (2021).
143:
100:
2306:
1901:
1891:
1669:
358:
2285:
2265:
2195:
2138:
2100:
2090:
2050:
1975:
1911:
1881:
1808:
1797:
1694:
1674:
1649:
1612:
381:
362:
2240:
2003:
1970:
1865:
1841:
1803:
1783:
1679:
1588:
1566:
1551:
403:
392:
309:, also known as "Alice and Bob" notation. Choreographic programming has also been heavily influenced by standards for
183:
checks if the request is valid for obtaining an authentication token. If so, it generates a token and communicates a
2187:
2173:
2080:
2040:
1965:
1871:
1851:
1718:
1597:
1531:
451:
306:
57:
60:(also known as "Alice and Bob" notation). The key to these languages is the communication primitive, for example
2280:
1955:
1935:
1921:
1303:, Lecture Notes in Computer Science, vol. 12819, Cham: Springer International Publishing, pp. 115–133,
52:
to define the intended communication behaviour of concurrent participants. Programs in this paradigm are called
2260:
2220:
2163:
2095:
1833:
1664:
1295:
Cruz-Filipe, Luís; Montesi, Fabrizio; Peressotti, Marco (2021), Cerone, Antonio; Ölveczky, Peter Csaba (eds.),
659:
Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on
Principles of programming languages - POPL '13
2270:
2250:
2191:
2178:
2158:
1985:
1722:
1626:
1584:
167:
communicates a pair consisting of some credentials and the identifier of the service it wishes to access to
2230:
2205:
2199:
2143:
2105:
1793:
1788:
1740:
1635:
1536:
1508:
1499:
466:
2132:
2128:
2070:
2022:
1592:
471:
333:
743:
2275:
2255:
2215:
2017:
1876:
1745:
1732:
1486:
461:
310:
32:
28:
391:). A higher-order, object-oriented choreographic programming language that compiles to libraries in
324:
Choreographic programming is an active area of research. The paradigm has been used in the study of
2210:
2148:
1960:
1940:
1926:
1658:
1526:
1521:
703:
Preda, Mila Dalla; Gabbrielli, Maurizio; Giallorenzo, Saverio; Lanese, Ivan; Mauro, Jacopo (2017).
2027:
1980:
1950:
1896:
1755:
1654:
1546:
1455:
1429:
1368:
1332:
1304:
1277:
1249:
1218:
1197:. Leibniz International Proceedings in Informatics (LIPIcs). Vol. 193. pp. 15:1–15:18.
1175:
1157:
1126:
1099:
1076:
1043:
1024:
979:
951:
924:
889:
870:
811:
791:
724:
680:
605:. Leibniz International Proceedings in Informatics (LIPIcs). Vol. 194. pp. 22:1–22:27.
525:
341:
329:
211:
message (Lines 7–8). We refer to this choreography as the "SSO choreography" in the remainder.
2183:
2075:
1930:
1906:
1846:
1813:
1775:
1760:
1699:
1419:
1322:
1269:
1208:
1116:
1066:
1014:
969:
914:
752:
670:
616:
515:
2065:
1997:
1861:
1602:
1409:
1378:
1314:
1259:
1198:
1167:
1108:
1058:
1006:
961:
906:
860:
801:
716:
662:
606:
570:
562:
507:
456:
318:
314:
20:
1047:
2115:
1989:
1855:
1556:
435:
410:
1296:
2167:
1823:
1689:
414:
96:
1397:
2300:
2153:
1433:
1336:
1281:
1222:
1179:
815:
529:
377:
1408:. Dagstuhl, Germany: Schloss Dagstuhl – Leibniz-Zentrum für Informatik: 27:1–27:18.
1130:
1080:
1028:
983:
928:
874:
720:
684:
728:
373:
354:
337:
111:
1062:
999:"Choreographing cyber-physical distributed control systems for the energy sector"
910:
611:
2035:
1318:
1112:
965:
894:"Discretionary Information Flow Control for Interaction-Oriented Specifications"
1414:
1264:
1237:
1203:
893:
431:
Kalas. A choreographic programming language with a verified compiler to CakeML.
409:
Core
Choreographies. A core theoretical model for choreographic programming. A
1171:
1095:
943:
1273:
1145:
1010:
865:
848:
704:
666:
575:
1357:"HasChor: Functional Choreographic Programming for All (Functional Pearl)"
998:
654:
511:
501:
1402:
13th
International Conference on Interactive Theorem Proving (ITP 2022)
1057:. Lecture Notes in Computer Science. Vol. 9688. pp. 195–211.
950:. Lecture Notes in Computer Science. Vol. 9688. pp. 114–123.
905:. Lecture Notes in Computer Science. Vol. 9200. pp. 427–450.
566:
438:
choreographic programming language theory with higher-order procedures.
425:
250:
are primitives for sending and receiving messages to/from other roles.
1236:
Cruz-Filipe, Luís; Montesi, Fabrizio; Peressotti, Marco (2023-05-27).
1107:. Lecture Notes in Computer Science. Vol. 11230. pp. 22–40.
223:
The translation of a choreography into distributed programs is called
1398:"Kalas: A Verified, End-To-End Compiler for a Choreographic Language"
550:
421:
399:
1382:
806:
779:
1373:
1309:
1254:
1162:
956:
796:
603:
Multiparty
Languages: The Choreographic and Multitier Cases (Pearl)
1356:
1055:
Formal
Techniques for Distributed Objects, Components, and Systems
948:
Formal
Techniques for Distributed Objects, Components, and Systems
834:"Fabrizio Montesi wins the EAPLS Best PhD Dissertation Award 2014"
1101:
On the Move to
Meaningful Internet Systems. OTM 2018 Conferences
849:"Structured Communication-Centered Programming for Web Services"
833:
763:
1459:
1450:
1048:"Enforcing Availability in Failure-Aware Communicating Systems"
638:
388:
31:
where programs are compositions of interactions among multiple
1404:. Leibniz International Proceedings in Informatics (LIPIcs).
836:. European Association for Programming Languages and Systems.
369:
1195:
1094:
Giallorenzo, Saverio; Lanese, Ivan; Russo, Daniel (2018).
264:
send (credentials, serviceID) to CAS recv result from CAS
780:"Pirouette: higher-order typed functional choreographies"
95:
The example below shows a choreography for a simplified
1355:
Shen, Gan; Kashiwa, Shun; Kuper, Lindsey (2023-08-31).
847:
Carbone, Marco; Honda, Kohei; Yoshida, Nobuko (2012).
853:
72:
communicates the result of evaluating the expression
376:
choreographic programming language that compiles to
2229:
2114:
2016:
1832:
1774:
1731:
1634:
1625:
1565:
1507:
1498:
778:Hirsch, Andrew K.; Garg, Deepak (16 January 2022).
705:"Dynamic Choreographies: Theory and Implementation"
1003:Proceedings of the Symposium on Applied Computing
254:Endpoint Projection (EPP) of the SSO choreography
242:. They are shown below in pseudocode form, where
784:Proceedings of the ACM on Programming Languages
555:Foundations and Trends in Programming Languages
48:In choreographic programming, developers use a
1238:"A Formal Theory of Choreographic Programming"
424:). A library for choreographic programming in
402:). Library-level choreographic programming in
1471:
1301:Theoretical Aspects of Computing – ICTAC 2021
1144:Cruz-Filipe, Luís; Montesi, Fabrizio (2020).
942:Cruz-Filipe, Luís; Montesi, Fabrizio (2016).
698:
696:
694:
549:Mario; Bono, Viviana; Ancona, Davide (2016).
179:(for authentication request). In Line 2, the
8:
1146:"A core model for choreographic programming"
888:Lluch Lafuente, Alberto; Nielson, Flemming;
357:). A choreographic programming language for
1096:"ChIP: A Choreographic Integration Process"
551:"Behavioral Types in Programming Languages"
543:
541:
539:
317:, as well as developments of the theory of
1631:
1504:
1478:
1464:
1456:
653:Carbone, Marco; Montesi, Fabrizio (2013).
596:
594:
592:
590:
588:
586:
56:. Choreographic languages are inspired by
1542:Programming in the large and in the small
1413:
1372:
1308:
1263:
1253:
1202:
1161:
955:
864:
805:
795:
610:
574:
207:that authentication failed, by sending a
163:The choreography starts in Line 1, where
84:". Alice, Bob, etc. are typically called
252:
80:, which stores it in its local variable
1193:Cohen, Liron; Kaliszyk, Cezary (2021).
483:
175:stores this pair in its local variable
773:
771:
1297:"Certifying Choreography Compilation"
997:López, Hugo A.; Heussen, Kai (2017).
495:
493:
491:
489:
487:
187:message containing the token to both
7:
751:(PhD). IT University of Copenhagen.
648:
646:
1042:López, Hugo A.; Nielson, Flemming;
764:(EAPLS Best PhD Dissertation Award)
709:Logical Methods in Computer Science
50:choreographic programming language
14:
899:Logic, Rewriting, and Concurrency
103:(CAS) that involves three roles:
2086:Partitioned global address space
628:(ECOOP 2021 Distinguished Paper)
821:(POPL 2022 Distinguished Paper)
413:implementation is available in
1242:Journal of Automated Reasoning
506:. Cambridge University Press.
503:Introduction to Choreographies
144:Central Authentication Service
101:Central Authentication Service
1:
146:responsible for checking the
1613:Uniform Function Call Syntax
1150:Theoretical Computer Science
1063:10.1007/978-3-319-39570-8_13
944:"Choreographies in Practice"
911:10.1007/978-3-319-23165-5_20
832:Arend Rensink (2015-08-30).
655:"Deadlock-freedom-by-design"
612:10.4230/LIPIcs.ECOOP.2021.22
195:(Lines 3–5). Otherwise, the
110:, which wishes to obtain an
2081:Parallel programming models
2055:Concurrent constraint logic
1319:10.1007/978-3-030-85315-0_8
1113:10.1007/978-3-030-02671-4_2
966:10.1007/978-3-319-39570-8_8
639:Choral programming language
128:, which needs to know from
2328:
2174:Metalinguistic abstraction
2041:Automatic mutual exclusion
1415:10.4230/LIPIcs.ITP.2022.27
1265:10.1007/s10817-023-09665-3
1204:10.4230/LIPIcs.ITP.2021.15
742:Montesi, Fabrizio (2013).
500:Montesi, Fabrizio (2023).
452:Security protocol notation
307:security protocol notation
99:(SSO) protocol based on a
58:security protocol notation
2046:Choreographic programming
1367:(ICFP): 207:541–207:565.
1172:10.1016/j.tcs.2019.07.005
745:Choreographic Programming
721:10.23638/LMCS-13(2:1)2017
282:
270:
258:
25:choreographic programming
2096:Relativistic programming
286:
274:
262:
156:
62:
1011:10.1145/3019612.3019656
866:10.1145/2220365.2220367
667:10.1145/2429069.2429101
136:should be given access.
64:Alice.expr -> Bob.x
2106:Structured concurrency
1491:Comparison by language
467:Structured concurrency
361:that produces code in
334:cyber-physical systems
2312:Programming paradigms
2071:Multitier programming
1887:Interface description
1487:Programming paradigms
512:10.1017/9781108981491
472:Multitier programming
276:recv result from CAS
154:The choreography is:
2307:Concurrent computing
1005:. pp. 437–443.
462:Service choreography
315:interaction diagrams
311:service choreography
29:programming paradigm
16:Programming paradigm
2211:Self-modifying code
1819:Probabilistic logic
1750:Functional reactive
1705:Expression-oriented
1659:Partial application
1451:www.choral-lang.org
1044:Nielson, Hanne Riis
890:Nielson, Hanne Riis
255:
225:endpoint projection
215:Endpoint Projection
2124:Attribute-oriented
1897:List comprehension
1842:Algebraic modeling
1655:Anonymous function
1547:Design by contract
1517:Jackson structures
567:10.1561/2500000031
342:system integration
338:runtime adaptation
330:parallel computing
253:
2294:
2293:
2184:Program synthesis
2076:Organic computing
2012:
2011:
1917:Non-English-based
1892:Language-oriented
1670:Purely functional
1621:
1620:
1425:978-3-95977-252-5
1328:978-3-030-85314-3
1122:978-3-030-02670-7
1072:978-3-319-39569-2
975:978-3-319-39569-2
920:978-3-319-23164-8
758:978-87-7949-299-8
521:978-1-108-83376-9
359:adaptable systems
295:
294:
227:(EPP for short).
118:to interact with
2319:
2196:by demonstration
2101:Service-oriented
2091:Process-oriented
2066:Macroprogramming
2051:Concurrent logic
1922:Page description
1912:Natural language
1882:Grammar-oriented
1809:Nondeterministic
1798:Constraint logic
1700:Point-free style
1695:Functional logic
1632:
1603:Immutable object
1522:Block-structured
1505:
1480:
1473:
1466:
1457:
1438:
1437:
1417:
1393:
1387:
1386:
1376:
1352:
1346:
1345:
1344:
1343:
1312:
1292:
1286:
1285:
1267:
1257:
1233:
1227:
1226:
1206:
1190:
1184:
1183:
1165:
1141:
1135:
1134:
1106:
1091:
1085:
1084:
1052:
1039:
1033:
1032:
994:
988:
987:
959:
939:
933:
932:
904:
885:
879:
878:
868:
844:
838:
837:
829:
823:
819:
809:
799:
775:
766:
762:
750:
739:
733:
732:
700:
689:
688:
650:
641:
636:
630:
626:
614:
598:
581:
580:
578:
545:
534:
533:
497:
457:Sequence diagram
326:information flow
256:
249:
245:
241:
237:
233:
210:
206:
202:
198:
194:
190:
186:
182:
178:
174:
170:
166:
149:
141:
135:
131:
127:
121:
117:
109:
83:
79:
75:
71:
21:computer science
2327:
2326:
2322:
2321:
2320:
2318:
2317:
2316:
2297:
2296:
2295:
2290:
2232:
2225:
2116:Metaprogramming
2110:
2026:
2021:
2008:
1990:Graph rewriting
1828:
1804:Inductive logic
1784:Abductive logic
1770:
1727:
1690:Dependent types
1638:
1617:
1589:Prototype-based
1569:
1567:Object-oriented
1561:
1557:Nested function
1552:Invariant-based
1494:
1484:
1447:
1442:
1441:
1426:
1395:
1394:
1390:
1383:10.1145/3607849
1354:
1353:
1349:
1341:
1339:
1329:
1294:
1293:
1289:
1235:
1234:
1230:
1215:
1192:
1191:
1187:
1143:
1142:
1138:
1123:
1104:
1093:
1092:
1088:
1073:
1050:
1041:
1040:
1036:
1021:
996:
995:
991:
976:
941:
940:
936:
921:
902:
887:
886:
882:
846:
845:
841:
831:
830:
826:
807:10.1145/3498684
777:
776:
769:
759:
748:
741:
740:
736:
702:
701:
692:
677:
661:. p. 263.
652:
651:
644:
637:
633:
623:
600:
599:
584:
561:(2–3): 95–230.
547:
546:
537:
522:
499:
498:
485:
480:
448:
442:
350:
319:process calculi
303:
291:
290:
278:
277:
266:
265:
247:
243:
239:
235:
231:
217:
208:
204:
200:
196:
192:
188:
184:
180:
176:
172:
168:
164:
161:
160:
150:'s credentials.
147:
142:, which is the
139:
133:
129:
125:
119:
115:
107:
81:
77:
73:
69:
66:
65:
46:
41:
17:
12:
11:
5:
2325:
2323:
2315:
2314:
2309:
2299:
2298:
2292:
2291:
2289:
2288:
2283:
2278:
2273:
2268:
2263:
2258:
2253:
2248:
2243:
2237:
2235:
2227:
2226:
2224:
2223:
2218:
2213:
2208:
2203:
2181:
2176:
2171:
2161:
2156:
2151:
2146:
2141:
2136:
2126:
2120:
2118:
2112:
2111:
2109:
2108:
2103:
2098:
2093:
2088:
2083:
2078:
2073:
2068:
2063:
2058:
2048:
2043:
2038:
2032:
2030:
2014:
2013:
2010:
2009:
2007:
2006:
2001:
1986:Transformation
1983:
1978:
1973:
1968:
1963:
1958:
1953:
1948:
1943:
1938:
1933:
1924:
1919:
1914:
1909:
1904:
1899:
1894:
1889:
1884:
1879:
1874:
1872:Differentiable
1869:
1859:
1852:Automata-based
1849:
1844:
1838:
1836:
1830:
1829:
1827:
1826:
1821:
1816:
1811:
1806:
1801:
1791:
1786:
1780:
1778:
1772:
1771:
1769:
1768:
1763:
1758:
1753:
1743:
1737:
1735:
1729:
1728:
1726:
1725:
1719:Function-level
1716:
1707:
1702:
1697:
1692:
1687:
1682:
1677:
1672:
1667:
1662:
1652:
1646:
1644:
1629:
1623:
1622:
1619:
1618:
1616:
1615:
1610:
1605:
1600:
1595:
1581:
1579:
1563:
1562:
1560:
1559:
1554:
1549:
1544:
1539:
1534:
1532:Non-structured
1529:
1524:
1519:
1513:
1511:
1502:
1496:
1495:
1485:
1483:
1482:
1475:
1468:
1460:
1454:
1453:
1446:
1445:External links
1443:
1440:
1439:
1424:
1388:
1347:
1327:
1287:
1228:
1213:
1185:
1136:
1121:
1086:
1071:
1034:
1019:
989:
974:
934:
919:
880:
839:
824:
790:(POPL): 1–27.
767:
757:
734:
690:
675:
642:
631:
621:
582:
535:
520:
482:
481:
479:
476:
475:
474:
469:
464:
459:
454:
447:
444:
440:
439:
432:
429:
418:
407:
396:
385:
366:
349:
346:
302:
299:
293:
292:
287:
284:
280:
279:
275:
272:
268:
267:
263:
260:
238:, and one for
216:
213:
157:
152:
151:
137:
123:
97:single sign-on
63:
54:choreographies
45:
44:Choreographies
42:
40:
37:
35:participants.
15:
13:
10:
9:
6:
4:
3:
2:
2324:
2313:
2310:
2308:
2305:
2304:
2302:
2287:
2284:
2282:
2279:
2277:
2274:
2272:
2269:
2267:
2264:
2262:
2259:
2257:
2256:Data-oriented
2254:
2252:
2249:
2247:
2244:
2242:
2239:
2238:
2236:
2234:
2228:
2222:
2219:
2217:
2214:
2212:
2209:
2207:
2204:
2201:
2197:
2193:
2189:
2185:
2182:
2180:
2177:
2175:
2172:
2169:
2165:
2162:
2160:
2157:
2155:
2154:Homoiconicity
2152:
2150:
2147:
2145:
2142:
2140:
2137:
2134:
2130:
2127:
2125:
2122:
2121:
2119:
2117:
2113:
2107:
2104:
2102:
2099:
2097:
2094:
2092:
2089:
2087:
2084:
2082:
2079:
2077:
2074:
2072:
2069:
2067:
2064:
2062:
2061:Concurrent OO
2059:
2056:
2052:
2049:
2047:
2044:
2042:
2039:
2037:
2034:
2033:
2031:
2029:
2024:
2019:
2015:
2005:
2002:
1999:
1995:
1991:
1987:
1984:
1982:
1979:
1977:
1974:
1972:
1969:
1967:
1964:
1962:
1959:
1957:
1956:Set-theoretic
1954:
1952:
1949:
1947:
1944:
1942:
1939:
1937:
1936:Probabilistic
1934:
1932:
1928:
1925:
1923:
1920:
1918:
1915:
1913:
1910:
1908:
1905:
1903:
1900:
1898:
1895:
1893:
1890:
1888:
1885:
1883:
1880:
1878:
1875:
1873:
1870:
1867:
1863:
1860:
1857:
1853:
1850:
1848:
1845:
1843:
1840:
1839:
1837:
1835:
1831:
1825:
1822:
1820:
1817:
1815:
1812:
1810:
1807:
1805:
1802:
1799:
1795:
1792:
1790:
1787:
1785:
1782:
1781:
1779:
1777:
1773:
1767:
1764:
1762:
1759:
1757:
1754:
1751:
1747:
1744:
1742:
1739:
1738:
1736:
1734:
1730:
1724:
1720:
1717:
1715:
1714:Concatenative
1711:
1708:
1706:
1703:
1701:
1698:
1696:
1693:
1691:
1688:
1686:
1683:
1681:
1678:
1676:
1673:
1671:
1668:
1666:
1663:
1660:
1656:
1653:
1651:
1648:
1647:
1645:
1642:
1637:
1633:
1630:
1628:
1624:
1614:
1611:
1609:
1606:
1604:
1601:
1599:
1596:
1594:
1590:
1586:
1583:
1582:
1580:
1577:
1573:
1568:
1564:
1558:
1555:
1553:
1550:
1548:
1545:
1543:
1540:
1538:
1535:
1533:
1530:
1528:
1525:
1523:
1520:
1518:
1515:
1514:
1512:
1510:
1506:
1503:
1501:
1497:
1492:
1488:
1481:
1476:
1474:
1469:
1467:
1462:
1461:
1458:
1452:
1449:
1448:
1444:
1435:
1431:
1427:
1421:
1416:
1411:
1407:
1403:
1399:
1392:
1389:
1384:
1380:
1375:
1370:
1366:
1362:
1358:
1351:
1348:
1338:
1334:
1330:
1324:
1320:
1316:
1311:
1306:
1302:
1298:
1291:
1288:
1283:
1279:
1275:
1271:
1266:
1261:
1256:
1251:
1247:
1243:
1239:
1232:
1229:
1224:
1220:
1216:
1214:9783959771887
1210:
1205:
1200:
1196:
1189:
1186:
1181:
1177:
1173:
1169:
1164:
1159:
1155:
1151:
1147:
1140:
1137:
1132:
1128:
1124:
1118:
1114:
1110:
1103:
1102:
1097:
1090:
1087:
1082:
1078:
1074:
1068:
1064:
1060:
1056:
1049:
1045:
1038:
1035:
1030:
1026:
1022:
1020:9781450344869
1016:
1012:
1008:
1004:
1000:
993:
990:
985:
981:
977:
971:
967:
963:
958:
953:
949:
945:
938:
935:
930:
926:
922:
916:
912:
908:
901:
900:
895:
891:
884:
881:
876:
872:
867:
862:
858:
854:
850:
843:
840:
835:
828:
825:
822:
817:
813:
808:
803:
798:
793:
789:
785:
781:
774:
772:
768:
765:
760:
754:
747:
746:
738:
735:
730:
726:
722:
718:
714:
710:
706:
699:
697:
695:
691:
686:
682:
678:
676:9781450318327
672:
668:
664:
660:
656:
649:
647:
643:
640:
635:
632:
629:
624:
622:9783959771900
618:
613:
608:
604:
597:
595:
593:
591:
589:
587:
583:
577:
576:10044/1/44282
572:
568:
564:
560:
556:
552:
544:
542:
540:
536:
531:
527:
523:
517:
513:
509:
505:
504:
496:
494:
492:
490:
488:
484:
477:
473:
470:
468:
465:
463:
460:
458:
455:
453:
450:
449:
445:
443:
437:
434:Pirouette. A
433:
430:
427:
423:
419:
416:
412:
408:
405:
401:
397:
394:
390:
386:
383:
379:
378:microservices
375:
374:session-typed
371:
367:
364:
360:
356:
352:
351:
347:
345:
343:
339:
335:
331:
327:
322:
320:
316:
312:
308:
300:
298:
285:
281:
273:
269:
261:
257:
251:
228:
226:
221:
214:
212:
155:
145:
138:
124:
113:
106:
105:
104:
102:
98:
93:
91:
87:
61:
59:
55:
51:
43:
38:
36:
34:
30:
26:
22:
2261:Event-driven
2045:
1665:Higher-order
1593:Object-based
1405:
1401:
1391:
1364:
1360:
1350:
1340:, retrieved
1300:
1290:
1245:
1241:
1231:
1194:
1188:
1153:
1149:
1139:
1100:
1089:
1054:
1037:
1002:
992:
947:
937:
898:
883:
856:
852:
842:
827:
787:
783:
744:
737:
712:
708:
658:
634:
602:
558:
554:
502:
441:
323:
304:
296:
229:
224:
222:
218:
162:
153:
112:access token
94:
89:
85:
67:
53:
49:
47:
24:
18:
2271:Intentional
2251:Data-driven
2233:of concerns
2192:Inferential
2179:Multi-stage
2159:Interactive
2036:Actor-based
2023:distributed
1966:Stack-based
1766:Synchronous
1723:Value-level
1710:Applicative
1627:Declarative
1585:Class-based
859:(2): 1–78.
301:Development
177:authRequest
2301:Categories
2246:Components
2231:Separation
2206:Reflective
2200:by example
2144:Extensible
2018:Concurrent
1994:Production
1981:Templating
1961:Simulation
1946:Scientific
1866:Spacecraft
1794:Constraint
1789:Answer set
1741:Flow-based
1641:comparison
1636:Functional
1608:Persistent
1572:comparison
1537:Procedural
1509:Structured
1500:Imperative
1374:2303.00924
1342:2022-03-07
1310:2102.10698
1255:2209.01886
1163:1510.03271
957:1602.08863
797:2111.03484
478:References
436:mechanised
411:mechanised
234:, one for
33:concurrent
2133:Inductive
2129:Automatic
1951:Scripting
1650:Recursive
1434:251322644
1337:231985665
1282:252090305
1274:1573-0670
1248:(2): 21.
1223:231802115
1180:199122777
1156:: 38–66.
816:243833095
530:102335067
420:HasChor (
348:Languages
90:processes
2286:Subjects
2276:Literate
2266:Features
2221:Template
2216:Symbolic
2188:Bayesian
2168:Hygienic
2028:parallel
1907:Modeling
1902:Low-code
1877:End-user
1814:Ontology
1746:Reactive
1733:Dataflow
1131:53015580
1081:12872876
1046:(2016).
1029:39112346
984:18067252
929:32617923
892:(2015).
875:15737118
685:15627190
446:See also
398:ChoRus (
387:Choral (
199:informs
39:Overview
2241:Aspects
2149:Generic
2139:Dynamic
1998:Pattern
1976:Tactile
1941:Quantum
1931:filters
1862:Command
1761:Streams
1756:Signals
1527:Modular
1361:HasChor
729:5555662
426:Haskell
422:website
400:website
389:website
370:website
355:website
353:AIOCJ (
271:Service
236:Service
209:Failure
205:Service
193:Service
185:Success
132:if the
126:Service
120:Service
68:reads "
2004:Visual
1971:System
1856:Action
1680:Strict
1432:
1422:
1335:
1325:
1280:
1272:
1221:
1211:
1178:
1129:
1119:
1079:
1069:
1027:
1017:
982:
972:
927:
917:
873:
814:
755:
727:
683:
673:
619:
528:
518:
368:Chor (
340:, and
259:Client
232:Client
201:Client
189:Client
165:Client
148:Client
134:Client
108:Client
2281:Roles
2164:Macro
1927:Pipes
1847:Array
1824:Query
1776:Logic
1685:GADTs
1675:Total
1598:Agent
1430:S2CID
1369:arXiv
1333:S2CID
1305:arXiv
1278:S2CID
1250:arXiv
1219:S2CID
1176:S2CID
1158:arXiv
1127:S2CID
1105:(PDF)
1077:S2CID
1051:(PDF)
1025:S2CID
980:S2CID
952:arXiv
925:S2CID
903:(PDF)
871:S2CID
812:S2CID
792:arXiv
749:(PDF)
725:S2CID
715:(2).
681:S2CID
526:S2CID
382:Jolie
372:). A
363:Jolie
114:from
86:roles
70:Alice
27:is a
1929:and
1576:list
1420:ISBN
1323:ISBN
1270:ISSN
1209:ISBN
1117:ISBN
1067:ISBN
1015:ISBN
970:ISBN
915:ISBN
753:ISBN
671:ISBN
617:ISBN
516:ISBN
404:Rust
393:Java
313:and
248:recv
246:and
244:send
203:and
191:and
74:expr
1834:DSL
1410:doi
1406:237
1379:doi
1315:doi
1260:doi
1199:doi
1168:doi
1154:802
1109:doi
1059:doi
1007:doi
962:doi
907:doi
861:doi
802:doi
717:doi
663:doi
607:doi
571:hdl
563:doi
508:doi
415:Coq
380:in
283:CAS
240:CAS
197:CAS
181:CAS
173:CAS
169:CAS
140:CAS
130:CAS
116:CAS
88:or
78:Bob
76:to
19:In
2303::
2198:,
2194:,
2190:,
1996:,
1992:,
1721:,
1712:,
1591:,
1587:,
1574:,
1428:.
1418:.
1400:.
1377:.
1363:.
1359:.
1331:,
1321:,
1313:,
1299:,
1276:.
1268:.
1258:.
1246:67
1244:.
1240:.
1217:.
1207:.
1174:.
1166:.
1152:.
1148:.
1125:.
1115:.
1098:.
1075:.
1065:.
1053:.
1023:.
1013:.
1001:.
978:.
968:.
960:.
946:.
923:.
913:.
896:.
869:.
857:34
855:.
851:.
810:.
800:.
786:.
782:.
770:^
723:.
713:13
711:.
707:.
693:^
679:.
669:.
657:.
645:^
615:.
585:^
569:.
557:.
553:.
538:^
524:.
514:.
486:^
344:.
336:,
332:,
328:,
321:.
171:.
92:.
23:,
2202:)
2186:(
2170:)
2166:(
2135:)
2131:(
2057:)
2053:(
2025:,
2020:,
2000:)
1988:(
1868:)
1864:(
1858:)
1854:(
1800:)
1796:(
1752:)
1748:(
1661:)
1657:(
1643:)
1639:(
1578:)
1570:(
1493:)
1489:(
1479:e
1472:t
1465:v
1436:.
1412::
1385:.
1381::
1371::
1365:7
1317::
1307::
1284:.
1262::
1252::
1225:.
1201::
1182:.
1170::
1160::
1133:.
1111::
1083:.
1061::
1031:.
1009::
986:.
964::
954::
931:.
909::
877:.
863::
818:.
804::
794::
788:6
761:.
731:.
719::
687:.
665::
625:.
609::
579:.
573::
565::
559:3
532:.
510::
428:.
417:.
406:.
395:.
384:.
365:.
122:.
82:x
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.