Fork me on GitHub

i became aware of lenses probably about a year after I made the first version of specter


i'm not an expert in all the lens libraries, but the haskell one I know makes distinctions between lenses that go to one element vs. many


not sure what you mean by making a navigator that handles joins


I use Specter as an ad-hoc query language, and for sticky transformations as needed. When I need to join data, I could write a fn that that does a a select and use that as a “joined value” accessor. But that would have to scan every time. So I end up building a “join” map, mapping one value to the other. I even have a convenience fn to create these. Then i used these join-maps as functions in a Specter path: Nakedly they function as a predicate filter

(select [ALL join-map] col)
Or you can traverse the join with this:
(select [ALL (view join-map)] col)


i would say that's out of scope for specter