> On Jun 22, 2016, at 10:09 AM, Matthew Johnson <[email protected]> wrote:
> 
>> 
>> On Jun 22, 2016, at 10:59 AM, John McCall <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> 
>>> On Jun 22, 2016, at 8:17 AM, Matthew Johnson via swift-evolution 
>>> <[email protected] <mailto:[email protected]>> wrote:
>>> 
>>>> Rationalizing base conversion protocol names. I personally don't have the 
>>>> heart to try to re-address the "LiteralConvertible" protocol naming thing 
>>>> again but this would be the last chance to do anything about getting this 
>>>> issue addressed.
>>> Given the vast amount of bike shedding that has already happened around 
>>> this topic, I don’t think there is a solution that everyone will be happy 
>>> with.  It is also unclear (to me at least) what solution might be 
>>> acceptable to the core team.  
>> 
>> To be clear, I don't care about the name.  If you want to rename 
>> IntegerLiteralConvertible to IntegerLiteral or whatever, I won't drag the 
>> conversation into the muck again. :)  It's the design of the requirements 
>> that I'm pretty opposed to revisiting.
> 
> This is orthogonal to the discussion that happened in your thread, definitely 
> no discussion of any changes to the requirements. :)
> 
> We are discussing this proposal: 
> https://github.com/apple/swift-evolution/blob/master/proposals/0041-conversion-protocol-conventions.md
>  
> <https://github.com/apple/swift-evolution/blob/master/proposals/0041-conversion-protocol-conventions.md>
>  and specifically the use of the `Convertible` suffix for both the 
> `*LiteralConvertible` protocols and the `Custom(Debug)StringConvertible` 
> protocols where the conversion runs in opposite directions.
> 
> The core team decision was:
> 
> "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."


We identified three categories:

* 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 "IntegerLiteralConvertible".
* 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. "CustomStringConvertible" and 
"CustomPlaygroundQuickLookable" both fall into this. 
* A protocol for isomorphism: can be converted to and from a type, e.g. 
"RawRepresentable"

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.

-- E

p.s. 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
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to