On Sat, Oct 16, 2010 at 11:41 AM, Max Bolingbroke <batterseapo...@hotmail.com> wrote: > > On 16 October 2010 15:47, Antoine Latter <aslat...@gmail.com> wrote: >> Substituting f for f' in this example will change the meaning of the >> operation significantly, which is, in my mind, hard to explain and >> reason about. > > That's the behaviour I had in mind. There is no doubt that local > instances are a big complexity increase, but IMHO this behaviour is > relatively easy to reason about as long as you know about the > dictionary passing translation. Indeed, it's practically mandatory to > use dictionary-passing to implement this behaviour. Local instances > would probably never get added to a compiler (like JHC) that doesn't > use that technique. >
>From the point of view of the down-stream engineer, I feel that first class modules with a module algebra like OCaml would be a lot less mysterious. Once a thing is locally scoped, it's nicer if I can name it and abstract over it in a concrete and reliable way. Keep in mind that I've never used OCaml's module system. Maybe that's just a lot harder to fit into GHC as it is today, though. But I feel like the problem you're solving has already been solved by first-class modules - type classes are for something else altogether. But maybe we need a better example to argue about :-) Antoine _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users