Reference. On the expressive power of user-defined effects: Effect handlers, monadic reflection, delimited control
Cite
Cited by (5)
Gradual Typing for Effect Handlers new_giovannini_licata_2023
We present a gradually typed language, GrEff, with effects and handlers that supports migration from unchecked to checked effect typing. This serves as a simple model of the integration of an effect typing discipline with an existing effectful typed language that does not track fine-grained effect information. Our language supports a simple module system to model the programming model of gradual migration from unchecked to checked effect typing in the style of Typed Racket.
The surface language GrEff is given semantics by elaboration to a core language Core GrEff. We equip Core GrEff with an inequational theory for reasoning about the semantic error ordering and desired program equivalences for programming with effects and handlers. We derive an operational semantics for the language from the equations provable in the theory. We then show that the theory is sound by constructing an operational logical relations model to prove the graduality theorem. This extends prior work on embedding-projection pair models of gradual typing to handle effect typing and subtyping.
An Algebraic Theory for Shared-State Concurrency dvir-2022-an
Structured Handling of Scoped Effects yang-2022-structured
Doo bee doo bee doo convent-2020-doo
Effect handlers via generalised continuations hillerstrom-2020-effect
Cites 78 works (6 here)
With notes (6)
Do be do be do lindley-2017-do
Continuation Passing Style for Effect Handlers hillerstrom-2017-continuation
We present Continuation Passing Style (CPS) translations for Plotkin and Pretnar’s effect handlers with Hillerström and Lindley’s row-typed fine-grain call-by-value calculus of effect handlers as the source language. CPS translations of handlers are interesting theoretically, to explain the semantics of handlers, and also offer a practical implementation technique that does not require special support in the target language’s runtime.
We begin with a first-order CPS translation into untyped lambda calculus which manages a stack of continuations and handlers as a curried sequence of arguments. We then refine the initial CPS translation first by uncurrying it to yield a properly tail-recursive translation and second by making it higher-order in order to contract administrative redexes at translation time. We prove that the higher-order CPS translation simulates effect handler reduction. We have implemented the higher-order CPS translation as a JavaScript backend for the Links programming language.
Handlers in action kammar-2013-handlers
Algebraic foundations for effect-dependent optimisations kammar-2012-algebraic
Parameterised notions of computation atkey-2009-parameterised
Call-By-Push-Value: A Functional/Imperative Synthesis levy-2003-callbypushvalue
External (72)
- Programming with Implicit Values, Functions, and Control (or, Implicit Functions: Dynamic Binding with Lexical Scoping) (2019)
- Call-by-push-value in Coq: operational, equational, and denotational theory (2019)
- Typed equivalence of effect handlers and delimited control (2019)
- Monad transformers and modular algebraic effects: what binds them together (2019)
- Abstraction-safe effect handlers via tunneling (2019)
- Factorisation systems for logical relations and monadic lifting in type-and-effect system semantics (2018)
- Explicit Effect Subtyping (2018)
- Versatile event correlation with algebraic effects (2018)
- JEff: objects for effect (2018)
- Eff directly in OCaml (2018)
- No value restriction is needed for algebraic effects and handlers (2017)
- Combining control effects and their models: Game semantics for a hierarchy of static, dynamic and delimited control effects (2017)
- On the expressive power of user-defined effects: effect handlers, monadic reflection, delimited control (2017)
- Type directed compilation of row-typed algebraic effects (2017)
- On the Expressive Power of Effect Handlers and Monadic Reflection (2016)
- Liberating effects with rows and handlers (2016)
- Parameterized extensible effects and session types (extended abstract) (2016)
- Answer-type modification without tears: prompt-passing style translation for typed delimited-control operators (2016)
- An Introduction to Algebraic Effects and Handlers. Invited tutorial paper (2015)
- Mtac: A monad for typed tactic programming in Coq (2015)
- Programming with algebraic effects and handlers (2014)
- An Effect System for Algebraic Effects and Handlers (2014)
- An Algebraic Theory of Type-and-Effect Systems (2014)
- Inferring Algebraic Effects (2014)
- Abella: a system for reasoning about relational specifications (2014)
- Parametric effect monads and semantics of effect systems (2014)
- Implementing monads for C++ template metaprograms (2013)
- Programming and reasoning with algebraic effects and dependent types (2013)
- Extensible effects: an alternative to monad transformers (2013)
- Combining and relating control effects and their semantics (2013)
- Search combinators (2012)
- A Dynamic Interpretation of the CPS Hierarchy (2012)
- Monads in action (2010)
- Monads as extension systems - no iteration is necessary (2010)
- Handlers of Algebraic Effects (2009)
- On typing delimited continuations: three new solutions to the printf problem (2009)
- A Framework for Specifying, Prototyping, and Reasoning about Computational Systems (2009)
- Formalizing a strong normalization proof for Moggi's computational metalanguage: a case study in Isabelle/HOL-nominal (2009)
- The Abella Interactive Theorem Prover (System Description) (2008)
- Imperative Functional Programming with Isabelle/HOL (2008)
- Data types à la carte (2008)
- A logic for algebraic effects (2008)
- A static simulation of dynamic delimited control (2007)
- Polymorphic Delimited Continuations (2007)
- A Substructural Type System for Delimited Continuations (2007)
- Strong Normalization of CBPV (2007)
- An Analytical Approach to Programs as Data Objects (2006)
- Delimited dynamic binding (2006)
- Reducibility and ⊤ ⊤-Lifting for Computation Types (2005)
- How to Remove a Dynamic Prompt: Static and Dynamic Delimited Continuation Operators are Equally Expressible (2005)
- Algebraic Operations and Generic Effects (2003)
- Notions of Computation Determine Monads (2002)
- Exceptions, continuations and macro-expressiveness (2002)
- Representing layered monads (1999)
- Theories of Programming Languages (1998)
- Monadic parsing in Haskell (1998)
- A Syntactic Approach to Type Soundness (1994)
- Monads and composable continuations (1994)
- Representing monads (1994)
- Fibrations, Logical Predicates and Related Topics (1993)
- On the expressive power of programming languages (1991)
- A functional theory of exceptions (1990)
- Abstracting control (1990)
- Comprehending monads (1990)
- A Functional Abstraction of Typed Contexts (1989)
- Computational lambda-calculus and monads (1989)
- Abstract continuations: a mathematical semantics for handling full jumps (1988)
- Polymorphic effect systems (1988)
- A reduction semantics for imperative higher-order languages (1987)
- Toposes, Triples, and Theories (1985)
- Colimits in Topoi (1974)
- Intensional interpretations of functionals of finite type I (1967)