See

https://sourcegraph.com/search?q=context:global+lang:python+%5C%5B%5Cs*:%5Cs*%28i%7Cj%7Ck%7Cind%7Cindex%29%5Cs*%5C%5D%5Cs*%5C%2B%5Cs*%5C%28.*%5C%2C%5C%29%5Cs*%5C%2B%5Cs*%5B%5Cw%5C.%5D%2B%5C%5B%5Cs*%28i%7Cj%7Ck%7Cind%7Cindex%29%5Cs*%5C%2B%5Cs*1%5Cs*:%5Cs*%5C%5D&patternType=regexp

and

https://sourcegraph.com/search?q=context:global+lang:python+%3D%5Cs*list%5C%28%5B%5Cw%5C.%5D%2B%5C%29%5Cs*%5Cw%2B%5C%5B%5Cw%2B%5C%5D%5Cs*%3D%5Cs*%5B%5Cw%5C.%5D%2B%5Cs*%5B%5Cw%5C.%5D%2B%5Cs*%3D%5Cs*tuple%5C%28%5Cw%2B%5C%29&patternType=regexp

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

On Sunday, March 13th, 2022 at 1:55 AM, Stephen J. Turnbull 
<stephenjturnb...@gmail.com> wrote:

> Game theorist here.
>
> wfdc via Python-ideas writes:
>
> > Do you see why it's useful to have immutability?
>
> Sure, it's potentially hashable. But I can't recall ever finding that
>
> useful in working with matrix games (loosely speaking, I mean games
>
> with a finite set of players, each with a finite strategy space).
>
> I've used (subclasses of) tuple for strategy profiles, but I always
>
> wanted more additional attributes than just 'replace' (thus
>
> subclasses), and I call it "deviate" (usually) or "disturbance" (when
>
> computing perfect or proper equilibria; of course those implicate the
>
> mixed extension, which complicates thing, and also they involve
>
> changing all the non-interior strategies simultaneously). Really
>
> curious to hear enough about your use case to understand why adding
>
> this method to tuple is so much preferable to using a list (which is
>
> what I do when calculating best replies in an abstract matrix game, eg
>
> toy examples for introductory classes) or some class based on dict,
>
> list, or tuple (when the game is a model of some social phenomenon and
>
> I want to access various summaries of performance "at" a profile).
>
> > > This could cause confusion because str.replace() has a completely
>
> > > different API.
>
> > We're talking about tuples here, not strings.
>
> You are, and you have every right to. I want to talk about immutable
>
> sequences, and that's fine, too.
>
> The point is that str and tuples are both immutable sequences, and
>
> both "replace at index" and "replace value" make sense for all
>
> sequences. Of course mutable sequences already have the usual
>
> indexing and slicing APIs for replacement, so this would be immutables
>
> only. BTW, bytes.replace has the same signature as str.replace.
>
> It's true that namedtuple has a replace method with a different
>
> signature, but that signature relates to namedtuple as a (general)
>
> mapping, not as a sequence (which, although it's a special case of
>
> mapping, is sufficiently important to have two builtin
>
> implementations).
>
> > Saying that a method's API differs for a completely different type,
>
> > especially when such a difference would be expected given the
>
> > difference in types, is not a valid objection.
>
> True. I wouldn't expect the replace method on ints to be the same as
>
> the replace method on tuples. I would expect the replace method on
>
> immutable sequences to be consistent across subtypes. I don't yet see
>
> a reason why "replace value" wouldn't be at least as useful "replace
>
> at index". And in fact "replace value" is plausible for list, as
>
> well, with that signature.
>
> Based on the precedent set by other immutable sequences, I'm firmly -1
>
> on the name "replace" for "replace at". I'm -1 on adding it to tuple
>
> with any name, but I could be convinced otherwise based on systematic
>
> evidence that it's broadly useful, such as a survey of the stdlib.
>
> 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/IJ2NBULRFTVCFQWU2ZE6KC5MWWB3ZYOM/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to