[Haskell-cafe] type hackery question

jeff p mutjida at gmail.com
Sun Dec 17 21:27:01 EST 2006


Hello,

Thanks for the response.

> > Is it possible to write a class which checks to see if two given type
> > arguments are unifiable?
> >
>
> This will probably help:
>   http://www.haskell.org/pipermail/haskell-cafe/2006-November/019705.html
>
> That was Oleg's response to a post of mine:
>   http://www.haskell.org/pipermail/haskell-cafe/2006-November/019610.html
>
I don't think either of these approaches really accomplishes what I'm
after since they both require both arguments to be instantiated
(correct me if I'm wrong about this). I would like a TypeCastP class
for which I can write something like:

    instance (TypeClassP xs (HCons targ rest) b, Branch b targ rest)
=> Member targ xs

where Member can used to build the expected list via unification
(similar to Prolog) as well as check  membership in an already
instantiated list. I was thinking of trying to use Oleg's explicit
backtracking machinery (http://okmij.org/ftp/Haskell/poly2.hs) to get
backtracking based on unification failure. Also, I was hoping to do
this with Haskell's type variables and unification, rather than
encoding my own machinery.

I'm beginning to think what I'm after is not possible...

-Jeff


More information about the Haskell-Cafe mailing list