I think after discussion I’m -1 on any implementation thus discussed.

I think I’d be happiest if we had Monad(return, bind) with `bind :: (a -> m b) -> (m a -> m b)` and `(>>=) = flip bind`, but that’s pretty infeasible. : )



On Thu, Dec 11, 2014 at 3:30 PM, Edward Kmett <ekmett@gmail.com> wrote:

My sentiments are very similiar here.

I find myself a weak -1 on this, because "bind" has the flipped semantics to many folks, joinMap is ugly and far longer than the alternative, (=<<) already exists, it becomes a fresh way to confuse users with monadic syntax, and it takes another precious name from the namespace.

The analogies for fmap and ap strike me as false equivalences, fmap came long before the applicative sugar for (<$>), the same with ap, which long predates (<*>), and which serves canonically as a default definition for it.

-Edward


On Thu, Dec 11, 2014 at 3: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?

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