100% bikeshed topic: DictionaryLiteral

There exists in the standard library a type `DictionaryLiteral` that deserves naming re-consideration before we declare ABI Stability, because it’s confusingly misnamed, being neither a Dictionary (it doesn’t provide key-based lookup of values) nor a Literal.

Instead, it’s just an immutable collection of key-value pairs you can create _from_ a literal.

I’m canvassing for opinions on what it ought to be called. Some suggestions so far:

- `AssociationCollection`: Following the term of art from some other languages. Slightly obscure-sounding to developers not already familiar. Also “association” and “associative” are confusingly similar, which brings back the is-this-a-dictionary problem.
- `KeyValueCollection`: Problematic because key-value comes up in a totally different context in Cocoa.
- `PairCollection`: “Pair” is kinda nondescript.
- Do nothing. It’s not so bad.

Agreed so far, and I'd like to add CollectionOfPairs to the list.

Some more fun facts about this type:
- Besides Dictionary, it's the only other type in the standard library that is expressible by a dictionary literal
- Unlike Dictionary, it *does* maintain the order of its pairs
- Unlike Dictionary (part 2), it *doesn't* require the first element of the pairs to be Hashable

Nate

···

On Jan 8, 2018, at 6:29 PM, Ben Cohen via swift-evolution <swift-evolution@swift.org> wrote:

The old name can live on indefinitely via a typealias (which has no ABI consequences, so could be retired at a later date once everyone has had plenty of time to address the deprecation warnings). Removing it as not carrying its weight (and instead using `[(Key,Value)]`, which is basically what it’s a wrapper for) is probably off the table for source stability reasons.

Any further thoughts welcome.

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution