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

Andreas Abel abela at chalmers.se
Wed Dec 10 01:44:37 UTC 2014


If there is a bindIO as specialization of (>>=), having a bind as alias 
for (=<<) is a bad idea.

In category theory (Kleisli triple), (=<<) is called the extension operator.

Most of my uses of (=<<) are infix, as a monadic application operator, 
so I never felt the need to have a non-operator version of it.

Haskell is all about saving parentheses and being not Scheme, so

   f a =<< g b

is definitely preferable over

   bind (f a) (g b)

;-)

Cheers,
Andreas

On 10.12.2014 00:35, David Feuer wrote:
> It's possible I got confused by GHC.Base, which defines
>
> bindIO :: IO a -> (a -> IO b) -> IO b
>
> If that's backwards, then go right ahead and use bind to mean (=<<).
>
> On Tue, Dec 9, 2014 at 6:17 PM, Gabriel Gonzalez <gabriel439 at gmail.com
> <mailto:gabriel439 at gmail.com>> wrote:
>
>     My understanding was that bind historically referred to `(=<<)`, not
>     `(>>=)`
>
>     Either way I am (+1) on this, even if my previous sentence is false.
>
>
>     On 12/9/14, 1:55 PM, David Feuer wrote:
>>
>>     On Dec 9, 2014 4:44 PM, "Christopher Done" <chrisdone at gmail.com
>>     <mailto:chrisdone at gmail.com>> wrote:
>>     > The name for this function is a no-brainer:
>>     >
>>     > bind :: Monad m => (a -> m b) -> m a -> m b
>>     > bind = (=<<)
>>
>>     Since most people use the term "bind" to refer to the >>=
>>     operator, this would be very confusing.
>>
>>     > For comparison, the not-very-pleasant <$> and <*> each have word
>>     > alternatives, fmap and ap. Even <> has mappend.
>>
>>     fmap predates <$>, and <$> tends to be used only in certain
>>     contexts. "ap" has a narrower type than <*>.
>>
>>     > 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.
>>
>>     I have nothing against the idea in principle, but that name won't fly.
>>
>>
>>
>>     _______________________________________________
>>     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
> 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