I see a comment that Rtm prefers + to join, but how are they different? I thought maybe join strips nils in some cases, but I can't actually find an example to prove that.
Well, besides the obvious difference that '+ works for numbers and strings.
I'm surprised that join doesn't work for strings. The heading "Using + to concatenate sequences is a lose" suggested to me that the alternative (join) would work for all sequences, not just lists.
That's a good point. However, when a function like 'string concatenates strings like 'join concatenates lists, it's most consistent for (string) to be "", right? You can't have (join) return "" as long as it returns nil, unless you also make nil and "" the same value.
Now, I'd trade bits of consistency for the sake of significant convenience, but I don't think there's significant convenience at stake here. I never use 'join or 'string for concatenation in a place I couldn't use + nil or + "", which are just as convenient. If we did that instead, we'd have a smaller vocabulary with less room for second-guessing the design. So IMO, 'join may well be useless, and the main value of 'string is that, when used with one argument, it plays well with ssyntax and 'map.
Not entirely sure, but I think they're synonyms. Paul Graham initially liked + for concatenating sequences but later decided he prefers join [1]. Rtm still likes +.