Haskell Weekly


Issue 67 2017-08-10

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 purely functional programming language that focuses on correctness, productivity, and expressiveness. 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.


  • Wish: A trivial web browser written in Haskell

    This is a demonstration program that is able to load a web page up and render it like in the early ’90s. It supports laying out text, different font sizes for headings, inline and block elements, hyperlinks, bold and italics. It supports mouse wheel scrolling, too.

  • Array programming in Haskell

    On the confusing side, there are several different array libraries with overlapping feature sets, but distinct focus, strengths, and level of support, and often they have got widely different performance characteristics. This can make it hard to know where to start.

  • Programming as if the correct data structure (and performance) mattered

    What if focusing on the correct data structure, while still understanding your algorithm, could improve maintainability and collaterally speed up execution by a factor of over 15x compared to over-engineered C# code?

  • 5 ways to manage allocated memory in Haskell

    Let’s say we have a foreign function that takes a C data structure. Our task is to allocate the structure in memory, fill in the fields, call the function, and deallocate the memory. In this article, I will explore different ways to track all the allocated pointers and free them reliably.

  • Why libuv, why multicore?

    Alright, so I finally got time to explain the whole I/O system in stdio. The code is not production ready yet, but the big framework has been laid out. Once we figure out a way to bridge libuv with GHC’s light weight threads runtime, we got everything we want.

  • An explanation of higher-order unification

    In order to make this code useful to others, I would like to take the time to explain exactly how it works. In this file, we will go through the unification algorithm being used and how it is implemented in the code.

  • Writing performant Haskell (1 of 6): Intro

    This post series will serve as a guide for a few of the approaches we can take to optimize Haskell programs. We will build a small but complete Haskell package, iteratively improving on its performance.

  • Brittany: Haskell source code formatting tool

    I am happy to (finally) announce the first Hackage release of Brittany, a configurable Haskell source code formatter based on ghc-exactprint. Brittany aims to nicely layout the code and retain empty lines and comments as they appear in the input.

  • Midterm update for 2017

    We’d like to update the wider Haskell community on the state of the Summer of Haskell projects, now that the midterm evaluation has passed. We are very happy that almost everyone passed the evaluation.

  • Case study: Building a URL bouncer

    Building a simple URL bouncer with Servant isn’t that hard, and the usual warm fuzzies you get from well-typed functions, interfaces, and code still apply.


  • Job opening: Compiling to categories

    I have a job opening to work closely with me [Conal Elliott] (at Target Digital) on the GHC plugin described in the paper Compiling to Categories as well as on applications, including machine learning.

In brief

Package of the week

This week’s package of the week is monad-control, a library that provides lift control operations (like exception catching) through monad transformers.

Call for participation