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 _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe