https://www.tweag.io/posts/2018-10-04-capability.html https://github.com/tweag/capability It requires `DerivingVia` language extension, which was introduced in `ghc-8.6.1`