Singletons/EqInstances.hs:0:0: Splicing declarations singEqInstances [''Foo, ''Empty] ======> Singletons/EqInstances.hs:0:0: instance SEq (KProxy :: KProxy Foo) where %:== SFLeaf SFLeaf = STrue %:== SFLeaf (:%+: _ _) = SFalse %:== (:%+: _ _) SFLeaf = SFalse %:== (:%+: a a) (:%+: b b) = (%:&&) ((%:==) a b) ((%:==) a b) type instance (:==) FLeaf FLeaf = TrueSym0 type instance (:==) FLeaf (:+: b b) = FalseSym0 type instance (:==) (:+: a a) FLeaf = FalseSym0 type instance (:==) (:+: a a) (:+: b b) = :&& (:== a b) (:== a b) instance SEq (KProxy :: KProxy Empty) where %:== a _ = case a of { _ -> error "Empty case reached -- this should be impossible" }