Issue 146

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.


  • Isomorphism and Embedding by Marko Dimjašević

    To me as a programmer, to write mathematical proofs that are mechanically checked by a computer feels empowering. To have these proofs as executable programs feels even more empowering. Therefore, our proofs have a computational aspect and vice-versa: our programs have a logical aspect.

  • Bank kata in Haskell - dealing with state by Liam Griffin

    In functional programming, you cannot encapsulate state or you lose it. Anything that is not returned from a function is lost. So, how do we deal with storing them?

  • Freer Monads, More Better Programs by Sandy Maguire

    As best I can tell, the community roughly fragments itself along four lines — those who like mtl, those who say “just do everything in Reader IO”, those who like the three layer cake, and those who think free(r) monads are worth their weight in gold.

  • Haskell command-line utility using GHC generics by Gabriel Gonzalez

    My aim is to convince you that this Haskell feature improves code clarity without increasing the difficulty. If anything, I consider this version less difficult both to read and write.

  • Haskell Data Types Review! by Monday Morning Haskell

    This week we’re taking a quick break from new content. We’ve added our new series on Haskell’s data system to our permanent collection.

  • Masking async tasks in the wild

    A new task gets spawned synchronously from a C code and immediately returns a handle: an object of type Async () wrapped inside a StablePtr. The spawned thread is not waited from anywhere, thus being run in the wild.

  • Randomization Testing for an SQL Translator by Alexey Kuleshevich

    Not all SQLs are created equal. I’ll say even more, none of the SQL dialects are even close to being equal. In particular, when talking about Microsoft SQL Server and PostgreSQL, their syntax might look similar. However, in their semantics, they are mountains apart.

  • Refactoring Haskell: A Case Study by Vaibhav Sagar

    Many people claim that refactoring Haskell is a joy. I’ve certainly found this to be the case, but what does that mean in practice? I thought it might be useful to demonstrate by refactoring some of my own code.

  • The ReaderT design pattern or tagless final? by Magnus Therning

    The other week I read V. Kevroletin’s Introduction to Tagless Final and realised that a couple of my projects, both at work and at home, would benefit from a refactoring to that approach.

  • The types got you by Mark Karpov

    As the GHC compiler evolves and grows its feature set, one couldn’t help but wonder about the connection between power provided by a programming language and the process of making design decisions when developing software.


In brief

Package of the week

This week’s package of the week is Hadolint, a smarter Dockerfile linter that helps you build best practice Docker images.

Call for participation


North America




  • 2019-02-18 in Perth, Australia by Perth Functional Programmers: Haskell meetup