Ryan
If you compile
newtype Compose f g a = Compose (f (g a)) deriving( Generic1 )
and do –show-iface on the resulting hi file, you’ll see
$fGeneric1Compose ::
forall (f :: * -> *) k (g :: k -> *).
Functor f =>
Generic1 (Compose f g)
I was expecting to see
$fGeneric1Compose ::
forall (f :: k1 -> *) k (g :: k ->
k1).
(..something..) =>
Generic1 (Compose f g)
Otherwise the Generic1 instance only works if its first argument has kind (* -> *).
Is that the intention? Maybe so…
Simon