# Daniel's master's thesis (initial implementation of handlers in Links) @MastersThesis{Hillerstrom15, author = {Daniel Hillerström}, title = {Handlers for Algebraic Effects in {Links}}, school = {School of Informatics, The University of Edinburgh}, address = {Scotland, {UK}}, month = aug, year = 2015 } # Daniel's master's thesis (abstract message-passing concurrency model, compilation of handlers) @MastersThesis{Hillerstrom16, author = {Daniel Hillerström}, title = {Compilation of Effect Handlers and their Applications in Concurrency}, school = {School of Informatics, The University of Edinburgh}, address = {Scotland, {UK}}, optmonth = aug, year = 2016, type = {{MSc(R)} thesis} } # OCaml handlers @misc{DolanWSYM15, title = {Effective Concurrency through Algebraic Effects}, author = {Stephen Dolan and Leo White and {KC} Sivaramakrishnan and Jeremy Yallop and Anil Madhavapeddy}, year = 2015, howpublished = {OCaml Workshop} } @misc{DolanWM14, title = {Multicore {OCaml}}, author = {Stephen Dolan and Leo White and Anil Madhavapeddy}, year = {2014}, howpublished = {OCaml Workshop} } @inproceedings{DolanEHMSW17, author = {Stephen Dolan and Spiros Eliopoulos and Daniel Hillerstr{\"{o}}m and Anil Madhavapeddy and K. C. Sivaramakrishnan and Leo White}, title = {Concurrent System Programming with Effect Handlers}, booktitle = {{TFP}}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {10788}, pages = {98--117}, publisher = {Springer}, year = {2017} } # Efficient one-shot continuations @inproceedings{BruggemanWD96, author = {Carl Bruggeman and Oscar Waddell and R. Kent Dybvig}, editor = {Charles N. Fischer}, title = {Representing Control in the Presence of One-Shot Continuations}, booktitle = {Proceedings of the {ACM} SIGPLAN'96 Conference on Programming Language Design and Implementation (PLDI), Philadephia, Pennsylvania, May 21-24, 1996}, pages = {99--107}, publisher = {{ACM}}, year = {1996}, OPTurl = {http://doi.acm.org/10.1145/231379.231395}, OPTdoi = {10.1145/231379.231395}, timestamp = {Mon, 21 May 2012 16:19:53 +0200}, biburl = {http://dblp.uni-trier.de/rec/bib/conf/pldi/BruggemanWD96}, bibsource = {dblp computer science bibliography, http://dblp.org} } # Programming with continuations @InProceedings{FriedmanHK84, author = {Daniel P. Friedman and Christopher T Haynes and Eugene Kohlbecker}, editor = {Peter Pepper}, title = {Programming with Continuations}, booktitle = {Program Transformation and Programming Environments}, year = 1984, publisher = {Springer Berlin Heidelberg}, address = {Berlin, Heidelberg}, pages = {263--274}, isbn = {978-3-642-46490-4} } # Links compiler + Multicore OCaml @Misc{HillerstromLS16, author = {Daniel Hillerström and Sam Lindley and {KC} Sivaramakrishnan}, title = {Compiling {Links} Effect Handlers to the {OCaml} Backend}, year = {2016}, optmonth = sep, howpublished = {{ML Workshop}} } # Core references on handlers @phdthesis{Pretnar10, author = {Matija Pretnar}, title = {Logic and handling of algebraic effects}, school = {The University of Edinburgh, Scotland, {UK}}, year = {2010} } @inproceedings{PlotkinP09, author = {Gordon D. Plotkin and Matija Pretnar}, title = {Handlers of Algebraic Effects}, booktitle = {{ESOP}}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {5502}, pages = {80--94}, publisher = {Springer}, year = {2009} } @article{PlotkinP13, author = {Gordon D. Plotkin and Matija Pretnar}, title = {Handling Algebraic Effects}, journal = {Logical Methods in Computer Science}, volume = {9}, number = {4}, year = {2013}, OPTurl = {http://dx.doi.org/10.2168/LMCS-9(4:23)2013}, OPTdoi = {10.2168/LMCS-9(4:23)2013} } @article{PlotkinP03, author = {Gordon D. Plotkin and John Power}, title = {Algebraic Operations and Generic Effects}, journal = {Applied Categorical Structures}, volume = {11}, number = {1}, pages = {69--94}, year = {2003}, OPTurl = {http://dx.doi.org/10.1023/A:1023064908962}, OPTdoi = {10.1023/A:1023064908962}, timestamp = {Mon, 29 May 2006 12:06:44 +0200}, biburl = {http://dblp.uni-trier.de/rec/bib/journals/acs/PlotkinP03}, bibsource = {dblp computer science bibliography, http://dblp.org} } @inproceedings{PlotkinP01, author = {Gordon D. Plotkin and John Power}, title = {Adequacy for Algebraic Effects}, booktitle = {FoSSaCS}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {2030}, pages = {1--24}, publisher = {Springer}, year = {2001} } # Other algebraic effects and handlers @InProceedings{Lindley14, author = {Sam Lindley}, editor = {Jos{\'{e}} Pedro Magalh{\~{a}}es and Tiark Rompf}, title = {Algebraic effects and effect handlers for idioms and arrows}, booktitle = {Proceedings of the 10th {ACM} {SIGPLAN} workshop on Generic programming, {WGP} 2014, Gothenburg, Sweden, August 31, 2014}, pages = {47--58}, publisher = {{ACM}}, year = {2014}, OPTurl = {http://doi.acm.org/10.1145/2633628.2633636}, OPTdoi = {10.1145/2633628.2633636}, timestamp = {Thu, 25 Jun 2015 13:50:37 +0200}, biburl = {http://dblp.uni-trier.de/rec/bib/conf/icfp/Lindley14}, bibsource = {dblp computer science bibliography, http://dblp.org} } @article{Pretnar15, author = {Matija Pretnar}, title = {An Introduction to Algebraic Effects and Handlers}, journal = {Electr. Notes Theor. Comput. Sci.}, volume = {319}, pages = {19--35}, year = {2015}, note = {Invited tutorial paper} } @article{KammarP17, author = {Ohad Kammar and Matija Pretnar}, title = {No value restriction is needed for algebraic effects and handlers}, journal = {J. Funct. Program.}, volume = {27}, pages = {e7}, year = {2017} } @article{ForsterKLP17, author = {Yannick Forster and Ohad Kammar and Sam Lindley and Matija Pretnar}, title = {On the Expressive Power of User-Defined Effects: Effect Handlers, Monadic Reflection, Delimited Control}, journal = {{PACMPL}}, volume = {1}, number = {ICFP}, articleno = {13}, numpages = {29}, month = sep, year = {2017} } @article{ForsterKLP19, author = {Yannick Forster and Ohad Kammar and Sam Lindley and Matija Pretnar}, title = {On the expressive power of user-defined effects: Effect handlers, monadic reflection, delimited control}, journal = {J. Funct. Program.}, volume = {29}, pages = {e15}, year = {2019} } @article{HillerstromLL20, author = {Daniel Hillerstr{\"{o}}m and Sam Lindley and John Longley}, title = {Effects for Efficiency: Asymptotic Speedup with First-Class Control}, journal = {Proc. {ACM} Program. Lang.}, volume = {4}, number = {{ICFP}}, pages = {100:1--100:29}, year = {2020} } @phdthesis{McLaughlin20, author = {Craig McLaughlin}, title = {Relational Reasoning for Effects and Handlers}, school = {The University of Edinburgh, Scotland, {UK}}, year = {2020} } @phdthesis{Ahman17, author = {Danel Ahman}, title = {Fibred Computational Effects}, school = {The University of Edinburgh, Scotland, {UK}}, year = {2017} } @phdthesis{Fowler19, author = {Simon Fowler}, title = {Typed concurrent functional programming with channels, actors and sessions}, school = {The University of Edinburgh, Scotland, {UK}}, year = {2019} } @phdthesis{Kammar14, author = {Ohad Kammar}, title = {Algebraic theory of type-and-effect systems}, school = {The University of Edinburgh, Scotland, {UK}}, year = {2014} } @inproceedings{KammarP12, author = {Ohad Kammar and Gordon D. Plotkin}, title = {Algebraic foundations for effect-dependent optimisations}, booktitle = {{POPL}}, pages = {349--360}, publisher = {{ACM}}, year = {2012} } @article{LuksicP20, author = {Ziga Luksic and Matija Pretnar}, title = {Local algebraic effect theories}, journal = {J. Funct. Program.}, volume = {30}, pages = {e13}, year = {2020} } @phdthesis{Brachthauser20, author = {Jonathan Immanuel Brachth{\"{a}}user}, title = {Design and Implementation of Effect Handlers for Object-Oriented Programming Languages}, school = {University of T{\"{u}}bingen, Germany}, year = {2020} } @article{XieBHSL20, author = {Ningning Xie and Jonathan Immanuel Brachth{\"{a}}user and Daniel Hillerstr{\"{o}}m and Philipp Schuster and Daan Leijen}, title = {Effect handlers, evidently}, journal = {Proc. {ACM} Program. Lang.}, volume = {4}, number = {{ICFP}}, pages = {99:1--99:29}, year = {2020} } # Asynchronous effects @article{AhmanP20, author = {Danel Ahman and Matija Pretnar}, title = {Asynchronous effects}, journal = {CoRR}, volume = {abs/2003.02110}, year = {2020} } @MastersThesis{Poulson20, author = {Leo Poulson}, title = {Asynchronous Effect Handling}, school = {School of Informatics, The University of Edinburgh}, address = {Scotland, {UK}}, year = 2020, } # Effekt @article{BrachthauserSO18, author = {Jonathan Immanuel Brachth{\"{a}}user and Philipp Schuster and Klaus Ostermann}, title = {Effect handlers for the masses}, journal = {Proc. {ACM} Program. Lang.}, volume = {2}, number = {{OOPSLA}}, pages = {111:1--111:27}, year = {2018} } @inproceedings{BrachthauserS17, author = {Jonathan Immanuel Brachth{\"{a}}user and Philipp Schuster}, title = {Effekt: extensible algebraic effects in Scala (short paper)}, booktitle = {SCALA@SPLASH}, pages = {67--72}, publisher = {{ACM}}, year = {2017} } @article{SchusterBO20, author = {Philipp Schuster and Jonathan Immanuel Brachth{\"{a}}user and Klaus Ostermann}, title = {Compiling effect handlers in capability-passing style}, journal = {Proc. {ACM} Program. Lang.}, volume = {4}, number = {{ICFP}}, pages = {93:1--93:28}, year = {2020} } # Eff @article{BauerP15, author = {Andrej Bauer and Matija Pretnar}, title = {Programming with algebraic effects and handlers}, journal = {J. Log. Algebr. Meth. Program.}, volume = {84}, number = {1}, pages = {108--123}, year = {2015} } @article{BauerP13, author = {Andrej Bauer and Matija Pretnar}, title = {An Effect System for Algebraic Effects and Handlers}, journal = {Log. Methods Comput. Sci.}, volume = {10}, number = {4}, year = {2014} } @article{Pretnar13, author = {Matija Pretnar}, title = {Inferring Algebraic Effects}, journal = {Log. Methods Comput. Sci.}, volume = {10}, number = {3}, year = {2014} } # Co-handlers @inproceedings{AhmanB20, author = {Danel Ahman and Andrej Bauer}, title = {Runners in Action}, booktitle = {{ESOP}}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {12075}, pages = {29--55}, publisher = {Springer}, year = {2020} } # Idris @inproceedings{Brady13, author = {Edwin Brady}, title = {Programming and reasoning with algebraic effects and dependent types}, booktitle = {{ICFP}}, pages = {133--144}, publisher = {{ACM}}, year = {2013} } @inproceedings{Brady14, author = {Edwin Brady}, title = {Resource-Dependent Algebraic Effects}, booktitle = {Trends in Functional Programming}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {8843}, pages = {18--33}, publisher = {Springer}, year = {2014} } # Leo's HOPE talk @misc{White16, author = {Leo White}, title = {Effective programming: bringing algebraic effects and handlers to {OCaml}}, year = 2016, optmonth = sep, howpublished = {Keynote at {HOPE}, Nara, Japan} } # Implementation of effect handlers in Links @inproceedings{HillerstromL16, author = {Daniel Hillerstr{\"{o}}m and Sam Lindley}, title = {Liberating effects with rows and handlers}, booktitle = {TyDe@ICFP}, pages = {15--27}, publisher = {{ACM}}, year = {2016} } # Frank @inproceedings{LindleyMM17, author = {Sam Lindley and Conor McBride and Craig McLaughlin}, title = {Do be do be do}, booktitle = {{POPL}}, pages = {500--514}, publisher = {{ACM}}, year = {2017} } @MastersThesis{Convent17, author = {Lukas Convent}, title = {Enhancing a Modular Effectful Programming Language}, school = {School of Informatics, The University of Edinburgh}, address = {Scotland, {UK}}, year = 2017, } # Shonky @misc{McBride16, title={Shonky}, author={Conor McBride}, year=2016, note={\url{https://github.com/pigworker/shonky}} } # Koka @inproceedings{Leijen14, author = {Daan Leijen}, title = {{Koka}: Programming with Row Polymorphic Effect Types}, booktitle = {{MSFP}}, series = {{EPTCS}}, volume = {153}, pages = {100--126}, year = {2014} } @inproceedings{Leijen17, author = {Daan Leijen}, title = {Type directed compilation of row-typed algebraic effects}, booktitle = {{POPL}}, pages = {486--499}, publisher = {{ACM}}, year = {2017} } # Haskell implementations @inproceedings{KiselyovSS13, author = {Oleg Kiselyov and Amr Sabry and Cameron Swords}, title = {Extensible effects: an alternative to monad transformers}, booktitle = {Haskell}, pages = {59--70}, publisher = {{ACM}}, year = {2013} } @inproceedings{KiselyovI15, author = {Oleg Kiselyov and Hiromi Ishii}, title = {Freer monads, more extensible effects}, booktitle = {Haskell}, pages = {94--105}, publisher = {{ACM}}, year = {2015} } @inproceedings{KammarLO13, author = {Ohad Kammar and Sam Lindley and Nicolas Oury}, title = {Handlers in action}, booktitle = {{ICFP}}, pages = {145--158}, publisher = {{ACM}}, year = {2013} } @inproceedings{WuSH14, author = {Nicolas Wu and Tom Schrijvers and Ralf Hinze}, editor = {Wouter Swierstra}, title = {Effect handlers in scope}, booktitle = {Proceedings of the 2014 {ACM} {SIGPLAN} symposium on Haskell, Gothenburg, Sweden, September 4-5, 2014}, pages = {1--12}, publisher = {{ACM}}, year = {2014}, url = {http://doi.acm.org/10.1145/2633357.2633358}, doi = {10.1145/2633357.2633358}, timestamp = {Mon, 08 Sep 2014 16:12:17 +0200}, biburl = {http://dblp.uni-trier.de/rec/bib/conf/haskell/WuSH14}, bibsource = {dblp computer science bibliography, http://dblp.org} } @inproceedings{WuS15, author = {Nicolas Wu and Tom Schrijvers}, title = {Fusion for Free - Efficient Algebraic Effect Handlers}, booktitle = {{MPC}}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {9129}, pages = {302--322}, publisher = {Springer}, year = {2015} } # Prolog @article{SchrijversDDW13, author = {Tom Schrijvers and Bart Demoen and Benoit Desouter and Jan Wielemaker}, title = {Delimited continuations for {Prolog}}, journal = {{TPLP}}, volume = {13}, number = {4-5}, pages = {533--546}, year = {2013} } @article{SalehS16, author = {Amr Hany Saleh and Tom Schrijvers}, title = {Efficient Algebraic Effect Handlers for {Prolog}}, journal = {{TPLP}}, year = {2016}, note = {Proceedings of {ICLP}} } # References on Links @inproceedings{CooperLWY06, author = {Ezra Cooper and Sam Lindley and Philip Wadler and Jeremy Yallop}, title = {Links: Web Programming Without Tiers}, booktitle = {{FMCO}}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {4709}, pages = {266--296}, publisher = {Springer}, year = {2006} } @inproceedings{LindleyC12, author = {Sam Lindley and James Cheney}, title = {Row-based effect types for database integration}, booktitle = {{TLDI}}, pages = {91--102}, publisher = {{ACM}}, year = {2012} } # Monads @article{Atkey09, author = {Robert Atkey}, title = {Parameterised notions of computation}, journal = {Journal of Functional Programming}, volume = {19}, number = {3-4}, pages = {335--376}, year = {2009} } @inproceedings{Moggi89, author = {Eugenio Moggi}, title = {Computational Lambda-Calculus and Monads}, booktitle = {{LICS}}, pages = {14--23}, publisher = {{IEEE} Computer Society}, year = {1989} } @article{Moggi91, author = {Eugenio Moggi}, title = {Notions of Computation and Monads}, journal = {Inf. Comput.}, volume = {93}, number = {1}, pages = {55--92}, year = {1991} } @inproceedings{Wadler92, author = {Philip Wadler}, title = {The Essence of Functional Programming}, booktitle = {{POPL}}, pages = {1--14}, publisher = {{ACM}}, year = {1992} } @inproceedings{Wadler95, author = {Philip Wadler}, title = {Monads for Functional Programming}, booktitle = {Advanced Functional Programming}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {925}, pages = {24--52}, publisher = {Springer}, year = {1995} } @article{Swierstra08, author = {Wouter Swierstra}, title = {Data types {\`{a}} la carte}, journal = {Journal of Functional Programming}, volume = {18}, number = {4}, pages = {423--436}, year = {2008} } @inproceedings{PauwelsSM19, author = {Koen Pauwels and Tom Schrijvers and Shin{-}Cheng Mu}, title = {Handling Local State with Global State}, booktitle = {{MPC}}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {11825}, pages = {18--44}, publisher = {Springer}, year = {2019} } # Hop.js @inproceedings{SerranoP16, author = {Manuel Serrano and Vincent Prunet}, title = {A glimpse of Hopjs}, booktitle = {{ICFP}}, pages = {180--192}, publisher = {{ACM}}, year = {2016} } # A-normal form @inproceedings{FlanaganSDF93, author = {Cormac Flanagan and Amr Sabry and Bruce F. Duba and Matthias Felleisen}, title = {The Essence of Compiling with Continuations}, booktitle = {{PLDI}}, pages = {237--247}, publisher = {{ACM}}, year = {1993} } @inproceedings{SabryW96, author = {Amr Sabry and Philip Wadler}, editor = {Robert Harper and Richard L. Wexelblat}, title = {A Reflection on Call-by-Value}, booktitle = {Proceedings of the 1996 {ACM} {SIGPLAN} International Conference on Functional Programming {(ICFP} '96), Philadelphia, Pennsylvania, May 24-26, 1996.}, pages = {13--24}, publisher = {{ACM}}, year = {1996}, OPTurl = {http://doi.acm.org/10.1145/232627.232631}, OPTdoi = {10.1145/232627.232631}, timestamp = {Tue, 11 Jun 2013 13:54:16 +0200}, biburl = {http://dblp.uni-trier.de/rec/bib/conf/icfp/SabryW96}, bibsource = {dblp computer science bibliography, http://dblp.org} } # fine-grained call-by-value @article{LevyPT03, author = {Paul Blain Levy and John Power and Hayo Thielecke}, title = {Modelling environments in call-by-value programming languages}, journal = {Inf. Comput.}, volume = {185}, number = {2}, pages = {182--210}, year = {2003} } # CPS @article{Plotkin75, author = {Gordon D. Plotkin}, title = {Call-by-Name, Call-by-Value and the lambda-Calculus}, journal = {Theor. Comput. Sci.}, volume = {1}, number = {2}, pages = {125--159}, year = {1975} } @techreport{Steele78, title = {{RABBIT}: A Compiler for {SCHEME} (A Study in Compiler Optimization)}, author = {Guy L. Steele}, institution = {{MIT}}, number = {TR-474}, year = {1978}, month = may, address = {Cambridge, Massachusetts, USA} } @inproceedings{DanvyF90, author = {Olivier Danvy and Andrzej Filinski}, title = {Abstracting Control}, booktitle = {{LISP} and Functional Programming}, pages = {151--160}, year = {1990} } @article{DanvyF92, author = {Olivier Danvy and Andrzej Filinski}, title = {Representing Control: {A} Study of the {CPS} Transformation}, journal = {Mathematical Structures in Computer Science}, volume = {2}, number = {4}, pages = {361--391}, year = {1992} } @phdthesis{Danvy06, author = {Olivier Danvy}, school = {Aarhus University}, title = {An Analytical Approach to Programs as Data Objects}, type = {{DSc} thesis}, year = 2006, address = {Aarhus, Denmark} } @book{Appel92, author = {Andrew W. Appel}, title = {Compiling with Continuations}, publisher = {Cambridge University Press}, year = {1992} } @article{DanvyN03, author = {Olivier Danvy and Lasse R. Nielsen}, title = {A first-order one-pass {CPS} transformation}, journal = {Theor. Comput. Sci.}, volume = {308}, number = {1-3}, pages = {239--257}, year = {2003} } @inproceedings{Kennedy07, author = {Andrew Kennedy}, title = {Compiling with continuations, continued}, booktitle = {{ICFP}}, pages = {177--190}, publisher = {{ACM}}, year = {2007} } @inproceedings{MaterzokB11, author = {Marek Materzok and Dariusz Biernacki}, title = {Subtyping delimited continuations}, booktitle = {{ICFP}}, pages = {81--93}, publisher = {{ACM}}, year = {2011} } @inproceedings{MaterzokB12, author = {Marek Materzok and Dariusz Biernacki}, title = {A Dynamic Interpretation of the {CPS} Hierarchy}, booktitle = {{APLAS}}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {7705}, pages = {296--311}, publisher = {Springer}, year = {2012} } @Misc{KiselyovS16, author = {Oleg Kiselyov and {KC} Sivaramakrishnan}, title = {Eff directly in {OCaml}}, year = {2016}, optmonth = sep, howpublished = {{ML Workshop}} } # Dynamic binding @inproceedings{KiselyovSS06, author = {Oleg Kiselyov and Chung{-}chieh Shan and Amr Sabry}, title = {Delimited dynamic binding}, booktitle = {{ICFP}}, pages = {26--37}, publisher = {{ACM}}, year = {2006} } # fancy row typing systems that support shapes @inproceedings{BerthomieuS95, author = {Bernard Berthomieu and Camille le Moniès de Sagazan}, title = {A Calculus of Tagged Types, with applications to process languages}, booktitle = {Workshop on Types for Program Analysis}, year = 1995, } @techreport{Remy93, title = {{Syntactic theories and the algebra of record terms}}, author = {Didier Remy}, number = {RR-1869}, institution = {{INRIA}}, year = {1993}, } # Zipper data structure. @article{Huet97, author = {G{\'{e}}rard P. Huet}, title = {The Zipper}, journal = {J. Funct. Program.}, volume = {7}, number = {5}, pages = {549--554}, year = {1997}, OPTurl = {http://journals.cambridge.org/action/displayAbstract?aid=44121}, timestamp = {Fri, 10 Jun 2011 14:42:10 +0200}, biburl = {http://dblp.uni-trier.de/rec/bib/journals/jfp/Huet97}, bibsource = {dblp computer science bibliography, http://dblp.org} } @article{Hughes00, author = {John Hughes}, title = {Generalising monads to arrows}, journal = {Sci. Comput. Program.}, volume = {37}, number = {1-3}, pages = {67--111}, year = {2000} } # CPS for effect handlers @inproceedings{HillerstromLAS17, author = {Daniel Hillerstr{\"{o}}m and Sam Lindley and Robert Atkey and {KC} Sivaramakrishnan}, title = {Continuation Passing Style for Effect Handlers}, booktitle = {{FSCD}}, series = {LIPIcs}, volume = {84}, pages = {18:1--18:19}, OPTpublisher = {Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik}, year = {2017} } @inproceedings{HillerstromL18, author = {Daniel Hillerstr{\"{o}}m and Sam Lindley}, title = {Shallow Effect Handlers}, booktitle = {{APLAS}}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {11275}, pages = {415--435}, publisher = {Springer}, year = {2018} } @article{HillerstromLA20, author = {Daniel Hillerstr{\"{o}}m and Sam Lindley and Robert Atkey}, title = {Effect handlers via generalised continuations}, journal = {J. Funct. Program.}, volume = {30}, pages = {e5}, year = {2020} } # CEK @InProceedings{FelleisenF86, title={Control Operators, the {SECD}-machine, and the $\lambda$-Calculus}, author={Felleisen, Matthias and Friedman, Daniel P.}, year=1987, booktitle = {Formal Description of Programming Concepts III}, OPTbooktitle = {The Proceedings of the Conference on Formal Description of Programming Concepts III, Ebberup, Denmark}, pages = {193--217}, OPTpublisher={North Holland} } @article{BiernackiPPS18, author = {Dariusz Biernacki and Maciej Pir{\'{o}}g and Piotr Polesiuk and Filip Sieczkowski}, title = {Handle with care: relational interpretation of algebraic effects and handlers}, journal = {{PACMPL}}, volume = {2}, number = {{POPL}}, pages = {8:1--8:30}, year = {2018} } # explicit effect subtyping @inproceedings{SalehKPS18, author = {Amr Hany Saleh and Georgios Karachalias and Matija Pretnar and Tom Schrijvers}, title = {Explicit Effect Subtyping}, booktitle = {{ESOP}}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {10801}, pages = {327--354}, publisher = {Springer}, year = {2018} } @article{KarachaliasPSVS20, author = {Georgios Karachalias and Matija Pretnar and Amr Hany Saleh and Stien Vanderhallen and Tom Schrijvers}, title = {Explicit effect subtyping}, journal = {J. Funct. Program.}, volume = {30}, pages = {e15}, year = {2020} } # Pyro @Misc{Goodman17, author = {Noah Goodman}, title = {Uber {AI} {Labs} Open Sources {Pyro}, a Deep Probabilistic Programming Language}, month = nov, year = 2017, url = {https://eng.uber.com/pyro/} } # Meta programming @article{Yallop17, author = {Jeremy Yallop}, title = {Staged generic programming}, journal = {{PACMPL}}, volume = {1}, number = {{ICFP}}, pages = {29:1--29:29}, year = {2017} } # SML @book{MilnerTHM97, author = {Robin Milner and Mads Tofte and Robert Harper and David Macqueen}, title = {The Definition of {Standard} {ML}}, year = {1997}, isbn = {0262631814}, publisher = {MIT Press}, address = {Cambridge, MA, USA}, } # OCaml @book{LeroyDFGRV20, author = {Xavier Leroy and Damien Doligez and Alain Frisch and Jacques Garrigue and Didier Rémy and Jérôme Vouillon}, title = {The {OCaml} System Release 4.11: Documentation and user's manual}, year = 2020, month = aug, OPTpublisher = {Institut National de Recherche en Informatique et en Automatique}, publisher = {INRIA} } # Lisp @article{McCarthy60, author = {John McCarthy}, title = {Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part {I}}, journal = {Commun. {ACM}}, volume = {3}, number = {4}, pages = {184--195}, year = {1960} } # Elisp @book{LewisLSG20, author = {Bil Lewis and Dan {LaLiberte} and Richard Stallman and {the GNU Manual Group} and {et al.}}, title = {{GNU} {Emacs} {Lisp} Reference Manual}, year = 2020, note = {For {Emacs} version 27.1}, publisher = {Free Software Foundation}, address = {Boston, MA, USA}, isbn = {1882114744} } # Scheme @techreport{SussmanS75, author = {Gerald J. Sussman and Guy L. Steele}, institution = {{MIT}}, month = {December}, number = {AI Memo No. 349}, title = {Scheme: An Interpreter for Extended Lambda Calculus}, OPTuri = {ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-349.pdf}, year = 1975 } @book{SperberDFSFM10, author = {Michael Sperber and R. Kent Dybvig and Matthew Flatt and Anton van Straaten and Robert Bruce Findler and Jacob Matthews}, title = {Revised6 Report on the Algorithmic Language Scheme}, publisher = {Cambridge University Press}, year = {2010} } # Haskell @misc{JonesABBBFHHHHJJLMPRRW99, author = {Simon Peyton Jones and Lennart Augustsson and Dave Barton and Brian Boutel and Warren Burton and Joseph Fasel and Kevin Hammond and Ralf Hinze and Paul Hudak and John Hughes and Thomas Johnsson and Mark Jones and John Launchbury and Erik Meijer and John Peterson and Alastair Reid and Colin Runciman and Philip Wadler}, title = {Haskell 98: A non-strict, purely functional language}, OPTurl = {https://www.haskell.org/definition/}, year = {1999} } @book{Haskell98, editor = {Jones, Simon Peyton}, month = sep, pages = 277, publisher = {http://haskell.org/}, title = {{Haskell} 98 Language and Libraries: The Revised Report}, type = {Language Definition}, OPTurl = {http://haskell.org/definition/haskell98-report.pdf}, year = 2002 } @book{Haskell10, editor = {Simon Marlow}, title = {Haskell 2010 Language Report}, year = 2010 } # Structural Operational Semantics @article{Plotkin04a, author = {Gordon D. Plotkin}, title = {A structural approach to operational semantics}, journal = {J. Log. Algebr. Program.}, volume = {60-61}, pages = {17--139}, year = {2004}, timestamp = {Mon, 21 Feb 2005 12:50:35 +0100}, biburl = {https://dblp.org/rec/bib/journals/jlp/Plotkin04a}, bibsource = {dblp computer science bibliography, https://dblp.org} } # Regular expressions @incollection{Kleene56, author = {Stephen Cole Kleene}, title = {Representation of events in nerve nets and finite automata}, booktitle = {Automata Studies}, editor = {Shannon, Claude and McCarthy, John}, pages = {3--41}, year = 1956, publisher = {Princeton University Press}, address = {Princeton, NJ, USA} } # Felleisen's PhD thesis (evaluation contexts) @phdthesis{Felleisen87, author = {Matthias Felleisen}, title = {The Calculi of Lambda-nu-cs Conversion: A Syntactic Theory of Control and State in Imperative Higher-order Programming Languages}, year = {1987}, note = {AAI8727494}, publisher = {Indiana University}, address = {Indianapolis, IN, USA}, } # The original lambda calculus reference @InProceedings{Church32, author = {Alonzo Church}, title = {A Set of Postulates for the Foundation of Logic}, year = {1932}, booktitle = {Annals of Mathematics}, pages = {346--366}, volume = {33} } # Termination analysis. @article{Walther94, author = {Christoph Walther}, title = {On Proving the Termination of Algorithms by Machine}, journal = {Artif. Intell.}, volume = {71}, number = {1}, pages = {101--157}, year = {1994} } # Simulation of delimited control using undelimited control @inproceedings{Filinski94, author = {Andrzej Filinski}, title = {Representing Monads}, booktitle = {{POPL}}, pages = {446--457}, publisher = {{ACM} Press}, year = {1994} } # Landin's J operator @article{Landin65, author = {Peter J. Landin}, title = {Correspondence between {ALGOL} 60 and {C}hurch's {L}ambda-notation: part {I}}, journal = {Commun. {ACM}}, volume = {8}, number = {2}, pages = {89--101}, year = {1965} } @article{Landin65a, author = {Peter J. Landin}, title = {A correspondence between {ALGOL} 60 and {C}hurch's {L}ambda-notations: Part {II}}, journal = {Commun. {ACM}}, volume = {8}, number = {3}, pages = {158--167}, year = {1965} } @article{Landin98, author = {Peter J. Landin}, title = {A Generalization of Jumps and Labels}, journal = {Higher-Order and Symbolic Computation}, volume = {11}, number = {2}, pages = {125--143}, year = {1998} } @article{DanvyM08, author = {Olivier Danvy and Kevin Millikin}, title = {A Rational Deconstruction of Landin's {SECD} Machine with the {J} Operator}, journal = {Log. Methods Comput. Sci.}, volume = {4}, number = {4}, year = {2008} } # Cupto @inproceedings{GunterRR95, author = {Carl A. Gunter and Didier R{\'{e}}my and Jon G. Riecke}, title = {A Generalization of Exceptions and Control in ML-like Languages}, booktitle = {{FPCA}}, pages = {12--23}, publisher = {{ACM}}, year = {1995} } # Felleisen's F @techreport{FelleisenFDM87, author = {Matthias Felleisen and Daniel P. Friedman and Bruce Duba and John Merrill}, title = {Beyond Continuations}, number = {216}, institution = {Computer Science Department, Indiana University}, address = {Bloomington, Indiana 47405, USA}, year = 1987, month = feb } @inproceedings{Felleisen88, author = {Matthias Felleisen}, title = {The Theory and Practice of First-Class Prompts}, booktitle = {{POPL}}, pages = {180--190}, publisher = {{ACM} Press}, year = {1988} } # Control and prompt @article{SitaramF90, author = {Dorai Sitaram and Matthias Felleisen}, title = {Control Delimiters and Their Hierarchies}, journal = {{LISP} Symb. Comput.}, volume = {3}, number = {1}, pages = {67--99}, year = {1990} } # Escape @article{Reynolds98a, author = {John C. Reynolds}, title = {Definitional Interpreters for Higher-Order Programming Languages}, journal = {High. Order Symb. Comput.}, volume = {11}, number = {4}, pages = {363--397}, year = {1998} } # Shift/reset @techreport{DanvyF89, author = {Olivier Danvy and Andrzej Filinski}, title = {A Functional Abstraction of Typed Contexts}, number = {89/12}, institution = {DIKU, Computer Science Department, University of Copenhagen}, address = {Copenhagen, Denmark}, year = 1989, month = jul } # Amb @incollection{McCarthy63, author = {John McCarthy}, title = {A Basis for a Mathematical Theory of Computation}, editor = {P. Braffort and D. Hirschberg}, series = {Studies in Logic and the Foundations of Mathematics}, publisher = {Elsevier}, volume = {35}, pages = {33--70}, year = {1963}, booktitle = {Computer Programming and Formal Systems}, OPTissn = "0049-237X", OPTdoi = "https://doi.org/10.1016/S0049-237X(08)72018-4" } # Simula (coroutines) @inproceedings{DahlMN68, author = {Ole-Johan Dahl and Bj\o{}rn Myhrhaug and Kristen Nygaard}, title = {Some Features of the {SIMULA} 67 Language}, year = {1968}, publisher = {Winter Simulation Conference}, booktitle = {Proceedings of the Second Conference on Applications of Simulations}, pages = {29--31}, numpages = {3}, location = {New York, New York, USA} } @book{DahlDH72, editor = {Ole-Johan Dahl and Edgar W. Dijkstra and C. A. R. Hoare}, title = {Structured Programming}, year = {1972}, isbn = {0122005503}, publisher = {Academic Press Ltd.}, address = {GBR} } # Second-hand reference for the inventor of coroutines @book{Knuth97, author = {Donald E. Knuth}, title = {The Art of Computer Programming, Volume 1 (3rd Ed.): Fundamental Algorithms}, year = {1997}, isbn = {0201896834}, publisher = {Addison Wesley Longman Publishing Co., Inc.}, address = {USA} } # Second-hand reference for call/cc @techreport{AbelsonHAKBOBPCRFRHSHW85, author = {William D. Clinger and others}, @Comment = {Hal Abelson @Comment and Chris Haynes @Comment and Norman Adams @Comment and Eugene Kohlbecker @Comment and David Bartley @Comment and Don Oxley @Comment and Gary Brooks @Comment and Kent Pitman @Comment and William Clinger @Comment and Jonathan Rees @Comment and Dan Friedman @Comment and Bill Rozas @Comment and Robert Halstead @Comment and Gerald Jey Sussman @Comment and Chris Hanson @Comment and Mitchell Wand}, title = {The Revised Revised Report on {Scheme} or An {UnCommon} {Lisp}}, year = {1985}, institution = {MIT}, number = {AIM-848}, month = aug } # Splitter @inproceedings{QueinnecS91, author = {Christian Queinnec and Bernard P. Serpette}, title = {A Dynamic Extent Control Operator for Partial Continuations}, booktitle = {{POPL}}, pages = {174--184}, publisher = {{ACM} Press}, year = {1991} } # Spawn @article{HiebDA94, author = {Robert Hieb and R. Kent Dybvig and Claude W. Anderson III}, title = {Subcontinuations}, journal = {{LISP} Symb. Comput.}, volume = {7}, number = {1}, pages = {83--110}, year = {1994} } # Comparison of (some) delimited control operators @misc{Shan04, author = {Chung{-}chieh Shan}, title = {Shift to Control}, howpublished = {{ACM SIGPLAN} Scheme Workshop}, year = {2004} } # MacLisp (catch) @misc{Moon74, author = {David A. Moon}, title = {{MACLISP} Reference Manual (Revision 0)}, year = 1974, howpublished = {Project {MAC} -- {MIT}}, month = apr } # Common Lisp (resumable exceptions) @book{Steele90, author = {Guy L. Steele}, title = {Common {LISP}: The Language (2nd Ed.)}, year = {1990}, isbn = {1555580416}, publisher = {Digital Press}, address = {USA} } # System F @phdthesis{Girard72, author = {Jean-Yves Girard}, school = {Universit{\'e} Paris 7}, title = {Interpr{\'e}tation fonctionnelle et {\'e}limination des coupures de l'arithm{\'e}tique d'ordre sup{\'e}rieur}, year = 1972, address = {France} } @inproceedings{Reynolds74, author = {John C. Reynolds}, title = {Towards a theory of type structure}, booktitle = {Symposium on Programming}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {19}, pages = {408--423}, publisher = {Springer}, year = {1974} } @inproceedings{Wadler89, author = {Philip Wadler}, title = {Theorems for Free!}, booktitle = {{FPCA}}, pages = {347--359}, publisher = {{ACM}}, year = {1989} } # Tail calls @inproceedings{Clinger98, author = {William D. Clinger}, title = {Proper Tail Recursion and Space Efficiency}, booktitle = {{PLDI}}, pages = {174--185}, publisher = {{ACM}}, year = {1998} } # Unix @article{RitchieT74, author = {Dennis Ritchie and Ken Thompson}, title = {The {UNIX} Time-Sharing System}, journal = {Commun. {ACM}}, volume = {17}, number = {7}, pages = {365--375}, year = {1974} } @book{Raymond03, author = {Eric Steven Raymond}, title = {The Art of {UNIX} Programming}, year = {2003}, isbn = {0131429019}, publisher = {Pearson Education} } # GNU coreutils @book{MacKenzieMPPBYS20, author = {David MacKenzie and others}, @Comment = {David MacKenzie @Comment and Jim Meyering @Comment and Ross Paterson @Comment and François Pinard @Comment and Karl Berry @Comment and Brian Youmans @Comment and Richard Stallman}, title = {{GNU} {Coreutils}}, note = {For version 8.32}, month = feb, year = 2020, publisher = {Free Software Foundation}, OPTaddress = {Boston, MA, USA} } # Expressiveness @inproceedings{Felleisen90, author = {Matthias Felleisen}, title = {On the Expressive Power of Programming Languages}, booktitle = {{ESOP}}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {432}, pages = {134--151}, publisher = {Springer}, year = {1990} } @article{Felleisen91, author = {Matthias Felleisen}, title = {On the Expressive Power of Programming Languages}, journal = {Sci. Comput. Program.}, volume = {17}, number = {1-3}, pages = {35--75}, year = {1991}, note = {Revised version} } @inproceedings{CartwrightF92, author = {Robert Cartwright and Matthias Felleisen}, title = {Observable Sequentiality and Full Abstraction}, booktitle = {{POPL}}, pages = {328--342}, publisher = {{ACM} Press}, year = {1992} } @book{LongleyN15, author = {John Longley and Dag Normann}, title = {Higher-Order Computability}, series = {Theory and Applications of Computability}, publisher = {Springer}, year = {2015} } @inproceedings{Longley08, author = {John Longley}, title = {Interpreting Localized Computational Effects Using Operators of Higher Type}, booktitle = {CiE}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {5028}, pages = {389--402}, publisher = {Springer}, year = {2008} } # Catchcont @inproceedings{Longley09, author = {John Longley}, title = {Some Programming Languages Suggested by Game Models (Extended Abstract)}, booktitle = {{MFPS}}, series = {Electronic Notes in Theoretical Computer Science}, volume = {249}, pages = {117--134}, publisher = {Elsevier}, year = {2009} } @misc{LongleyW08, author = {John Longley and Nicholas Wolverson}, title = {Eriskay: a programming language based on game semantics}, month = apr, year = 2008, howpublished = {Presented at {GaLoP III}} } # Value restriction @article{Wright95, author = {Andrew K. Wright}, title = {Simple Imperative Polymorphism}, journal = {{LISP} Symb. Comput.}, volume = {8}, number = {4}, pages = {343--355}, year = {1995} } # Shakespeare's Hamlet @misc{Shakespeare6416, author = {William Shakespeare}, title = {The {Tragedy} of {Hamlet}, {Prince} of {Denmark}}, year = {1564-1616} } # Introductory PL books @book{Pierce02, author = {Benjamin C. Pierce}, title = {Types and programming languages}, publisher = {{MIT} Press}, year = {2002} } @book{Harper16, author = {Robert Harper}, title = {Practical Foundations for Programming Languages (2nd. Ed.)}, publisher = {Cambridge University Press}, year = {2016} } # Andrej's tutorial @article{Bauer18, author = {Andrej Bauer}, title = {What is algebraic about algebraic effects and handlers?}, journal = {CoRR}, volume = {abs/1807.05923}, year = {2018} } # Talcott's dissertation @phdthesis{Talcott85, author = {Carolyn L. Talcott}, title = {The Essence of Rum --- A theory of the intensional and extensional aspects of Lisp-type computation}, school = {Stanford University}, year = 1985, address = {Stanford, CA 94305, USA} } # Fcontrol @inproceedings{Sitaram93, author = {Dorai Sitaram}, title = {Handling Control}, booktitle = {{PLDI}}, pages = {147--155}, publisher = {{ACM}}, year = {1993} } # Purely functional data structures @book{Okasaki99, author = {Chris Okasaki}, title = {Purely functional data structures}, publisher = {Cambridge University Press}, year = {1999} } # Interleaved computation @inproceedings{Milner75, author = {Robin Milner}, title = {Processes: A Mathematical Model of Computing Agents}, booktitle = {Studies in Logic and the Foundations of Mathematics}, publisher = {Elsevier}, pages = {157--173}, year = {1975} } @article{Plotkin76, author = {Gordon D. Plotkin}, title = {A Powerdomain Construction}, journal = {{SIAM} J. Comput.}, volume = {5}, number = {3}, pages = {452--487}, year = {1976} } @inproceedings{Wand80, author = {Mitchell Wand}, title = {Continuation-Based Multiprocessing}, booktitle = {{LISP} Conference}, pages = {19--28}, publisher = {{ACM}}, year = {1980} } @inproceedings{HaynesF84, author = {Christopher T. Haynes and Daniel P. Friedman}, title = {Engines Build Process Abstractions}, booktitle = {{LISP} and Functional Programming}, pages = {18--24}, publisher = {{ACM}}, year = {1984} } @article{HaynesFW86, author = {Christopher T. Haynes and Daniel P. Friedman and Mitchell Wand}, title = {Obtaining Coroutines with Continuations}, journal = {Comput. Lang.}, volume = {11}, number = {3/4}, pages = {143--153}, year = {1986} } @techreport{Moggi90, title = {An Abstract View of Programming Languages}, author = {Eugenio Moggi}, institution = {{LFCS}, The University of Edinburgh}, number = {ECS-LFCS-90-113}, year = {1990}, address = {Scotland, {UK}} } @inproceedings{HiebD90, author = {Robert Hieb and R. Kent Dybvig}, title = {Continuations and Concurrency}, booktitle = {{PPOPP}}, pages = {128--136}, publisher = {{ACM}}, year = {1990} } @inproceedings{GanzFW99, author = {Steven E. Ganz and Daniel P. Friedman and Mitchell Wand}, title = {Trampolined Style}, booktitle = {{ICFP}}, pages = {18--27}, publisher = {{ACM}}, year = {1999} } @inproceedings{Papaspyrou01, author = {Nikolaos S. Papspyrou}, title = {A resumption monad transformer and its applications in the semantics of concurrency}, booktitle = {Proceedings of the 3rd Panhellenic Logic Symposium}, address = {Anogia, Greece} } @inproceedings{Harrison06, author = {William L. Harrison}, title = {The Essence of Multitasking}, booktitle = {{AMAST}}, OPTseries = {Lecture Notes in Computer Science}, series = {LNCS}, volume = {4019}, pages = {158--172}, publisher = {Springer}, year = {2006} } @article{AtkeyJ15, author = {Robert Atkey and Patricia Johann}, title = {Interleaving data and effects}, journal = {J. Funct. Program.}, volume = {25}, year = {2015} } # History of continuations @article{Reynolds93, author = {John C. Reynolds}, title = {The Discoveries of Continuations}, journal = {{LISP} Symb. Comput.}, volume = {6}, number = {3-4}, pages = {233--248}, year = {1993} } # Terminology: 'partial' and 'full' continuations @inproceedings{JohnsonD88, author = {Gregory F. Johnson and Dominic Duggan}, title = {Stores and Partial Continuations as First-Class Objects in a Language and its Environment}, booktitle = {{POPL}}, pages = {158--168}, publisher = {{ACM} Press}, year = {1988} } # Racket @misc{Flatt20, author = {Matthew Flatt and {PLT}}, title = {The {R}acket Reference (version 7.9)}, month = nov, year = 2020 }