specter 2025-04-09

silly baby question, I'm trying to grok (filterer ) vs , and the relationship of other navigators; when to use one over the other, etc. can someone explain the difference of whats going on between

(select [(filterer odd?)] [2 1 3 6 7 4 8]) ;=> [[1 3 7]]

;; AND ;;

(select [ALL odd?] [2 1 3 6 7 4 8]) ;=> [1 3 7]
What I'm really curious about is why I can navigate to LAST for the first one and get [7], while the second one throws an error? (Additionally, I'm also not sure why I can't call odd? for the second one outright, without the ALL like the first)

(ok actually, I get why the ALL is required on the second, but still not sure why it isn't required on the first one)

filterer navigates to a sequence, whereas ALL navigates to the individual elements

the result of select is a sequence of all values navigated to by the path

when you do LAST, you're navigating on whatever's currently navigated to

not on the result sequence

after [ALL odd?] navigators, it's navigated to the individual numbers 1, 3, and 7

ahhhhhhh ok so a definite source of my misunderstanding is a conflation of selects output and "what specter actually sees"

i appreciate the help, i cant treat the 'navigated-to elements' as a sequence

you can use subselect to get navigated values into a sequence within a path

which is actually how filterer works

(filterer odd?) is just (subselect ALL odd?)

!!! beautiful