bind :: Monad m => (a -> m b) -> m a -> m b
Andreas Abel
andreas.abel at ifi.lmu.de
Wed Dec 10 16:43:07 UTC 2014
On 10.12.2014 17:33, John Lato wrote:
> 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.
You are right, we do not need a alphabetic version of every operator.
We do not have
plus = (+)
either. Why take another good name from the user, just to avoid using
an operator in parentheses?
I am -1 on the whole business here.
Cheers,
Andreas
>
> 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
> <mailto: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 <mailto: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 <mailto:Libraries at haskell.org>
> http://www.haskell.org/mailman/listinfo/libraries
>
> _________________________________________________
> Libraries mailing list
> Libraries at haskell.org <mailto:Libraries at haskell.org>
> http://www.haskell.org/__mailman/listinfo/libraries
> <http://www.haskell.org/mailman/listinfo/libraries>
>
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
>
--
Andreas Abel <>< Du bist der geliebte Mensch.
Department of Computer Science and Engineering
Chalmers and Gothenburg University, Sweden
andreas.abel at gu.se
http://www2.tcs.ifi.lmu.de/~abel/
More information about the Libraries
mailing list