* Jacques Carette <care...@mcmaster.ca> [2013-09-18 08:21:51-0400] > Could someone please explain what the difference (if any!), in > semantics is between > > class Foo f => Bar f g where > method1 :: f a -> g a > > and > > class Bar' g where > method2 :: Foo f => f a -> g a
Bar is more flexible than Bar'. If you have n types, you can write n^2 Bar instances (potentially having very different semantics) to convert between them. You can only write n Bar' instances, on the other hand. In these instances you can dispatch based on 'g' but not on 'f'. 'f' is abstract, and you only can access it through the Foo interface. So they are quite different. Roman
signature.asc
Description: Digital signature
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe