How to derive Generic for (some) GADTs using QuantifiedConstraints

The Generic and Generic1 classes are extremely useful tools in a GHC programmer’s toolbox, but their utility is currently limited in the sense that one can only derive Generic instances for simple data types. By “simple”, I mean that GHC will simply error if you try to derive Generic a more sophisticated data type—a GADT—like this one:

Continue reading »

Improvements to deriving in GHC 8.2

We’re drawing closer to a release of GHC 8.2, which will feature a variety of enhancements to GHC’s deriving-related extensions. None of the improvements are particularly revolutionary, and for most code, you won’t notice a difference. But there are quite a few quality-of-life fixes that should make doing certain things with deriving a little less of a hassle.

Continue reading »

What's new with GHC generics in 8.0

GHC 8.0 will be released soon, and with it comes many new additions and improvements to the base library. In particular, the API in the GHC.Generics module (and the underlying machinery provided by the DeriveGeneric GHC extension) have undergone quite a few improvements. However, these changes haven’t been very well advertised outside of the GHC dev community, so hopefully this blog post will spread awareness of some of the new bells and whistles in GHC generics.

Continue reading »

Installing GHC on FreeBSD

Recently, I discovered that the GHC developers classify the platforms that they support into different tiers. Tier 1, somewhat surprisingly, includes four distinct operating systems: Windows, OS X, Linux, …and FreeBSD. That last one surprised me, since they don’t even advertise their FreeBSD support that much on the Haskell Platform website. (You have to go to the Linux section to find the FreeBSD information.)

Continue reading »
Top