> wfdc (should we call you something which is not a random-looking string of 
> consonants?)

wfdc is fine.

> it might help if you could give examples of this functionality from other 
> languages or classes. What do they call the method?

https://clojuredocs.org/clojure.core/assoc

https://immutable-js.com/docs/v4.0.0/set()/

http://swannodette.github.io/mori/#assoc

https://hackage.haskell.org/package/lens-5.1/docs/Control-Lens-Operators.html#v:.-126-

https://hackage.haskell.org/package/containers-0.6.5.1/docs/Data-Sequence.html#update

What about 'update' or 'set'?

> what if index assignment was an expression? [...] Now that I have seen this 
> syntax, I want it!!!

Interesting idea. Perhaps we can discuss it further.

------- Original Message -------

On Monday, March 14th, 2022 at 8:38 AM, Steven D'Aprano <st...@pearwood.info> 
wrote:

> On Fri, Mar 11, 2022 at 01:38:57AM +0000, Rob Cliffe via Python-ideas wrote:
>
> > This could cause confusion because str.replace() has a completely
> >
> > different API.
>
> The old "painter.draw()" versus "gun_slinger.draw()" problem.
>
> It does exist, but it's not generally a major problem.
>
> > And indeed if a replace method were added to tuples, a fair case could
> >
> > be made for it having the same API, viz.
> >
> > replace(old, new, count=-1)
>
> A reasonable suggestion. Does replace change items according to their
>
> position, or their value?
>
> Perhaps a better name would help.
>
> wfdc (should we call you something which is not a random-looking string
>
> of consonants?) it might help if you could give examples of this
>
> functionality from other languages or classes. What do they call the
>
> method?
>
> It would be nice to have a better API for this function. I have used it
>
> many times, for strings, lists and tuples, it is really a generate
>
> sequence operation:
>
> * make a copy of the sequence, replacing the item at position p with a
>
> new value;
>
> We can do it with type-specific expressions:
>
> seq[:p] + [value] + seq[p+1:]
>
> seq[:p] + (value,) + seq[p+1:]
>
> string[:p] + "c" + string[p+1:]
>
> but there is no good, type-agnostic way to easily do it.
>
> Wacky thought: what if index assignment was an expression?
>
> function(arg, seq[p]=value, another_arg)
>
> would pass a copy of seq with the item at p replaced by value. That
>
> would work with slices as well:
>
> seq[a:b] = values
>
> Now that I have seen this syntax, I want it!!!
>
> (It is not clear to me if this would be compatible to the existing
>
> `setitem API.)
>
> > Whereas your suggestion can be written as a simple 1-liner, as you
> >
> > demonstrate. So there is no strong need for a new method for it.
>
> Sure, not all one-liners need to be built-in. But some do.
>
> --
>
> Steve
>
> _______________________________________________
>
> Python-ideas mailing list -- python-ideas@python.org
>
> To unsubscribe send an email to python-ideas-le...@python.org
>
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
>
> Message archived at 
> https://mail.python.org/archives/list/python-ideas@python.org/message/HKYHO35W5M3LKUGUZ6MRYVVEIKUQ5XHC/
>
> Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/R3GVWUZFQEMDY45FDKL536IXI7WX4A34/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to