{"id":"https://openalex.org/W3149432941","doi":"https://doi.org/10.1145/3453483.3454039","title":"Retrofitting effect handlers onto OCaml","display_name":"Retrofitting effect handlers onto OCaml","publication_year":2021,"publication_date":"2021-06-18","ids":{"openalex":"https://openalex.org/W3149432941","doi":"https://doi.org/10.1145/3453483.3454039","mag":"3149432941"},"language":"en","primary_location":{"id":"doi:10.1145/3453483.3454039","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3453483.3454039","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3453483.3454039","source":null,"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","raw_type":"proceedings-article"},"type":"article","indexed_in":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"gold","oa_url":"https://dl.acm.org/doi/pdf/10.1145/3453483.3454039","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":null,"display_name":"KC Sivaramakrishnan","orcid":"https://orcid.org/0000-0002-3491-1780"},"institutions":[{"id":"https://openalex.org/I24676775","display_name":"Indian Institute of Technology Madras","ror":"https://ror.org/03v0r5n49","country_code":"IN","type":"facility","lineage":["https://openalex.org/I24676775"]}],"countries":["IN"],"is_corresponding":true,"raw_author_name":"KC Sivaramakrishnan","raw_affiliation_strings":["IIT Madras, India"],"affiliations":[{"raw_affiliation_string":"IIT Madras, India","institution_ids":["https://openalex.org/I24676775"]}]},{"author_position":"middle","author":{"id":null,"display_name":"Stephen Dolan","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Stephen Dolan","raw_affiliation_strings":["OCaml Labs, UK"],"affiliations":[{"raw_affiliation_string":"OCaml Labs, UK","institution_ids":[]}]},{"author_position":"middle","author":{"id":null,"display_name":"Leo White","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Leo White","raw_affiliation_strings":["Jane Street, UK"],"affiliations":[{"raw_affiliation_string":"Jane Street, UK","institution_ids":[]}]},{"author_position":"middle","author":{"id":null,"display_name":"Tom Kelly","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Tom Kelly","raw_affiliation_strings":["OCaml Labs, UK"],"affiliations":[{"raw_affiliation_string":"OCaml Labs, UK","institution_ids":[]}]},{"author_position":"middle","author":{"id":null,"display_name":"Sadiq Jaffer","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Sadiq Jaffer","raw_affiliation_strings":["OCaml Labs, UK / Opsian, UK"],"affiliations":[{"raw_affiliation_string":"OCaml Labs, UK / Opsian, UK","institution_ids":[]}]},{"author_position":"last","author":{"id":null,"display_name":"Anil Madhavapeddy","orcid":null},"institutions":[{"id":"https://openalex.org/I241749","display_name":"University of Cambridge","ror":"https://ror.org/013meh722","country_code":"GB","type":"education","lineage":["https://openalex.org/I241749"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"Anil Madhavapeddy","raw_affiliation_strings":["University of Cambridge, UK / OCaml Labs, UK"],"affiliations":[{"raw_affiliation_string":"University of Cambridge, UK / OCaml Labs, UK","institution_ids":["https://openalex.org/I241749"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":6,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I24676775"],"apc_list":null,"apc_paid":null,"fwci":2.9392,"has_fulltext":true,"cited_by_count":48,"citation_normalized_percentile":{"value":0.9231899,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":94,"max":100},"biblio":{"volume":null,"issue":null,"first_page":"206","last_page":"221"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T11424","display_name":"Security and Verification in Computing","score":0.9983000159263611,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T11424","display_name":"Security and Verification in Computing","score":0.9983000159263611,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T11241","display_name":"Advanced Malware Detection Techniques","score":0.9977999925613403,"subfield":{"id":"https://openalex.org/subfields/1711","display_name":"Signal Processing"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9933000206947327,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/retrofitting","display_name":"Retrofitting","score":0.7127000093460083},{"id":"https://openalex.org/keywords/modular-design","display_name":"Modular design","score":0.5479000210762024},{"id":"https://openalex.org/keywords/control-flow","display_name":"Control flow","score":0.5351999998092651},{"id":"https://openalex.org/keywords/suite","display_name":"Suite","score":0.4442000091075897},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.3952000141143799},{"id":"https://openalex.org/keywords/overhead","display_name":"Overhead (engineering)","score":0.35019999742507935},{"id":"https://openalex.org/keywords/debugging","display_name":"Debugging","score":0.3458000123500824},{"id":"https://openalex.org/keywords/benchmark","display_name":"Benchmark (surveying)","score":0.30820000171661377}],"concepts":[{"id":"https://openalex.org/C2778368411","wikidata":"https://www.wikidata.org/wiki/Q24662","display_name":"Retrofitting","level":2,"score":0.7127000093460083},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.6912000179290771},{"id":"https://openalex.org/C101468663","wikidata":"https://www.wikidata.org/wiki/Q1620158","display_name":"Modular design","level":2,"score":0.5479000210762024},{"id":"https://openalex.org/C160191386","wikidata":"https://www.wikidata.org/wiki/Q868299","display_name":"Control flow","level":2,"score":0.5351999998092651},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.46939998865127563},{"id":"https://openalex.org/C79581498","wikidata":"https://www.wikidata.org/wiki/Q1367530","display_name":"Suite","level":2,"score":0.4442000091075897},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.3952000141143799},{"id":"https://openalex.org/C2779960059","wikidata":"https://www.wikidata.org/wiki/Q7113681","display_name":"Overhead (engineering)","level":2,"score":0.35019999742507935},{"id":"https://openalex.org/C168065819","wikidata":"https://www.wikidata.org/wiki/Q845566","display_name":"Debugging","level":2,"score":0.3458000123500824},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.3370000123977661},{"id":"https://openalex.org/C185798385","wikidata":"https://www.wikidata.org/wiki/Q1161707","display_name":"Benchmark (surveying)","level":2,"score":0.30820000171661377},{"id":"https://openalex.org/C43126263","wikidata":"https://www.wikidata.org/wiki/Q128751","display_name":"Source code","level":2,"score":0.29840001463890076},{"id":"https://openalex.org/C32833848","wikidata":"https://www.wikidata.org/wiki/Q4115054","display_name":"Extensibility","level":2,"score":0.2906999886035919},{"id":"https://openalex.org/C2775924081","wikidata":"https://www.wikidata.org/wiki/Q55608371","display_name":"Control (management)","level":2,"score":0.2903999984264374},{"id":"https://openalex.org/C166955791","wikidata":"https://www.wikidata.org/wiki/Q629579","display_name":"Macro","level":2,"score":0.28519999980926514},{"id":"https://openalex.org/C489000","wikidata":"https://www.wikidata.org/wiki/Q747385","display_name":"Data flow diagram","level":2,"score":0.2773999869823456},{"id":"https://openalex.org/C147494362","wikidata":"https://www.wikidata.org/wiki/Q2078905","display_name":"Troubleshooting","level":2,"score":0.27639999985694885},{"id":"https://openalex.org/C2780615140","wikidata":"https://www.wikidata.org/wiki/Q920419","display_name":"Upgrade","level":2,"score":0.2685000002384186},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.260699987411499},{"id":"https://openalex.org/C97686452","wikidata":"https://www.wikidata.org/wiki/Q7604153","display_name":"Static analysis","level":2,"score":0.2574999928474426},{"id":"https://openalex.org/C149635348","wikidata":"https://www.wikidata.org/wiki/Q193040","display_name":"Embedded system","level":1,"score":0.25459998846054077}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/3453483.3454039","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3453483.3454039","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3453483.3454039","source":null,"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","raw_type":"proceedings-article"},{"id":"pmh:oai:arXiv.org:2104.00250","is_oa":true,"landing_page_url":"http://arxiv.org/abs/2104.00250","pdf_url":"https://arxiv.org/pdf/2104.00250","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"}],"best_oa_location":{"id":"doi:10.1145/3453483.3454039","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3453483.3454039","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3453483.3454039","source":null,"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation","raw_type":"proceedings-article"},"sustainable_development_goals":[],"awards":[{"id":"https://openalex.org/G4419509089","display_name":null,"funder_award_id":"Fellowship","funder_id":"https://openalex.org/F4320320247","funder_display_name":"Royal Commission for the Exhibition of 1851"}],"funders":[{"id":"https://openalex.org/F4320320247","display_name":"Royal Commission for the Exhibition of 1851","ror":"https://ror.org/05fdb2817"}],"has_content":{"pdf":true,"grobid_xml":true},"content_urls":{"pdf":"https://content.openalex.org/works/W3149432941.pdf","grobid_xml":"https://content.openalex.org/works/W3149432941.grobid-xml"},"referenced_works_count":23,"referenced_works":["https://openalex.org/W1783388813","https://openalex.org/W1969045031","https://openalex.org/W2007435074","https://openalex.org/W2014257084","https://openalex.org/W2033675214","https://openalex.org/W2062177228","https://openalex.org/W2129610927","https://openalex.org/W2134939854","https://openalex.org/W2139626883","https://openalex.org/W2293168108","https://openalex.org/W2561708922","https://openalex.org/W2625141509","https://openalex.org/W2899650865","https://openalex.org/W2907553500","https://openalex.org/W2979878940","https://openalex.org/W2980302423","https://openalex.org/W2995698344","https://openalex.org/W3012366501","https://openalex.org/W3015096137","https://openalex.org/W3019259517","https://openalex.org/W3033863073","https://openalex.org/W3033957710","https://openalex.org/W3047512562"],"related_works":[],"abstract_inverted_index":{"Effect":[0,15],"handlers":[1,16,47,72,95],"have":[2,82],"been":[3],"gathering":[4],"momentum":[5],"as":[6,24],"a":[7,37,41,100,105],"mechanism":[8],"for":[9,18,48,96,131],"modular":[10],"programming":[11,53],"with":[12,119],"user-defined":[13],"effects.":[14],"allow":[17],"non-local":[19,84],"control":[20,85],"flow":[21,86],"mechanisms":[22,87],"such":[23],"generators,":[25],"async/await,":[26],"lightweight":[27],"threads":[28],"and":[29,39,63,127],"coroutines":[30],"to":[31,58],"be":[32],"composably":[33],"expressed.":[34],"We":[35],"present":[36],"design":[38],"evaluate":[40],"full-fledged":[42],"efficient":[43,130],"implementation":[44,56,92],"of":[45,66,93,137],"effect":[46,71,94,114,138],"OCaml,":[49],"an":[50],"industrial-strength":[51],"multi-paradigm":[52],"language.":[54],"Our":[55,91],"strives":[57],"maintain":[59],"the":[60,125],"backwards":[61],"compatibility":[62],"performance":[64],"profile":[65],"existing":[67],"OCaml":[68,74,78],"code.":[69],"Retrofitting":[70],"onto":[73],"is":[75,129],"challenging":[76],"since":[77],"does":[79,111],"not":[80,112],"currently":[81],"any":[83],"other":[88],"than":[89],"exceptions.":[90],"OCaml:":[97],"(i)":[98],"imposes":[99],"mean":[101],"1%":[102],"overhead":[103],"on":[104],"comprehensive":[106],"macro":[107],"benchmark":[108],"suite":[109],"that":[110,123,134],"use":[113,136],"handlers;":[115],"(ii)":[116],"remains":[117],"compatible":[118],"program":[120],"analysis":[121],"tools":[122],"inspect":[124],"stack;":[126],"(iii)":[128],"new":[132],"code":[133],"makes":[135],"handlers.":[139]},"counts_by_year":[{"year":2026,"cited_by_count":5},{"year":2025,"cited_by_count":22},{"year":2024,"cited_by_count":10},{"year":2023,"cited_by_count":6},{"year":2022,"cited_by_count":3},{"year":2021,"cited_by_count":2}],"updated_date":"2026-04-10T15:06:20.359241","created_date":"2021-04-13T00:00:00"}
