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

Bob Ippolito bob at redivi.com
Tue Dec 9 21:55:34 UTC 2014


+1 from me, I would love to have named versions of these operators.

Does `ap` still have a Monad constraint or has it been changed to match the
Applicative `<*>` after AMP?

On Tue, Dec 9, 2014 at 1:44 PM, Christopher Done <chrisdone at gmail.com>
wrote:

> 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 = (=<<)
>
> For comparison, the not-very-pleasant <$> and <*> each have word
> alternatives, fmap and ap. Even <> has mappend.
>
> 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 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/20141209/8c68c65d/attachment-0001.html>


More information about the Libraries mailing list