Haskell Weekly


Issue 99 2018-03-22

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.


  • Latest Hackage deployment

    As many of you may have noticed, there was a change in Hackage’s appearance on Monday. This is a first result of the design work being done by Nuno Alexandre which is intended to give Haskell a consistent, friendly and welcoming look as he explains in his Redesigning Haskell docs blogpost.

  • Announcing Stackage nightly snapshots with GHC 8.4.1

    I am pleased to announce that Stackage nightly snapshots now use GHC 8.4.1. Stack users can simply use resolver: nightly-2018-03-16 in a project’s stack.yaml file in order to build and test with GHC 8.4.1.

  • Nix + Bazel = Fully reproducible, incremental builds

    We’ll argue that you want to use Nix to “build” your entire compiler toolchain and system libraries, but use Bazel to build your code base to achieve fast, correct and incremental rebuilds.

  • Three runtime optimizations done by GHC’s GC

    While working on GHC’s GC code I realized that it does some runtime optimizations. One of those I already knew from another language, but the other two were quite interesting to me because they’re related with laziness.

  • Notes on a better migration system for Persistent

    The biggest problem I hit is with the migration system. It doesn’t allow you to consider two versions of the same database in one program, which makes using Haskell functions to populate new or changed fields & tables impossible.

  • Replacing type classes with records affects optimisation

    It is somewhat common to suggest using records instead of type classes for particular domains for which type classes are not deemed idiomatic. However, this suggestion should be taken with caution as the change will have consequences on how your program is optimized.

  • Testing failure with Either instead of Exception

    In this episode we will introduce a function exposing the errors using the Either type, and rewrite the test suite to match the new behavior.

  • Without performance tests, we will have a bad time, forever

    Of course, being happy about the improvement and going on with my life would have been wrong, as random performance improvements almost always mean that something foul is at play.

  • FHPC 2018 Call for Papers

    The 7th ACM SIGPLAN Workshop on Functional High-Performance Computing (FHPC’18) is being held as in previous years in conjunction with the International Conference on Functional Programming (ICFP’18) together with numerous other workshops/symposia, and as a first, colocated with Strange Loop, in St. Louis, MO, USA.

  • Record fields break smart constructors

    Unfortunately the record field also allows us to do a record update, which can break the invariants imposed by our smart constructor.


  • Summer intern at Tesla in Palo Alto

    Our team supports firmware and software development for Tesla products through custom tooling, process optimization, and data integration.

In brief

Package of the week

This week’s package of the week is Silica, a library for optics with the most amazing type errors you’ve seen.

Call for participation