Skip to content
0:00 / 0:00

#effectsystems#bluefin#monads

A History of Effect Systems – Tom Ellis (Groq, Bluefin)

OST – Ostschweizer Fachhochschule

3.4K subscribers • 11 videos on Hallway

YouTube
  • Recommended by 2 people: 2 in engineering communities.
  • Presented by Tom Ellis, creator of Bluefin

Intermediate. Assumes working knowledge.

2.3K views1 year ago2 recommendations

Programming languagesHistory and cultureHaskellFunctional programmingHistory of computing

Tom Ellis traces the evolution of side effects in Haskell from monads and transformers to modern effect systems like Bluefin.

How Haskell's approach to side effects evolved – from Monads to Bluefin In this keynote, Tom Ellis traces the evolution of how Haskell handles side effects. Starting from the original challenges posed by referential transparency, he explains the historical development of monads, monad transformers, the MTL library, and more modern approaches such as ST, IORef, and effect systems like Bluefin. Along the way, he discusses trade-offs in ergonomics, performance, composability, and readability. The talk is both accessible and comprehensive—essential viewing for anyone interested in how Haskell's purity coexists with real-world programming. About Tom Ellis Tom Ellis is a Haskell developer and systems architect working at Groq, a company building high-speed chips for AI. He is known in the Haskell community for his contributions to effect systems, including the development of Bluefin, and for earlier work on Opaleye, a type-safe DSL for SQL in Haskell. He is also a member of the Haskell Foundation and active in ongoing efforts to evolve the language and its ecosystem. Hosted at the OST This talk was recorded at the OST – Eastern Switzerland University of Applied Sciences in Rapperswil, the official host of ZuriHac, the world's largest Haskell community event. The OST is proud to support the global exchange between research, community, and industry. Introduction & framing the topic What are effects – and why do they matter in Haskell? Monads as the original answer Monad Transformers & stacking complexity MTL: the Haskell98 approach Alternatives: ST, IORef, ContT and effects by convention Non-determinism, lists & combinator effects The legacy of MTL and what came next Extensible effects & splitting concerns Streaming systems and functional structure Polysemy and closed-world reasoning Bluefin: a new approach to effects Bluefin’s goals and design trade-offs Fine-grained error handling in Bluefin Community questions & Q&A Concluding thoughts, advice & future work #Haskell    #EffectSystems    #ZuriHac

Why it's here

2 people recommend this

What people say. Highly recommended by Haskell developers for understanding the history, trade-offs, and design of different effect systems.

Moments people linked to

u/hsyl20in r/haskell • Recommends

On “How others manage effects ?”

\> And what about the Algebraic Effects? What exactly is this ? A replacement of Monad ? Or Monad Transformers? I have heard of the langauge Koka, Eff [video

u/Ok_Signature1010in r/haskell • Recommends

On “How to use Monad transformers ergonomically?”

I found [video to be very helpful to understand the different effect systems that exist in Haskell, where they came from and how they compare.
1View on Reddit

u/tomejaguarin r/haskell • Mentions

On “How to handle "Early returns" or conditions in Haskell.”

Thanks! We can look at the issue of the API and the performance independently. The transformers/MTL world (or indeed any effect system) can provide an "early return" effect in terms of the exception/error effect that it already has. For example type EarlyReturn b m r = ExceptT b m r -- or newtype EarlyReturn b m r = MkEarlyRetutrn (ExceptT b m r) deriving (Functor, Applicative, Monad) -- Wrap runExceptT runEarlyReturn :: EarlyReturn r m r -> m r -- Wrap throwE returnEarly :: r -> EarlyReturn r m a I think all except systems should provide this. It's useful and comes up frequently. I wonder if one reason it's not seen often (in fact, Bluefin is th…