Newsletter
Issue 431 2024-08-01
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
-
Adding Operational Transformation To Butler by Tristan de Cacqueray
Butler is a web-based multiplayer virtual operating system that features collaborative applications. This post shows how I integrated Operational Transformation (OT) to enable users to simultaneously edit a text document in Butler.
-
Where does the name “algebraic data type” come from? by Lysxia
“Algebraic data types” is a beloved feature of programming languages with such a mysterious name. Where does this name come from?
-
Analyzing Haskell stability by Jappie Klooster
Recently, we’ve been curious about what Haskell ecosystem and GHC changes cause the most breakage. A suggestion was made to do a quantitative analysis of “head.hackage”. “head.hackage” is a repository of patches for Hackage. GHC engineers use these to test out new GHC builds on a wide range of Hackage packages without having to upstream a patch, which can take time.
-
Announcing autodocodec-nix and Nix integration for opt-env-conf by Tom Sydney Kerckhove
This post announces
autodocodec-nix
, a new companion library forautodocodec
that lets you generate a NixOS module options from anyCodec
. -
Data.Maybe, and thoughts on library design by Srijan Paul
Earlier today, I was reading a paper about monoids that briefly highlighted an interesting flaw in older versions of Haskell’s standard library. The problem—although fixed later—still serves as an interesting case study for library design. So I took a break from the study session to log my thoughts here before I forget.
-
Functional programming languages should be so much better at mutation than they are by Prophet
Functional languages need to allow mutation in some way if they don’t want nearly every program to suffer from completely unnecessary overhead in terms of both time and implementation complexity. Existing languages have a few options here but I don’t think any of these are good enough.
-
Haskell Nuggets: k-means by Justin Le
AI is hot, so let’s talk about some “classical machine learning” in Haskell with k-means clustering! Let’s throw in some dependent types too.
-
The Haskell Unfolder Episode 30: runST by Andres Löh, Edsko de Vries
In Haskell, the
ST
type offers a restricted subset of theIO
functionality: it provides mutable variables, but nothing else. The advantage is that we can use mutable storage locally, because unlikeIO
,ST
allows us to escape from its realm via the functionrunST
. However,runST
has a so-called rank-2 type. In this episode, we will discuss why this seemingly complicated type is necessary to preserve the safety of the operation.
Jobs
- Seeking Senior Engineer to work with DevOps, Cloud, and Haskell! (ad)
We are seeking an experienced and talented Senior Engineer in the Platform Team to help the transition from traditional ops to a platformcentric model. Play a key role in an impact driven culture and apply your expertise and creativity to make our team and company better.
Trying to hire a Haskell developer? You should advertise with us!
In brief
-
emoji-board: Blazing fast emoji picker for linux / wayland written in Haskell by Luca Leon Happel
-
htmx-0.0.0.1 a library for using HTMX in haskell by Jonathan Lorimer
-
Stack 3.1.1 by Mike Pilgrem
-
streamly-0.10 with fast binary serialization by Harendra Kumar
Show & tell
- Typed-fsm examples: ATM and todoList by Miao Yang