Eff is a functional programming language based on algebraic effects and their handlers. Algebraic effects are a way of adding computational effects to a pure functional setting. In a technical sense they are subsumed by the monadic approach to computational effects, but they offer new ways of programming that are not easily achieved with monads. In particular, algebraic effects are combined seamlessly, whereas monad transformers are needed in the monadic style. The main idea of eff is that computational effects are accessed through a set of operations, for example lookup and update for state, read and write for I/O, raise for exceptions, etc. The behavior of operations is determined by handlers. Just like an exception handler determines what happens when an exception is raised, a general handler describes the actions taken when an operation is triggered. Examples of handlers include state, transactions, non-determinism, stream redirection, backtracking, delimited continuations, and many others. Because eff supports first-class effects and handlers, programmers may define new computational effects, combine existing ones, and handle effects in novel ways. For instance, ML-style references are a defined concept in eff. Eff code looks and feels like that of Ocaml because eff uses Ocaml syntax extended with constructs for effects and handlers. Furthermore, eff is a statically typed language with parametric polymorphism and type inference. The types are similar to those of OCaml and other variants of ML in the sense that they do not express any information about computational effects.

References in zbMATH (referenced in 19 articles , 2 standard articles )

Showing results 1 to 19 of 19.
Sorted by year (citations)

  1. Letan, Thomas; Régis-Gianas, Yann; Chifflier, Pierre; Hiet, Guillaume: Modular verification of programs with effects and effects handlers (2021)
  2. Brachthäuser, Jonathan Immanuel; Schuster, Philipp; Ostermann, Klaus: Effekt: capability-passing style for type- and effect-safe, extensible effect handlers in Scala (2020)
  3. Convent, Lukas; Lindley, Sam; McBride, Conor; McLaughlin, Craig: Doo bee doo bee doo (2020)
  4. Ekici, Burak; Kaliszyk, Cezary: Mac Lane’s comparison theorem for the Kleisli construction formalized in Coq (2020)
  5. Hillerström, Daniel; Lindley, Sam; Atkey, Robert: Effect handlers via generalised continuations (2020)
  6. Karachalias, Georgios; Pretnar, Matija; Saleh, Amr Hany; Vanderhallen, Stien; Schrijvers, Tom: Explicit effect subtyping (2020)
  7. Lukšič, Žiga; Pretnar, Matija: Local algebraic effect theories (2020)
  8. Rahli, Vincent; Bickford, Mark: Validating Brouwer’s continuity principle for numbers using named exceptions (2018)
  9. Abel, Andreas; Adelsberger, Stephan; Setzer, Anton: Interactive programming in Agda -- objects and graphical user interfaces (2017)
  10. Hillerström, Daniel; Lindley, Sam; Atkey, Robert; Sivaramakrishnan, K. C.: Continuation passing style for effect handlers (2017)
  11. Kammar, Ohad; Pretnar, Matija: No value restriction is needed for algebraic effects and handlers (2017)
  12. Maršík, Jirka; Amblard, Maxime: Introducing a calculus of effects and handlers for natural language semantics (2016)
  13. Saleh, Amr Hany; Schrijvers, Tom: Efficient algebraic effect handlers for Prolog (2016)
  14. Bauer, Andrej; Pretnar, Matija: Programming with algebraic effects and handlers (2015)
  15. Pretnar, Matija: An introduction to algebraic effects and handlers (invited tutorial paper) (2015)
  16. Bauer, Andrej; Pretnar, Matija: An effect system for algebraic effects and handlers (2014)
  17. Pretnar, Matija: Inferring algebraic effects (2014)
  18. Bauer, Andrej; Pretnar, Matija: An effect system for algebraic effects and handlers (2013)
  19. Escardó, Martín: Continuity of Gödel’s system T definable functionals via effectful forcing (2013)