[Haskell-cafe] message passing style in Monad

Simon Richard Clarkstone simon.clarkstone at gmail.com
Sun Sep 14 14:21:19 EDT 2008


jinjing wrote:
> I found that as I can do
> 
>   xs.map(+1).sort
> 
> by redefine . to be
> 
>   a . f = f a
>   infixl 9 .

This looks rather like ($), but backwards.  I believe the F# name for 
this operator is (|>), which is also a legal name for it in Haskell. 
Odd, since (|) alone isn't legal.  Calling it (.) will confuse the heck 
out of anyone who maintains your code though, and make any transfer of 
code between your projects and other people's liable to introduce bugs.

> I can also do
> 
>   readFile "readme.markdown" <.> lines <.> length
> 
> by making
> 
>   a <.> b = a .liftM b
>   infixl 9 <.>
> 
> Kinda annoying, but the option is there.

Now that looks more interesting.  Another name for it is (>>=^), since 
it is like (>>=) but lifts its right argument.  I know the Fudgets 
library uses "^" in operators for a similar "lifting" meaning.

-- 
src/


More information about the Haskell-Cafe mailing list