
FYI, I implemented an error monad using this church-encoded either instead of the conventional either. my thought was that since you skip the conditional at each bind call you'd get better performance. I was quite mistaken. Max On Nov 2, 2010, at 6:40 AM, Jeremy Shaw wrote:
Looks a lot like Church encoding to me:
http://en.wikipedia.org/wiki/Church_encoding
It was first discovered by the guy who invented lambda calculus :p
- jeremy
On Nov 1, 2010, at 5:28 PM, Andrew Coppin wrote:
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
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe