>         assert( xml != ei"""<?xml version="1.0"?>
>             <catalog>
>                <book id="bk101" empty="">
>                    <author>\(author)</author>
>                    <title>XML Developer's Guide</title>
>                    <genre>Computer</genre>
>                    <price>44.95</price>
>                    <publish_date>2000-10-01</publish_date>
>                    <description>An in-depth look at creating applications 
> with XML.</description>
>                </book>
>             </catalog>
>             """ )

The idea of auto-stripping whitespaces seemed nice initially, until I realized 
it's not at all clear where the stripped whitespaces end and the included 
whitespaces begin. It's already problematic for you own code (because even 
knowing your own intent doesn't completely overcome the lack of perspective 
this syntax offers), but imagine if it's someone else's. Will you be able to 
figure out what spacing is meant to be a part of the string and which is not? 
Quickly? Easily? Maybe, maybe not. It still won't be readily apparent, because 
there's no point of reference. You're potentially reduced to counting 
whitespaces to figure it out. Brent's proposal elegantly fixes this problem. 
You have a clear point of reference, there's no issue of spaces vs tabs, no 
trying to figure out exactly where the "true" whitespaces are beginning. Like 
was mentioned, it would probably have to be relative to the leading whitespaces 
on the closing delimiter line, but then there's no way to tell visually if 
those are spaces or tabs, or how many there are, AND you have to sort of 
mentally trace an invisible line upwards to "see" how the lines above relate. 
This would drive me crazy. With leading quotes, it's obvious which lines don't 
have included leading whitespaces, and the ones that do have a smaller relative 
distance to what is the "left alignment margin" (so to speak) indicated by the 
quotes.

This feels like we would be making it easier to make mistakes and harder to 
determine actual spacing just to eliminate some extra quotes. I think the 
proposal is the best balance of simplicity and practicality we're going to 
achieve for *short* multi line strings, which is what this proposal is tying to 
address. We can still introduce the """ or heredoc syntaxes for longer blocks 
of text in the future.

Cole
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to