How about renaming DictionaryLiteral to Row, TabularRow or TableRow?

I think most developers are familiar with the idea that a table row contains 
multiple columns (in specific order), and each column has a name and a value 
(key/value).

Some other name suggestions:
- Record (kind of an old name for table rows)
- SortedDictionary (sorted dictionaries are missing on the standard library, 
and could give a chance to make this type more widely used)


Thanks,
Eneko 




> On Jan 9, 2018, at 9:19 AM, Nate Cook via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> On Jan 9, 2018, at 11:00 AM, Gwendal Roué via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>>> 
>>> Le 9 janv. 2018 à 17:16, Zach Waldowski via swift-evolution 
>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> a écrit :
>>> 
>>> I'm not sure a valid use case by a third party makes it hold its weight for 
>>> inclusion in the stdlib.
>> 
>> You're definitely right, and that's why I wrote with the most humble tone I 
>> could.
>> 
>> Yet, the design of the stdlib *requires* some speculation about use cases, 
>> and speculation is *helped* by the exposition of actual uses. I'm not sure 
>> readers of the mailing list had any idea of the use cases of the current 
>> DictionaryLiteral, and maybe I helped a little.
>> 
>>> Reproducing its feature set is extremely trivial, and would probably allow 
>>> you to hint the implementation details better for your use case.
>> 
>> Please define "trivial”.
>> 
>> In case anybody would wonder, in the line below the `row` variable is of 
>> type Row which happens to adopt ExpressibleByDictionaryLiteral. It is not of 
>> type DictionaryLiteral. The use case here is the ability to express a row 
>> with a dictionary literal that accepts duplicated keys and preserves 
>> ordering:
>> 
>>      XCTAssertEqual(row, ["a": 1, "a": 2])
> 
> That’s great! In this case you aren’t using the DictionaryLiteral type, but a 
> “dictionary literal”, which no one is suggesting we remove. If I’m 
> understanding what you wrote, this is another case where the terrible name is 
> making it super hard to discuss what we’re talking about. “Dictionary 
> literals” and the ExpressibleByDictionaryLiteral protocol are safe!
> 
>> I don't see how anything could better fit this use case than the current 
>> DictionaryLiteral. This is not *my* use case, but the use case of anyone 
>> that wants to model database rows beyond the traditional (and ill-advised) 
>> dictionary.
>> 
>> Some other users may come with other use cases that may also help the stdlib 
>> designers choose the best solution.
>> 
>> Gwendal
>> 
>>> 
>>> Zach
>>> z...@waldowski.me <mailto:z...@waldowski.me>
>>> 
>>> 
>>> On Tue, Jan 9, 2018, at 2:12 AM, Gwendal Roué via swift-evolution wrote:
>>>> 
>>>>> Le 9 janv. 2018 à 08:06, Gwendal Roué via swift-evolution 
>>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> a écrit :
>>>>> 
>>>>> 
>>>>>> Le 9 janv. 2018 à 06:40, Nevin Brackett-Rozinsky via swift-evolution 
>>>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> a écrit :
>>>>>> 
>>>>>> The ulterior question of whether preserving “DictionaryLiteral” is 
>>>>>> worthwhile, is apparently out of scope. Personally, I have a hard time 
>>>>>> imagining a compelling use-case outside of the standard library, and I 
>>>>>> doubt it’s being used “in the wild” (I checked several projects in the 
>>>>>> source-compatibility suite and found zero occurrences).
>>>>> 
>>>>> DictionaryLiteral is worthwhile. The SQLite library GRDB uses 
>>>>> DictionaryLiteral in order to build database rows (which may have 
>>>>> duplicated column names, and whose column ordering is important). This is 
>>>>> mostly useful for tests:
>>>>> 
>>>>>     let row = try Row.fetchOne(db, "SELECT 1 AS a, 2 AS a")!
>>>>>     XCTAssertEqual(row, ["a": 1, "a": 2])
>>>>> 
>>>>> Gwendal
>>>> 
>>>> Chris Lattner's wrote:
>>>> 
>>>>> why is maintaining duplicate keys a feature?
>>>> 
>>>>> Since it is immutable, why not sort the keys in the initializer, allowing 
>>>>> an efficient binary search to look up values?
>>>> 
>>>> 
>>>> I really wish both duplicated keys and key ordering would be preserved, 
>>>> since both are needed for the above sample code.
>>>> 
>>>> Should those features be lost, the sky wouldn't fall, that's sure. But 
>>>> we'd have to write something much less easy to wrote and read:
>>>> 
>>>> XCTAssertEqual(row.map { $0 }, [("a", 1), ("a", 2)])
>>>> 
>>>> Gwendal
>>>> 
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to