The spec doesn't allow multi-parameter type classes at all, so I don't see how you could run into this problem while writing extensionless Haskell. I guess it's still a valid question whether the MultiParamTypeClasses extension should allow repeated type parameters. -Karl On Feb 18, 2014, at 12:53 PM, AntC <anthony_clayden@clear.net.nz> wrote:
Doug McIlroy <doug <at> cs.dartmouth.edu> writes:
What potential evil motivates the prohibition of repeated type parameters in an instance declaration?
Hi Doug,
I guess the first reason would be to catch accidental duplicate names of typevars.
But as to "potential evils", the only point of such an instance:
instance C a a where ...
would be to have another instance:
instance C a b where ...
So we're into overlapping instances. (And discriminating on type equality - - which only works if the types are grounded. See the HList paper, section 9 'By chance or design?')
Overlapping instances like that will probably need FunDeps. So the more recent (and probably more blessed) approach is to use the Closed type families/branched instances doo-hicky upcoming with GHC 7.8. http://www.haskell.org/haskellwiki/GHC/Indexed_types#Type_instance_declarat ions
AntC
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe