On Mon, Dec 11, 2006 at 12:16:06PM +0000, Simon Peyton-Jones wrote: > [...] Just to summarise, the difficulty is this: > I have a dictionary of type (C a b1) > I need a dictionary of type (C a b2) > There is no functional dependency between C's parameters > > PS: the complete program is this: > class C a b where > op :: a -> a > > f :: C a b => a -> a > f x = op x
That raises a point I'd wondered about. GHC requires only that each type variable in the context be reachable from the type via a chain of assertions: http://www.haskell.org/ghc/docs/latest/html/users_guide/type-extensions.html#type-restrictions What's the rationale for that, rather than calling types like the above type of f ambiguous? The examples given in the User's Guide involve functional dependencies, albeit obscured by superclasses _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users