On 29.05.2017 19:21, Christoph Berg wrote:
> I think the term you were looking for is "projection".
> https://en.wikipedia.org/wiki/Projection_(set_theory)
Maybe, I am seeing too much of a connection here but recently Raymond
Hettinger held a very interesting talk [1] at PyCon 2017.
For those without the time or bandwidth to watch: it describes the
history of the modern dict in Python in several steps.
1) avoiding having a database scheme with columns and rows and indexes
2) introducing hashing with bucket lists
3...6) several improvements
7) in the end looks like a database table with indexes again ;)
If you have the time, just go ahead and watch the 30 min video. He can
explain things definitely better than me.
In order to draw the line back on-topic, if I am not completely
mistaken, his talks basically shows that over time even datastructures
with different APIs such as dicts (hashes, maps, sets, etc.) internally
converge towards a relational-database-y design because of performance
and resources reasons.
Thus let me think that also in the on-topic case, we might best be
supporting the much narrow use-case of "Projection" (a term also used in
relation database theory btw. ;-) ) instead of non-surjective functions.
Cheers,
Sven
[1] https://www.youtube.com/watch?v=npw4s1QTmPg