|
|
|
|
|
by dazzlefruit
942 days ago
|
|
> 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. And n is fixed at the calling site, right? I wonder if something like "TypeVar, but for a list of type arguments" could solve your problem. What's funny is that this is already kind of implemented in `typing.Concatenate`, but only for function parameters [1], not for type hint parameters. Anyway, I would have written "a well-typed function that concatenates two arbitrary tuples whose size is statically known at the call site". Can't really remove "at the call site" or "statically known" without being ambiguous. Edit: just found out about `TypeVarTuple`. So really we're only missing `concatenate`. [1] https://docs.python.org/3/library/typing.html#typing.Concate... |
|
Yep, and TypeVarTuple should - all the syntax etc. is in place, there is an Unpack operator for TypeVarTuples, allowing you to e.g. append or prepend individual types to a TypeVarTuple. But you can't unpack more than one TypeVarTuple in an expression, it's specifically disallowed - so I can't properly type my function.