{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,4]],"date-time":"2026-02-04T21:06:22Z","timestamp":1770239182239,"version":"3.49.0"},"reference-count":43,"publisher":"Association for Computing Machinery (ACM)","issue":"ICFP","license":[{"start":{"date-parts":[[2024,8,15]],"date-time":"2024-08-15T00:00:00Z","timestamp":1723680000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,8,15]]},"abstract":"<jats:p>\n                    Algebraic effect handlers support composable and structured control-flow abstraction. However, existing designs of algebraic effects often require effects to be executed sequentially. This paper studies parallel algebraic effect handlers. In particular, we formalize\n                    <jats:italic toggle=\"yes\">\u03bb<\/jats:italic>\n                    <jats:sup>\n                      <jats:italic toggle=\"yes\">p<\/jats:italic>\n                    <\/jats:sup>\n                    , a lambda calculus which models two key features, effect handlers and parallelizable computations, the latter of which takes the form of a\n                    <jats:bold>for<\/jats:bold>\n                    expression, inspired by the Dex programming language. We present various interesting examples expressible in our calculus. To show that our design can be implemented in a type-safe way, we present a higher-order polymorphic lambda calculus F\n                    <jats:sup>\n                      <jats:italic toggle=\"yes\">p<\/jats:italic>\n                    <\/jats:sup>\n                    that extends\n                    <jats:italic toggle=\"yes\">\u03bb<\/jats:italic>\n                    <jats:sup>\n                      <jats:italic toggle=\"yes\">p<\/jats:italic>\n                    <\/jats:sup>\n                    with a lightweight value dependent type system, and prove that F\n                    <jats:sup>\n                      <jats:italic toggle=\"yes\">p<\/jats:italic>\n                    <\/jats:sup>\n                    preserves the semantics of\n                    <jats:italic toggle=\"yes\">\u03bb<\/jats:italic>\n                    <jats:sup>\n                      <jats:italic toggle=\"yes\">p<\/jats:italic>\n                    <\/jats:sup>\n                    and enjoys syntactic type soundness. Lastly, we provide an implementation of the language design as a Haskell library, which mirrors both\n                    <jats:italic toggle=\"yes\">\u03bb<\/jats:italic>\n                    <jats:sup>\n                      <jats:italic toggle=\"yes\">p<\/jats:italic>\n                    <\/jats:sup>\n                    and F\n                    <jats:sup>\n                      <jats:italic toggle=\"yes\">p<\/jats:italic>\n                    <\/jats:sup>\n                    and reveals new connections to free applicative functors. All examples presented can be encoded in the Haskell implementation. We believe this paper is the first to study the combination of user-defined effect handlers and parallel computations, and it is our hope that it provides a basis for future designs and implementations of parallel algebraic effect handlers.\n                  <\/jats:p>","DOI":"10.1145\/3674651","type":"journal-article","created":{"date-parts":[[2024,8,15]],"date-time":"2024-08-15T12:49:04Z","timestamp":1723726144000},"page":"756-788","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["Parallel Algebraic Effect Handlers"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-5961-1493","authenticated-orcid":false,"given":"Ningning","family":"Xie","sequence":"first","affiliation":[{"name":"University of Toronto, Toronto, Canada"},{"name":"Google DeepMind, Toronto, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2594-8442","authenticated-orcid":false,"given":"Daniel D.","family":"Johnson","sequence":"additional","affiliation":[{"name":"University of Toronto, Toronto, Canada"},{"name":"Google DeepMind, Toronto, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0122-1377","authenticated-orcid":false,"given":"Dougal","family":"Maclaurin","sequence":"additional","affiliation":[{"name":"Google DeepMind, Boston, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-7665-4559","authenticated-orcid":false,"given":"Adam","family":"Paszke","sequence":"additional","affiliation":[{"name":"Google DeepMind, Berlin, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2024,8,15]]},"reference":[{"key":"e_1_3_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/3158095"},{"key":"e_1_3_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/3122955.3122958"},{"key":"e_1_3_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/3428194"},{"key":"e_1_3_1_5_1","article-title":"Free Applicative Functors","author":"Capriotti Paolo","year":"2014","unstructured":"Paolo Capriotti and Ambrus Kaposi. 2014. Free Applicative Functors. In MSFP. https:\/\/api.semanticscholar.org\/CorpusID:17313426","journal-title":"MSFP"},{"key":"e_1_3_1_6_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796899003342"},{"key":"e_1_3_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/2503778.2503784"},{"key":"e_1_3_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/91556.91622"},{"key":"e_1_3_1_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-89719-6_6"},{"key":"e_1_3_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2364506.2364522"},{"key":"e_1_3_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/3110257"},{"key":"e_1_3_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/3563445"},{"key":"e_1_3_1_13_1","unstructured":"Google. 2020. JAX PRNG Design. https:\/\/github.com\/google\/jax\/blob\/main\/design_notes\/prng.md"},{"key":"e_1_3_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/114005.102808"},{"key":"e_1_3_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/2976022.2976033"},{"key":"e_1_3_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/2500365.2500590"},{"key":"e_1_3_1_17_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796816000320"},{"key":"e_1_3_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/2804302.2804319"},{"key":"e_1_3_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/2503778.2503791"},{"key":"e_1_3_1_20_1","doi-asserted-by":"publisher","DOI":"10.4204\/EPTCS.153.8"},{"key":"e_1_3_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/2633628.2633636"},{"key":"e_1_3_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2103786.2103798"},{"key":"e_1_3_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009897"},{"key":"e_1_3_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2628136.2628144"},{"key":"e_1_3_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/2976002.2976007"},{"key":"e_1_3_1_26_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796807006326"},{"key":"e_1_3_1_27_1","doi-asserted-by":"crossref","unstructured":"Dave Menendez. 2013. Free Applicative Functors in Haskell. https:\/\/www.eyrie.org\/~zednenem\/2013\/05\/27\/freeapp. Accessed: 2024-02-25.","DOI":"10.26422\/rja.2024.0502.men"},{"key":"e_1_3_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/3473593"},{"key":"e_1_3_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/237721.237794"},{"key":"e_1_3_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/3622814"},{"key":"e_1_3_1_31_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796820000106"},{"key":"e_1_3_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/3209108.3209166"},{"key":"e_1_3_1_33_1","doi-asserted-by":"publisher","DOI":"10.1023\/A:1023064908962"},{"key":"e_1_3_1_34_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-00590-9_7"},{"key":"e_1_3_1_35_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2015.12.003"},{"key":"e_1_3_1_36_1","unstructured":"Enno Scholz. 1995. A concurrency monad based on constructor primitives: or being first-class is not enough. (1995)."},{"key":"e_1_3_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/3453483.3454039"},{"key":"e_1_3_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/2034773.2034811"},{"key":"e_1_3_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/3632896"},{"key":"e_1_3_1_40_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-89051-3_11"},{"key":"e_1_3_1_41_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01018828"},{"key":"e_1_3_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/2633357.2633358"},{"key":"e_1_3_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/3408981"},{"key":"e_1_3_1_44_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-99336-8_17"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3674651","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3674651","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,2,4]],"date-time":"2026-02-04T07:50:20Z","timestamp":1770191420000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3674651"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,8,15]]},"references-count":43,"journal-issue":{"issue":"ICFP","published-print":{"date-parts":[[2024,8,15]]}},"alternative-id":["10.1145\/3674651"],"URL":"https:\/\/doi.org\/10.1145\/3674651","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,8,15]]},"assertion":[{"value":"2024-02-28","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-06-18","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-08-15","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}