Skip to content

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 :)

Edited by Icelandjack
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information