Analysis updated 2026-07-10 · repo last pushed 2016-12-02
Experiment with algebraic effects and custom handlers in a working language.
Prototype non-deterministic algorithms or backtracking using first-class handlers.
Learn how effect systems work by modifying and extending example code.
Test functional programming ideas with OCaml syntax and type inference.
| bracevac/eff | astrada/google-drive-ocamlfuse | facebook/pyre-check | |
|---|---|---|---|
| Stars | — | 5,923 | 7,156 |
| Language | OCaml | OCaml | OCaml |
| Last pushed | 2016-12-02 | — | — |
| Maintenance | Dormant | — | — |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 4/5 | 3/5 | 3/5 |
| Audience | researcher | ops devops | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires OPAM and an OCaml toolchain installed on a Unix-like system.
Eff is a programming language designed around a concept called "algebraic effects," which offers a cleaner way to handle side effects, things like reading input, updating state, or throwing exceptions, in functional programming. The core benefit is that it lets developers mix and combine different kinds of operations seamlessly, without wrestling with the layered complexity that typically arises in other functional languages. In most languages, side effects are built into the system in rigid ways. Here, they are treated as operations triggered by "handlers." Think of an exception handler that catches errors, now imagine that same idea expanded to handle state changes, backtracking, or transactions. A handler defines what happens when an operation fires, so programmers can define new effects, combine existing ones, and control how they behave, all from within the language itself. This would appeal to language designers, researchers, and functional programming enthusiasts who want to experiment with effect systems without fighting the language. A developer exploring non-deterministic algorithms or custom backtracking could use it as a testing ground, since those patterns are treated as first-class handlers rather than library add-ons. It reads like OCaml, same syntax, same static typing and type inference, so anyone familiar with the ML family of languages would feel at home quickly. One notable tradeoff: its type system deliberately ignores effect information, meaning types don't track which effects a function uses. That keeps things simpler and OCaml-like, but it means you won't get compile-time warnings about mismatched effects the way some other effect systems attempt. The project runs on Unix-like systems and installs through OPAM, OCaml's package manager, with example code in the repository to help newcomers get started.
Eff is a programming language built on algebraic effects, letting you handle side effects like state, exceptions, and backtracking through flexible, user-defined handlers. It uses OCaml syntax and runs on Unix-like systems.
Mainly OCaml. The stack also includes OCaml, OPAM.
Dormant — no commits in 2+ years (last push 2016-12-02).
No license information is mentioned in the explanation.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly researcher.
This repo across BitVibe Labs
Verify against the repo before relying on details.