The other day, I accidentally came up with this:
|{-# LANGUAGE RankNTypes #-}
type Either x y= forall r. (x -> r) -> (y -> r) -> r
left :: x -> Either x y
left x f g= f x
right :: y -> Either x y
right y f g= g y
|
This is one example; it seems that just about any algebraic type can be
encoded this way. I presume that somebody else has thought of this
before. Does it have a name?
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe