
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