On 01/17/2011 09:15 PM, Jonathan M Davis wrote:
On Monday, January 17, 2011 10:59:16 spir wrote:
On 01/17/2011 07:53 PM, Adam Ruppe wrote:
It seems to me that you actually want two separate functions:

repeat("abc", 3) =>   ["abc", "abc", "abc"]

join(repeat("abc", 3)) =>   "abcabcabc"

Would rather see:

repeat("abc", 3) =>  ["abc", "abc", "abc"]
"abc" * 3        =>  "abcabcabc"

Considering that D add the ~ operator for concatenation because + was too
ambiguous (e.g. what should "2" + "3" do?), there's no way that overloading *
for a function in std.algorithm is going to fly. And since we're dealing with
arbitrary range types - not just strings - it definitely isn't going to work. 
Not
to mention, using an operator like that implies that it'sa  basic and important
operation. However, I'm not sure that I've ever had to use such an operation in
my entire life. It needs a normal function, not an overloaded operator.

Right, I understand your point and agree (will change Text's method accordingly when a good name is agreed upon). What about "times"?

I had to use this function rather often (else, wouldn't had bothered with it in Text); string types I know from other languages have it builtin as well, so it certainly is a common need (and as you see Andrei provides it as builtin algo as well).

About arbitrary ranges, is
    repeat([1,2,3], 3)
supposed to produce
    [ [1,2,3] , [1,2,3] , [1,2,3] ]
?

Denis
_________________
vita es estrany
spir.wikidot.com

Reply via email to