[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