Skip to content
Tech News
← Back to articles

Algebraic Effects for the Rest of Us

read original get Algebraic Effects Programming Book → more articles
Why This Matters

Algebraic effects are an emerging programming language feature that offers a new way to handle side effects and control flow, similar to how async/await revolutionized asynchronous programming. While not yet widely adopted in production, understanding this concept can provide valuable insights into future language developments and advanced programming techniques. For tech enthusiasts and developers, early familiarity with algebraic effects can offer a competitive edge as the technology matures.

Key Takeaways

Have you heard about algebraic effects?

My first attempts to figure out what they are or why I should care about them were unsuccessful. I found a few pdfs but they only confused me more. (There’s something about academic pdfs that makes me sleepy.)

But my colleague Sebastian kept referring to them as a mental model for some things we do inside of React. (Sebastian works on the React team and came up with quite a few ideas, including Hooks and Suspense.) At some point, it became a running joke on the React team, with many of our conversations ending with:

It turned out that algebraic effects are a cool concept and not as scary as I thought from those pdfs. If you’re just using React, you don’t need to know anything about them — but if you’re feeling curious, like I was, read on.

(Disclaimer: I’m not a programming language researcher, and might have messed something up in my explanation. I am not an authority on this topic so let me know!)

Algebraic Effects are a research programming language feature. This means that unlike if , functions, or even async / await , you probably can’t really use them in production yet. They are only supported by a few languages that were created specifically to explore that idea. There is progress on productionizing them in OCaml which is… still ongoing. In other words, Can’t Touch This.

Edit: a few people mentioned that LISP languages do offer something similar, so you can use it in production if you write LISP.

Imagine that you’re writing code with goto , and somebody shows you if and for statements. Or maybe you’re deep in the callback hell, and somebody shows you async / await . Pretty cool, huh?

If you’re the kind of person who likes to learn about programming ideas several years before they hit the mainstream, it might be a good time to get curious about algebraic effects. Don’t feel like you have to though. It is a bit like thinking about async / await in 1999.

The name might be a bit intimidating but the idea is simple. If you’re familiar with try / catch blocks, you’ll figure out algebraic effects very fast.

... continue reading