You're asking for something tricky here.

|  >      type family NameCmp n m
|
| which totally orders datatypes. More precisely, it should return one
| of the following types:
|
|  >      data NameLT = NameLT
|  >      data NameEQ = NameEQ
|  >      data NameGT = NameGT

Now, whenever you declare a new data type T, you want, magically, the following 
instances to spring to life

        type instance NameCmp T Int = NameLT
        type instance NameCmp T Bool = NameLT
        ..etc etc etc...

Obviously there would be way too many instances. So you really want a built-in 
magic type family NameCmp, which does what you want.

Furthermore, the behaviour should be predicatable across compilers; so you'd 
need to specify just what the result should be in a compiler-independent way.

Well I suppose you might do that (via lexical comparison of fully-qualified 
names), but it's clearly An Extension.  Type-families alone get nowhere near.

Simon
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to