Received on the -comments list.

> Begin forwarded message:
> 
> From: Fred Curts <fred.cu...@icloud.com>
> Subject: Raw string literals: learning from Swift 
> Date: January 11, 2019 at 2:15:10 PM EST
> To: amber-spec-comme...@openjdk.java.net
> 
> With Swift 5 recently adding custom String delimiters (also called raw string 
> literals), I find the design of Swift's string literals very compelling, more 
> so than other languages I've studied.
> 
> https://github.com/apple/swift-evolution/blob/master/proposals/0200-raw-string-escaping.md
>  
> <https://github.com/apple/swift-evolution/blob/master/proposals/0200-raw-string-escaping.md>
>  (implemented in Swift 5)
> https://github.com/apple/swift-evolution/blob/master/proposals/0168-multi-line-string-literals.md
>  
> <https://github.com/apple/swift-evolution/blob/master/proposals/0168-multi-line-string-literals.md>
>  (implemented in Swift 4)
> https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID286
>  
> <https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID286>
> 
> Here is what I like about Swift's string literals. In no particular order:
> 
> 1. Multi-line and raw string literals are orthogonal features.
> (Try adding a literal dollar sign to a Kotlin multi-line string literal and 
> you'll know what I mean.)
> 
> 2. Custom string delimiters solve all the use cases for raw string literals 
> but nevertheless support escape sequences and interpolation expressions.
> I've personally come across this need many times when trying to build larger 
> regular expressions or code snippets out of smaller ones.
> 
> 3. Escape sequences and interpolation expressions use the same escape 
> character.
> This simplifies matters considerably, in particular once custom string 
> delimiters are added to the mix.
> (Having multiple custom escape characters would be too much.)
> 
> 4. Multi-line string literals are delimited by triple double quotes.
> This makes them visually compatible with but heavier than single-line string 
> literals, which seems like a good fit.
> Distinct delimiters for single-line and multi-line string literals seem like 
> a win for both humans and parsers.
> For example, it's easy to tell where the missing end quote of a single-line 
> string literal belongs.
> 
> 5. It's easy to control line indentation of multi-line string literals and 
> leading and trailing whitespace of the entire string.
> All of this is settled at compile time.
> 
> 6. Opening and closing delimiters of multi-line string literals must be on 
> their own line.
> This avoids headaches with edge cases such as string literals ending with two 
> double quotes.
> 
> 7. Multi-line string literals with custom string delimiters can contain 
> arbitrarily long sequences of double quotes.
> 
> I hope I've convinced you that the design of Swift's string literals is worth 
> a closer look.
> 
> -Fred

Reply via email to