On Fri, May 02, 2008 at 08:30:59AM +0200, Tom Schrijvers wrote: >> Note that when declaring an instance of a concrete type, like Int, the >> constraint (S Int) will be trivially satisfied or not at compile time. >> (bf2 is free to use methods of 'S' of course). >> >> this translation is also a bijection, declaring those two instances >> manually as above is indistinguishable from declaring instances via the >> alias in all ways. >> >> Hopefully the generalization to arbitrary numbers of classes is clear... > > What about multiple parameters? Can A have more parameters than the Ci? > Should they be in the same order? Should they overlap? > > What about instance contexts, like: > > instance I a => A a where ...
Ah, I originally had instance contexts in my example, but left them out for clarity of the main points. instance contexts are just copied verbatim into each expanded instance. > (What about functional dependencies?) I am leaving out MPTCs and hence fundeps for now, I do not believe they will present an issue, as nothing about the expansion depends on the number of arguments, but I want to make sure we have a clear understanding of what class aliases imply for haskell 98 one constructor type classes first. I think the extension to MPTCs is clear, not so clear for fundeps but not unsolvable, then again, nothing much is clear about the future of fundeps so I don't think that is a big issue. John -- John Meacham - ⑆repetae.net⑆john⑈ _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://www.haskell.org/mailman/listinfo/haskell-prime