<html><head><style>
body {
        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        padding:1em;
        margin:auto;
        background:#fefefe;
}

h1, h2, h3, h4, h5, h6 {
        font-weight: bold;
}

h1 {
        color: #000000;
        font-size: 28pt;
}

h2 {
        border-bottom: 1px solid #CCCCCC;
        color: #000000;
        font-size: 24px;
}

h3 {
        font-size: 18px;
}

h4 {
        font-size: 16px;
}

h5 {
        font-size: 14px;
}

h6 {
        color: #777777;
        background-color: inherit;
        font-size: 14px;
}

hr {
        height: 0.2em;
        border: 0;
        color: #CCCCCC;
        background-color: #CCCCCC;
    display: inherit;
}

p, blockquote, ul, ol, dl, li, table, pre {
        margin: 15px 0;
}

a, a:visited {
        color: #4183C4;
        background-color: inherit;
        text-decoration: none;
}

#message {
        border-radius: 6px;
        border: 1px solid #ccc;
        display:block;
        width:100%;
        height:60px;
        margin:6px 0px;
}

button, #ws {
        font-size: 12 pt;
        padding: 4px 6px;
        border-radius: 5px;
        border: 1px solid #bbb;
        background-color: #eee;
}

code, pre, #ws, #message {
        font-family: Monaco;
        font-size: 10pt;
        border-radius: 3px;
        background-color: #F8F8F8;
        color: inherit;
}

code {
        border: 1px solid #EAEAEA;
        margin: 0 2px;
        padding: 0 5px;
}

pre {
        border: 1px solid #CCCCCC;
        overflow: auto;
        padding: 4px 8px;
}

pre > code {
        border: 0;
        margin: 0;
        padding: 0;
}

#ws { background-color: #f8f8f8; }


.bloop_markdown table {
border-collapse: collapse;  
font-family: Helvetica, arial, freesans, clean, sans-serif;  
color: rgb(51, 51, 51);  
font-size: 15px; line-height: 25px;
padding: 0; }

.bloop_markdown table tr {
border-top: 1px solid #cccccc;
background-color: white;
margin: 0;
padding: 0; }
     
.bloop_markdown table tr:nth-child(2n) {
background-color: #f8f8f8; }

.bloop_markdown table tr th {
font-weight: bold;
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }

.bloop_markdown table tr td {
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }

.bloop_markdown table tr th :first-child, table tr td :first-child {
margin-top: 0; }

.bloop_markdown table tr th :last-child, table tr td :last-child {
margin-bottom: 0; }

.bloop_markdown blockquote{
  border-left: 4px solid #dddddd;
  padding: 0 15px;
  color: #777777; }
  blockquote > :first-child {
    margin-top: 0; }
  blockquote > :last-child {
    margin-bottom: 0; }

code, pre, #ws, #message {
    word-break: normal;
    word-wrap: normal;
}

hr {
    display: inherit;
}

.bloop_markdown :first-child {
    -webkit-margin-before: 0;
}

code, pre, #ws, #message {
    font-family: Menlo, Consolas, Liberation Mono, Courier, monospace;
}


