If we use triple quotes (i.e. """) at the beginning of the multi line string 
literal and again at the end, it seems very unlikely that the heredoc notation 
would be needed. 

I would simplify and remove the heredoc alternative from the proposal. 

Also, for those of us who like the continuation quotes, I think the 
continuation quotes could be optional. For example this:

let html = """<html>
    ". <body>
    "     <h1>\(title)<h1>
    ".    <p class="fancy">A paragraph.<p>
    ". </body>
    "</html>
    """

would be equivalent to:


let html = """<html>
    . <body>
         <h1>\(title)<h1>
    .    <p class="fancy">A paragraph.<p>
    . </body>
    </html>
    """

What do you think?



> On May 5, 2016, at 2:13 PM, L Mihalkovic via swift-evolution 
> <[email protected]> wrote:
> 
> 
>> On May 5, 2016, at 12:30 PM, Michael Peternell via swift-evolution 
>> <[email protected]> wrote:
>> 
>> Hi,
>> 
>> it's not a secret that I'm not a big fan of the proposal. The third draft 
>> doesn't change this and it's unlikely that any future draft will, because 
>> for me, the problem are the continuation quotes, and for Brent it seems like 
>> they are a must-have-feature (correct me if I'm wrong.)
>> 
>> I just wanted to say that I have drafted a proposal that solves the issues 
>> that I have encountered. (It's here: 
>> https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160425/016219.html
>>  )
>> - it allows pasting text as-is
>> - it allows creating string literals where leading space on each line is 
>> stripped (while keeping indentation differences intact)
>> - it allows creating string literals where leading space on each line is not 
>> stripped
>> - optionally it allows strings to be raw, without any string interpolation 
>> or escaping whatsoever
>> - in none of the literals you have to write "<book id=\"bk101\" 
>> empty=\"\">", you can just write """<book id="bk101" empty="">""". This also 
>> lets you copy&paste text out of the program source and back into a HTML file.
>> 
>> It had the idea that maybe the motivation behind continuation quotes is to 
>> make using multiline strings harder to use; in order to discourage their use 
>> at all. Two points to consider:
>> - people who don't want to use MSL will not, even if you throw Python-like 
>> """multi-line strings""" at them.
>> - people who want to use them do it, even if there is no MSL available. I 
>> saw that in Objective-C, with multiple lines of HTML and CSS wrapped into a 
>> big multiline objc-string-literal and thrown at a WebView. I could send the 
>> literal to the console before sending it to the WebView and it was basically 
>> unreadable. I eventually refactored it to put the thing into a file (also 
>> because the HTML grew in space, and the inline-literal became impractical)
>> - my most important point: if someone uses multiple lines of HTML or CSS or 
>> XML directly within the code, I want it to look okay. I don't want an MSL 
>> feature that is so unwieldy that people voluntarily not use it; it would be 
>> better to have no MSL at all.
>> 
>> I don't think that multiline strings are a must-have feature for a language, 
>> because they are not used very often. (I included an example of a good use 
>> case in my proposal.) I acknowledge that in many programming cases it would 
>> be better to not put a huge pile of text directly into the source, but to 
>> load the text from a file at runtime. But even when these MSL are misused, I 
>> prefer to read a """python multiline string""" over a 
>> "concatenated\n"+"Java\n"+"String".
>> 
>> -Michael
> 
> 
> Hi Michael. hope this helps  
> https://gist.github.com/lmihalkovic/11f2b1b23b78bbb9cbf0292ffc480b3d
> 
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to