Issue 125

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.


  • Abusing the continuation monad

    I intend to bootstrap a blog by writing about 2 of my old papers, Monad Transformers for Backtracking Search and The Selection Monad as a CPS Transformation.

  • Algebraic effects

    My recommendation: if the performance of using extensible effects is acceptable in your application and you are willing to pay the cost of less ecosystem support, I would strongly recommend the freer-simple extensible effect library.

  • Announcing exchangerates

    Free currency exchange rate API’s are surprisingly hard to find. is the only one that I found, so I decided to write a little Haskell client to call the API.

  • Deriving the state monad

    I am currently learning Haskell. When I encountered monads, I wanted to understand it from examples and first principles. This article is my attempt to understand monads, particularly the state monad purely from examples.

  • Haskell WebAssembly calling JavaScript and back again

    Previously, we announced the Asterius compiler, a new GHC-backend that translates Haskell to WebAssembly. Today, we are proud to introduce a critical new feature: Haskell-JavaScript interop via a dedicated foreign function interface.

  • Packaging a Haskell library for artifact evaluation using Nix

    This year I packaged two artifacts for the ICFP artifact evaluation process. This post explains the system I used to make it easy to produce the Docker images using Nix.

  • Roll your own stack traces

    Stack traces are great for a developer because they give you more contextual information about where in your code an error occurred, and often this can be enough to help you pin down the bug. But what about in Haskell?

  • Simple web routing with Spock

    In these next two articles, we’ll examine Spock, another HTTP library. We’ll compare it to Servant and see what the different design decisions are. We’ll start this week by looking at the basics of routing.

  • Your easy guide to monads, applicatives, & functors

    If you’d like to see what you can do with functors, applicatives, and monads, check out Movie Monad and Gifcurry —  two desktop GUI apps created with Haskell, a purely functional programming language.

In brief

Package of the week

This week’s package of the week is simple-reflect, a library that allows reflection of expressions containing variables. Reflection here means that a Haskell expression is turned into a string.

Call for participation