[Haskell-cafe] Mysterious fact

Andrew Coppin andrewcoppin at btinternet.com
Mon Nov 1 18:28:03 EDT 2010

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?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20101101/1433ecc3/attachment.html

More information about the Haskell-Cafe mailing list