Issue 99 2018-03-22
Subscribe now! We'll never send you spam. You can also follow us on Twitter or with 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.
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-16in a project’s
stack.yamlfile 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
In this episode we will introduce a function exposing the errors using the
Eithertype, 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.
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.
- Composing multiple functions: The
- Drinkery the boozy streaming library
- Fake: Generating realistic test data in Haskell
- Faking non-NixOS for Stack
- Functors, applicatives, and friends
- Lessons learned
- Sending texts with Twilio and Haskell!
- Streaming benchmarks
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.