I think we agree—the GoF book is a bunch of UML detailing C++ implementations. I didn’t mean that, I just meant the basic patterns (like having singletons, facades, or adapters). The linguistic turn is that “pattern” has come to mean something a little more vague and high level than “algorithm”. So making things iterable or enforcing a singleton is a pattern (lower case), whereas quicksort is an algorithm.
There’s a Python book that lays things out this way (no idea if the book’s any good w.r.t. Python, but it’s the right idea of what patterns are):
http://python-3-patterns-idioms-test.readthedocs.io/en/latest/PatternConcept.html
I hadn’t heard the term “duck typing” before, but it sounds like a C++ concept and template instantiation, especially in the sense that there’s no interface being defined in the object language that these iterables have to extend or declare that they implement. Of course, no typing, so no need for template parameters—everything acts like a template parameter for free! The trick in the video was wrapping a rabbit in a duck outfit.
We should talk about returning raw tuples and what not. The advice I’ve seen is to prefer returning class instances initially implemented with direct exposure of member variables then later encapsulating these if need be with these special ___
methods.