On Thursday, 2 June 2016 at 13:11:10 UTC, Steven Schveighoffer
wrote:
On 6/1/16 6:31 AM, Marc Schütz wrote:
I believe everything that does only concatenation will work
correctly.
That's why joiner() is one of those algorithms that should
accept
strings directly without going through any decoding (but it
may need to
recode the joining element itself, of course).
This means that a string is a range. What is it a range of? If
you want to make it a range of code units, I think you will
lose that battle.
No, I don't want to make string a range of anything, I want to
provide an additional overload for joiner() that accepts a
const(char)[], and returns a range of chars.
The remark about the joining element is that
["abc", "xyz"].joiner(","d)
should convert ","d to "," first, to match the element type of
the elements. But this is purely a convenience; it can also be
pushed to the user.
If you want to special-case joiner for strings, that's always
possible.
Yes, that's what I want. Sorry if it wasn't clear.
Or string could be changed to be a range of dchar struct
explicitly. Then at least joiner makes sense, and I can
reasonably explain why it behaves the way it does.
-Steve