Programming with Algebraic Effects and Handlers
arXiv:1203.1539 · doi:10.1016/j.jlamp.2014.02.001
Abstract
Eff is a programming language based on the algebraic approach to computational effects, in which effects are viewed as algebraic operations and effect handlers as homomorphisms from free algebras. Eff supports first-class effects and handlers through which we may easily define new computational effects, seamlessly combine existing ones, and handle them in novel ways. We give a denotational semantics of eff and discuss a prototype implementation based on it. Through examples we demonstrate how the standard effects are treated in eff, and how eff supports programming techniques that use various forms of delimited continuations, such as backtracking, breadth-first search, selection functionals, cooperative multi-threading, and others.
Cited by in corpus (11)
- Interaction Trees: Representing Recursive and Impure Programs in Coq
- Retrofitting Effect Handlers onto OCaml
- Eff Directly in OCaml
- Runners in action
- Handling polymorphic algebraic effects
- Local Algebraic Effect Theories
- Securing Verified IO Programs Against Unverified Code in F*
- Effect Handlers for Programmable Inference
- When Programs Have to Watch Paint Dry
- Giving Semantics to Program-Counter Labels via Secure Effects
- Two-sorted algebraic decompositions of Brookes's shared-state denotational semantics