repeat

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Jan 17 11:57:00 PST 2011


On 1/17/11 1:53 PM, Tomek Sowiński wrote:
> Andrei Alexandrescu napisał:
>
>> std.range has a function repeat that repeats one value forever. For
>> example, repeat(42) is an infinite range containing 42, 42, 42,...
>>
>> The same module also has a function replicate that repeats one value a
>> specific number of times. In fact, replicate can be expressed as an
>> overload of repeat, so that's what I just did (not committed yet):
>> repeat(42, 100) repeats 42 one hundred times, repeat(42) repeats 42
>> forever. I'll put replicate on the deprecation chute.
>>
>> So far so good. Now, string has its own repeat. repeat("abc", 2) returns
>> the string "abcabc".
>>
>> I want to generalize the functionality in string's repeat and move it
>> outside std.string. There is an obvious semantic clash here. If you say
>> repeat("abc", 3) did you mean one string "abcabcabc" or three strings
>> "abc", "abc", and "abc"?
>>
>> So we need distinct names for the functions. One repeats one value, the
>> other repeats a range. Moreover, I'm thinking sometimes you want to
>> repeat a range lazily, i.e. instead of producing "abcabc" just return a
>> range that looks like it.
>>
>> Ideas for a good naming scheme are welcome.
>
> Overload cycle and call it a day?

cycle(r, n) already has a meaning: cycle r for a maximum total of n 
elements.

Andrei


More information about the Digitalmars-d mailing list