[swift-evolution] [Review] SE-0115: Rename Literal Syntax Protocols

Anton Zhilin antonyzhilin at gmail.com
Sat Jul 2 09:39:43 CDT 2016


Matthew Johnson via swift-evolution <swift-evolution at ...> writes:

> >>> protocol From<T> {
> >>>   init(_ from: T)
> >>> }
> >> 
> > With From definition given above, I would define 
IntLiteralConvertible === 
> > From<Int>, BoolLiteralConvertible === From<Bool>, etc. That means, 
if you 
> > conform to From<T> where T is one of Int, Bool, ... then the type 
becomes 
> > "literal convertible".
> 
> But that doesn't capture the semantics of these protocols.  See the 
observations made by the library team
> quoted in the motivation section as well as Dave Abrahams' comments 
quoted in the alternatives section. 
> None of this changes if we get generic protocols.  
> 
> Protocols aren't just about the syntax, they are also about semantics.  
These protocols encode specific
> and important semantics.

But as some of them noted in the discussion, low-level protocols that 
interact with language syntax can focus on syntax entirely. I've not 
seen this point supported by other team members, though.

Personally, I don't see any semantics in LiteralConvertible protocols. 
If a type can be initialized with another type, then we can call it a 
conversion. And I can't imagine any case where e.g. Bool that came from 
a literal should be treated differently from any other Bool.



More information about the swift-evolution mailing list