Python での join() は StringBuffer の代替と考えると、str.join(list) が自然なのかも

ここまで書いて思ったんだけど、StringBuffer 相当の機能がない Python にとっては、join がその代替なのかもしれない。

つまりだな、Python の str.join(list) は Ruby の Array#join(str) 相当ではなくて、String#<< 相当なんじゃないか、という新しい仮説を提唱してみる。

## Python の str.join() は
s = ''.join(['A', 'B', 'C'])
## Ruby の String#<< に相当?
s = ''; s << 'A' << 'B' << 'C'

そう考えると、join() が文字列のメソッドであることが、なんか自然に思えてきた (separator? なにそれ?)。

でも str.join() が StringBuffer や String#<< 相当だとすると、やはり list 内の要素を自動的に str に変換してくれない今の仕様はブサイクに感じる。