
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