Haskell Weekly


Issue 80 2017-11-09

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.

Want to see something featured in Haskell Weekly? We love contributions! Tweet us at @HaskellWeekly or open a pull request.


  • Understanding HLint rules

    I’ve just released HLint 2.0.10, which includes a rule to recognize uses of foldr that should really be map. As an example: foldr (\curr acc -> (+1) curr : acc) [] Can be rewritten as: map (\curr -> (+1) curr)

  • Computing with impossible types

    Edward Kmett recently posted a puzzling gist seemingly showing that at the type level, the () kind has more than one inhabitant. The goal of this post is to explain what’s going on.

  • Authorization in Servant: Walkthrough

    This article is about servant-server 0.11’s experimental-auth which is still in experimental stage. Deployment in production is not encouraged. And yes, I know about servant-auth but I haven’t read it thoroughly, yet.

  • Eventful email signup

    We wanted to try out some of these new (to us) ideas to see how they would gel together and whether we would want to use any of them in production. What follows is my account of using David Reaver’s event-sourcing/CQRS library, Eventful, to build our email sign-up backend.

  • Organizing our effects effectively

    We’ll observe some of the weaknesses of this system, and how we can improve on them. This week will focus on an approach with type classes and monad transformers. In a couple weeks, we’ll consider free monads, and how we can use them.

  • Semantic integrity checks are the next generation of semantic versioning

    The Dhall configuration language just added support for “semantic integrity checks”. This post explains what “semantic integrity check” means, motivates the new feature, and compares to semantic versioning.

  • On types and intent: How much can we communicate using types?

    Instead of fighting, we should strive together to find a deeper understanding of the principles and trade-off that are involved when writing and evolving code. I would like to make such attempt today by opening a conversation on the communicative power of types.

  • Proofs and programs and rhetoric

    When such a person reads the statement in question, it comes across as being a self-satisfied kind of ivory-tower sentiment. Which — not at all coincidentally! — is exactly the impression that many working programmers have of functional programmers.

  • Functional programming jargon

    Functional programming provides many advantages, and its popularity has been increasing as a result. However, each programming paradigm comes with its own unique jargon and FP is no exception. By providing a glossary, we hope to make learning FP easier.

  • Sum of heights in a binary tree

    Every year when teaching data structures I always forget how to analyze the cost of building a binary heap, which amounts to summing the heights of all the nodes in a full binary tree. So I’m writing down the (lovely) proof here in the hopes that I will remember it next time.


  • Functional programmers at Myrtle Software

    Myrtle is looking for skilled developers to join our growing development team and assist with the development of our core compiler technology. Ideally candidates would have an interest in either efficient hardware design and/or machine learning models and frameworks.

In brief

Package of the week

This week’s package of the week is Smudge, a language for describing state machines as well as a compiler that interprets and validates those descriptions to generate code and documentation for them.

Call for participation