[Python-Dev] very slow compare of recursive objects
Tim Peters
tim.one@comcast.net
Mon, 20 Jan 2003 10:32:50 -0500
[Tim]
>Tuples can't be recursive,
[Guido]
> Oh yes they can be:
>
> >>> L = []
> >>> t = (L, L)
> >>> L.append(L)
> >>>
That's an example of a tuple *containing* a recursive structure; there's
still no way, starting at t, to get back to t. I think mutation is required
for that. Like
L = [None]
t = (L, L)
L[0] = t
Then
t[0]0] is t
and that's what I mean by "recursive tuple" (a tuple that can be reached
from itself).
It's not clear that this matters to the recursion-checker, though. If it
indeed requires mutation to create a recursive tuple in the sense I mean it,
then nesting of tuples alone can't create one. Stick a mutable container
type into the mix, and the recursion-checker will eventually find that.
I expect we want to continue exempting deeply nested tuples, since they come
up in real life (e.g., Python "parse trees" routinely exceed NESTING_LIMIT).