I'd like to distinguish between concrete types and more abstract ones like protocols. A suffix like "Type" is best what I can think of (now).
There is at least one thread which discusses the use of protocols with associated types as (abstract) generic types.
let collection: CollectionType<Element == Int> = [1, 3]
So a differentiation between concrete and abstract types is preferable in my opinion.
This could also be a language feature rather than a convention.
Am 30.01.2016 um 10:53 schrieb Brent Royal-Gordon via swift-evolution <firstname.lastname@example.org>:
I still don’t see why we need a suffix at all, what is unclear about the CollectionType protocol simply being called Collection instead?
They're attractive nuisances. Someone wants an integer type, sees Integer, tries to use it, and suddenly they're getting weird errors about Self and associated object requirements. Or they want a boolean variable, see Boolean, and suddenly their one-bit value is wrapped in a 40-byte protocol witness. Nobody is going to mistake Integerlike or Booleanlike for a concrete type and use it accidentally.
swift-evolution mailing list