Issue 123

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.


  • Compositional zooming for StateT and ReaderT using lens

    Suppose we want to write an update that changes one of the fields in a particular address. If the address cannot be found, we want a precise error message that distinguishes between the address itself not being found, or one of its parents (the account, or the wallet) not being found.

  • Declarative GTK+ programming with Haskell

    This post introduces a declarative GTK+ architecture for Haskell which I’ve been working on during the journey with FastCut, a video editor specialized for my own screencast editing workflow. It outlines the motivation, introduces the packages and their uses, and highlights parts of the implementation.

  • Dependent types in Haskell: Binomial heaps 101

    Who put binary numbers in my type system? This post makes a bit of a departure from the “practical Haskell” I usually try to write about, although — believe it or not — this blogpost actually originated from a very practical origin.

  • GSoC results for 2018

    Google Summer of Code 2018 is officially over. The organisation had a very productive year with 17 accepted projects out of which 15 were successful. We would like to thank the students and mentors for the great summer, and, of course, Google for its generous support towards the open source community.

  • How can you work with a JSON value if you know nothing about it?

    The question is rhetorical. Of course you can’t do anything if you know nothing about it. But we do know a ton! We just can’t (or it’s very difficult to) encode what we know as a type.

  • Introduction to SIMD with line count

    In a previous post I talked about using broadword techniques to create a rank-select bit-string from text. This post will explore using Single Instruction, Multiple Data (SIMD) instructions to achieve the same thing.

  • Robust notes with embedded code

    Emacs’s org-mode has great facilities for working with source code, often referred to by the name Org Babel. A simple use is having source code from various languages embedded in a single text file that is otherwise occupied with talking about that code.

  • Stackpak: Flatpak a Haskell Stack app into Flathub

    After reading David Lettier’s great post on how to Flatpak a Haskell app into Flathub, I thought about generalizing his approach for Haskell Stack projects and have written Stackpak.

  • The unreasonable effectiveness of metaphor

    I often find myself very frustrated by the way programmers talk about metaphor, so I chose a topic that would let me give an entirely different view of metaphors — metaphors the way linguists and cognitive scientists talk about them, metaphors as the crucial backbone of everyday thought and abstractions in mathematics and elsewhere.

  • The various forms of Text and ByteString

    This topic isn’t a tremendously complicated, but it can be difficult because it is rather tedious. I remember it as a source of endless frustration when I was first learning Haskell: Why so many strings?


  • Senior Haskell developer at Mpowered

    Join a small team of specialists working on refactoring an enterprise application from its Ruby on Rails origins to a future of type safety and extensibility built on Haskell.

In brief

Package of the week

This week’s package of the week is Megaparsec, an industrial-strength monadic parser combinator library. It is feature-rich and strikes a nice balance between speed, flexibility, and quality of parse errors.

Call for participation