This class is a necessary evil: in the implementation of
HasServer for
NamedRoutes api, we essentially
need the quantified constraint
forall m. GServerConstraints
m to hold.
We cannot require do that directly as the definition of
GServerConstraints contains type family applications
(
Rep and
ServerT). The trick is to hide those type
family applications behind a typeclass providing evidence for
GServerConstraints api m in the form of a dictionary,
and require that
forall m. GServer api m instead.
Users shouldn't have to worry about this class, as the only possible
instance is provided in this module for all record APIs.