> On Dec 23, 2015, at 8:34 AM, Chris Lattner via swift-evolution 
> <[email protected]> wrote:
> 
> 
>> On Dec 23, 2015, at 2:08 AM, Brent Royal-Gordon via swift-evolution 
>> <[email protected]> wrote:
>> 
>>>> I did see that point made earlier in the thread, but I’m not convinced 
>>>> that design for googleability is the right ordering of priorities. 
>>> +1
>>> Choosing cryptic names because it's easier to find information about them 
>>> is bad. With this argument, you can not only fight against removal of the 
>>> NextStep prefix (Data, Number, Date… try googling that), but also demand 
>>> that the language should be spelled "Sweeft", and that framework functions 
>>> should loose their meaningful names and get called by a UUID instead.
>> 
>> I don't think the `associated` keyword is cryptic; I think it's *specific*. 
>> "Associated type" is the name of this feature. We tried bikeshedding it 
>> upthread, and didn't come up with anything better. If you're going to use a 
>> keyword related to the name "associated type", that leaves you with 
>> `associated`, `type`, or `associatedtype`. 
> 
> Of the three, I prefer “associatedtype”.
> 
> We already have precedent for concatenated names in a very related sort of 
> decl (typealias), and this will be a real keyword.
> 
> 
> Here are how I see the pros and cons I see of these options:
> 
> type:
> - Overly short, particularly given the infrequency of these decls, the common 
> case of “type Element” will be weird floating around given its lack of weight.

I don’t understand how that’s different from, e.g.

        init()

or

        var x: Int

which will both show up in protocol declarations.  Could you explain?

> - Overly unclear.  This is a very specific kind of type, not a generic type 
> you can use in other contexts.

Could you explain what you mean by this?  If anything I see this exactly 
opposite.  It’s a requirement for a type, *any* kind of type, be it struct, 
class, enum, non-nominal type such as tuple or function, whatever—so long as it 
satisfies the constraints placed it.  That’s about as generic as one can get.

> - Unfortunate keyword.  Among other things it would make writing compilers in 
> swift a pain :-), but again, people would want to use this in other places.

I don’t see how this would actually cause a problem if it was contextual.  
There’s no reason one couldn’t name a property “type” if one wanted to.  These 
two things will appear in *very* different contexts, so I don’t think humans 
would have a hard time de-contextualizing.

> associated:
> - Vacuous: doesn’t mean anything on its own:  “associated Element”.

Heh, now that I look at that, provided we can be consistent about only 
UpperCamelCasing type names it actually might be sufficiently communicative.  
Just a thought.

> - Somewhat unfortunate as a keyword, but much less so than type.
> 
> associatedtype:
> - Clean in context: “associatedtype Element”
> - Obvious you wouldn’t want to use it in another context.
> - Googlable, unambiguous
> 
> -Chris
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

-Dave



_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to