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

Reply via email to