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

Sean Heber sean at fifthace.com
Tue Jun 28 22:39:15 CDT 2016


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
>>> 
>>> 
> 


More information about the swift-evolution mailing list