5 ms·
> Tuples are already fixed size by nature, so adding a redundant "fixed-size" in that description was confusing. No, you can type variable-length tuples in Pyt
by Timon3 3y ago
> Tuples are already fixed size by nature, so adding a redundant "fixed-size" in that description was confusing.
No, you can type variable-length tuples in Python. A variable int tuple, for example, can be typed as Tuple[int, ...].
You can't concatenate two variable-length tuples, which makes sense - where would the cutoff be? But you should absolutely be able to concatenate two fixed-size tuples, and it's very limiting that you can't.
- Izkata 3y ago> A variable int tuple, for example, can be typed as Tuple[int, ...]. That's a type that matches tuples of any length, not a variable-length tuple. The size of a tuple can't be changed. A variable-length tuple doesn't even really make sense, what you'd want there is a list. > You can't concatenate two variable-length tuples, which makes sense - where would the cutoff be? But you should absolutely be able to concatenate two fixed-size tuples, and it's very limiting that you can't. This whole statement doesn't make sense. I'm assuming you're still talking about type definitions and not actually tuples.
- Timon3 3y ago> That's a type that matches tuples of any length, not a variable-length tuple. A tuple with a type that matches variable lengths of tuples is a variable-length tuple for that piece of code. You're free to show me some official definitions that proves this wording false, but until then it's useless nitpicking. Though you should probably take that up with Guido, who also calls them variable-length tuples: https://github.com/python/typing/issues/30 https://github.com/python/typing/issues/30 > This whole statement doesn't make sense. I'm assuming you're still talking about type definitions and not actually tuples. The statement makes perfect sense, thank you. If you have trouble understanding my messages without me repeating the whole definition every time, maybe just skip them.
- OrderlyTiamat 3y agoI think they've interpreted "variable length tuple" as "a tuple whose length can change", not "a tuple whose length could be one of multiple options". The former is of course not possible with tuples being immutable, which is why they're talking about lists.
- Timon3 3y agoYeah, that seems likely. I'm not sure how to express the concept aside from the name I've seen used in the community (and my many subsequent explanations), considering I was explicitly talking about typing.
- OrderlyTiamat 3y agoI don't know either. Since the alternative interpretation is a contradiction in terms, you'd think this name would cover the intended meaning. Maybe something like "unknown length tuple"? chatgpt suggested "arbitrary-length" or "undetermined-length" as synonyms, that could be a more easily understood expression perhaps.
- Timon3 3y agoThose are good suggestions, thanks!
- dazzlefruit 3y agoYou mean that the tuples' size is statically known at the calling site, while your message could be interpreted as the size being statically known in the callee. I think this is clearer. The statement "arbitrary fixed-size tuples" sounded a bit like "an immutable mutable variable". It doesn't really say what's arbitrary about the tuples and in what context the size is fixed.
- Timon3 3y agoConsidering the opposite is called a "variable-length tuple", and I wanted to express that I'm talking about arbitrary tuples with non-variable length, what wording would have made this clearer?
- dazzlefruit 3y agoWhat's missing is in which context the tuple's length is variable, and in which context it is fixed. You can have a tuple size fixed everywhere (because the callee sets it) or a tuple size fixed at each call (and propagated to the callee statically). "Arbitrary" doesn't really help because it could refer to the elements' values, to their types, or to the tuple's length. Also "arbitrary" and "variable-length" sound like synonyms to me. Guido might use some expressions in the context of Python steering discussions but that doesn't make them less obscure for the rest of us who read C++ docs every day instead.
- Timon3 3y ago> What's missing is in which context the tuple's length is variable, and in which context it is fixed. Simple example: a function has a parameter whose type is "variable-length tuple of int". You can pass any tuple in that is known to have 0..n elements, all of type int. What would you have me call that, other than the name I've seen used in discussions on this feature? > "Arbitrary" doesn't really help because it could refer to the elements' values, to their types, or to the tuple's length. Read it as (arbitary (fixed-size tuples)). It was meant to forgo answers describing functions with known tuple sizes.