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.


Andrei

Reply via email to