In the context of query clauses, column names refer to the entire column as a list. The "where" clause expects an expression which yields a list of boolean values. Arithmetic operators like =, <, and + conform over list-list and list-scalar arguments.
Depending on how a predicate is written, it might naturally generalize to operating on lists for the same reason. For example:
on iseven x do 0=2%x end iseven[5] # 0 iseven[11,22,33] # (0,1,0) extract value where iseven[value] from 11,24,3,8 # (24,8)
If a predicate is only designed to operate on a single scalar value at a time, you can use the "@" operator to apply it to each element of a column, like so:
on seconde x do x[1]="e" end extract value where seconde@value from "Lemon","Lime","Soda","Demon" # ("Lemon","Demon")
This shorthand is semantically equivalent to
extract value where each v in value seconde[v] end from "Lemon","Lime","Soda","Demon"
(And of course in this particular case the "like" operator would be simpler:)
extract value where value like ".e*" from "Lemon","Lime","Soda","Demon"
Does that clear things up?