[Python-ideas] Make map() better

Antoine Rozo antoine.rozo at gmail.com
Fri Sep 15 10:31:54 EDT 2017


> And for that matter, why isn't append/extend a global? I can add things
to lots of different collections. lists, sets, strings...

No, append is relevant when the collection is ordered. You update
dictionnaries, you make unions of sets, and you append lists to another
ones.
These operations are specific for each datatype.

And not all iterables need operations to append new elements.
But you can chain generic iterables (with itertools.chain).

2017-09-15 16:21 GMT+02:00 Jason H <jhihn at gmx.com>:

> I'm going to respond to a few replies with this one.
>
> > > Because join apply on a string, and strings are defined by the str
> class,
> > > not by a specific protocol (unlike iterables).
> >
> > Join actually used to only be available as a function (string.join in
> > Python 2.x). However, nobody could ever remember whether the parameter
> > order was "join this series of strings with this separator" or "use
> > this separator to join this series of strings" - it didn't have the
> > same kind of natural ordering that map and filter did thanks to the
> > old "apply" builtin ("apply this function to these arguments" - while
> > the apply builtin itself is no longer around, the "callable(*args,
> > **kwds)" ordering that corresponds to the map() and filter() argument
> > ordering lives on).
> >
> > This meant that when string.join became a builtin interface, it became
> > a string method since:
> >
> > 1. Strings are one of the few Python APIs that *aren't* protocol
> > centric - they're so heavily intertwined with the interpreter
> > implementation, that most folks don't even try to emulate or even
> > subclass them*.
> > 2. As a string method, it's obvious what the right order has to be
> > (separator first, since it's the separator that has the method)
>
> Your second point is aligned with my initial point. Providing it as a
> class method further removes the ambiguity of what the right order is
> because of there is only one parameter: the function.
>
> As for the comment about Python being better designed, I never implied it
> wasn't. Python is my favorite. However as someone who uses multiple
> languages, and JS has risen in popularity, and it's not going anywhere, I
> seek a more peaceful co-existence with this language - a language that was
> designed in 10 days in 1995. In a covert way, by embracing some of the
> not-too-terrible syntax you make it easier for JS programmers to feel at
> home in Python, and adopt it. I see this only has promoting a peaceful
> coexistence.
>
> Another pain point is python uses [].append() and JS uses [].join() Having
> a wrapper for append would be helpful.
>
> And for that matter, why isn't append/extend a global? I can add things to
> lots of different collections. lists, sets, strings...
>
>
>
>
>


-- 
Antoine Rozo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170915/e29ff13c/attachment.html>


More information about the Python-ideas mailing list