[swift-evolution] [Review] SE-0115: Rename Literal Syntax Protocols
Anton Zhilin
antonyzhilin at gmail.com
Sat Jul 2 09:10:50 CDT 2016
> >Anton Zhilin via swift-evolution <swift-evolution at ...> writes:
> > -1 from me. I suggest to wait until we get generic protocols
> > in Swift 4, then we can use the following:
> >
> > protocol From<T> {
> > init(_ from: T)
> > }
>
> I'm not sure this feature would be relevant in the case of literals. It
would definitely require something other than just From. What specific
design would you propose (assuming generic protocols) to replace the
protocols impacted by this proposal?
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".
>From name and external label are discussable.
I'd also note that although the two proposals are not orthogonal, they do
not strictly conflict. I don't find it too bad if current renaming is
applied, and later the whole convertibles system is overhauled.
It's not globally important, but I've just invented a solution for
NilLiteralConvertible. We can make nil a value of type Nil:
enum Nil { case nil } // nil keyword is a macro for Nil.nil
And then From<Nil> will replace NilLiteralConvertible.
More information about the swift-evolution
mailing list