bind :: Monad m => (a -> m b) -> m a -> m b

John Lato jwlato at gmail.com
Wed Dec 10 16:33:13 UTC 2014


I don't really understand why people want this. What's wrong with (=<<) ?
I kind of feel like a named function should be no longer than that.

I don't object, especially if others think it's useful (and many clearly
do), but I guess it's not to my taste.

On 08:02, Wed, Dec 10, 2014 David Feuer <david.feuer at gmail.com> wrote:

> joinMap looks to me like the best name, because it does just what it says
> on the box:
>
> join . fmap f $ m
> = (m >>= return . f) >>= id --Functor/Monad law
> = m >>= (\x -> return (f x) >>= id) --associativity
> = m >>= (\x -> f x) --left identity
> = m >>= f --eta reduction
> = f =<< m
> Christopher Done <chrisdone at gmail.com> writes:
>
> > 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 bbind = (=<<)
>
> I'm -1 on the *name* `bind`, because as others have mentioned, I feel bind
> has the same type as (>>=).
>
> That said, I'm +1 on the *idea* - if we can find a better name. `joinMap`
> doesn't seem too bad, as was recently suggested, but I'll settle on
> anything other than `bind`
>
> -- ocharles
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20141210/0ef2a6d6/attachment.html>


More information about the Libraries mailing list