
1 Nov
2010
1 Nov
'10
10:28 p.m.
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?