Enhancing Java String Literals Round 2

Cay Horstmann cay.horstmann at sjsu.edu
Fri Jan 4 17:45:02 UTC 2019

As raw strings are revisited, I hope that their design leaves room for 
other string handling, in particular interpolation, but perhaps also 
formatting, foreign syntax checking, etc.

Looking at Jim's submission [1], I was encouraged by seeing the R"..." 
syntax with a prefix that leaves an opening for evolution.

Using currently unused escapes is another good idea. For example, one 
could envision using \$ for interpolation. Again, room for evolution.

Is one mechanism for evolution better than the other? The prefix 
mechanism can allow programmers and library authors to provide all sorts 
of implementations, as we know from Scala, JavaScript, etc. That's good, 
but we also know that they don't compose well. For example, what if you 
want interpolation in an otherwise raw string?

Adding escapes probably presumes that any new string features are part 
of the language, not a library. That's been more in line with the 
previous attempt to define raw strings. I think it is a good idea to 
give this some thought, even though it looks unfamiliar at first.

As a minor technical matter, using \+ and \- as rawness delimiters 
leaves open the question about raw strings containing \-. Some other 
mechanism could be used as an alternative, e.g starting with \====== 
(with one more = than the longest such sequence in the raw run) and 
ending with the same number of =. Or any of a number of other 
well-understood schemes.

var regex = "\+"\.{3-}"\-";
var myNameInABox = "\======
| Cay |
var aNameInQuotes = "\"\${name}\"";
    // String interpolation (maybe in the future)



[1] http://cr.openjdk.java.net/~jlaskey/Strings/RTL2/index.html


Cay S. Horstmann | http://horstmann.com | mailto:cay at horstmann.com

More information about the amber-spec-observers mailing list