Issue 147

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.


  • A pure function does no funny business by Joseph Abrahamson

    Before we can talk about the tradeoffs of using pure functional style, we need to understand it. What does it mean for a function to be pure anyway?

  • stdio - A simple and high-performance IO toolkit for Haskell by Han Dong Zhu

    Yesterday I and my friend Tao He write a short release message at a local cafe, we released a new IO library for GHC based on our previous work on combining libuv and GHC.

  • January Teardown: Bowling by Stephen Paul Weber

    It’s time to announce the winner for January’s challenge and do some teardown! A lot of what makes this code bad is not being idiomatic for the language or problem, starting even with basic syntax choices.

  • Towards a better API for I/O by Tim Spence

    In this post we’ll skip over some of the more complex implementation details and focus more on the core design of iteratees and the reasoning behind the types Oleg defines.

  • Freer Monads: Too Fast, Too Free by Sandy Maguire

    So without further ado, I’d like to share my work-in-progress with you, tentatively named too-fast-too-free. This is ready for prime-time, but I’d prefer to merge it to someone upstream rather than pollute hackage with yet another free(r) monad extensible effects package.

  • Freer doesn’t come for free by Eric Torreborre

    After being involved with 2 large applications (both in Scala and Haskell) using a “Freer monad” I would not recommend this anymore. Why is that?

  • Embedding Haskell in AsciiDoc by Jonathan Dowland

    For various convoluted reasons I wanted to embed Haskell into an AsciiDoc-formatted document and I couldn’t use Bird-style literate Haskell, which would be my preference.

  • Haskell Style Guide by Kowainik

    The purpose of this document is to help developers and people working on Haskell code-bases to have a smoother experience while dealing with code in different situations.

  • Shower by Monadfix

    A tool for pretty-printing Haskell data types, even ones with broken Show instances (like UTCTime, UUID, and various hash types).

  • Quantifiers in Agda by Vladimir Ciobanu

    This post will go a bit further than that and show the type theoretic equivalents of existential and universal quantifiers. I’ll then explore some interesting properties of these types.


  • Software engineer at ITProTV in Gainesville

    ITProTV is disrupting the eLearning world with engaging online training that people actually want to watch. We are currently accepting applications for full-stack software professionals to join our small but talented multidisciplinary team.

    Taylor Fausak, the editor of Haskell Weekly, is the lead engineer at ITProTV.

  • Technical communicator at FP Complete

    We hear the same from people trying to adopt DevOps and the other quality engineering techniques we advocate: people don’t know what’s available, whether it’s usable on their own projects, or how to get help. So I’m creating a new job at FP Complete for an articulate developer to focus on outreach and communication.

  • Haskell developer at Folq in Norway

    We build a platform for matching consultants with customers without slow and expensive intermediates. We love statically typed functional programming, so our main technologies are Elm and Haskell. This enables us to move fast without breaking things.

  • GHC web backend developer at IOHK

    We are looking for a talented Haskell compiler engineer to join our growing in-house team. In this full time, remote work opportunity the candidate will be responsible for designing, implementing, and maintaining existing and emerging backends for the Glasgow Haskell Compiler (GHC) targeting Web platforms, such as JavaScript and WebAssembly.

In brief

Package of the week

This week’s package of the week is symbols, a library that provides utilities for manipulating type-level strings.

Call for participation


North America



South America