[Haskell-cafe] Equality test between types that returns type-level Bool ?
hesselink at gmail.com
Mon Nov 26 22:18:25 CET 2012
If you're up for it, Oleg has a lot of interesting material about this
On Sun, Nov 25, 2012 at 9:36 AM, Takayuki Muranushi <muranushi at gmail.com>wrote:
> Is it possible to write
> type family SameType a b :: Bool
> which returns True if a and b are the same type, and False otherwise?
> I encountered this problem when I was practicing promoted lists and
> tuples in ghc-7.6.1. One of my goal for practice is to write more
> "modular" version of extensible-dimensional calculations, and to
> understand whether ghc-7.6.1 is capable of it.
> Some of my attempts:
> This fails because :==: is not an equality test between a and b, but
> is a equality test within a (promoted) kind.
> This fails because type instance declarations are not read from top to
> bottom. (not like function declarations.)
> I could define a lookup using class constraints, but when I use it,
> results in overlapping instances.
> So, will somebody teach me which of the following is correct?
> * We can write a type family SameType a b :: Bool
> * We cannot do that because of theoretical reason (that leads to
> non-termination etc.)
> * We cannot write SameType, but there are ways to write functions like
> 'filter' and 'merge' , over type-level lists, without using SameType.
> Always grateful to your help,
> Takayuki MURANUSHI
> The Hakubi Center for Advanced Research, Kyoto University
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe