Andrei Alexandrescu:

> We have std.algorithm.splitter which splits a range into components 
> without allocating a new array.

In Python (and D) a commonly useful function is split() that splits a string 
according to whitespace, and split(str) that splits it according to a string. 
There is a similar function in std.string.

Then Python misses a lot a function that does the same of split/split(str) but 
yields its results lazily, this can save a large amount of memory if the string 
to split is very large.

Such split/xsplit (or splitter) are very useful for arrays too, and generic 
ranges (lazy too).


> Is there an interest in joiner(), the corresponding function for join() 
> that joins elements of a range in conjunction with a separator without 
> allocating a new array?

A join, that does the opposite of split is very useful, especially if strings 
are an immutable data type (and it's useful for other arrays too, etc).

Is your joiner like chain(), that is it gives a lazy iterable as chain(), but 
also contains the separator?

A join when used on strings is often used to build a string that later is 
stored somewhere or often printed. If your printing functions accept lazy 
sequences of strings too, for example given by joiner, then I think joiner() 
can be useful. For generic arrays I can't see immediate usages.

Bye,
bearophile

Reply via email to