join() is special indeed, but what about the semantics we talked about last year (?)...
join(seq, sep) := seq + sep + seq + sep + ... + seq[n]
This should fit all uses of join() (accept maybe os.path.join).
This is much more general than the current definition -- e.g. join(range(5), 0) would yield 10. I'm not too keen on widening the definition this much.
How about naming the beast concat() with sep defaulting to '' to avoid the problems with os.path.join() ?!
Hm... if we can stick to the string semantics this would be okay. But we'd lose the symmetry of split/join. Note that string.join has a default separator of ' ' to roughly match the default behavoir of split.
--Guido van Rossum (home page: http://www.python.org/%7Eguido/)