Haskell Weekly


Issue 96 2018-03-01

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.

Want to see something featured in Haskell Weekly? Open an issue or pull request on GitHub.


  • Build large polyglot projects with Bazel: Now with Haskell support

    We have rules for building Haskell libraries (packages), binaries, tests and Haddock documentation. Libraries or binaries can freely provide C/C++ or Java targets as dependencies, or use preprocessors such as hsc2hs.

  • A game in Haskell: Dino Rush

    Writing a game in Haskell appears to be an elusive, white-whale task. And with an existing handful of small and citable games, I wish more existed with documentation to ease the barrier of entry.

  • Validation with smart constructors

    There are multiple kinds of validation; checking that values have a certain structure, which is deterministic, and things like querying a database to see if a user name is already taken, which is effectful and indeterministic.

  • ASTs with Fix and Free

    I’ve been working on a toy compiler lately so I’ve been thinking about ASTs! It’s a new thing for me and I’ve gotten a bit obsessed with the idea of simplifying both the representation of the tree itself as well as the code to interpret it.

  • Hocker: I can’t believe it’s not Docker!

    We’ve pulled a Docker image from a registry without using the Docker client or going through the Docker daemon. We also fetched three other artifacts of the hello-world Docker image that the stock Docker tooling elides from you.

  • Heterogeneous collections

    In my opinion, using the data type I’ve called Variant to handle heterogeneous collections is currently the best alternative. It is type-safe, efficient (both storage-wise and performance-wise) and easy to use.

  • Investment strategies, lazy evaluation and memoization

    This article will cover an interesting problem: given a set of possible investments, each with different tax rates, yearly rates and minimum time until withdrawal, what is the best investment strategy for the next 10, 20 or n years?

  • Introducing tenjinreader.com for Haskellers

    The app is written end-to-end in Haskell. Moreover, I tried to use a bunch of new (experimental) stuff, so this blog post is about my experience.

  • Haskell with Reactive Banana and GTK3

    I’ve been doing some GUI coding recently using a combination of Reactive Banana and GTK3. I started out with just GTK3, but I could see it wasn’t going to scale because everything GTK3 does is in the IO monad.

  • Comonad transformers in the wild

    I’m still getting an intuition for comonads, but they seem to embody some kind of “environment”, and comonad transformers are like a “composition of environments”.


  • Functional Programming at Mood Media in Bucharest

    Mood Media is still looking for a junior/mid-level PureScript developer to work on our digital signage solution. PureScript experience is not required — any FP experience will do. The job is in Bucharest, Romania — no remote.

  • Software Engineer at Oscoin in Berlin

    At Monadic, the team behind oscoin, we’re hiring our first engineers. We’re looking for experienced candidates who are well versed in functional programming and distributed systems.

  • Strat at Standard Chartered in New York

    Strats are generalist software engineers. You will work on the trading floor, directly with traders, building software to automate their work and improve their efficiency.

  • Junior Developer at Holmusk in Singapore

    Holmusk is a digital healthcare company based in Singapore that is focused on helping people manage chronic disease. We are building a Haskell backend team in Singapore and looking for junior developers.

In brief

Package of the week

This week’s package of the week is sdl2, which provides both high and low level bindings to the SDL2 library.

Call for participation