Issue 150

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.


  • How we made Haskell search strings as fast as Rust by Ruud van Asseldonk

    In this post, we will describe our quest to create Alfred-Margaret, the fastest Haskell implementation of the Aho-Corasick string searching algorithm, which powers string search in Channable.

  • An example of state-based testing in Haskell by Mark Seemann

    This article is an instalment in an article series about how to move from interaction-based testing to state-based testing.

  • Bank kata in Haskell - using and testing date by Liam Griffin-Jowett

    Our final task to complete the kata is to add a date to the transactions. We will implement this in small logical steps, using the compiler and the tests to drive our design.

  • Ceci n’est pas un default by Guillaume Allais

    Being the default value is not the same as being actively set to a value which happens to match the default. Maybe as a type constructor enriching an existing type with a default value is not satisfactory: what this default value means is not documented in the type.

  • Code smell: Boolean blindness by Thomas Tuegel

    The popular term “boolean blindness” refers to the information lost by functions that operate on Bool when richer structures are available. Erasing such structure can give code a bad smell.

  • Deriving not-so-complex types by Arvind Devarajan

    Often times, I get to read Haskell code with these patterns: (fmap . fmap), fmap (<*>), etc. I’ve just taken three of these types, and break these into their intuitions here in the hopes that somebody out there can understand when to use these.

  • Enhancing File Durability in Your Programs by Roman Gonzalez

    An unexpected shutdown (like a kernel panic, or unplugging the power cord) in a machine should not affect the durability of confirmed writes in programs we develop.

  • Freer, yet Too Costly Higher-order Effects by Sandy Maguire

    As of today I have free, higher-order effects working. Unfortunately, they are not fast. I don’t think this is a fundamental limitation, merely that whatever code I’ve written isn’t amenable to GHC’s optimization process.

  • Modifying a Library! by Monday Morning Haskell

    We can see how to incorporate the change without stressing about its complexity. Even if you’re only a beginner, this is a good skill to learn now!

  • Types versus Tests: two approaches for writing correct software by Javier Casas

    We try our best to have software without bugs. It’s just a hard problem, and no silver bullet to slay this beast. All we have are several approaches at trying to kick the bugs out of the software.


In brief

Package of the week

This week’s package of the week is SBV (SMT Based Verification), a library that allows you to express properties about Haskell programs and automatically prove them using SMT (Satisfiability Modulo Theories) solvers.

Call for participation


North America