Haskell Weekly

Newsletter

Issue 505 2026-01-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

  • Exploring GHC profiling data in Jupyter by DataHaskell

    Exploratory data analysis (EDA) isn’t just for data scientists. Anyone that uses a system that emits data can benefit from the tools of EDA. And since charity begins at home, what better way to motivate this than a short post using DataHaskell tools to analyse GHC profiling logs. By treating performance analysis as a data exploration problem, we may unlock insights that might be difficult to see in a static report.

  • GHC 9.12.3 is now available by Zubin

    The GHC developers are very pleased to announce the release of GHC 9.12.3.

  • Having fun with libcurl and hs-bindgen by Chin Jen Sem

    I recently discovered a fantastic tool by the wonderful people at Well-Typed, hs-bindgen. In a previous life, I worked on downloading utilities in Haskell on top of something akin to the existing curl library on Hackage. I was never super happy with either that interface, nor how I used it. With hs-bindgen, I have the wonderful opportunity to scratch that itch, and re-explore this space a bit.

  • Lost in the Folds: Haskell MOOC Set 5b by Tea Leaves

    Problem Set 5b of the Haskell MOOC seemed a little light, so we took on an optional side quest and wrote a foldr instance for it, getting lost along the way.

  • runST does not prevent resources from escaping by welltypedwitch

    A common pattern one might see in Haskell-adjacent programming languages is the use of higher-rank types as a mechanism for delimiting the scope in which certain values can be accessed, similar to lifetimes or regions in other languages. This is sometimes called “the runST trick”, after its namesake. runST enables Haskell to use local mutation without leaking any of the side effects to the outside. The higher-rank function parameter ensures that this is safe, and references cannot be accessed outside the call to runST.

  • Writing an NES emulator in Haskell by Arthur Jamet

    In this blog article, I’ll report my experience with this little adventure. First, I’ll quickly introduce the console’s architecture, then present (at a very high level) how I designed and put each component together. I’ll also explain how I managed to optimise the performance of the emulator.

In brief

Show & tell

  • Parsing with an MCAP Index by Monday Morning Haskell

    Welcome to the sixth and final part of our series on MCAP parsing. In the first four parts, we did all the work to parse certain topic messages from a bag file, going through the file sequentially. In the fifth part, we set up a lot of infrastructure to allow ourselves to instead parse the file using indexing so we can get our messages faster. In this part, we’ll finish the process and see how much faster our code is!

Call for participation