Newsletter
Issue 521 2026-04-23
Subscribe now! We'll never send you spam. You can also follow our feed. Read more issues in the archives.
Welcome to another issue of Haskell Weekly! Haskell is a safe, purely functional programming language with a fast, concurrent runtime. This is a weekly summary of what’s going on in its community.
Featured
-
Not quite monads (Haskell Unfolder #54) by Edsko de Vries, Andres Löh
Monads are a very powerful abstraction: sometimes too powerful. We discuss why we might not always want the full generality of monads, and what we can use instead. Applicative functors are the most common alternative, but are sometimes too restrictive; we highlight the fundamental difference between applicative functors and monads, and finally introduce selective functors, which sit somewhere in between monads and applicative functors.
-
Optimizing xreferee with elemIndex by Brandon Chinn
xreferee is a linter that checks that every
@(ref:foo)reference in a git repository corresponds to a#(ref:foo)anchor somewhere in the repository. It delegates most of the search togit grep, but there’s some parsing logic to parsegit grep’s output. In a recent PR, I was able to get a 5x speedup with two changes. -
Pandas feels clunky coming from R. What about Haskell? by Michael Chavinda
Some years ago I came across an issue in the Frames repo that mentioned a blog post titled “Why pandas feels clunky when coming from R.” The article showed a side-by-side of simple data exploration in R and compared the code to Pandas. At the time, the author concluded that Pandas was “clunkier” than R. The author operationalises the definition of clunkiness but I think it’s really more of a you-know-it-when-you-see-it thing. You can feel if an API is making you drift further away from your task and making you think more about the tool and its idiosyncracies. So let’s give the example a spin and see if Haskell feels clunky compared to R.
-
Writing a Turn Based Game Websocket Server in Haskell by Gordon Martin
I’d like to share a wee pattern I’ve found useful for writing simple WebSocket apps in Haskell - specifically for my side project wordify - an open source ~ multiplayer crossword board game ~ .
In brief
-
Ghcitty by Matthieu Court
A fast, friendly GHCi … Syntax highlighting, tab+ghost completions, easy multiline, Vi-mode, Hoogle integration, etc (Looking for feedback!)
-
Haskell-flake 1.0.0 — flakes optional by Sridhar Ratnakumar
haskell-flake 1.0.0 is out. It’s no longer coupled to
flake-parts— you can now use it in standalone flakes or in legacy Nix (without flakes). -
stm-ringbuffer by gregbm
This is an implementation of a fixed-size ring buffer in STM. As a bounded queue, it outperforms Control.Concurrent.STM.TBQueue in benchmarks. However, it offers a more general interface (you can write / read / flush from both ends).
Show & tell
-
Lawvere theories by olf
Expanding on my reply to @apothecalabs, here is how Lawvere theories could be encoded in Haskell.
-
Terminal-top — a Brick TUI where every panel is a .nix file by Hunor Geréd
Sharing a project I’ve been working on: a Haskell/Brick terminal dashboard where a “domain” (a set of live data sources plus a panel layout) is defined in a single
.nixfile, not in Haskell code. The platform is generic; the meaning — which URLs, which JSON paths to navigate, which sections to render, what thresholds to colour at — lives in the nix files.
Call for participation
-
2026 Haskell Ecosystem and Implementor’s Workshops by José Manuel Calderón Trilla
In case you missed it in the other thread, the Eventbrite page is ready for you to purchase your tickets for these events colocated with ZuriHac.