7 Jan
2001
7 Jan
'01
2:41 p.m.
On Sun, 7 Jan 2001, Sebastien Carlier wrote:
Sometimes I need to write code which looks like this:
do x <- m1 let y = unzip x ... -- never using x anymore
I thinks the following extension to do-notation would be useful:
pat <- exp1 # exp2 ; exp3 would be rewritten as exp2 >>= ((\pat -> exp3) . exp1)
so that the above example could be rewritten more compactly:
do y <- unzip # m1
I think the biggest problem with this extension is the choice of a proper symbol.
Why not just use a user defined operator. eg: infixr # (#) :: Monad m => (a -> b) -> m a -> m b f # p = p >>= (return . f) Alternatively, define it to be "fmap", and be a bit more general. -Rob