<div dir="ltr">On Tue, May 10, 2016 at 9:33 PM, Erica Sadun via swift-evolution <span dir="ltr"><<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class=""><br>
> On May 10, 2016, at 6:51 PM, Chris Lattner via swift-evolution <<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>> wrote:<br>
><br>
><br>
>> On May 10, 2016, at 11:48 AM, Chris Lattner <<a href="mailto:clattner@apple.com">clattner@apple.com</a>> wrote:<br>
>><br>
>> Hello Swift community,<br>
>><br>
>> The review of "SE-0041: Updating Protocol Naming Conventions for Conversions" begins now and runs through May 16. The proposal is available here:<br>
>><br>
>> <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0041-conversion-protocol-conventions.md" rel="noreferrer" target="_blank">https://github.com/apple/swift-evolution/blob/master/proposals/0041-conversion-protocol-conventions.md</a><br>
><br>
> Here are comments from someone who preferred to stay anonymous. These are not my own:<br>
><br>
><br>
><br>
><br>
> * What is your evaluation of the proposal?<br>
><br>
> I rather agree with the comments mentioned in the proposal from the Standard Library design team, in that I agree with the basic intention of the proposal, but I’m not convinced about the proposed answer. Specifically:<br>
<br>
<br>
</span>We'd be happy to bikeshed again.<br>
<br>
I think fundamentally our take on this is:<br>
<br>
* We want there to be a standard that expresses the three conversion/initialization styles.<br>
* We feel the system is currently broken. And we want to have a coherent and settled vision in place for 3, even imperfect.<br>
* We're flexible about the naming but it should be (1) Swifty and (2) well grounded in meaning.<br>
<br>
Let me turn the floor over to Matthew here.<br></blockquote><div><br></div><div>Like David Hart and the anonymous reviewer, I agree that the problem is worth solving but the proposed names leave something to be desired. I'd like to offer a minimalist suggestion:</div><div><br></div><div>Initializable -- for what's currently "LiteralConvertible" (and also StringInterpolationConvertible)</div><div>Convertible -- for "StringConvertible" protocols</div><div>Representable -- keep as it is currently</div><div><br></div><div>I agree with others that "Creatable" is a strange term because it's not used anywhere else. Looking at the auto-generated docs for the "LiteralConvertible" protocols, it says that conforming types "can be initialized with" whatever thing is said to be convertible. I think that offers a pretty clear alternative word--namely, "initializable."<br></div><div><br></div><div>I can live with "convertible" being one-way. Not all "convertible" things are like convertible cars. When you convert from one faith to another, for example, some level of finality is intended.</div><div><br></div><div>I can also live with the current usage of the term "representable." In the context of things like "representable values" in floating point types, representability suggests exactness and thus round-trippability.</div><div><br></div><div>(And to use the example in the proposal, a lawyer who represents you well [*] is one that communicates your position to the court. You "input" your position, your lawyer goes to court, and then they "output" your position in legalese to the court. If there's degradation in the quality of the "output," then you've been inadequately represented.)</div><div><br></div><div>[*And, it bears clarifying that your lawyer is considered to represent *you* and not merely *your interests*. If you're the plaintiff in a case and your lawyers says, "My client's entitled to a million dollars!", the court can restate that as "Plaintiff argues that she's entitled to a million dollars."]</div><div><br></div><div><br></div></div></div></div>