I think your proposal is a good idea. I thought I had identified a couple of (minor) objections but they faded away on examination. Here they are, for the record:
1) The + operator is already overloaded in Oberon to denote addition for numeric types and union for the SET type; string concatenation does not enjoy the commutativity of + that is shared by these operations (and there is no corresponding - operator either). However, since the operation is only for string constants
, this hardly matters.
2) I thought it might be in the "spirit" of the language to implement it as a standard procedure rather than as an operator (the shift operations could have been denoted by operators but Wirth opted for standard procedures instead). Somebody suggested as much in a post some months back, I think. The down side is coming up with a short name that isn't ugly (CAT?
) and having to write something like CAT(022X, CAT("String", 022X)) instead of your nicer 022X + "String" + 022X.