[swift-evolution] [Review] SE-0023 API Design Guidelines
Dave Abrahams
dabrahams at apple.com
Sun Jan 24 13:20:30 CST 2016
on Sat Jan 23 2016, Joe Groff <swift-evolution at swift.org> wrote:
>> On Jan 23, 2016, at 1:23 PM, Dave Abrahams via swift-evolution
>> <swift-evolution at swift.org> wrote:
>>
>>
>> on Sat Jan 23 2016, Thorsten Seitz
>
>> <swift-evolution at swift.org
>> <mailto:swift-evolution at swift.org>>
>> wrote:
>>
>>> I never liked the convention of distinguishing between interfaces and
>>> classes by prepending an „I“ for interfaces in other languages and I’m
>>> not overly fond fond of the suffix „Type“ currently used in Swift
>>> protocols.
>>> This is the same as prefixing (or suffixing) variable names with
>>> something to express their type, e.g. `String sName` or `int iLength`.
>>> That’s what we have type information for.
>>>
>>> And because of the substitution principle it should make no difference
>>> whether I have a protocol or a struct or class. What is a
>>> `CollectionType` vs. a `Collection`? Is it the type of a `Collection`,
>>> i.e. a meta type?
>>
>> Yes, that was the original rationale, FWIW.
>>
>>> Why not simply `Collection` if it describes what a collection is? I
>>> guess its often more the problem of finding a suitable different name
>>> for the implementation
>>
>> Yeah, often we'd have a collision with an associated type.
>>
>>> and that’s why I sometimes wonder whether it
>>> might make sense to give protocols their own namespace…
>>
>> Can't do that as long as we have protocols that can function as concrete
>> types (existentials).
>
> You've noted before that this is a recipe for confusion, especially
> if/when we ever extend existentials to cover protocols with Self
> and/or associated type constraints. It's probably a better long-term
> direction for the protocol type to be something you ask for (as
> "any<Protocol>", maybe), and for protocols to live in a separate
> namespace.
Nice idea, but I'm not it will work:
protocol P { }
class P { }
struct X<T: P> { } // which P?
anyhow, I guess more discussion of that idea should be in a separate
thread.
--
-Dave
More information about the swift-evolution
mailing list