Jonathan M Davis:
> 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.
I think D has used the ~ operator to do that, despite the + is much more common
for this operation and the ~ character is not present on some keyboards,
because the + is normally meant to be a commutative op, while the array/string
concatenation is not commutative (3+5==5+3 but "ab"~"cd"!="cd"~"ab"). In the
case of * for string/array multiplication it's associative, commutative,
distributive and it has both identity and zero elements, so I don't think there
are the same problems.
> However, I'm not sure that I've ever had to use such an operation in
> my entire life.
This little Python2 program shows a normal usage of the string multiplication:
n = 6
s = "+---" * n + "+"
print s
for i in xrange(5):
print "| " * n + "|"
print s
It prints:
+---+---+---+---+---+---+
| | | | | | |
+---+---+---+---+---+---+
| | | | | | |
+---+---+---+---+---+---+
| | | | | | |
+---+---+---+---+---+---+
| | | | | | |
+---+---+---+---+---+---+
| | | | | | |
+---+---+---+---+---+---+
Bye,
bearophile