The attached file doesn't compile (ghc -fglasgow-exts), with the message RecContext.hs:12: Mismatched contexts When matching the contexts of the signatures for g :: forall a b. (Silly a b) => a -> b -> SillyType a -> [String] f :: forall a. SillyType a -> [String] The signature contexts in a mutually recursive group should all be identical When generalising the type(s) for g, f
This seems strange. f can't have the context Silly a b, as b doesn't occur in its signature and is introduced later as part of an existential constructor . . . I know this code looks pretty pointless. If you want to see the Real World 450 line module which provoked the message, do ask, but only if you like having your brain curdled by mixtures of dependent types, existential types and overlapping multi-parameter type classes . . .
RecContext.hs
Description: Binary data