On Wed, Dec 10, 2014 at 8:43 AM, Andreas Abel <andreas.abel@ifi.lmu.de> wrote:
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?

As a default rule, I think every operator should have a named function. This is because symbols have no inherit meaning, but words do.
Math is the exception to the rule. Basic math is universal: someone coming from any background will immediately recognize (+), (-), etc.
Monad operators only seem universal once you have been programming Haskell for several years :)
 

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@gmail.com
<mailto:david.feuer@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@gmail.com <mailto:chrisdone@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@haskell.org <mailto:Libraries@haskell.org>
    http://www.haskell.org/mailman/listinfo/libraries

    _________________________________________________
    Libraries mailing list
    Libraries@haskell.org <mailto:Libraries@haskell.org>
    http://www.haskell.org/__mailman/listinfo/libraries
    <http://www.haskell.org/mailman/listinfo/libraries>



_______________________________________________
Libraries mailing list
Libraries@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@gu.se
http://www2.tcs.ifi.lmu.de/~abel/
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://www.haskell.org/mailman/listinfo/libraries