
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
Doug McIlroy
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