Allow wildcards for parameters functionally determined (also type synonyms)
class F a b | a -> b where foo :: a -- ... myFoo :: F a b => a myFoo = foo
Since b is not used and fully determined by a could the restriction on wildcards in constraints be lifted?
myFoo :: F a _ => a myFoo = foo
and eventually hiding it behind a type synonym:
type F' a = F a _ myFoo' :: F' a => a myFoo' = foo
I raised this issue at ICFP 2014, I haven't looked into whether dominique's response to my comment applies.
I could achieve similar things with a type family but not quite.
Or CPP :)