[Haskell-cafe] in-equality type constraint?
Gábor Lehel
illissius at gmail.com
Fri Jul 16 21:50:58 EDT 2010
Does "TypeEq a c HFalse" imply proof of inequality, or unprovability
of equality?
On Sat, Jul 17, 2010 at 2:32 AM, Steffen Schuldenzucker
<sschuldenzucker at uni-bonn.de> wrote:
> On 07/17/2010 01:08 AM, Paul L wrote:
>> Does anybody know why the type families only supports equality test
>> like a ~ b, but not its negation?
>>
>
> This has annoyed me, too. However, HList provides something quite similar,
> namely the TypeEq[1] fundep-ed class which will answer type-equality with a
> type-level boolean. (this is actually more powerful than a simple constraint,
> because it allows us to introduce type-level conditionals)
>
> To turn it into a predicate, you can use something like
>
> (disclaimer: untested)
>
>> class C a b c where -- ...
>>
>> -- for some reason, we can provide an instance C a b [c] *except* for
>> -- a ~ c.
>> instance (TypeEq a c x, x ~ HFalse) => a b [c] where -- ...
>
> Best regards,
>
> Steffen
>
> [1]
> http://hackage.haskell.org/packages/archive/HList/0.2.3/doc/html/Data-HList-FakePrelude.html#t%3ATypeEq
> (Note that for it to work over all types, you have to import one of the
> Data.HList.TypeEqGeneric{1,2} modules)
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
--
Work is punishment for failing to procrastinate effectively.
More information about the Haskell-Cafe
mailing list