In this segment of our computer programming language guide, we'll focus on the Eff programming language.
First appearing on March 5, 2012, the functional programming language was designed by Andrej Bauer and Matija Pretnar. As of this writing (2024), the most recent stable release was on October 19, 2021. It is available under the BSD 2-clause License.
Eff is built on the foundation of algebraic effect handlers. Unlike traditional languages, Eff provides. handlers for any computational effect, including not only exceptions but output redirection, state modifications, asynchronous threads, and others.
Its syntax is similar to that of OCaml, which integrates the functions of algebraic effect handlers.
In Eff, effects are first-class citizens and can be seamlessly combined without the need for monad transformers or reshuffling the entire program. For example, exception handlers are a specific instance of effect handlers, and programmers can silence standard output, redirect it, or rearrange it, while state modifications can be prevented or grouped in transactions.
Eff allows programmers to define their own effects. They can simply declare a choice operation and start writing nondeterministic programs. Later, they can write a handler that computes a single possible result, an optimal result, or a list of all results.
Currently, Eff serves as a playground for testing new concepts in programming languages, especially those related to computational effects, but it is not recommended for production uses due to its limited library support, minimal documentation, and its evolving nature.
The major influence for Eff was OCaml, another functional programming language whose syntax is similar. However, Eff diverges significantly in its approach to effects, embracing algebraic effect handlers, while OCaml uses monads.
Eff is useful for exploring computational effects, but its practical adoption remains limited.
 
 
Recommended Resources
Designed to test new concepts in programming languages, particularly those regarding computational effects, Eff is a functional programming language based on algebraic effect handlers. Available through the BSD 2-clause license, the language may be installed on a computer or tried out in a web browser. A language profile is set forth, and a browser playground is available on the site, including an introduction to algebraic effects and handlers and brief documentation.
https://www.eff-lang.org/
Created by Matija Pretnar, this is a GitHub repository for the Eff programming language, which was co-designed by Pretnar. Eff is a functional programming language based on algebraic effect handlers. GitHub hosts software projects, allowing them to be developed and maintained by its development team, whose GitHub profiles can be viewed. Language files, documentation, examples, and licensure information are set forth, and issues and pull requests may be viewed from the site.
https://github.com/matijapretnar/eff
Mathematics and Computation: Eff
Several blog posts discussing the computer programming language known as Eff, written by Andrej Bauer and Matija Pretnar, co-designers of the functional programming language, are featured. Informational articles introduce the language and its place in the field of mathematics and computation as a language built on the foundation of algebraic effect handlers and used to test new concepts in programming languages related to computational effects, embracing algebraic effect handlers.
https://math.andrej.com/category/eff/
Matija Pretnar, a researcher at the Faculty of Mathematics and Physics at the University of Ljubljana, focuses on the formalization, implementation, and semantics of programming languages, including algebraic effects and their handlers. His site also discusses the Eff programming language, which he co-designed with Andrej Bauer, and which employs algebraic effect handlers. Additionally, Pretnar has given talks on quantum computing, and algebraic effects handlers, and other topics.
https://matija.pretnar.info/
Programming with Algebraic Effects and Handlers
Published on the Cornell University website, Andrej Bauer and Matija Pretnar introduce their programming language called Eff in an arXiv preprint. In Eff, effects are treated as algebraic operations, and effect handlers act as homomorphisms from free algebras. Through examples, the paper demonstrates how Eff handles standard effects and supports programming techniques involving delimited continuations, backtracking, breadth-first search, and selection functionals.
https://arxiv.org/abs/1203.1539