A tuple of a given type cannot be used anywhere because it's labels can be named. For example, one would expect the following to work:
import sequtils, tables
echo zip(@[1,2,3,4],@[1,4,9,16]).toTable
However, the toTable method requires a sequence of tuple[key: A, value: B], while sequtils.zip returns a sequence of tuple[a: int, b: int]. This is unexpected, especially since most other languages only care about the order of the type parameters.
I propose that having a return of a named tuple be deprecated (proc (): tuple[a: Type]), and tuples passed as parameters have their labels apply to that method only, so that the names are just aliases for tup[1], tup[1], etc.
edit: Maybe not deprecate named tuples as returns, they are useful as documentation or with type inference.