Issue 124

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.


  • Bowl full of lentils

    In this blog post I’m going to take a break from Haskell and spread the good word of Dhall. The good news is that it won’t be a break from functional programming. We still have all the good stuff in Dhall like: lambdas, products, sums and types!

  • Building a blog part 2: Creating an HTTP API with Scotty and Beam

    In part 2 of Building a Blog I will talk about how the small HTTP API used by this blog was implemented. Once again, because I like Haskell, I’ll use the Scotty web framework to listen to HTTP requests and run SQLite queries with the Beam library.

  • Common (but not so common) monads

    Lists and functions are core concepts that any Haskeller learns from the get-go. But the list data structure and function application are also monads! And understanding how they work as such can teach us more about how monads work.

  • Dhall to HLint: Using Dhall to generate HLint rules

    This short blog post covers the process of creating the .hlint.yaml file from the Dhall configuration. You can wonder, why we are not using Haskell for such purposes. The answer is that we don’t need IO capabilities for our problem; totality and safety of Dhall are enough here.

  • Forking and ContT

    This is the first article in a series about continuations, forking, and monad transformers. Motivation: When using StateT or ReaderT over IO, we sometimes would like to fork and still remain in this “monadic context”.

  • Fun with typed type-level programming in PureScript

    As software engineers, we write programs to compute values at runtime. Sometimes, if there is an available static type system, we use types to check our code at compile time. However, is it possible to write code computing types at compile time? Does it make sense to do that?

  • uku: A Haskell CLI tool to display Ukulele fingering charts

    This is a tutorial on how to write a CLI tool in Haskell to display fingering charts for the Ukulele in your terminal. While I originally started to write this 2 years ago in JavaScript, I recently got introduced to Haskell and it’s awesome. Especially for building CLI tools.

  • Using Funflow to cache a Nix-based workflow

    My latest project has been to plot a map of orienteering maps in the UK. This post explains the technical aspects behind the project and primarily the use of funflow to turn my assortment of scripts into into a resumable workflow.

  • You need a novelty budget

    Something that;s not often explicitly controlled is novelty. One of the dirty secrets of programming is that almost every production codebase contains some dependency that the developers have never used before. Why are we indulging in so much novelty anyway?

  • Zero to Quake 3

    Implementing Quake 3 in Haskell & Vulkan. All work on this is streamed live on Twitch. We’ve still got a long way to go, but things are starting to take shape.


  • Senior Haskell Engineer at GitHub

    Did you know GitHub uses Haskell in production? We are looking for experienced Haskell engineers to work on the task of parsing, analyzing, interpreting and drawing conclusions from the corpus of public code on GitHub. We are working on a multi-language interpreter (currently targeting Go, Python, Ruby, PHP, JavaScript, TypeScript, Haskell, and Java) aimed at extracting useful information from untrusted user code — import graphs, control flow graphs, and reports identifying code quality issues or security vulnerabilities.

  • Engineering Manager at GitHub

    GitHub is seeking an experienced engineering manager to lead a team working in Haskell focused on applied Programming Language Theory (PLT), parsing, syntax representation, various program analysis techniques (including abstract interpretation), and unparsing / code refactoring. If you are excited about leading engineers, applying recent PLT research to help make software easier, faster, and safer to write please view our job listing for more details.

In brief

Package of the week

This week’s package of the week is Range, an efficient and versatile range library. It supports bounded and unbounded ranges, ranges in a nested manner (like library versions), an efficient algebra of range computation and even a simplified interface for ranges for the common cases.

Call for participation