+1 - seems natural to me, and I can certainly see myself expecting it to be just that in the near future.


- ocharles


On Mon, Sep 1, 2014 at 10:41 PM, Merijn Verstraaten <merijn@inconsistent.nl> wrote:
Ola!

Currently we have:

type family If cond tru fls where
    If True tru fls = tru
    If False tru fls = fls

Unfortunately, this appears to turned into a monomorphicly kinded type family by GHC, which means it’s impossible to do

foo :: If cond () (“Condition does not hold” ~ “”) => Foo -> Bar

or similar fancy constraints.

I hereby propose altering If to:

type family If (cond :: Bool) (tru :: k) (fls :: k) :: k where
   If True tru fls = tru
   If False tru fls = fls

Allowing it to work with kinds other than *.

Discussion period: 2 weeks? Seems like a minor change.

Cheers,
Merijn

_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries