Isaac Dupree wrote:
foo :: (Char -> a /\ Bool -> b) -> (a,b)
a.k.a. find some value that matches both Char->a and Bool->b for some a
and b. Could use type-classes to do it.
Uhmm... you mean something like (neglecting TC-related issues here)
class C a b where
fromChar :: Char -> a
fromBool :: Bool -> b
or some more clever thing?
If this can be encoded with method-less classes, I would be quite
interested in knowing how.
But why, when we can just use standard tuples instead?
foo :: (Char -> a , Bool -> b) -> (a,b)
This makes the class dictionary explicit.
Alas, IIUC we lost type erasure (does that still hold with intersection
types?) in this "implementation".
Zun.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe