<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">This is already rejected for not being clear enough. We can express <i class=""><b class="">some</b></i> Double values using integer literal syntax, because integers are a subset of floating point numbers but not the other way around. Representable seems to imply it should work both ways.<div class=""><br class=""></div><div class="">*LiteralConvertible protocols indicate that we can <b class="">always</b> use the syntax of the given kind[1] of literal to create an instance of that type. This operation is inherently one way as Literal is a concept that is defined in the context of the source code under compilation. </div><div class=""><br class=""></div><div class="">Compiler <b class="">converts</b> a literal (a stream of characters in the source code that adhere to the syntax of a given kind of literal) to an instance of some type. This is where the original <b class="">Convertible</b> comes from. </div><div class=""><br class=""></div><div class="">As you see this is all about compiler and language syntax. That is why the new round of suggested names focus on <b class="">Compiler</b> and <b class="">Syntax</b> words to keep the domain clear. It is unfortunate that it does not fit the API guidelines protocol naming conventions.</div><div class=""><br class=""></div><div class="">[1] I am avoiding the use of word “type” here to avoid confusion.</div><div class=""> <br class=""><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jun 26, 2016, at 10:06 AM, T.J. Usiyan <<a href="mailto:griotspeak@gmail.com" class="">griotspeak@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">what about `*LiteralRepresentable`?</div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Sun, Jun 26, 2016 at 11:11 AM, Hooman Mehr via swift-evolution <span dir="ltr" class=""><<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div class="">Syntax by itself is not clear enough. Appending Initializable makes it too long. </div><div class=""><br class=""></div><div class="">We can replace Syntax with LiteralSyntax to clarify. Then we will have:</div><div class=""><br class=""></div><div class="">extension MyNumber: LiteralSyntax.Integer, LiteralSyntax.Float { /*…*/ }<br class=""><div class=""><br class=""></div><div class="">Better yet, to address the valid concern of doing something so different and hack-like for literals, how about simply <b class="">renaming *LiteralConvertible protocols to *LiteralSyntax or LiteralSyntax*.</b> The key is the <b class="">LiteralSyntax</b> phrase which (I think) is the clearest short phrase we can get to communicate the intent. Look: It is right there in the title!</div><div class=""><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class=""><div class="h5"><div class="">On Jun 23, 2016, at 8:31 AM, Matthew Johnson via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>> wrote:</div><br class=""></div></div><div class=""><div class=""><div class="h5"><div style="word-wrap:break-word" class="">I have completed a draft of a proposal to move the `*LiteralConvertible` protocols into a `Syntax` namespace as suggested by the standard library team. <div class=""><br class=""></div><div class="">The draft can be found here: <a href="https://gist.github.com/anandabits/99dad2305d310874bd613b72b14eee56" target="_blank" class="">https://gist.github.com/anandabits/99dad2305d310874bd613b72b14eee56</a>. It is also included below.</div><div class=""><br class=""></div><div class="">I will submit a PR in the next day or two after incorporating any feedback.</div><div class=""><br class=""></div><div class="">-Matthew</div><div class=""><br class=""></div><div class=""><h1 style="font-size:37px;line-height:42px;margin-top:42px;margin-bottom:21px;font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif" class="">Literal Syntax Protocols</h1><ul style="margin-top:21px;margin-bottom:21px;padding-left:1.5em;color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;font-size:15px" class=""><li style="font-size:17px" class="">Proposal: <a style="color:rgb(13,110,161);text-decoration:none" class="">SE-NNNN</a></li><li style="font-size:17px" class="">Author: <a href="https://github.com/anandabits" style="color:rgb(13,110,161);text-decoration:none" target="_blank" class="">Matthew Johnson</a></li><li style="font-size:17px" class="">Status: <strong style="line-height:1" class="">Awaiting review</strong></li><li style="font-size:17px" class="">Review manager: TBD</li></ul><h2 style="color:rgb(17,17,17);font-size:27px;line-height:42px;margin-top:42px;margin-bottom:21px;font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif" class="">Introduction</h2><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">This proposal renames the <code style="line-height:1" class="">*LiteralConvertible</code> protocols to <code style="line-height:1" class="">Syntax.*Literal</code>. </p><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">Swift-evolution thread: <a href="http://thread.gmane.org/gmane.comp.lang.swift.evolution/21290" style="color:rgb(13,110,161);text-decoration:none" target="_blank" class="">Revisiting SE–0041 Names</a></p><h2 style="color:rgb(17,17,17);font-size:27px;line-height:42px;margin-top:42px;margin-bottom:21px;font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif" class="">Motivation</h2><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">The standard library currently has protocols that use the term <code style="line-height:1" class="">Convertible</code> in two different ways. The <code style="line-height:1" class="">*LiteralConvertible</code> protocols use the meaning of converting <em style="line-height:1" class="">from</em> a literal. The <code style="line-height:1" class="">Custom(Debug)StringConvertible</code> protocols use the meaning of converting <em style="line-height:1" class="">to</em> a <code style="line-height:1" class="">String</code>. This causes confusion for developers attempting to name their own protocols following the precedence established by the standard library.</p><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">Further, the standard library team has observed:</p><pre style="margin-top:21px;margin-bottom:21px;color:rgb(17,17,17);font-size:15px" class=""><code style="line-height:inherit;display:block;padding:0.5em;color:rgb(51,51,51);background-color:rgb(248,248,248);min-height:auto;background-position:initial initial;background-repeat:initial initial" class="">The <span style="color:rgb(221,17,68)" class="">"literal"</span> protocols are <span style="font-weight:bold" class="">not</span> <span style="font-weight:bold" class="">about</span> conversion, they are <span style="font-weight:bold" class="">about</span> adopting a certain syntax provided <span style="font-weight:bold" class="">by</span> <span style="font-weight:bold" class="">the</span> language. <span style="color:rgb(221,17,68)" class="">"Convertible"</span> <span style="font-weight:bold" class="">in</span> <span style="font-weight:bold" class="">the</span> <span class="">name</span> <span style="font-weight:bold" class="">is</span> a red herring: a type can't be convertible <span style="font-weight:bold" class="">from</span> an <span class="">integer</span> literal because there <span style="font-weight:bold" class="">is</span> no <span style="color:rgb(221,17,68)" class="">"IntegerLiteral"</span> entity <span style="font-weight:bold" class="">in</span> <span style="font-weight:bold" class="">the</span> type system. The literal *becomes* typed <span style="font-weight:bold" class="">as</span> <span style="font-weight:bold" class="">the</span> corresponding literal type (e.g., Int <span style="font-weight:bold" class="">or</span> String), <span style="font-weight:bold" class="">and</span> <span style="font-weight:bold" class="">as</span> far <span style="font-weight:bold" class="">as</span> <span style="font-weight:bold" class="">the</span> user <span style="font-weight:bold" class="">at</span> <span style="font-weight:bold" class="">the</span> call site <span style="font-weight:bold" class="">is</span> concerned, there <span style="font-weight:bold" class="">is</span> no visible conversion (even <span style="font-weight:bold" class="">if</span> one <span style="font-weight:bold" class="">is</span> happening <span style="font-weight:bold" class="">behind</span> <span style="font-weight:bold" class="">the</span> scenes)
</code></pre><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class=""><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0041-conversion-protocol-conventions.md" style="color:rgb(13,110,161);text-decoration:none" target="_blank" class="">An earlier proposal</a> was intended to address the first problem by introducing strong naming conventions for three kinds of conversion protocols (<em style="line-height:1" class="">from</em>, <em style="line-height:1" class="">to</em>, and <em style="line-height:1" class="">bidirectional</em>). The review highlighted the difficulity in establishing conventions that everyone is happy with. This proposal takes a different approach to solving the problem that originally inspired that proposal while also solving the awkwardness of the current names described by the standard library team.</p><h2 style="color:rgb(17,17,17);font-size:27px;line-height:42px;margin-top:42px;margin-bottom:21px;font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif" class="">Proposed solution</h2><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">This proposal addresses both problems by introducing a <code style="line-height:1" class="">Syntax</code> “namespace” and moving the <code style="line-height:1" class="">*LiteralConvertible</code> protocols into that “namespace” while also renaming them. The proposal <strong style="line-height:1" class="">does not</strong> make any changes to the requirements of the protocols.</p><h2 style="color:rgb(17,17,17);font-size:27px;line-height:42px;margin-top:42px;margin-bottom:21px;font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif" class="">Detailed design</h2><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">All of the <code style="line-height:1" class="">*LiteralConvertible</code> protocols will receive new <code style="line-height:1" class="">*Literal</code> names inside a <code style="line-height:1" class="">Syntax</code>namespace. </p><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">This namespace will initially be implemented using a case-less <code style="line-height:1" class="">enum</code>, but this detail may change in the future if submodules or namespaces are added to Swift. Swift does not currently allow protocols to be declared inside the scope of a type. In order to work around this limitation the protocols themselves will be declared using underscore-prefixed names internal to the standard library. Typealiases inside the <code style="line-height:1" class="">Syntax</code> enum will declare the names intended to be visible to user code.</p><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">This proposal does not change any requirements of these protocols. All requirements of all <code style="line-height:1" class="">*LiteralConvertible</code> protocols will remain exactly the same.</p><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">The following protocol declarations and names:</p><pre style="margin-top:21px;margin-bottom:21px;color:rgb(17,17,17);font-size:15px" class=""><code style="line-height:inherit;display:block;padding:0.5em;color:rgb(51,51,51);background-color:rgb(248,248,248);min-height:auto;background-position:initial initial;background-repeat:initial initial" class=""><span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">NilLiteralConvertible</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">BooleanLiteralConvertible</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">FloatLiteralConvertible</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">IntegerLiteralConvertible</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">UnicodeScalarLiteralConvertible</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">ExtendedGraphemeClusterConvertible</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">StringLiteralLiteralConvertible</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">StringInterpolationLiteralConvertible</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">ArrayLiteralConvertible</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">DictionaryLiteralConvertible</span> </span>{ ... }</code></pre><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">Are changed as follows:</p><pre style="margin-top:21px;margin-bottom:21px;color:rgb(17,17,17);font-size:15px" class=""><code style="line-height:inherit;display:block;padding:0.5em;color:rgb(51,51,51);background-color:rgb(248,248,248);min-height:auto;background-position:initial initial;background-repeat:initial initial" class="">
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">_NilLiteralSyntax</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">_BooleanLiteralSyntax</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">_IntegerLiteralSyntax</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">_FloatLiteralSyntax</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">_UnicodeScalarLiteralSyntax</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">_ExtendedGraphemeClusterLiteralSyntax</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">_StringLiteralLiteralSyntax</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">_StringInterpolationLiteralSyntax</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">_ArrayLiteralSyntax</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span class=""><span style="font-weight:bold" class="">protocol</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">_DictionaryLiteralSyntax</span> </span>{ ... }
<span style="font-weight:bold" class="">public</span> <span style="color:rgb(153,153,136);font-style:italic" class="">/* closed */</span> <span class=""><span style="font-weight:bold" class="">enum</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">Syntax</span> </span>{
<span style="font-weight:bold" class="">public</span> <span style="font-weight:bold" class="">typealias</span> <span class="">NilLiteral</span> = _NilLiteralSyntax
<span style="font-weight:bold" class="">public</span> <span style="font-weight:bold" class="">typealias</span> <span class="">BooleanLiteral</span> = _BooleanLiteralSyntax
<span style="font-weight:bold" class="">public</span> <span style="font-weight:bold" class="">typealias</span> <span class="">IntegerLiteral</span> = _IntegerLiteralSyntax
<span style="font-weight:bold" class="">public</span> <span style="font-weight:bold" class="">typealias</span> <span class="">FloatLiteral</span> = _FloatLiteralSyntax
<span style="font-weight:bold" class="">public</span> <span style="font-weight:bold" class="">typealias</span> <span class="">UnicodeScalarLiteral</span> = _UnicodeScalarLiteralSyntax
<span style="font-weight:bold" class="">public</span> <span style="font-weight:bold" class="">typealias</span> <span class="">ExtendedGraphemeClusterLiteral</span> = _ExtendedGraphemeClusterLiteralSyntax
<span style="font-weight:bold" class="">public</span> <span style="font-weight:bold" class="">typealias</span> <span class="">StringLiteralLiteral</span> = _StringLiteralLiteralSyntax
<span style="font-weight:bold" class="">public</span> <span style="font-weight:bold" class="">typealias</span> <span class="">StringInterplolationLiteral</span> = _StringInterpolationLiteralSyntax
<span style="font-weight:bold" class="">public</span> <span style="font-weight:bold" class="">typealias</span> <span class="">ArrayrLiteral</span> = _ArrayLiteralSyntax
<span style="font-weight:bold" class="">public</span> <span style="font-weight:bold" class="">typealias</span> <span class="">DictionaryLiteral</span> = _DictionaryLiteralSyntax
}</code></pre><h2 style="color:rgb(17,17,17);font-size:27px;line-height:42px;margin-top:42px;margin-bottom:21px;font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif" class="">Impact on existing code</h2><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">All code that references any of the <code style="line-height:1" class="">*LiteralConvertible</code> protocols will need to be modified to reference the protocol via the new <code style="line-height:1" class="">Syntax.*Literal</code> name.</p><h2 style="color:rgb(17,17,17);font-size:27px;line-height:42px;margin-top:42px;margin-bottom:21px;font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif" class="">Alternatives considered</h2><h3 style="color:rgb(17,17,17);margin:21px 0px;font-size:20px;line-height:21px;font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif" class="">Protocol names</h3><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">Several commenters have suggested that the names in this proposal are confusing at the site of use:</p><pre style="margin-top:21px;margin-bottom:21px;color:rgb(17,17,17);font-size:15px" class=""><code style="line-height:inherit;display:block;padding:0.5em;color:rgb(51,51,51);background-color:rgb(248,248,248);min-height:auto;background-position:initial initial;background-repeat:initial initial" class=""><span class=""><span style="font-weight:bold" class="">struct</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">Foo</span>: <span style="color:rgb(68,85,136);font-weight:bold" class="">Syntax</span>.<span style="color:rgb(68,85,136);font-weight:bold" class="">IntegerLiteral</span> </span>{ ... }</code></pre><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">One alternative naming scheme would emphasize the semantic of initializing the type with a literal:</p><pre style="margin-top:21px;margin-bottom:21px;color:rgb(17,17,17);font-size:15px" class=""><code style="line-height:inherit;display:block;padding:0.5em;color:rgb(51,51,51);background-color:rgb(248,248,248);min-height:auto;background-position:initial initial;background-repeat:initial initial" class=""><span class=""><span style="font-weight:bold" class="">struct</span> <span style="color:rgb(68,85,136);font-weight:bold" class="">Foo</span>: <span style="color:rgb(68,85,136);font-weight:bold" class="">Syntax</span>.<span style="color:rgb(68,85,136);font-weight:bold" class="">IntegerLiteralInitializable</span> </span>{ ... }</code></pre><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">Discussion of the pros and cons of the proposed and alternative naming schemes is encouraged. The core team should feel free to make a final decision on the exact naming scheme used if they choose to accept this proposal.</p><h3 style="color:rgb(17,17,17);margin:21px 0px;font-size:20px;line-height:21px;font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif" class="">Previous proposal</h3><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">This proposal is a follow up to <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0041-conversion-protocol-conventions.md" style="color:rgb(13,110,161);text-decoration:none" target="_blank" class="">Updating Protocol Naming Conventions for Conversions</a>. Many related alternatives were explored during the discussion and review of that proposal.</p><h2 style="color:rgb(17,17,17);font-size:27px;line-height:42px;margin-top:42px;margin-bottom:21px;font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif" class="">Acknowledgements</h2><p style="color:rgb(17,17,17);font-family:'Helvetica Neue',Helvetica,Arial,Verdana,sans-serif;word-wrap:break-word;margin:1.3125em 0px;font-size:1.1429em;line-height:1.3125em" class="">The design described in this proposal was suggested by Dave Abrahams, Dmitri Gribenko, and Maxim Moiseev.</p></div></div></div></div>_______________________________________________<span class=""><br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""></span></div></blockquote></div><br class=""></div></div></div></div><br class="">_______________________________________________<br class="">
swift-evolution mailing list<br class="">
<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="">
<br class=""></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></div></div></body></html>