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

Dave Abrahams dabrahams at apple.com
Tue Jun 28 15:57:45 CDT 2016


on Thu Jun 23 2016, Nate Cook <swift-evolution at swift.org> wrote:

> I like the namespace-based approach to group these protocols together
> and I'm very happy to see some clarification happening in this group
> of protocols. However, I don't think the proposed new names
> communicate what they need to. The names listed in the "Alternatives
> Considered" section do a better job of describing the use and behavior
> of these protocols.
>
> Primarily, the new names read like we're saying that a conforming type
> is a literal, compounding a common existing confusion between literals
> and types that can be initialized with a literal. 

No, it's exactly the opposite, as I keep saying.  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
  }

Everybody's confused about the meaning of the protocol, and doesn't like
the proposed names because they imply exactly the actual meaning of the
protocol, which they misunderstand.

-- 
Dave



More information about the swift-evolution mailing list