instance (f a b) =3D> FMap f (HJust a) (HJust b) where type f :<$>: (HJust a) =3D HJust (f :<$>: a) A bit more awkward to write, but we're back to TFs not having any expressivity problem in this department. [1] http://www.reddit.com/r/haskell/comments/ut85i/a_few_typefamilies_nugge= ts/c4ygefh