Issue 106

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.

Want to see something featured in Haskell Weekly? Open an issue or pull request on GitHub.


  • A Rosetta Stone for Haskell abstractions

    It can be difficult at various stages of learning Haskell to see how the parts come together or how to use particular abstractions. This reference aims to ease that process by providing concrete examples of Haskell abstractions in a simple context.

  • An illustrated Reader

    About a year later, you revisit the problem and remember that all functions are examples of Reader monads and things start to make sense.

  • Conversations with a six year old on functional programming

    He gasped in astonishment at the idea of putting function machines into function machines.

  • Dynamic programming in Haskell is just recursion

    Dynamic programming is no more difficult to implement in Haskell than in C. In fact, dynamic programming in Haskell seems trivially simple, because it takes the form of regular old Haskell recursion.

  • Follow the denotation

    Denotational design gives us the ability to look at designs and ask ourselves whether or not they are correct.

  • Inlined HUnit test lists

    It annoys me that I have a function with a (somewhat) descriptive name,, but then I also have to give the test a label. Not only is this duplication, but it also adds an extra maintenance overhead, because if I decide to rename the test, should I also rename the label?

  • Pinpointing deadlocks in Haskell

    There are all sorts of issues that arise in a concurrent setup, such as race conditions, starvation, deadlocks, data corruption, you name it. All of these are also applicable to Haskell, and in this post, I would like to introduce a simple yet very effective way to track down deadlocks.

  • State machine testing with Echidna

    Echidna is a library for generating random sequences of calls against a given smart contract’s ABI and making sure that their evaluation preserves some user-defined invariants.

  • The Const applicative and monoids

    The Applicative type class has a somewhat infamous reputation for having opaque laws. There are a lot of great alternative rephrasing of these laws, from many different approaches. For this post, however, I want to talk about Applicative in terms of one of my favorites: Const.

  • Type-level induction in Haskell

    One of the most basic tools for use in type-level programming is the Peano definition of the natural numbers. Using the new TypeFamilyDependencies extension, we can parameterize the notion of “size”.


  • Software engineer at ITProTV in Gainesville, Florida

    ITPro.TV is a fast-growing digital media business that focuses on continuing education in technical domains. We are currently accepting applications for full-stack software professionals to join our small but talented multidisciplinary team.

In brief

Package of the week

This week’s package of the week is Airship, a toolkit for building declarative, RESTful web apps.

Call for participation