Is this defined anywhere in base, and if not could it be placed in
Control.Monad? I often find myself writing:fmap (mu bar) (foo zot)
Then I decide to change the type of
x
, so instead I want to just
write:bind (mu bar) (foo zot)
Which is just like
fmap
but the function can run in the
monad. Similar to traverse:(Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
As someone who isn’t a fan of operators, I generally am appreciative
of alternative regular plain English word versions of functions, which
I find easier to type, read and edit. Currently without defining such
a handy name, I have to transform the code to this:mu bar =<< foo zot
The name for this function is a no-brainer:
bind :: Monad m => (a -> m b) -> m a -> m b bind = (=<<)
For comparison, the not-very-pleasant
<$>
and<*>
each have word
alternatives,fmap
andap
. Even<>
hasmappend
.I don’t hold much hope for this, Haskellers love operators as much as
Perl programmers so few on this list will see the value in plain old
words, but at least I can link to this email in the archives for
future reference.Ciao
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries