std.gregorian contribution

Simen kjaeraas simen.kjaras at gmail.com
Mon May 17 11:00:41 PDT 2010


Andrei Alexandrescu <SeeWebsiteForEmail at erdani.org> wrote:

> I have two unrelated suggestions about unjoin.
>
> First, you may want to follow the model set by splitter() instead of  
> split() when defining unjoin(). This is because split() allocates memory  
> whereas splitter splits lazily so it doesn't need to. If you do want  
> split(), just call array(splitter()).
>
> Second, there is an ambiguity between splitting using a string as  
> separator and splitting using a set of characters as separator. This  
> could be solved by simply using different names:
>
> string str = ...;
> foreach (splitByOneOf(str, "; ")) { ... }
> foreach (splitter(str, "; ")) { ... }
>
> First look splits by one of the two, whereas the second splits by the  
> exact string "; ".
>
> An idea I am toying with is to factor things out into the data types.  
> After all, if I'm splitting by "one of" an element in a set of elements,  
> that should be reflected in the set's type. For example:
>
> foreach (splitter(str, either(';', ' ')) { ... }
> foreach (splitter(str, "; ")) { ... }
>
> or, using a more general notion of a set:
>
> foreach (splitter(str, set(';', ' ')) { ... }

D could use a set type, and this is a very nice way to specify these
different parameters.

votes = -~votes;

-- 
Simen


More information about the Digitalmars-d mailing list