{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,11]],"date-time":"2026-04-11T02:11:59Z","timestamp":1775873519153,"version":"3.50.1"},"publisher-location":"New York, NY, USA","reference-count":55,"publisher":"ACM","license":[{"start":{"date-parts":[[2021,6,18]],"date-time":"2021-06-18T00:00:00Z","timestamp":1623974400000},"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":[],"published-print":{"date-parts":[[2021,6,19]]},"DOI":"10.1145\/3453483.3454039","type":"proceedings-article","created":{"date-parts":[[2021,6,24]],"date-time":"2021-06-24T16:58:48Z","timestamp":1624553928000},"page":"206-221","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":46,"title":["Retrofitting effect handlers onto OCaml"],"prefix":"10.1145","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-3491-1780","authenticated-orcid":false,"given":"KC","family":"Sivaramakrishnan","sequence":"first","affiliation":[{"name":"IIT Madras, India"}]},{"given":"Stephen","family":"Dolan","sequence":"additional","affiliation":[{"name":"OCaml Labs, UK"}]},{"given":"Leo","family":"White","sequence":"additional","affiliation":[{"name":"Jane Street, UK"}]},{"given":"Tom","family":"Kelly","sequence":"additional","affiliation":[{"name":"OCaml Labs, UK"}]},{"given":"Sadiq","family":"Jaffer","sequence":"additional","affiliation":[{"name":"OCaml Labs, UK \/ Opsian, UK"}]},{"given":"Anil","family":"Madhavapeddy","sequence":"additional","affiliation":[{"name":"University of Cambridge, UK \/ OCaml Labs, UK"}]}],"member":"320","published-online":{"date-parts":[[2021,6,18]]},"reference":[{"key":"e_1_3_2_1_1_1","unstructured":"2020. Unwind-protect in JaneStreet Base library. https:\/\/ocaml.janestreet.com\/ocaml-core\/v0.13\/doc\/base\/Base\/Exn\/index.html##val-protectx  2020. Unwind-protect in JaneStreet Base library. https:\/\/ocaml.janestreet.com\/ocaml-core\/v0.13\/doc\/base\/Base\/Exn\/index.html##val-protectx"},{"key":"e_1_3_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/3360572"},{"key":"e_1_3_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jlamp.2014.02.001"},{"key":"e_1_3_2_1_4_1","volume-title":"Everest: Towards a Verified, Drop-in Replacement of HTTPS. In 2nd Summit on Advances in Programming Languages","author":"Bhargavan Karthikeyan","year":"2017","unstructured":"Karthikeyan Bhargavan , Barry Bond , Antoine Delignat-Lavaud , C\u00e9dric Fournet , Chris Hawblitzel , Catalin Hritcu , Samin Ishtiaq , Markulf Kohlweiss , Rustan Leino , Jay Lorch , Kenji Maillard , Jianyang Pang , Bryan Parno , Jonathan Protzenko , Tahina Ramananandro , Ashay Rane , Aseem Rastogi , Nikhil Swamy , Laure Thompson , Peng Wang , Santiago Zanella-B\u00e9guelin , and Jean-Karim Zinzindohou\u00e9 . 2017 . Everest: Towards a Verified, Drop-in Replacement of HTTPS. In 2nd Summit on Advances in Programming Languages . http:\/\/drops.dagstuhl.de\/opus\/volltexte\/2017\/7119\/pdf\/LIPIcs-SNAPL-2017-1.pdf Karthikeyan Bhargavan, Barry Bond, Antoine Delignat-Lavaud, C\u00e9dric Fournet, Chris Hawblitzel, Catalin Hritcu, Samin Ishtiaq, Markulf Kohlweiss, Rustan Leino, Jay Lorch, Kenji Maillard, Jianyang Pang, Bryan Parno, Jonathan Protzenko, Tahina Ramananandro, Ashay Rane, Aseem Rastogi, Nikhil Swamy, Laure Thompson, Peng Wang, Santiago Zanella-B\u00e9guelin, and Jean-Karim Zinzindohou\u00e9. 2017. Everest: Towards a Verified, Drop-in Replacement of HTTPS. In 2nd Summit on Advances in Programming Languages. http:\/\/drops.dagstuhl.de\/opus\/volltexte\/2017\/7119\/pdf\/LIPIcs-SNAPL-2017-1.pdf"},{"key":"e_1_3_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3290319"},{"key":"e_1_3_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3371116"},{"key":"e_1_3_2_1_7_1","volume-title":"Goodman","author":"Bingham Eli","year":"2018","unstructured":"Eli Bingham , Jonathan P. Chen , Martin Jankowiak , Fritz Obermeyer , Neeraj Pradhan , Theofanis Karaletsos , Rohit Singh , Paul Szerlip , Paul Horsfall , and Noah D . Goodman . 2018 . Pyro : Deep Universal Probabilistic Programming . arxiv:1810.09538. Eli Bingham, Jonathan P. Chen, Martin Jankowiak, Fritz Obermeyer, Neeraj Pradhan, Theofanis Karaletsos, Rohit Singh, Paul Szerlip, Paul Horsfall, and Noah D. Goodman. 2018. Pyro: Deep Universal Probabilistic Programming. arxiv:1810.09538."},{"key":"e_1_3_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/231379.231395"},{"key":"e_1_3_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796899003342"},{"key":"e_1_3_2_1_10_1","unstructured":"2020. What Color is Your Function? http:\/\/journal.stuffwithstuff.com\/2015\/02\/01\/what-color-is-your-function\/  2020. What Color is Your Function? http:\/\/journal.stuffwithstuff.com\/2015\/02\/01\/what-color-is-your-function\/"},{"key":"e_1_3_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796820000039"},{"key":"e_1_3_2_1_12_1","unstructured":"2020. The Coq Proof Assistant. https:\/\/coq.inria.fr\/  2020. The Coq Proof Assistant. https:\/\/coq.inria.fr\/"},{"key":"e_1_3_2_1_13_1","unstructured":"2020. Unwind-protect in JaneStreet Core library. https:\/\/ocaml.janestreet.com\/ocaml-core\/109.20.00\/doc\/core\/Exn.html  2020. Unwind-protect in JaneStreet Core library. https:\/\/ocaml.janestreet.com\/ocaml-core\/109.20.00\/doc\/core\/Exn.html"},{"key":"e_1_3_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/91556.91622"},{"key":"e_1_3_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/773184.773202"},{"key":"e_1_3_2_1_16_1","volume-title":"Coroutines in Lua. j-jucs, 10, 7","author":"de Moura Ana L\u00facia","year":"2004","unstructured":"Ana L\u00facia de Moura , Noemi Rodriguez , and Roberto Ierusalimschy . 2004. Coroutines in Lua. j-jucs, 10, 7 ( 2004 ), jul, 910\u2013925. http:\/\/www.jucs.org\/jucs_10_7\/coroutines_in_lua Ana L\u00facia de Moura, Noemi Rodriguez, and Roberto Ierusalimschy. 2004. Coroutines in Lua. j-jucs, 10, 7 (2004), jul, 910\u2013925. http:\/\/www.jucs.org\/jucs_10_7\/coroutines_in_lua"},{"key":"e_1_3_2_1_17_1","volume-title":"Trends in Functional Programming","author":"Dolan Stephen","unstructured":"Stephen Dolan , Spiros Eliopoulos , Daniel Hillerstr\u00f6m , Anil Madhavapeddy , K. C. Sivaramakrishnan , and Leo White . 2018. Concurrent System Programming with Effect Handlers . In Trends in Functional Programming , Meng Wang and Scott Owens (Eds.). Springer International Publishing , Cham . 98\u2013117. isbn:978-3-319-89719-6 Stephen Dolan, Spiros Eliopoulos, Daniel Hillerstr\u00f6m, Anil Madhavapeddy, K. C. Sivaramakrishnan, and Leo White. 2018. Concurrent System Programming with Effect Handlers. In Trends in Functional Programming, Meng Wang and Scott Owens (Eds.). Springer International Publishing, Cham. 98\u2013117. isbn:978-3-319-89719-6"},{"key":"e_1_3_2_1_18_1","unstructured":"2020. The DWARF Debugging Standard. http:\/\/dwarfstd.org\/  2020. The DWARF Debugging Standard. http:\/\/dwarfstd.org\/"},{"key":"e_1_3_2_1_19_1","unstructured":"2020. The dynamic-wind problem. http:\/\/okmij.org\/ftp\/continuations\/against-callcc.html##dynamic_wind  2020. The dynamic-wind problem. http:\/\/okmij.org\/ftp\/continuations\/against-callcc.html##dynamic_wind"},{"key":"e_1_3_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3385994"},{"key":"e_1_3_2_1_21_1","volume-title":"Friedman","author":"Felleisen Matthias","year":"1986","unstructured":"Matthias Felleisen and Daniel P . Friedman . 1986 . Control Operators, the SECD-Machine, and the Lambda-Calculus . https:\/\/help.luddy.indiana.edu\/techreports\/TRNNN.cgi?trnum=TR197 Matthias Felleisen and Daniel P.Friedman. 1986. Control Operators, the SECD-Machine, and the Lambda-Calculus. https:\/\/help.luddy.indiana.edu\/techreports\/TRNNN.cgi?trnum=TR197"},{"key":"e_1_3_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3385981"},{"key":"e_1_3_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796819000121"},{"key":"e_1_3_2_1_24_1","unstructured":"2020. Profiling a Go Program. https:\/\/golang.org\/pkg\/runtime\/pprof\/##Profile  2020. Profiling a Go Program. https:\/\/golang.org\/pkg\/runtime\/pprof\/##Profile"},{"key":"e_1_3_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062363"},{"key":"e_1_3_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796820000040"},{"key":"e_1_3_2_1_27_1","unstructured":"2020. A high performance memory efficient and scalable web server written in OCaml. https:\/\/github.com\/inhabitedtype\/httpaf  2020. A high performance memory efficient and scalable web server written in OCaml. https:\/\/github.com\/inhabitedtype\/httpaf"},{"key":"e_1_3_2_1_28_1","unstructured":"2020. Intel\u00ae Xeon\u00ae Gold 5120 Processor Specification. https:\/\/ark.intel.com\/content\/www\/us\/en\/ark\/products\/120474\/intel-xeon-gold-5120-processor-19-25m-cache-2-20-ghz.html  2020. Intel\u00ae Xeon\u00ae Gold 5120 Processor Specification. https:\/\/ark.intel.com\/content\/www\/us\/en\/ark\/products\/120474\/intel-xeon-gold-5120-processor-19-25m-cache-2-20-ghz.html"},{"key":"e_1_3_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1109\/AICCSA.2003.1227495"},{"key":"e_1_3_2_1_30_1","volume-title":"Trends in Functional Programming","author":"Kawahara Satoru","unstructured":"Satoru Kawahara and Yukiyoshi Kameyama . 2020. One-Shot Algebraic Effects as Coroutines . In Trends in Functional Programming , Aleksander Byrski and John Hughes (Eds.). Springer International Publishing , Cham . 159\u2013179. isbn:978-3-030-57761-2 Satoru Kawahara and Yukiyoshi Kameyama. 2020. One-Shot Algebraic Effects as Coroutines. In Trends in Functional Programming, Aleksander Byrski and John Hughes (Eds.). Springer International Publishing, Cham. 159\u2013179. isbn:978-3-030-57761-2"},{"key":"e_1_3_2_1_31_1","volume-title":"Delimited Control in OCaml, Abstractly and Concretely: System Description","author":"Kiselyov Oleg","unstructured":"Oleg Kiselyov . 2010. Delimited Control in OCaml, Abstractly and Concretely: System Description . In Functional and Logic Programming, Matthias Blume, Naoki Kobayashi, and Germ\u00e1n Vidal (Eds.). Springer Berlin Heidelberg , Berlin, Heidelberg . 304\u2013320. isbn:978-3-642-12251-4 Oleg Kiselyov. 2010. Delimited Control in OCaml, Abstractly and Concretely: System Description. In Functional and Logic Programming, Matthias Blume, Naoki Kobayashi, and Germ\u00e1n Vidal (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 304\u2013320. isbn:978-3-642-12251-4"},{"key":"e_1_3_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.4204\/eptcs.285.2"},{"key":"e_1_3_2_1_33_1","first-page":"71237","volume-title":"Implementing Algebraic Effects in C. In Asian Symposium on Programming Languages and Systems, Bor-Yuh Evan Chang (Ed.). Springer International Publishing, Cham. 339\u2013363","author":"Leijen Daan","year":"2017","unstructured":"Daan Leijen . 2017 . Implementing Algebraic Effects in C. In Asian Symposium on Programming Languages and Systems, Bor-Yuh Evan Chang (Ed.). Springer International Publishing, Cham. 339\u2013363 . isbn:978-3-319- 71237 - 71236 Daan Leijen. 2017. Implementing Algebraic Effects in C. In Asian Symposium on Programming Languages and Systems, Bor-Yuh Evan Chang (Ed.). Springer International Publishing, Cham. 339\u2013363. isbn:978-3-319-71237-6"},{"key":"e_1_3_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009837.3009872"},{"key":"e_1_3_2_1_35_1","unstructured":"Daan Leijen. 2018. Algebraic Effect Handlers with Resources and Deep Finalization. 35.  Daan Leijen. 2018. Algebraic Effect Handlers with Resources and Deep Finalization. 35."},{"key":"e_1_3_2_1_36_1","unstructured":"2020. A high performance full-featured event loop written in C. https:\/\/metacpan.org\/pod\/distribution\/EV\/libev\/ev.pod##NAME  2020. A high performance full-featured event loop written in C. https:\/\/metacpan.org\/pod\/distribution\/EV\/libev\/ev.pod##NAME"},{"key":"e_1_3_2_1_37_1","unstructured":"2020. Fibers continuations and tail-calls for the JVM. https:\/\/openjdk.java.net\/projects\/loom\/  2020. Fibers continuations and tail-calls for the JVM. https:\/\/openjdk.java.net\/projects\/loom\/"},{"key":"e_1_3_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/2451116.2451167"},{"key":"e_1_3_2_1_39_1","volume-title":"Astr\u00e9e: Verification of Absence of Runtime Error. In Building the","author":"Mauborgne Laurent","year":"2004","unstructured":"Laurent Mauborgne . 2004 . Astr\u00e9e: Verification of Absence of Runtime Error. In Building the Information Society, Ren\u00e8 Jacquart (Ed.). Springer US , Boston, MA. 385\u2013392. isbn:978-1-4020-8157-6 Laurent Mauborgne. 2004. Astr\u00e9e: Verification of Absence of Runtime Error. In Building the Information Society, Ren\u00e8 Jacquart (Ed.). Springer US, Boston, MA. 385\u2013392. isbn:978-1-4020-8157-6"},{"key":"e_1_3_2_1_40_1","unstructured":"Yaron Minsky Anil Madhavapeddy and Jason Hickey. 2013. Real World OCaml: Functional Programming for the Masses. O\u2019Reilly. isbn:978-1-4493-2391-2 https:\/\/realworldocaml.org  Yaron Minsky Anil Madhavapeddy and Jason Hickey. 2013. Real World OCaml: Functional Programming for the Masses. O\u2019Reilly. isbn:978-1-4493-2391-2 https:\/\/realworldocaml.org"},{"key":"e_1_3_2_1_41_1","unstructured":"2020. Intel Memory Latency Checker v3.9. https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/articles\/intelr-memory-latency-checker.html  2020. Intel Memory Latency Checker v3.9. https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/articles\/intelr-memory-latency-checker.html"},{"key":"e_1_3_2_1_42_1","unstructured":"2020. HTTP client and server implementations in Go. https:\/\/golang.org\/pkg\/net\/http\/  2020. HTTP client and server implementations in Go. https:\/\/golang.org\/pkg\/net\/http\/"},{"key":"e_1_3_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1016\/S1571-0661(04)80969-1"},{"key":"e_1_3_2_1_44_1","unstructured":"2020. Extensible variant types. https:\/\/caml.inria.fr\/pub\/docs\/manual-ocaml\/extensiblevariants.html  2020. Extensible variant types. https:\/\/caml.inria.fr\/pub\/docs\/manual-ocaml\/extensiblevariants.html"},{"key":"e_1_3_2_1_45_1","volume-title":"Handlers of Algebraic Effects","author":"Plotkin Gordon","unstructured":"Gordon Plotkin and Matija Pretnar . 2009. Handlers of Algebraic Effects . In Programming Languages and Systems, Giuseppe Castagna (Ed.). Springer Berlin Heidelberg , Berlin, Heidelberg . 80\u201394. isbn:978-3-642-00590-9 Gordon Plotkin and Matija Pretnar. 2009. Handlers of Algebraic Effects. In Programming Languages and Systems, Giuseppe Castagna (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 80\u201394. isbn:978-3-642-00590-9"},{"key":"e_1_3_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1023\/A:1010051815785"},{"key":"e_1_3_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/3408975"},{"key":"e_1_3_2_1_48_1","volume-title":"Proceedings of the 4th Workshop on Scheme and Functional Programming (7","author":"Sitaram Dorai","year":"2003","unstructured":"Dorai Sitaram . 2003 . Unwind-protect in portable Scheme . In Proceedings of the 4th Workshop on Scheme and Functional Programming (7 Nov. 2003), M. Flatt, Ed., no. UUCS-03-023 in Tech. Rep., School of Computing, University of Utah. 48\u201352. Dorai Sitaram. 2003. Unwind-protect in portable Scheme. In Proceedings of the 4th Workshop on Scheme and Functional Programming (7 Nov. 2003), M. Flatt, Ed., no. UUCS-03-023 in Tech. Rep., School of Computing, University of Utah. 48\u201352."},{"key":"e_1_3_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/3408995"},{"key":"e_1_3_2_1_50_1","first-page":"10","volume":"4","year":"2020","unstructured":"2020 . Unwind-protect in the OCaml 4 . 10 .0 standard library. https:\/\/caml.inria.fr\/pub\/docs\/manual-ocaml\/libref\/Fun.html##exception 2020. Unwind-protect in the OCaml 4.10.0 standard library. https:\/\/caml.inria.fr\/pub\/docs\/manual-ocaml\/libref\/Fun.html##exception","journal-title":"Unwind-protect in the OCaml"},{"key":"e_1_3_2_1_51_1","volume-title":"Common LISP: The Language","author":"Steele Guy L.","unstructured":"Guy L. Steele . 1990. Common LISP: The Language ( 2 nd Ed.). Digital Press , USA. isbn:1555580416 https:\/\/www.cs.cmu.edu\/Groups\/AI\/html\/cltl\/cltl2.html Guy L. Steele. 1990. Common LISP: The Language (2nd Ed.). Digital Press, USA. isbn:1555580416 https:\/\/www.cs.cmu.edu\/Groups\/AI\/html\/cltl\/cltl2.html","edition":"2"},{"key":"e_1_3_2_1_52_1","unstructured":"2020. Swift Concurrency Roadmap. https:\/\/forums.swift.org\/t\/swift-concurrency-roadmap\/41611  2020. Swift Concurrency Roadmap. https:\/\/forums.swift.org\/t\/swift-concurrency-roadmap\/41611"},{"key":"e_1_3_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/1411304.1411307"},{"key":"e_1_3_2_1_54_1","unstructured":"2020. Typed continuations to model stacks. https:\/\/github.com\/WebAssembly\/design\/issues\/1359  2020. Typed continuations to model stacks. https:\/\/github.com\/WebAssembly\/design\/issues\/1359"},{"key":"e_1_3_2_1_55_1","unstructured":"2020. A constant throughput correct latency recording variant of wrk. https:\/\/github.com\/giltene\/wrk2  2020. A constant throughput correct latency recording variant of wrk. https:\/\/github.com\/giltene\/wrk2"}],"event":{"name":"PLDI '21: 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","location":"Virtual Canada","acronym":"PLDI '21","sponsor":["SIGPLAN ACM Special Interest Group on Programming Languages"]},"container-title":["Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3453483.3454039","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3453483.3454039","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T22:03:07Z","timestamp":1750197787000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3453483.3454039"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,6,18]]},"references-count":55,"alternative-id":["10.1145\/3453483.3454039","10.1145\/3453483"],"URL":"https:\/\/doi.org\/10.1145\/3453483.3454039","relation":{},"subject":[],"published":{"date-parts":[[2021,6,18]]},"assertion":[{"value":"2021-06-18","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}