Haskell Weekly


Issue 213 2020-05-28

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.


  • Adding tracing to ghcide by Michalis Pardalos

    This week I will be talking about my Google Summer of Code project to introduce tracing into ghcide using OpenTelemetry.

  • Data.Array.Log256 (SAFE, idiomatic and ⊥) by Ramón Soto Mathiesen

    A SAFE and idiomatic implementation of an immutable array in Haskell aiming for an idiomatic low memory footprint by storing chunks of 256 elements in a fixed vector by sharing a single constructor.

  • Fixing Space Leaks in Ghcide by Neil Mitchell

    A performance investigation uncovered a memory leak in unordered-containers and performance issues with Ghcide.

  • Haskell coreutils - split by Austin

    I’ve implemented a couple Unix core utilities in Haskell, and want to continue a series of posts going through the details - starting with simple programs like cat, seq, and which, and then moving on towards more feature-rich programs like uniq, tr and maybe grep.

  • Monoidal Puzzle Solving by Jonas Carpay

    Judging by the recent surge in popularity of the excellent Cracking the Cryptic YouTube channel, I’m not the only person for who recent circumstances have led them to rediscover logic puzzles.

  • Profiling Template Haskell splices by Ben Gamari

    In short, the method we arrived at takes advantage of GHC’s external interpreter coupled with cabal-install’s support for producing package environment files.

  • Running HLint as a GHC source plugin by Taylor Fausak

    Thanks to GHC 8.6 and HLint 3 it’s now possible to run HLint as part of GHC by using a source plugin. This post introduces Splint, which does exactly that.

  • #SerokellChat on June 4th! by Gints Dreimanis

    Since “how to get a Haskell job?” was an interesting topic to discuss, we’ve decided to delve deeper into it.

  • Simple Haskell is Best Haskell by Sam Halliday

    A more radical approach, that has only a very small chance of success but could advance the timeline, would be for the Simple Haskell initiative to create their own compiler.

  • Why is Idris 2 so much faster than Idris 1? by Edwin Brady

    I’ve just released a new version of Idris 2, which is a significant release in that it’s the first one which is able to compile itself.


  • Interos is Hiring Full Stack Haskell Software Engineers (ad)

    At Interos, we are disrupting the way Fortune 500 companies and government agencies identify and respond to risk within their supply chains. We deliver the data and insights to business leaders that help them identify, visualize and understand the ripple effects that could impact their supply chains, before they happen. Recently funded by Kleiner Perkins and pivoting to an automated solution, Interos is in essence, a start-up SaaS environment.

Trying to hire a Haskell developer? You should advertise with us!

In brief

  • Building a Haskell Microservice by Leonhard Applis

    This tutorial is greatly different as it’s not about frameworks but a bit beginner-friendlier and it covers a little of docker and it shows how to connect a database in a docker compose.

  • Competitive programming in Haskell: building unordered trees by Brent Yorgey

    In my previous post I challenged you to solve Subway Tree System, which encodes trees by recording sequences of steps taken away from and towards the root while exploring the whole tree, and asks whether two such recordings denote the same tree.

  • Continuations for normalising sum types by Henri Tuhola

    Normalising lambda calculus gets difficult when sum types are introduced. For normalisation-by-evaluation it means that a single “probe-through” of the program no longer suffices.

  • Dynamically Flunking the Coding Interview by Maxfield Chen

    How and when should you use Dynamic Programming in a functional language?

  • Evolving non-determinism by Oleg Grenrus

    While reading about sorting networks in general for my previous blog post, I noticed END method being mentioned.

  • Gain confidence with referential transparency by Brandon

    In this post, I’ll be going over what referential transparency is, and why it takes so much worry away when modifying Haskell code.

  • Generalizing Our Environments by Monday Morning Haskell

    In this part, we’re going to start by applying our Q-Learning solution to the Blackjack game. This will highlight the similarities in the code between the two games.

  • PureScript v0.13.8 released! by Harry Garrood

    PureScript v0.13.8 is out! Highlights include some really nice performance improvements and the new purs graph command, amongst others.

  • Reanimate: Voice Control by David Himmelstrup

    Reanimate can automatically synchronize animations to your voice if you have a transcript and an audio recording.

  • Shake 0.19 - changes to process execution by Neil Mitchell

    The new version of Shake has some tweaks to how stdin works with cmd.

  • Simply typed lambda calculus by Splinter Suidman

    Our exploration of type systems starts quite simple, with the simply typed lambda calculus (STLC). This type system is the foundation of more complex type systems such as Haskell’s.

  • Subgame perfection made difficult by Jules Hedges

    This is the second post in catching up on aspects of open-games-hs that are ahead of my papers, following open games with stateful payoffs.

  • Talk: An overview of property testing by Tom Sydney Kerckhove

    I gave a 20-minute talk about property testing at F(by) 2020 in Minsk on 2020-01-25.

  • Update Everything by Sean Parsons

    I had an inkling that if this was written in Haskell (the code I’m referring to is written in TypeScript) this manually written code, along with the maintenance cost, would be unnecessary.

Show & tell

  • JuicyPixels-blurhash by Sam Protas

    Blurhash is a cool algorithm I read about on HN awhile back. It’s used by a few apps to render a nice looking “blurred” version of an image, often as a placeholder or mask.

  • sixel by Junji Hashimoto

    SIXEL, short for “six pixels”, is a bitmap graphics format supported by terminals and printers from DEC. It can show graphics in a terminal emulator.

  • squares by Sjoerd Visscher

    The double category of Hask functors and profunctors.

  • stackcollapse-ghc by Marcin Rzeźnicki

    A CLI program to fold GHC prof files into flamegraph input.

Call for participation