[swift-evolution] [Proposal Draft] Literal Syntax Protocols

Greg Titus greg at omnigroup.com
Tue Jun 28 22:49:50 CDT 2016


I’m honestly shocked that y’all (that I’ve seen) haven’t come up with Syntax.LiterallyIntegerLiteral yet.



> On Jun 28, 2016, at 8:39 PM, Sean Heber via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Arg. Dang it!
> 
> Syntax.ExpressibleAsIntegerLiteral
> Syntax.FromIntegerLiteral
> Syntax.IntegerLiteralManifestation
> Syntax.GhostOfIntegerLiteral
> Syntax.FormerlyKnownAsIntegerLiteral
> 
> l8r
> Sean 
> 
> Sent from my iPad
> 
> On Jun 28, 2016, at 10:29 PM, Erica Sadun <erica at ericasadun.com> wrote:
> 
>>> On Jun 28, 2016, at 9:21 PM, Sean Heber <sean at fifthace.com> wrote:
>>> 
>>> IntegerLiteralExpressable?
>>> 
>>> Does Apple employ any philosophers? We might need one...
>>> 
>>> l8r
>>> Sean
>>> 
>> 
>> Aaaaaand...welcome to last night.
>> 
>> The problem being, that people see this and think that the type can be
>> expressed as an integer literal, not that an integer literal can be expressing
>> the type. (I won't even bring up other associations for that word since
>> most of the subscribers of this mailing list have not been nursing mothers
>> although some may be familiar with the technique.)
>> 
>> -- E
>> 
>> 
>>> 
>>>> On Jun 28, 2016, at 10:02 PM, Erica Sadun <erica at ericasadun.com> wrote:
>>>> 
>>>> 
>>>>> On Jun 28, 2016, at 8:08 PM, Sean Heber <sean at fifthace.com> wrote:
>>>>> 
>>>>> What about..
>>>>> 
>>>>> Syntax.ConvertibleFromIntegerLiteral
>>>>> etc..
>>>> 
>>>> I like it but Dave has already expressed that this isn't conversion. This
>>>> is something distinct, magical, and more importantly, ineffable.
>>>> 
>>>> He says it means an instance of the type can be written as a literal, and
>>>> not converted from a literal. He writes:
>>>> 
>>>>> Conformance to this protocol does *not* mean you can initialize the type with
>>>>> a literal. 
>>>>> 
>>>>> Proof:
>>>>> 
>>>>> func f<T: IntegerLiteralConvertible>() -> T {
>>>>> return T(integerLiteral: 43) // Error
>>>>> return T(43)                 // Also an Error
>>>>> }
>>>>> 
>>>>> It means an instance of the type can be *written* as a literal:
>>>>> 
>>>>> func f<T: IntegerLiteralConvertible>() -> T {
>>>>> return 43   // OK
>>>>> }
>>>>>> 
>>>> 
>>>> So we're looking at something more like:
>>>> 
>>>> Syntax.AnIntegerLiteralCanBeSubstitutedForThisTypeAndTheCompilerWillNotBarf
>>>> 
>>>> -- E
>>>> 
>>>> 
>> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution



More information about the swift-evolution mailing list