# 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 @article{SivaramakrishnanDWKJM21, author = {{KC} Sivaramakrishnan and Stephen Dolan and Leo White and Tom Kelly and Sadiq Jaffer and Anil Madhavapeddy}, title = {Retrofitting Effect Handlers onto {OCaml}}, journal = {CoRR}, volume = {abs/2104.00250}, year = {2021} } @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} } # Delimited control in OCaml @article{Kiselyov12, author = {Oleg Kiselyov}, title = {Delimited control in {OCaml}, abstractly and concretely}, journal = {Theor. Comput. Sci.}, volume = {435}, pages = {56--76}, year = {2012} } # Segmented stacks @inproceedings{HiebDB90, author = {Robert Hieb and R. Kent Dybvig and Carl Bruggeman}, title = {Representing Control in the Presence of First-Class Continuations}, booktitle = {{PLDI}}, pages = {66--77}, publisher = {{ACM}}, year = {1990} } @inproceedings{BruggemanWD96, author = {Carl Bruggeman and Oscar Waddell and R. Kent Dybvig}, title = {Representing Control in the Presence of One-Shot Continuations}, booktitle = {{PLDI}}, pages = {99--107}, publisher = {{ACM}}, year = {1996} } @article{KumarBD98, author = {Sanjeev Kumar and Carl Bruggeman and R. Kent Dybvig}, title = {Threads Yield Continuations}, journal = {{LISP} Symb. Comput.}, volume = {10}, number = {3}, pages = {223--236}, year = {1998} } # 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} } @inproceedings{PlotkinP02, author = {Gordon D. Plotkin and John Power}, title = {Notions of Computation Determine Monads}, booktitle = {FoSSaCS}, series = {Lecture Notes in Computer Science}, volume = {2303}, pages = {342--356}, publisher = {Springer}, year = {2002} } # Other algebraic effects and handlers @inproceedings{Lindley14, author = {Sam Lindley}, title = {Algebraic effects and effect handlers for idioms and arrows}, booktitle = {WGP@ICFP}, pages = {47--58}, publisher = {{ACM}}, year = {2014} } @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} } @article{FowlerLMD19, author = {Simon Fowler and Sam Lindley and J. Garrett Morris and S{\'{a}}ra Decova}, title = {Exceptional asynchronous session types: session types without tiers}, journal = {Proc. {ACM} Program. Lang.}, volume = {3}, number = {{POPL}}, pages = {28:1--28:29}, 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 = {{\v{Z}}iga Luk{\v{s}}i{\v{c}} and Matija Pretnar}, title = {Local algebraic effect theories}, journal = {J. Funct. Program.}, volume = {30}, pages = {e13}, 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} } @inproceedings{XieL20, author = {Ningning Xie and Daan Leijen}, title = {Effect handlers in {Haskell}, evidently}, booktitle = {Haskell@ICFP}, pages = {95--108}, publisher = {{ACM}}, year = {2020} } @phdthesis{Geron19, author = {Bram Geron}, title = {Defined Algebraic Operations}, school = {University of Birmingham, England, {UK}}, year = 2019 } @phdthesis{Saleh19, author = {Amr Hany Saleh}, title = {Efficient Algebraic Effect Handlers}, school = {KU Leuven, Belgium}, year = 2019 } # Asynchronous effects @article{AhmanP21, author = {Danel Ahman and Matija Pretnar}, title = {Asynchronous effects}, journal = {Proc. {ACM} Program. Lang.}, volume = {5}, number = {{POPL}}, pages = {1--28}, year = {2021} } @MastersThesis{Poulson20, author = {Leo Poulson}, title = {Asynchronous Effect Handling}, school = {School of Informatics, The University of Edinburgh}, address = {Scotland, {UK}}, year = 2020, } # Effekt @article{BrachthauserSO20, author = {Jonathan Immanuel Brachth{\"{a}}user and Philipp Schuster and Klaus Ostermann}, title = {Effekt: Capability-passing style for type- and effect-safe, extensible effect handlers in Scala}, journal = {J. Funct. Program.}, volume = {30}, pages = {e8}, year = {2020} } @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} } # 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} } @article{ConventLMM20, author = {Lukas Convent and Sam Lindley and Conor McBride and Craig McLaughlin}, title = {Doo bee doo bee doo}, journal = {J. Funct. Program.}, volume = {30}, pages = {e9}, year = {2020} } @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} } @inproceedings{Leijen05, author = {Daan Leijen}, title = {Extensible records with scoped labels}, booktitle = {Trends in Functional Programming}, series = {Trends in Functional Programming}, volume = {6}, pages = {179--194}, publisher = {Intellect}, year = {2005} } # Helium @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 = {Proc. {ACM} Program. Lang.}, volume = {2}, number = {{POPL}}, pages = {8:1--8:30}, year = {2018} } @article{BiernackiPPS19, author = {Dariusz Biernacki and Maciej Pir{\'{o}}g and Piotr Polesiuk and Filip Sieczkowski}, title = {Abstracting algebraic effects}, journal = {Proc. {ACM} Program. Lang.}, volume = {3}, number = {{POPL}}, pages = {6:1--6:28}, year = {2019} } @article{BiernackiPPS20, author = {Dariusz Biernacki and Maciej Pir{\'{o}}g and Piotr Polesiuk and Filip Sieczkowski}, title = {Binders by day, labels by night: effect instances via lexically scoped handlers}, journal = {Proc. {ACM} Program. Lang.}, volume = {4}, number = {{POPL}}, pages = {48:1--48:29}, year = {2020} } # 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}, title = {Effect handlers in scope}, booktitle = {Haskell}, pages = {1--12}, publisher = {{ACM}}, year = {2014} } @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} } # Applicative idioms @article{McBrideP08, author = {Conor McBride and Ross Paterson}, title = {Applicative programming with effects}, journal = {J. Funct. Program.}, volume = {18}, number = {1}, pages = {1--13}, year = {2008} } # 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} } @article{Wadler92b, author = {Philip Wadler}, title = {Comprehending Monads}, journal = {Math. Struct. Comput. Sci.}, volume = {2}, number = {4}, pages = {461--493}, year = {1992} } @inproceedings{KingW92, author = {David J. King and Philip Wadler}, title = {Combining Monads}, booktitle = {Functional Programming}, series = {Workshops in Computing}, pages = {134--143}, publisher = {Springer}, year = {1992} } @inproceedings{JonesW93, author = {Simon L. Peyton Jones and Philip Wadler}, title = {Imperative Functional Programming}, booktitle = {{POPL}}, pages = {71--84}, publisher = {{ACM} Press}, year = {1993} } @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{Gibbons12, author = {Jeremy Gibbons}, title = {Unifying Theories of Programming with Monads}, booktitle = {{UTP}}, OPTseries = {Lecture Notes in Computer Science}, series = {{LNCS}}, volume = {7681}, pages = {23--67}, publisher = {Springer}, year = {2012} } @inproceedings{VazouL16, author = {Niki Vazou and Daan Leijen}, title = {From Monads to Effects and Back}, booktitle = {{PADL}}, series = {{LNCS}}, volume = {9585}, pages = {169--186}, publisher = {Springer}, year = {2016} } @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} } @inproceedings{GibbonsH11, author = {Jeremy Gibbons and Ralf Hinze}, title = {Just do it: simple monadic equational reasoning}, booktitle = {{ICFP}}, pages = {2--14}, publisher = {{ACM}}, year = {2011} } @book{Borceux94, author = {Francis Borceux}, title = {Handbook of Categorical Algebra}, series = {Encyclopedia of Mathematics and its Applications}, volume = {1}, collection= {Encyclopedia of Mathematics and its Applications}, OPTdoi = {10.1017/CBO9780511525858}, publisher = {Cambridge University Press}, year = 1994, place = {Cambridge} } @book{MacLane71, author = {Saunders MacLane}, title = {Categories for the Working Mathematician}, series = {Graduate Texts in Mathematics, Vol. 5}, pages = {ix+262}, publisher = {Springer-Verlag}, address = {New York}, year = 1971 } # Monad transformers @phdthesis{Espinosa95, author = {David A. Espinosa}, school = {Columbia University}, title = {Semantic Lego}, year = 1995, address = {New York, USA} } # 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{MeyerW85, author = {Albert R. Meyer and Mitchell Wand}, title = {Continuation Semantics in Typed Lambda-Calculi (Summary)}, booktitle = {Logic of Programs}, series = {{LNCS}}, volume = {193}, pages = {219--224}, publisher = {Springer}, year = {1985} } @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} } @article{Fischer93, author = {Michael J. Fischer}, title = {Lambda-Calculus Schemata}, journal = {{LISP} Symb. Comput.}, volume = {6}, number = {3-4}, pages = {259--288}, year = {1993}, note = {A preliminary version of this paper appeared in the \emph{Proceedings of {ACM} Conference on Proving Assertions about Programs}, January, 1972} } @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} } @article{DanvyN05, author = {Olivier Danvy and Lasse R. Nielsen}, title = {{CPS} transformation of beta-redexes}, journal = {Inf. Process. Lett.}, volume = {94}, number = {5}, pages = {217--224}, year = {2005} } @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}} } @article{DanvyH92, author = {Olivier Danvy and John Hatcliff}, title = {CPS-Transformation After Strictness Analysis}, journal = {{LOPLAS}}, volume = {1}, number = {3}, pages = {195--212}, year = {1992} } @inproceedings{DanvyH93, author = {Olivier Danvy and John Hatcliff}, title = {On the Transformation between Direct and Continuation Semantics}, booktitle = {{MFPS}}, series = {{LNCS}}, volume = {802}, pages = {627--648}, publisher = {Springer}, year = {1993} } @article{Nielsen01, author = {Lasse R. Nielsen}, title = {A Selective CPS Transformation}, journal = {Electr. Notes Theor. Comput. Sci.}, volume = {45}, pages = {311-331}, year = {2001}, OPTnote = {MFPS 2001,Seventeenth Conference on the Mathematical Foundations of Programming Semantics}, OPTissn = {1571-0661}, OPTdoi = {https://doi.org/10.1016/S1571-0661(04)80969-1} } # 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}, OPTtimestamp = {Fri, 10 Jun 2011 14:42:10 +0200}, OPTbiburl = {http://dblp.uni-trier.de/rec/bib/journals/jfp/Huet97}, OPTbibsource = {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} } # SECD machine @article{Landin64, author = {Peter J. Landin}, title = {The Mechanical Evaluation of Expressions}, journal = {The Computer Journal}, volume = {6}, number = {4}, pages = {308-320}, year = {1964}, month = {01}, issn = {0010-4620}, OPTdoi = {10.1093/comjnl/6.4.308}, OPTurl = {https://doi.org/10.1093/comjnl/6.4.308}, OPTeprint = {https://academic.oup.com/comjnl/article-pdf/6/4/308/1067901/6-4-308.pdf}, } # CEK & C @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} } @inproceedings{FelleisenFKD86, author = {Matthias Felleisen and Daniel P. Friedman and Eugene E. Kohlbecker and Bruce F. Duba}, title = {Reasoning with Continuations}, booktitle = {{LICS}}, pages = {131--141}, publisher = {{IEEE} Computer Society}, year = {1986} } # Capability passing style @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{BrachthauserSO20a, author = {Jonathan Immanuel Brachth{\"{a}}user and Philipp Schuster and Klaus Ostermann}, title = {Effekt: Capability-passing style for type- and effect-safe, extensible effect handlers in Scala}, journal = {J. Funct. Program.}, volume = {30}, pages = {e8}, year = {2020} } @article{BrachthauserSO20b, author = {Jonathan Immanuel Brachth{\"{a}}user and Philipp Schuster and Klaus Ostermann}, title = {Effects as capabilities: effect handlers and lightweight effect polymorphism}, journal = {Proc. {ACM} Program. Lang.}, volume = {4}, number = {{OOPSLA}}, pages = {126:1--126:30}, year = {2020} } @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} } # 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} } @book{Dybvig03, author = {R. Kent Dybvig}, title = {The {Scheme} Programming Language, Third Edition}, publisher = {{MIT} Press}, year = {2003} } # 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 @techreport{Plotkin81, author = {Gordon D. Plotkin}, title = {A structural approach to operational semantics}, number = {FN-19}, school = {Department of Computer Science, Aarhus University}, address = {Aarhus, Denmark}, month = sep, year = 1981 } @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}, OPTtimestamp = {Mon, 21 Feb 2005 12:50:35 +0100}, OPTbiburl = {https://dblp.org/rec/bib/journals/jlp/Plotkin04a}, OPTbibsource = {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} } @book{Church41, author = {Alonzo Church}, title = {The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies)}, year = {1941}, publisher = {Princeton University Press}, address = {USA} } # 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 & monadic reflection @inproceedings{Filinski94, author = {Andrzej Filinski}, title = {Representing Monads}, booktitle = {{POPL}}, pages = {446--457}, publisher = {{ACM} Press}, year = {1994} } @phdthesis{Filinski96, author = {Andrzej Filinski}, title = {Controlling Effects}, school = {Carnegie Mellon University}, year = {1996} } @inproceedings{Filinski99, author = {Andrzej Filinski}, title = {Representing Layered Monads}, booktitle = {{POPL}}, pages = {175--188}, publisher = {{ACM}}, year = {1999} } @inproceedings{Filinski10, author = {Andrzej Filinski}, title = {Monads in action}, booktitle = {{POPL}}, pages = {483--494}, publisher = {{ACM}}, year = {2010} } # 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}, note = {Reprint of {UNIVAC} Systems Programming Research report (August 1965)} } @article{Felleisen87b, author = {Matthias Felleisen}, title = {Reflections on Landins's J-Operator: {A} Partly Historical Note}, journal = {Comput. Lang.}, volume = {12}, number = {3/4}, pages = {197--207}, year = {1987} } @article{Thielecke98, author = {Hayo Thielecke}, title = {An Introduction to {Landin's} ``A Generalization of Jumps and Labels''}, journal = {High. Order Symb. Comput.}, volume = {11}, number = {2}, pages = {117--123}, 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} } @inproceedings{FelleisenWFD88, author = {Matthias Felleisen and Mitchell Wand and Daniel P. Friedman and Bruce F. Duba}, title = {Abstract Continuations: {A} Mathematical Semantics for Handling Full Jumps}, booktitle = {{LISP} and Functional Programming}, pages = {52--62}, publisher = {{ACM}}, 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}, note = {This paper originally appeared in the Proceedings of the ACM National Conference, volume 2, August, 1972, pages 717–740.} } # 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 } @article{BiernackiDS05, author = {Dariusz Biernacki and Olivier Danvy and Chung{-}chieh Shan}, title = {On the dynamic extent of delimited continuations}, journal = {Inf. Process. Lett.}, volume = {96}, number = {1}, pages = {7--17}, year = {2005} } # 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} } # Coroutines @article{MouraI09, author = {Ana L{\'{u}}cia de Moura and Roberto Ierusalimschy}, title = {Revisiting coroutines}, journal = {{ACM} Trans. Program. Lang. Syst.}, volume = {31}, number = {2}, pages = {6:1--6:31}, year = {2009} } @article{AbadiP10, author = {Mart{\'{\i}}n Abadi and Gordon D. Plotkin}, title = {A Model of Cooperative Threads}, journal = {Log. Methods Comput. Sci.}, volume = {6}, number = {4}, year = {2010} } # 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 } # callcomp @inproceedings{FlattYFF07, author = {Matthew Flatt and Gang Yu and Robert Bruce Findler and Matthias Felleisen}, title = {Adding delimited and composable control to a production programming environment}, booktitle = {{ICFP}}, pages = {165--176}, publisher = {{ACM}}, year = {2007} } # Constraining call/cc @inproceedings{FriedmanH85, author = {Daniel P. Friedman and Christopher T. Haynes}, title = {Constraining Control}, booktitle = {{POPL}}, pages = {245--254}, publisher = {{ACM} Press}, year = {1985} } @article{HaynesF87, author = {Christopher T. Haynes and Daniel P. Friedman}, title = {Embedding Continuations in Procedural Objects}, journal = {{ACM} Trans. Program. Lang. Syst.}, volume = {9}, number = {4}, pages = {582--598}, year = {1987} } # 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} } @article{Shan07, author = {Chung{-}chieh Shan}, title = {A static simulation of dynamic delimited control}, journal = {High. Order Symb. Comput.}, volume = {20}, number = {4}, pages = {371--401}, year = {2007} } # 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} } @book{PizziniBMG20, author = {Ken Pizzini and Paolo Bonzini and Jim Meyering and Assaf Gordon}, @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} sed, a stream editor}, note = {For version 4.8}, month = jan, 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}}, journal = {Electr. Notes Theor. Comput. Sci.}, 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}} } @article{DybvigH89, author = {R. Kent Dybvig and Robert Hieb}, title = {Engines From Continuations}, journal = {Comput. Lang.}, volume = {14}, number = {2}, pages = {109--123}, year = {1989} } @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 } @article{FlattDDKMSTZ19, author = {Matthew Flatt and Caner Derici and R. Kent Dybvig and Andrew W. Keep and Gustavo E. Massaccesi and Sarah Spall and Sam Tobin{-}Hochstadt and Jon Zeppieri}, title = {Rebuilding racket on chez scheme (experience report)}, journal = {Proc. {ACM} Program. Lang.}, volume = {3}, number = {{ICFP}}, pages = {78:1--78:15}, year = {2019} } # Gauche @misc{Kawai20, author = {Shiro Kawai}, title = {{Gauche} Users' Reference (version 0.9.9)}, year = 2019 } # OchaCaml @inproceedings{MasukoA11, author = {Moe Masuko and Kenchi Asai}, title = {{Caml} {Light} + shift/reset = {Caml} {Shift}}, booktitle = {Theory and Practice of Delimited Continuations ({TPDC})}, year = 2011, pages = {33--46} } # Shift/reset in Scala @inproceedings{RompfMO09, author = {Tiark Rompf and Ingo Maier and Martin Odersky}, title = {Implementing first-class polymorphic delimited continuations by a type-directed selective CPS-transform}, booktitle = {{ICFP}}, pages = {317--328}, publisher = {{ACM}}, year = {2009} } # First implementation of threads using continuations @InProceedings{Burstall69, author = {Rod M. Burstall}, title = {Writing Search Algorithms in Functional Form}, booktitle = {Machine Intelligence}, pages = {373-385}, year = 1968, OPTeditor = {Donald Michie}, volume = 3, publisher = {Edinburgh University Press} } # Continuation marks @inproceedings{FlattD20, author = {Matthew Flatt and R. Kent Dybvig}, title = {Compiler and runtime support for continuation marks}, booktitle = {{PLDI}}, pages = {45--58}, publisher = {{ACM}}, year = {2020} } # SML/NJ @inproceedings{AppelM91, author = {Andrew W. Appel and David B. MacQueen}, title = {Standard {ML} of New Jersey}, booktitle = {{PLILP}}, series = {{LNCS}}, volume = {528}, pages = {1--13}, publisher = {Springer}, OPTdoi = {10.1007/3-540-54444-5\_83}, year = {1991} } @inproceedings{AppelM87, author = {Andrew W. Appel and David B. MacQueen}, title = {A Standard {ML} compiler}, booktitle = {{FPCA}}, series = {{LNCS}}, volume = {274}, pages = {301--324}, publisher = {Springer}, OPTdoi = {10.1007/3-540-18317-5\_17}, year = {1987} } # MLton @misc{Fluet20, author = {Matthew Fluet and others}, title = {{MLton} Documentation}, year = 2014, month = jan } # Comparison of control operators via double barrelled CPS @article{Thielecke02, author = {Hayo Thielecke}, title = {Comparing Control Constructs by Double-Barrelled {CPS}}, journal = {High. Order Symb. Comput.}, volume = {15}, number = {2-3}, pages = {141--160}, year = {2002} } # Comparison of effect handlers and shift/reset in a polymorphic type system @inproceedings{PirogPS19, author = {Maciej Pir{\'{o}}g and Piotr Polesiuk and Filip Sieczkowski}, title = {Typed Equivalence of Effect Handlers and Delimited Control}, booktitle = {{FSCD}}, series = {LIPIcs}, volume = {131}, pages = {30:1--30:16}, publisher = {Schloss Dagstuhl - Leibniz-Zentrum f{\"{u}}r Informatik}, year = {2019} } # Original report and paper on continuations @techreport{StracheyW74, author = {Christopher Strachey and Christopher P. Wadsworth}, title = {Continuations: {A} Mathematical Semantics for Handling Full Jumps}, institution = {Programming Research Group, University of Oxford}, number = {PRG-11}, type = {Technical Monograph}, month = jan, year = 1974 } @article{StracheyW00, author = {Christopher Strachey and Christopher P. Wadsworth}, title = {Continuations: {A} Mathematical Semantics for Handling Full Jumps}, journal = {High. Order Symb. Comput.}, volume = {13}, number = {1/2}, pages = {135--152}, year = {2000} } # CPS and abstract machine correspondences @inproceedings{DanvyN01, author = {Olivier Danvy and Lasse R. Nielsen}, title = {Defunctionalization at Work}, booktitle = {{PPDP}}, pages = {162--174}, publisher = {{ACM}}, year = {2001} } @inproceedings{AgerBDM03, author = {Mads Sig Ager and Dariusz Biernacki and Olivier Danvy and Jan Midtgaard}, title = {A functional correspondence between evaluators and abstract machines}, booktitle = {{PPDP}}, pages = {8--19}, publisher = {{ACM}}, year = {2003} } @article{AgerBDM03a, author = {Mads Sig Ager and Dariusz Biernacki and Olivier Danvy and Jan Midtgaard}, title = {From Interpreter to Compiler and Virtual Machine: A Functional Derivation}, volume = {10}, OPTurl = {https://tidsskrift.dk/brics/article/view/21784}, OPTdoi = {10.7146/brics.v10i14.21784}, number = {14}, journal = {{BRICS} Report Series}, year = {2003}, OPTmonth = {Mar.} } @inproceedings{Danvy04, author = {Olivier Danvy}, title = {A Rational Deconstruction of Landin's {SECD} Machine}, booktitle = {{IFL}}, series = {{LNCS}}, volume = {3474}, pages = {52--71}, publisher = {Springer}, year = {2004} } @article{AgerDM04, author = {Mads Sig Ager and Olivier Danvy and Jan Midtgaard}, title = {A functional correspondence between call-by-need evaluators and lazy abstract machines}, journal = {Inf. Process. Lett.}, volume = {90}, number = {5}, pages = {223--232}, year = {2004} } @inproceedings{Danvy04a, author = {Olivier Danvy}, title = {On Evaluation Contexts, Continuations, and the Rest of Computation}, year = {2004}, booktitle = {{CW}}, crossref = {cw}, } @techreport{cw, author = {Hayo Thielecke (Editor)}, title = {Proceedings of the Fourth {ACM} {SIGPLAN} Continuations Workshop {(CW'04)}}, number = {CSR-04-1}, institution = {School of Computer Science, University of Birmingham}, address = {Birmingham B15 2TT, United Kingdom}, year = 2004, } @article{AgerDM05, author = {Mads Sig Ager and Olivier Danvy and Jan Midtgaard}, title = {A functional correspondence between monadic evaluators and abstract machines for languages with computational effects}, journal = {Theor. Comput. Sci.}, volume = {342}, number = {1}, pages = {149--172}, year = {2005} } @article{DanvyM09, author = {Olivier Danvy and Kevin Millikin}, title = {Refunctionalization at work}, journal = {Sci. Comput. Program.}, volume = {74}, number = {8}, pages = {534--549}, year = {2009} } # Answer type modification @article{Danvy98, author = {Olivier Danvy}, title = {Functional Unparsing}, journal = {J. Funct. Program.}, volume = {8}, number = {6}, pages = {621--625}, year = {1998} } @inproceedings{AsaiK07, author = {Kenichi Asai and Yukiyoshi Kameyama}, title = {Polymorphic Delimited Continuations}, booktitle = {{APLAS}}, series = {{LNCS}}, volume = {4807}, pages = {239--254}, publisher = {Springer}, year = {2007} } @inproceedings{KoboriKK16, author = {Ikuo Kobori and Yukiyoshi Kameyama and Oleg Kiselyov}, title = {Answer-Type Modification without Tears: Prompt-Passing Style Translation for Typed Delimited-Control Operators}, booktitle = {WoC}, series = {{EPTCS}}, volume = {212}, pages = {36--52}, year = {2015} } # Abstract machines @article{BiernackaBD03, author = {Malgorzata Biernacka and Dariusz Biernacki and Olivier Danvy}, title = {An Operational Foundation for Delimited Continuations}, volume = {10}, OPTdoi = {10.7146/brics.v10i41.21809}, number = {41}, journal = {{BRICS} Report Series}, year = {2003}, OPTmonth = dec } @article{BiernackaBD05, author = {Malgorzata Biernacka and Dariusz Biernacki and Olivier Danvy}, title = {An Operational Foundation for Delimited Continuations in the {CPS} Hierarchy}, journal = {Log. Methods Comput. Sci.}, volume = {1}, number = {2}, year = {2005} } @techreport{Leroy90, author = {Xavier Leroy}, title = {The {ZINC} experiment: an economical implementation of the {ML} language}, institution = {INRIA}, type = {Technical report}, number = {117}, year = {1990}, OPTurllocal = {https://xavierleroy.org/publi/ZINC.pdf}, } @article{Krivine07, author = {Jean{-}Louis Krivine}, title = {A call-by-name lambda-calculus machine}, journal = {High. Order Symb. Comput.}, volume = {20}, number = {3}, pages = {199--207}, year = {2007} } @article{DouenceF07, author = {R{\'{e}}mi Douence and Pascal Fradet}, title = {The next 700 Krivine machines}, journal = {High. Order Symb. Comput.}, volume = {20}, number = {3}, pages = {237--255}, year = {2007} } # Derivation of abstract machines @inproceedings{Swierstra12, author = {Wouter Swierstra}, title = {From Mathematics to Abstract Machine: {A} formal derivation of an executable Krivine machine}, booktitle = {{MSFP}}, series = {{EPTCS}}, volume = {76}, pages = {163--177}, year = {2012} } @article{BiernackaD07, author = {Malgorzata Biernacka and Olivier Danvy}, title = {A concrete framework for environment machines}, journal = {{ACM} Trans. Comput. Log.}, volume = {9}, number = {1}, pages = {6}, year = {2007} } @inproceedings{HuttonW04, author = {Graham Hutton and Joel J. Wright}, title = {Calculating an exceptional machine}, booktitle = {Trends in Functional Programming}, series = {Trends in Functional Programming}, volume = {5}, pages = {49--64}, publisher = {Intellect}, year = {2004} } # Partial evaluation with control @inproceedings{LawallD94, author = {Julia L. Lawall and Olivier Danvy}, title = {Continuation-Based Partial Evaluation}, booktitle = {{LISP} and Functional Programming}, pages = {227--238}, publisher = {{ACM}}, year = {1994} } # Staging using control @article{KameyamaKS11, author = {Yukiyoshi Kameyama and Oleg Kiselyov and Chung{-}chieh Shan}, title = {Shifting the stage - Staging with delimited control}, journal = {J. Funct. Program.}, volume = {21}, number = {6}, pages = {617--662}, year = {2011} } @inproceedings{OishiK17, author = {Junpei Oishi and Yukiyoshi Kameyama}, title = {Staging with control: type-safe multi-stage programming with control operators}, booktitle = {{GPCE}}, pages = {29--40}, publisher = {{ACM}}, year = {2017} } @article{WeiBTR20, author = {Guannan Wei and Oliver Bracevac and Shangyin Tan and Tiark Rompf}, title = {Compiling symbolic execution with staging and algebraic effects}, journal = {Proc. {ACM} Program. Lang.}, volume = {4}, number = {{OOPSLA}}, pages = {164:1--164:33}, year = {2020} } # Coordination using control @phdthesis{Bracevec19, author = {Oliver Bracevac}, title = {Event Correlation with Algebraic Effects - Theory, Design and Implementation}, school = {Technische Universit{\"{a}}t Damstadt, Germany}, year = {2019} } @article{BracevacASEEM18, author = {Oliver Bracevac and Nada Amin and Guido Salvaneschi and Sebastian Erdweg and Patrick Eugster and Mira Mezini}, title = {Versatile event correlation with algebraic effects}, journal = {Proc. {ACM} Program. Lang.}, volume = {2}, number = {{ICFP}}, pages = {67:1--67:31}, year = {2018} } # Hindley-Milner type inference @article{Hindley69, optISSN = {00029947}, optURL = {http://www.jstor.org/stable/1995158}, author = {Roger Hindley}, journal = {Transactions of the AMS}, pages = {29--60}, publisher = {{AMS}}, title = {The Principal Type-Scheme of an Object in Combinatory Logic}, volume = {146}, year = {1969} } @article{Milner78, author = {Robin Milner}, title = {A Theory of Type Polymorphism in Programming}, journal = {J. Comput. Syst. Sci.}, volume = {17}, number = {3}, pages = {348--375}, year = {1978} } # Substructural type system for shift0/reset0 @inproceedings{KiselyovS07, author = {Oleg Kiselyov and Chung{-}chieh Shan}, title = {A Substructural Type System for Delimited Continuations}, booktitle = {{TLCA}}, series = {{LNCS}}, volume = {4583}, pages = {223--239}, publisher = {Springer}, year = {2007} } # Exception handling with success continuations @article{BentonK01, author = {Nick Benton and Andrew Kennedy}, title = {Exceptional Syntax Journal of Functional Programming}, journal = {J. Funct. Program.}, volume = {11}, number = {4}, pages = {395--410}, year = {2001} } # Typed multi prompts @article{DybvigJS07, author = {R. Kent Dybvig and Simon L. Peyton Jones and Amr Sabry}, title = {A monadic framework for delimited continuations}, journal = {J. Funct. Program.}, volume = {17}, number = {6}, pages = {687--730}, year = {2007} } # Sitaram's phd dissertation @phdthesis{Sitaram94, author = {Dorai Sitaram}, title = {Models of Control and Their Implications for Programming Language Design}, school = {Rice University, Houston, Texas, {USA}}, month = apr, year = {1994} } # Differentiable programming with delimited continuations @article{WangZDWER19, author = {Fei Wang and Daniel Zheng and James M. Decker and Xilun Wu and Gr{\'{e}}gory M. Essertel and Tiark Rompf}, title = {Demystifying differentiable programming: shift/reset the penultimate backpropagator}, journal = {Proc. {ACM} Program. Lang.}, volume = {3}, number = {{ICFP}}, pages = {96:1--96:31}, year = {2019} } # Probabilistic programming with continuations @inproceedings{KiselyovS09, author = {Oleg Kiselyov and Chung{-}chieh Shan}, title = {Embedded Probabilistic Programming}, booktitle = {{DSL}}, series = {{LNCS}}, volume = {5658}, pages = {360--384}, publisher = {Springer}, year = {2009} } @InProceedings{GorinovaMH20, title = {Automatic Reparameterisation of Probabilistic Programs}, author = {Maria I. Gorinova and Dave Moore and Matthew D. Hoffman}, booktitle = {{ICML}}, pages = {3648--3657}, year = {2020}, OPTeditor = {Hal Daumé III and Aarti Singh}, volume = {119}, OPTseries = {Proceedings of Machine Learning Research}, OPTaddress = {Virtual}, OPTmonth = {13--18 Jul}, publisher = {PMLR}, OPTpdf = {http://proceedings.mlr.press/v119/gorinova20a/gorinova20a.pdf}, OPTurl = {http://proceedings.mlr.press/v119/gorinova20a.html}, } # Continuations in operating systems @inproceedings{KiselyovS07a, author = {Oleg Kiselyov and Chung{-}chieh Shan}, title = {Delimited Continuations in Operating Systems}, booktitle = {{CONTEXT}}, series = {{LNCS}}, volume = {4635}, pages = {291--302}, publisher = {Springer}, year = {2007} } # Web programming and continuations @article{Queinnec04, author = {Christian Queinnec}, title = {Continuations and Web Servers}, journal = {High. Order Symb. Comput.}, volume = {17}, number = {4}, pages = {277--295}, year = {2004} } # Erlang @book{ArmstrongVW93, author = {Joe Armstrong and Robert Virding and Mike Williams}, title = {Concurrent programming in {ERLANG}}, publisher = {Prentice Hall}, year = {1993} } # Asynchrony with effect handlers @inproceedings{Leijen17a, author = {Daan Leijen}, title = {Structured asynchrony with algebraic effects}, booktitle = {TyDe@ICFP}, pages = {16--29}, publisher = {{ACM}}, year = {2017} } # Surveys of implementation strategies for continuations @inproceedings{ClingerHO88, author = {William D. Clinger and Anne Hartheimer and Eric Ost}, title = {Implementation Strategies for Continuations}, booktitle = {{LISP} and Functional Programming}, pages = {124--131}, publisher = {{ACM}}, year = {1988} } @inproceedings{FarvardinR20, author = {Kavon Farvardin and John H. Reppy}, title = {From folklore to fact: comparing implementations of stacks and continuations}, booktitle = {{PLDI}}, pages = {75--90}, publisher = {{ACM}}, year = {2020} } # Non-contiguous stacks @inproceedings{Danvy87, author = {Olivier Danvy}, title = {Memory allocation and higher-order functions}, booktitle = {{PLDI}}, pages = {241--252}, publisher = {{ACM}}, year = {1987} } # Stack copying technique without direct access to the stack. @inproceedings{PettyjohnCMKF05, author = {Greg Pettyjohn and John Clements and Joe Marshall and Shriram Krishnamurthi and Matthias Felleisen}, title = {Continuations from generalized stack inspection}, booktitle = {{ICFP}}, pages = {216--227}, publisher = {{ACM}}, year = {2005} } # Catamorphisms @inproceedings{MeijerFP91, author = {Erik Meijer and Maarten M. Fokkinga and Ross Paterson}, title = {Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire}, booktitle = {{FPCA}}, series = {{LNCS}}, volume = {523}, pages = {124--144}, publisher = {Springer}, year = {1991} } # Mutumorphisms @article{Fokkinga90, author = {Maarten M. Fokkinga}, title = {Tupling and mutumorphisms}, journal = {The Squiggolist}, volume = {1}, number = {4}, pages = {81--82}, year = {1990} } # Computation trees @article{Kleene59, author = {Stephen C. Kleene}, title = {Recursive Functionals and Quantifiers of Finite Types I}, journal = {Transactions of the {AMS}}, volume = {91}, pages = {1--52}, year = {1959} } @article{Kleene63, author = {Stephen C. Kleene}, title = {Recursive Functionals and Quantifiers of Finite Types II}, journal = {Transactions of the {AMS}}, volume = {108}, pages = {106--142}, year = {1963} } # Scott encoding @unpublished{Scott62, author = {Dana Scott}, title = {A system of functional abstraction}, note = {Lectures delivered at University of California, Berkeley, California, USA, 1962/63} } # Computer architecture @book{BryantO03, author = {Randal E. Bryant and David R. O'Hallaron}, title = {Computer systems - a programmers perspective}, publisher = {Pearson Education}, year = {2003}, edition = {2nd} } # Hughes lists @article{Hughes86, author = {John Hughes}, title = {A Novel Representation of Lists and its Application to the Function "reverse"}, journal = {Inf. Process. Lett.}, volume = {22}, number = {3}, pages = {141--144}, year = {1986} } # Exact real integration @inproceedings{Simpson98, author = {Alex K. Simpson}, title = {Lazy Functional Algorithms for Exact Real Functionals}, booktitle = {{MFCS}}, OPTseries = {Lecture Notes in Computer Science}, series = {{LNCS}}, volume = {1450}, pages = {456--464}, publisher = {Springer}, year = {1998} } # Robbie Daniels' MSc dissertation @MastersThesis{Daniels16, author = {Robbie Daniels}, title = {Efficient Generic Searches and Programming Language Expressivity}, school = {School of Informatics, the University of Edinburgh}, address = {Scotland}, month = aug, year = 2016, OPTurl = {http://homepages.inf.ed.ac.uk/jrl/Research/Robbie_Daniels_MSc_dissertation.pdf} } # Computability @article{Plotkin77, author = {Gordon Plotkin}, title = {{LCF} considered as a programming language}, journal = {Theor. Comput. Sci.}, volume = {5}, number = {3}, pages = {223--255}, year = {1977} } @inproceedings{Pippenger96, author = {Nicholas Pippenger}, title = {Pure versus impure Lisp}, booktitle = {{POPL}}, pages = {104--109}, publisher = {{ACM}}, year = {1996} } @inproceedings{Longley99, author = {John Longley}, title = {When is a functional program not a functional program?}, booktitle = {{ICFP}}, pages = {1--7}, publisher = {{ACM}}, year = {1999} } @article{Longley18a, author = {John Longley}, title = {The recursion hierarchy for {PCF} is strict}, journal = {Logical Methods in Comput. Sci.}, volume = {14}, number = {3:8}, pages = {1--51}, year = {2018} } @article{Longley19, author = {John Longley}, title = {Bar recursion is not computable via iteration}, journal = {Computability}, volume = {8}, number = {2}, pages = {119--153}, year = {2019} } @article{BirdJdM97, author = {Richard Bird and Geraint Jones and Oege de Moor}, title = {More haste less speed: lazy versus eager evaluation}, journal = {J. Funct. Program.}, volume = {7}, number = {5}, pages = {541--547}, year = {1997} } @article{Jones01, author = {Neil Jones}, title = {The expressive power of higher-order types, or, life without {CONS}}, journal = {J. Funct. Program.}, volume = {11}, pages = {5--94}, year = {2001} } # n-queens @article{BellS09, author = {Jordan Bell and Brett Stevens}, title = {A survey of known results and research areas for n-queens}, journal = {Discret. Math.}, volume = {309}, number = {1}, pages = {1--31}, year = {2009} } # Sudoko @article{Bird06, author = {Richard S. Bird}, title = {Functional Pearl: {A} program to solve Sudoku}, journal = {J. Funct. Program.}, volume = {16}, number = {6}, pages = {671--679}, year = {2006} } # Environment-store model @article{ScottS71, author = {Dana Scott and Christopher Strachey}, journal = {Proceedings of the Symposium on Computers and Automata}, series = {Microwave Research Institute Symposia Series}, volume = {21}, year = {1971} } # Backtracking @article{KiselyovSFA05, author = {Kiselyov, Oleg and Shan, Chung-chieh and Friedman, Daniel P. and Sabry, Amr}, title = {Backtracking, Interleaving, and Terminating Monad Transformers: (Functional Pearl)}, booktitle = {{ICFP}}, pages = {192--203}, publisher = {{ACM}}, year = {2005}, } # Ulrich Berger's PhD thesis @phdthesis{Berger90, author = {Ulrich Berger}, title = {Totale Objekte und Mengen in der Bereichstheorie}, school = {Ludwig Maximillians-Universtität}, address = {Munich}, year = {1990} } # Exhaustive search on infinite sets @inproceedings{Escardo07, author = {Mart{\'{\i}}n H{\"{o}}tzel Escard{\'{o}}}, title = {Infinite sets that admit fast exhaustive search}, booktitle = {{LICS}}, pages = {443--452}, publisher = {{IEEE} Computer Society}, year = {2007} } @misc{Bauer11, author = {Andrej Bauer}, title = {How make the "impossible" functionals run even faster}, howpublished = {{M}athematics, {A}lgorithms and {P}roofs, Leiden, the Netherlands}, year = 2011, url = {http://math.andrej.com/2011/12/06/how-to-make-the-impossible-functionals-run-even-faster/} } # MirageOS @article{MadhavapeddyS14, author = {Anil Madhavapeddy and David J. Scott}, title = {Unikernels: the rise of the virtual library operating system}, journal = {Commun. {ACM}}, volume = {57}, number = {1}, pages = {61--69}, year = {2014} } # Async/await @article{Claessen99, author = {Koen Claessen}, title = {A Poor Man's Concurrency Monad}, journal = {J. Funct. Program.}, volume = {9}, number = {3}, pages = {313--323}, year = {1999} } @inproceedings{LiZ07, author = {Peng Li and Steve Zdancewic}, title = {Combining events and threads for scalable network services implementation and evaluation of monadic, application-level concurrency primitives}, booktitle = {{PLDI}}, pages = {189--199}, publisher = {{ACM}}, year = {2007} } @inproceedings{SymePL11, author = {Don Syme and Tomas Petricek and Dmitry Lomov}, title = {The F{\#} Asynchronous Programming Model}, booktitle = {{PADL}}, OPTseries = {Lecture Notes in Computer Science}, series = {{LNCS}}, volume = {6539}, pages = {175--189}, publisher = {Springer}, year = {2011} } # Continuations via generators and iterators @inproceedings{JamesS11, title = {Yield: Mainstream delimited continuations}, author= {Roshan P James and Amr Sabry}, year = {2011}, booktitle = {{TPDC}} } # Generators / iterators @article{ShawWL77, author = {Mary Shaw and William A. Wulf and Ralph L. London}, title = {Abstraction and Verification in Alphard: Defining and Specifying Iteration and Generators}, journal = {Commun. {ACM}}, volume = {20}, number = {8}, pages = {553--564}, year = {1977} } # Fellowship of the Ring reference @book{Tolkien54, title = {The lord of the rings: Part 1: The fellowship of the ring}, author = {John Ronald Reuel Tolkien}, publisher = {Allen and Unwin}, year = 1954, language = {eng}, keywords = {Fiction}, } # Correspondence between monadic effects and effect systems @article{WadlerT03, author = {Philip Wadler and Peter Thiemann}, title = {The marriage of effects and monads}, journal = {{ACM} Trans. Comput. Log.}, volume = {4}, number = {1}, pages = {1--32}, year = {2003} } # Undelimited control is insufficient to express mutable state @techreport{FriedmanS00, author = {Daniel P. Friedman and Amr Sabry}, title = {Recursion is a Computational Effect}, institution = {Computer Science Department, Indiana University}, address = {Bloomington, Indiana 47405, USA}, type = {Technical report}, number = {546}, year = {200}, } # Fortran @inproceedings{BackusBBGHHNSSS57, author = {John W. Backus and Robert J. Beeber and Sheldon Best and Richard Goldberg and Lois M. Haibt and Harlan L. Herrick and Robert A. Nelson and David Sayre and Peter B. Sheridan and H. Stern and Irving Ziller and Robert A. Hughes and R. Nutt}, title = {The {FORTRAN} automatic coding system}, booktitle = {{IRE-AIEE-ACM} Computer Conference (Western)}, pages = {188--198}, publisher = {{ACM}}, year = {1957} } # Algol @article{BackusBGKMPRSVWWW60, author = {John W. Backus and Friedrich L. Bauer and Julien Green and C. Katz and John McCarthy and Alan J. Perlis and Heinz Rutishauser and Klaus Samelson and Bernard Vauquois and Joseph Henry Wegstein and Adriaan van Wijngaarden and Michael Woodger}, title = {Report on the algorithmic language {ALGOL} 60}, journal = {Commun. {ACM}}, volume = {3}, number = {5}, pages = {299--314}, year = {1960} } # Effect systems @inproceedings{GiffordL86, author = {David K. Gifford and John M. Lucassen}, title = {Integrating Functional and Imperative Programming}, booktitle = {{LISP} and Functional Programming}, pages = {28--38}, publisher = {{ACM}}, year = {1986} } @phdthesis{Lucassen87, author = {John M. Lucassen}, title = {Types and Effects --- Towards the Integration of Functional and Imperative Programming}, school = {{MIT}, {USA}}, year = 1987 } @inproceedings{LucassenG88, author = {John M. Lucassen and David K. Gifford}, title = {Polymorphic Effect Systems}, booktitle = {{POPL}}, pages = {47--57}, publisher = {{ACM} Press}, year = {1988} } @inproceedings{TalpinJ92, author = {Jean{-}Pierre Talpin and Pierre Jouvelot}, title = {The Type and Effect Discipline}, booktitle = {{LICS}}, pages = {162--173}, publisher = {{IEEE} Computer Society}, year = {1992} } @article{TofteT97, author = {Mads Tofte and Jean{-}Pierre Talpin}, title = {Region-based Memory Management}, journal = {Inf. Comput.}, volume = {132}, number = {2}, pages = {109--176}, year = {1997} } @inproceedings{NielsonN99, author = {Flemming Nielson and Hanne Riis Nielson}, title = {Type and Effect Systems}, booktitle = {Correct System Design}, series = {Lecture Notes in Computer Science}, volume = {1710}, pages = {114--136}, publisher = {Springer}, year = {1999} } # Intensional type theory @book{MartinLof84, author = {Per Martin{-}L{\"{o}}f}, title = {Intuitionistic type theory}, series = {Studies in proof theory}, volume = {1}, publisher = {Bibliopolis}, year = {1984} } # Unison language @misc{Chiusano20, author = {Paul Chiusano and others}, title = {{Unison} language reference}, year = 2020, note = {Revision \href{https://github.com/unisonweb/unisonweb-org/tree/cb9a1988731451311eeb372f69e9b9f576aa02d3/src/data/docs/language-reference}{cb9a198}} } # Effect handlers in C @inproceedings{Leijen17b, author = {Daan Leijen}, title = {Implementing Algebraic Effects in {C} - "Monads for Free in {C}"}, booktitle = {{APLAS}}, series = {Lecture Notes in Computer Science}, volume = {10695}, pages = {339--363}, publisher = {Springer}, year = {2017} } # Žiga Lukšič's PhD thesis on local effect theories @phdthesis{Ziga20, author = {{\v{Z}}iga Luk{\v{s}}i{\v{c}}}, title = {Applications of algebraic effect theories}, school = {University of Ljubljana, Slovenia}, year = {2020} } # Jeremy Yallop's phd thesis @phdthesis{Yallop10, author = {Jeremy Yallop}, title = {Abstraction for web programming}, school = {The University of Edinburgh, {UK}}, year = {2010} }