Make Buildable anyclass-derivable
Clarification and motivation
We can derive Buildable
instances for Generic
types using DerivingVia
and GenericBuildable
. This is, however, somewhat inconvenient on account of being long-winded. Consider deriving via GenericBuildable Foo instance Buildable Foo
or data Foo deriving Buildable via GenericBuildable Foo
. A more ergonomic option is to declare default build
implementation via Generic
: data Foo deriving anyclass Buildable
or even simply instance Buildable Foo
.
Additional context: fmt
provided genericF
which I didn't until now realize how much we're using downstream to define instances, hence didn't reimplement it. Our morley-prelude
's Fmt
provides only GenericBuildable
which works exactly the same, but after writing deriving via GenericBuildable Foo instance Buildable Foo
for the umpteenth time I started longing for shorter syntax.
Acceptance criteria
-
Buildable
has default generic implementation.