Quick thoughts:<br><br>Isomorphic is a delightful word.<br><br>Initializing has the wrong meaning, I think. If A conforms to BInitializing, that reads to me like you can do B(A), not necessarily A(B). By contrast, BInitializable conveys more clearly the sense that A can be initialized with an argument of type B.<br><div class="gmail_quote"><div dir="ltr">On Wed, Jun 22, 2016 at 13:04 Erica Sadun via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><b>Proposal</b>: <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0041-conversion-protocol-conventions.md" target="_blank">https://github.com/apple/swift-evolution/blob/master/proposals/0041-conversion-protocol-conventions.md</a></div><div><br></div><div><b>Rejection</b>: &quot;The feedback on the proposal was generally positive about the idea of renaming these protocols, but the specific names in the proposal are not well received, and there is no apparent confluence in the community on better names.  The core team prefers discussion to continue -- if/when there is a strong proposal for a better naming approach, we can reconsider renaming these.&quot;</div><div><br></div><div>John McCall: &quot;To be clear, I don&#39;t care about the name.  If you want to rename IntegerLiteralConvertible to IntegerLiteral or whatever, I won&#39;t drag the conversation into the muck again. :)  It&#39;s the design of the requirements that I&#39;m pretty opposed to revisiting.&quot;</div><div><br></div><div><div><span style="font-family:Palatino-Roman"><b>The Problem: </b></span><span style="font-family:Palatino-Roman">This is really the last chance to rationalize this across the language and to evaluate whether other protocol groups should have a core scheme for naming.</span></div></div><div><br></div><div><b>Categories:</b></div><div><div style="font-family:Palatino-Roman"><ul><li>Type I: A protocol for types that can be initialized from specific types or protocols, e.g. created/initialized with strings (a specific type) or created/initialized with floating point numbers (conforming to a protocol). Current examples include &quot;IntegerLiteralConvertible&quot;.</li><li>Type II: A protocol for types that can form a representation which may or may not provide a complete projection (the original may not be recoverable from that representation), e.g. &quot;CustomStringConvertible&quot; and &quot;CustomPlaygroundQuickLookable&quot; both fall into this. </li><li>Type III: A protocol for isomorphism: can be converted to and from a type, e.g. &quot;RawRepresentable&quot;</li></ul></div></div><div><br></div><div><b>Existing Protocols:</b></div><div><b><br></b></div><div><span style="font-family:Palatino-Roman">AbsoluteValuable, AnyCollectionProtocol, AnyObject, ArrayLiteralConvertible, BidirectionalCollection, Collection, BidirectionalIndexable, BinaryFloatingPoint, FloatLiteralConvertible, BitwiseOperations, Boolean, BooleanLiteralConvertible, CVarArg, Collection, Sequence, Comparable, CustomDebugStringConvertible, CustomLeafReflectable, CustomPlaygroundQuickLookable, CustomReflectable, CustomStringConvertible, DictionaryLiteralConvertible, Equatable, ErrorProtocol, ExtendedGraphemeClusterLiteralConvertible, FloatLiteralConvertible, FloatingPoint, IntegerLiteralConvertible, SignedNumber, AbsoluteValuable, Strideable, Hashable, Indexable, IndexableBase, Integer : _Integer, Strideable, IntegerArithmetic : _IntegerArithmetic, Comparable, IntegerLiteralConvertible, IteratorProtocol, LazyCollectionProtocol, LazySequenceProtocol, LazySequenceProtocol, MirrorPath, MutableCollection, Collection, MutableIndexable, NilLiteralConvertible, OptionSet, RawRepresentable, OutputStream, RandomAccessCollection, BidirectionalCollection, RandomAccessIndexable, RangeReplaceableCollection, Collection, RangeReplaceableIndexable, RawRepresentable, Sequence, SetAlgebra, ArrayLiteralConvertible, SignedInteger : _SignedInteger, Integer, SignedNumber, IntegerLiteralConvertible, Streamable, Strideable, StringInterpolationConvertible, StringLiteralConvertible, UnicodeCodec, UnicodeScalarLiteralConvertible, UnsignedInteger : _DisallowMixedSignArithmetic, Integer, _DisallowMixedSignArithmetic : _Integer, _Incrementable, _Integer, CustomStringConvertible, Hashable, IntegerArithmetic, BitwiseOperations, _Incrementable, _IntegerArithmetic, _SequenceWrapper, _SignedInteger : _Integer, SignedNumber</span></div><div><span style="font-family:Palatino-Roman"><br></span></div><div><br></div><div><b>Names (see: <a href="https://pbs.twimg.com/media/Ck8TUt0UkAAX1Im.jpg" target="_blank">https://pbs.twimg.com/media/Ck8TUt0UkAAX1Im.jpg</a>)</b></div><div><b><br></b></div><div>Type I: Initializing</div><div>Type II: Representable</div><div>Type III: Isomorphic</div><div><br></div><div>Here&#39;s a paint brush. Have at it. And keep in mind the API-isms like &quot;use nouns&quot; (e.g. Sequence vs SequenceType) and &quot;ing&quot; (e.g. Initializing vs Initializable)</div><div><br></div><div>-- E</div><div><br></div></div>_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div>