skiplang / skip

A programming language to skip the things you have already computed
http://skiplang.com
MIT License
1.97k stars 66 forks source link

New implementation of reactive tables. #113

Closed pikatchu closed 4 years ago

pikatchu commented 4 years ago

Up until now, the values used in a reactive table had to implement a bunch of traits (such as Equality, Orderable etc ...). The reason was that the implementation was relying on a sort of those values to function properly (compute the diffs etc ...). The other weird thing is that the implementation was returning a sorted array of the values inserted and was perform a "unique" operation on them for no good reason other than it was convenient for the old implementation.

This new implementation fixes that, the values don't have any constraint other than being frozen (the interned pointer is used to do the operations). The values returned by "get" preserve repetitions.

PS: Turns out the new implementation fixed a long standing bug in the incremental type-checker when a module was changing name.

PS2: I used the opportunity to also fix issue #72.