python で下の recursive 関数を見せられたときはびっくりした。

def mrng(*args):
     head, tail = args[0], args[1:]
     if type(head) in [int, long, float]: head=range(head)
     elif isinstance(head, tuple): head=range(*head)
     # for 2.3-ism, we don't use generator expression. be patient...
     if tail:
         for i in head:
             for j in mrng(*tail):
                 if isinstance(j, tuple):
                     yield (i,)+j
                 else:
                     yield (i, j)
     else:
         for i in head:
             yield i

print [x for x in mrng(2,3)]
結果:[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]

python を使うならば、GoF のパターンよりも、上の recursive 呼び出しの
パターンを覚えるほうが先だ。しかし、これに GoF のようなパターン名を付
ける意味もないだろう。

この意味で python でのデザイン・パターンに本当に意味があるのか疑問視し
ている