http://qs321.pair.com?node_id=11121126


in reply to Re^7: Split tab-separated file into separate files, based on column name ( Operator overloading )
in thread Split tab-separated file into separate files, based on column name

A good example for overloading are set operations, because the logic is "compatible".
  • X * Y intersection
  • X + Y join
  • X - Y difference
  • - X complement

I don't see how the logic is compatible, unary - as complement means X - Y is different from X + (-Y). And there's just no relation between * and + anymore. At least with + for concatenation (which I already don't like much), you can have STRING * 3 to be equivalent to STRING + STRING + STRING.

And actually now that I think of it, the best operator to overload to append to a file is .=. With the dot you have both the append and string semantic, and the = makes it ok for the operation to have an effect on the left operand. And it makes chaining more consistent:
file("path") .= "First string" . "Second string";