> > > 4. "Aren't tuples redundant?" > > > To my mind, the "can act as dictionary key" argument is a red > > herring. Tuples and lists may technically be almost the same > > thing, but I find I hardly ever need to ponder whether I should > > use a tuple or a list. Tuples are structures and lists are > > containers. > > They're not structures the way a C programmer thinks of a struct or a pascal > programmer thinks of a record. That doesn't matter; I'd like to assume that we want to teach students who don't already have a preconceived notion of a Pascal record or C struct. > Do you have a better way of justifying their existence to novices who > haven't reached the zen? It's a nontrivial pedagogical problem in my > experience as well. (yes, this is a better topic for edu-sig than for > python-dev). I have a feeling that introducing optional static typing would help here, because it clarifies the concept. For example, these two have the same type, [int]: (the length is part of the value) [3, 100] [5, 6, 7] On the other hand, these two have different types: (3, 100) # (int, int) (5, 6, 7) # (int, int, int) If we start mixing types, we may get [3, "wow"] # [any]; or perhaps [int|str] (3, "wow") # (int, str) We can then explain that we might have informal names for the parts, and we can use these as local variable names. This is borrowed from ABC, which did at least *some* user testing on issues like this: count, value = t t = count, value (ABC used a different assignment syntax; it would be: PUT t IN count, value PUT count, value IN t I am still friends with the librarian who was taught ABC as a guinea pig.) However, ABC was a statically typed language in the sense of Haskell: there were no declarations but the types were inferenced from initializations and operators. Maybe that *does* make a difference. Also, its tuples were completely unlike sequences: they didn't have indexing or slicing. There were no tuples of lengths 1 or 0. --Guido van Rossum (home page: http://www.python.org/~guido/)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4