specter
specter copied to clipboard
Make a utility to generate paths for record fields that use optimized access
e.g.
(defrecord Foo [a b])
(define-record-field-paths Foo)
This would generate paths Foo-a-path and Foo-b-path. The select code path would use direct field access rather than do a keyword lookup to achieve a performance improvement.
Since paths can now be compiled in-line, I would suggest instead writing a macro that can be used in-line for a specific field of a record. e.g.
(select [ALL (record-nav Foo a)] [(->Foo 1 2)])
=> [1]