.send { color:#77bb77; }
.server { color:#7799bb; }
.error { color:#AA0000; }</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class="bloop_markdown"><p>At quick glance I disagree with (4). If your current string would contain something like <code>"\n\n"</code> would you really use another empty line with a single unescaped quote? If you’re not, you’ll end up adding a single <code>\n</code>, but that on the other than would be strange if you add it at the end of the line.</p>

<p>Multi-lined strings should not be abused for adding new lines to the string itself, however I’m fine with allowing single quotes without escaping them. </p>

<p>If we’d really go that path then I still could not format some really long hardcoded text for code readability in a multi lined string, just because of the fact that it will alter my original string by automatically adding new line characters.</p>

<pre><code class="swift">let veryLongString1 = "word word word … word word word"

let veryLongString2 = """word word word  
    word word word
    …
    word word word
    word word word"""
     
// Logically that string should be the same, however during the  
// automatic new lines we'll get this

veryLongString1 == veryLongString2 // =&gt; false
</code></pre>

<p>What has the multi lined string solved here? Nothing.</p>

<p></p></div><div class="bloop_original_html"><style>body{font-family:Helvetica,Arial;font-size:13px}</style><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div> <br> <div id="bloop_sign_1491228363065474048" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">--&nbsp;<br>Adrian Zubarev<br>Sent with Airmail</div></div> <br><p class="airmail_on">Am 3. April 2017 um 16:00:53, Ricardo Parada (<a href="mailto:rparada@mac.com">rparada@mac.com</a>) schrieb:</p> <blockquote type="cite" class="clean_bq"><span><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div></div><div>



<title></title>


What is the purpose of that backslash? &nbsp;It does not feel like
an improvement.&nbsp;
<div class=""><br class=""></div>
<div class="">
<div class="">I think we should focus on:</div>
<div class=""><br class=""></div>
<div class="">1. Looking pretty</div>
<div class="">2. Allow unescaped quote, double quote as well
single/double apostrophe characters&nbsp;</div>
<div class="">3. Allow interpolation&nbsp;</div>
<div class="">4. No need to add the \n character for each
line</div>
<div class="">5. It should have a continuation character</div>
<div class="">6. Keep it simple</div>
<div class=""><br class=""></div>
<div class="">Something like this:</div>
<div class=""><br class=""></div>
<div class="">
<pre class="" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; padding: 16px; overflow: auto; background-color: rgb(247, 247, 247); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: normal;"><code class="" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; padding: 0px; margin: 0px; background-color: transparent; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-break: normal; border: 0px; display: inline; line-height: inherit; word-wrap: normal;">let xml = M"&lt;?xml version="1.0"?&gt;
           "&lt;catalog&gt;
           " &lt;book id="bk101" empty=""&gt;
           "     &lt;author&gt;<font color="#FF2600" class="">\(</font><font color="#0433FF" class="">author</font><font color="#FF2600" class="">)</font>&lt;/author&gt;
           " &lt;/book&gt;
           "&lt;/catalog&gt;</code></pre>
<div class="">Or maybe this:</div>
<div class=""><br class=""></div>
<div class="">
<pre class="" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; margin-top: 0px; margin-bottom: 16px; line-height: 1.45; padding: 16px; overflow: auto; background-color: rgb(247, 247, 247); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-wrap: normal;"><code class="" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; padding: 0px; margin: 0px; background-color: transparent; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; word-break: normal; border: 0px; display: inline; line-height: inherit; word-wrap: normal;">let xml = """&lt;?xml version="1.0"?&gt;
            "&lt;catalog&gt;
            " &lt;book id="bk101" empty=""&gt;
            "     &lt;author&gt;<font color="#FF2600" class="">\(</font><font color="#0433FF" class="">author</font><font color="#FF2600" class="">)</font>&lt;/author&gt;
            " &lt;/book&gt;
            "&lt;/catalog&gt;</code></pre>
<div class="">In the first example the multiline literal is started
with M". &nbsp;In the second example it starts with three double
quotes """. &nbsp;I really have no preference. &nbsp;In both
examples there is no need to have a \ or \n at the end of the
line.</div>
<div class=""><br class=""></div>
<div class="">You can have quote characters in the string,
including double quotes as shown by <font face="Menlo" class="">empty=""</font>. &nbsp;You can have interpolation,
i.e.&nbsp;<font color="#FF2600" class="" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;">\(</font><font color="#0433FF" class="" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;">author</font><font color="#FF2600" class="" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;">)</font>.&nbsp;</div>
<div class=""><br class=""></div>
<div class="">You have a continuation character which helps as a
visual guide and as a marker for the beginning of each line.</div>
</div>
<div class=""><br class=""></div>
<div class="">The multi string literal ends when there are no more
continuation characters.</div>
<div class=""><br class=""></div>
<div class=""><br class=""></div>
<div class=""><br class=""></div>
</div>
<div>
<blockquote type="cite" class="">
<div class="">On Apr 3, 2017, at 3:01 AM, Adrian Zubarev via
swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="bloop_markdown" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(254, 254, 254);">
<p style="margin: 15px 0px; -webkit-margin-before: 0px;" class="">
Hello Swift community,</p>
<p style="margin: 15px 0px;" class="">on Github there is a PR for
this proposal, but I couldn’t find any up to date thread, so I’m
going to start by replying to the last message I found, without the
last content.</p>
<p style="margin: 15px 0px;" class="">I really like where this
proposal is going, and my personal preference are *continuation
quotes*. However the proposed solution is still not perfect enough
for me, because it still lacks of precise control about the
trailing space characters in each line of a multi-line string.</p>
<p style="margin: 15px 0px;" class="">Proposed version looks like
this:</p>
<pre style="margin: 15px 0px; font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(204, 204, 204); overflow: auto; padding: 4px 8px; word-break: normal; word-wrap: normal;" class=""><code class="swift" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 0px; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal; -webkit-margin-before: 0px;">let xml = "&lt;?xml version=\"1.0\"?&gt;
    "&lt;catalog&gt;
    "    &lt;book id=\"bk101\" empty=\"\"&gt;
    "        &lt;author&gt;\(author)&lt;/author&gt;
    "        &lt;title&gt;XML Developer's Guide&lt;/title&gt;
    "        &lt;genre&gt;Computer&lt;/genre&gt;
    "        &lt;price&gt;44.95&lt;/price&gt;
    "        &lt;publish_date&gt;2000-10-01&lt;/publish_date&gt;
    "        &lt;description&gt;An in-depth look at creating applications with XML.&lt;/description&gt;
    "    &lt;/book&gt;
    "&lt;/catalog&gt;
    ""
</code></pre>
<p style="margin: 15px 0px;" class="">I would like to pitch an
enhancement to fix the last tiny part by adding the escaping
character ‘' to the end of each line from 1 to (n - 1) of the
n-lined string. This is similar to what Javascript allows us to do,
except that we also have precise control about the leading space
character through ’"’.</p>
<p style="margin: 15px 0px;" class="">The proposed version will
become this:</p>
<pre style="margin: 15px 0px; font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(204, 204, 204); overflow: auto; padding: 4px 8px; word-break: normal; word-wrap: normal;" class=""><code class="swift" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 0px; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal; -webkit-margin-before: 0px;">let xml = "&lt;?xml version=\"1.0\"?&gt;\   
    "&lt;catalog&gt;\ // If you need you can comment here
    "    &lt;book id=\"bk101\" empty=\"\"&gt;\
    "        &lt;author&gt;\(author)&lt;/author&gt;\
    "        &lt;title&gt;XML Developer's Guide&lt;/title&gt;\
    "        &lt;genre&gt;Computer&lt;/genre&gt;\
    "        &lt;price&gt;44.95&lt;/price&gt;\
    "        &lt;publish_date&gt;2000-10-01&lt;/publish_date&gt;\
    "        &lt;description&gt;An in-depth look at creating applications with XML.&lt;/description&gt;\
    "    &lt;/book&gt;\
    "&lt;/catalog&gt;\
    ""
</code></pre>
<p style="margin: 15px 0px;" class="">Here is another example:</p>
<pre style="margin: 15px 0px; font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 1px solid rgb(204, 204, 204); overflow: auto; padding: 4px 8px; word-break: normal; word-wrap: normal;" class=""><code class="swift" style="font-family: Menlo, Consolas, 'Liberation Mono', Courier, monospace; font-size: 10pt; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; background-color: rgb(248, 248, 248); color: inherit; border: 0px; margin: 0px; padding: 0px; word-break: normal; word-wrap: normal; -webkit-margin-before: 0px;">let multilineString: String = "123__456__\ // indicates there is another part of the string on the next line
                              "__789_____\ // aways starts with `"` and ends with either `\` or `"`
                              "_____0_" // precise control about pre- and post-space-characters

let otherString = "\(someInstance)\ /* only comments are allowed in between */ "text \(someOtherInstance) text"
</code></pre>
<p style="margin: 15px 0px;" class="">This is simply<span class="Apple-converted-space">&nbsp;</span><strong style="-webkit-margin-before: 0px;" class="">continuation
quotes</strong><span class="Apple-converted-space">&nbsp;</span>combined with<span class="Apple-converted-space">&nbsp;</span><strong class="">backslash
concatenation</strong>.</p>
<div style="margin: 15px 0px;" class=""><br class="webkit-block-placeholder"></div>
</div>
<div class="bloop_original_html" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(254, 254, 254);">
<div class="bloop_markdown">
<div style="margin: 15px 0px; -webkit-margin-before: 0px;" class=""><br class="webkit-block-placeholder"></div>
</div>
<div class="bloop_original_html">
<div id="bloop_customfont" style="font-family: Helvetica, Arial; font-size: 13px; margin: 0px;" class=""><br class=""></div>
<br class="">
<div id="bloop_sign_1491202043170386944" class="bloop_sign">
<div style="font-family: helvetica, arial; font-size: 13px;" class="">--&nbsp;<br class="">
Adrian Zubarev<br class="">
Sent with Airmail</div>
</div>
</div>
<div class="bloop_markdown">
<div style="margin: 15px 0px; -webkit-margin-before: 0px;" class=""><br class="webkit-block-placeholder"></div>
</div>
</div>
<div class="bloop_markdown" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(254, 254, 254);">
<div style="margin: 15px 0px; -webkit-margin-before: 0px;" class=""><br class="webkit-block-placeholder"></div>
</div>
<span style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(254, 254, 254); float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(254, 254, 254);" class="">
<span style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(254, 254, 254); float: none; display: inline !important;" class="">swift-evolution mailing list</span><br style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(254, 254, 254);" class="">
<a href="mailto:swift-evolution@swift.org" style="color: rgb(65, 131, 196); background-color: rgb(254, 254, 254); text-decoration: none; font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">swift-evolution@swift.org</a><br style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(254, 254, 254);" class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="color: rgb(65, 131, 196); background-color: rgb(254, 254, 254); text-decoration: none; font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(254, 254, 254);" class=""></div>
</blockquote>
</div>
<br class=""></div>


</div></div></span></blockquote></div><div class="bloop_markdown"><p></p></div></body></html>