[swift-evolution] [Proposal Draft] Literal Syntax Protocols
dabrahams at apple.com
Fri Jul 1 15:35:25 CDT 2016
on Fri Jul 01 2016, Erica Sadun <erica-AT-ericasadun.com> wrote:
> The best way to pass the Dave Test is to ask him directly, for example:
> Do you think the stdlib team would be okay with a naming scheme like
> Syntax.Literal.ArrayProtocol, Syntax.Literal.IntegerProtocol, etc. We think
> this produces a clear description of the conformant role and one that is unlikely to be
> misinterpreted. It may read less fluently but it's also less subject
> to confusing users.
No. IMO Putting “Protocol” in the name just adds redundant type
information that doesn't help readability.
> This naming scheme uses the Syntax namespacing, and creates a Literal
> subspace. Each protocol is named as "XXXXProtocol". This introduction
> a distinction between "This is/can be used as an integer literal" and
> "Conforming to this protocol ensures that an instance of the type can
> be written as an integer literal".
> The problem with earlier approximations was that people saw
> "Syntax.IntegerLiteralXXX" and thought the typed could be substituted
> into expressions where an integer literal was used, and not that an
> integer literal could be be used to write an instance of the type.
> So what do (and your team) think of this idea?
I think if `Syntax.IntegerLiteral` is actually unclear then the best
cure is `ExpressibleAsIntegerLiteral` (no namespace needed). None of
the other suggestions I've seen describe what the protocol means as well
as that. I've asked Matthew to update the proposal accordingly.
> -- Adrian (and Erica)
>> On Jul 1, 2016, at 2:08 AM, Adrian Zubarev via swift-evolution <swift-evolution at swift.org> wrote:
>> We haven’t pass the dave test yet? :D
>> Still curious what he’d say about Syntax.Literal.*Protocol
>> One more question:
>> What can the namespace Syntax could be used for except for literals, any idea? (I have no clue.)
More information about the swift-evolution