The pull api was extend by adding an options map used to parametrize database accessors in the query parser. While this allowed pull to work with ratoms as well as maps, it is not idiomatic and caused our implementation to diverge from MapGraph's.
We could simplify the pull api and bring it closer to its original implementation by defining a pull protocol:
Would make the api more extensible (though extending the parser is still a non-goal)
Cons
Would need to ship 6 implementations: hash and array maps for clj and cljs, plus ratom and atom
~Last time I checked cljs protocols incurred a non-negligible performance overhead compared to simple functions.~ We should definitely run some cljs benchmarks before and after these changes.
Notes
Quick comparison of fn vs protocol performance in cljs
The
pull
api was extend by adding an options map used to parametrize database accessors in the query parser. While this allowedpull
to work with ratoms as well as maps, it is not idiomatic and caused our implementation to diverge from MapGraph's.We could simplify the pull api and bring it closer to its original implementation by defining a pull protocol:
Pros
Cons
Notes