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

Joseph Abrahamson me at jspha.com
Wed Dec 10 16:14:25 UTC 2014


I’ll clarify my earlier note: I’m +1 on the idea alone.




The name bind seems contestable (so -1) and I feel ~0 on joinMap. It sounds a bit too much like flatMap which I really dislike, although it’s at least much more accurate.

On Wed, Dec 10, 2014 at 11:02 AM, 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20141210/7115c628/attachment.html>


More information about the Libraries mailing list