> On Jan 8, 2018, at 4:29 PM, Ben Cohen via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> 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.


I think the best solution by far would be to provide an `extension Array: 
ExpressibleByDictionaryLiteral where Element == (Key, Value)` conformance. 
Besides the name, `DictionaryLiteral` basically has the same semantics as 
`Array`, but an impoverished subset of its functionality; using `Array` would 
reduce the standard library's surface area *and* improve the usability of code 
which currently uses `DictionaryLiteral`.

The problem is that this isn't currently expressible in the type system. If we 
can, I would actually support including some kind of unprincipled private hack 
so we could say `where Element: _AnyTupleOfTwo`. It seems like enough of a win, 
in both surface area and functionality, to justify a little compiler weirdness. 
(And we don't need to test for `_AnyTupleOfTwo` conformance at runtime, so I 
don't think it's a problem if `is` and `as?` don't work.)

-- 
Brent Royal-Gordon
Architechies

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

Reply via email to