Desugared: {- plain CoRec -} dfun.Eq.Test.Foo :: dfun.Eq.Test.Foo = let ==.76 = \ ds.83 ds.84 -> let fail.85 = (error Bool) "\"ds027.hs\", line 8: pattern-matching failure [function binding]\n"S in case ds.83 of { Test.Bar -> case ds.84 of { Test.Baz -> True _ -> fail.85 } _ -> fail.85 } in let /=.77 = \ ds.89 ds.90 -> let fail.91 = (error Bool) "\"ds027.hs\", line 9: pattern-matching failure [function binding]\n"S in case ds.89 of { Test.Bar -> case ds.90 of { Test.Baz -> False _ -> fail.91 } _ -> fail.91 } in MkTuple2! (Test.Foo -> Test.Foo -> Bool) (Test.Foo -> Test.Foo -> Bool) ==.76 /=.77 {- end plain CoRec -}