Data structures are all about contracts: the basic API contract relating inputs to outputs, the internal invariants crucial to preserving the performance guarantees and, in the case of persistent data structures, the implicit contract around structural sharing guarantees. Bugs related to the latter two can be particularly insidious, causing gradual performance degradation of long-running client programs without producing observably incorrect results.
This talk aims to demonstrate how tools like spec and test.check can help one derive correct and efficient data structure implementations from (precisely stated versions of) the above-mentioned contracts.
Long-time contributor to all parts of ClojureScript, including the compiler and the core library; most notably, author of the ClojureScript ports of the persistent map and set types and PDS-related functionality such as transients. Author and maintainer of core.rrb-vector, data.avl, psq.clj and ctries.clj.