Making sense of this line from r.q

Can someone make sense of this line:

t@:where `g=attr each t@\:`sym;

Perhaps typing it out in “english”.

 

In particular, what do “@:” and “@:”

q)t:trade q)t @ sym // Get items sym from t // using each left (\:) q)t:tradequote q)t @\: sym // Get items sym from each item of t .. q)where g=attr each t@:sym // returns indexes of true statement (1b) 0 1 // https://code.kx.com/q/ref/amend/ q)t@:where g=attr each t@:sym // ammends the list t at index 0 1 q)t trade`quote

The @ in t@\: and in t@: where is Index At. t is a symbol vector that names tables. In the former expression t is interpreted as references to the tables it names; in the latter, simply as a vector of symbols.

In t@\:(Index At Each Left) the right argument is a symbol. The left argument t is a symbol vector that is also a list of names of tables. Index At is applied to each table, returning a list of sym columns.

In t@: (Index At Assign) the colon denotes assigning through an operator: equivalent to t:t@where. (Index At can often be elided, so it could also be written here t:t where.) The right argument – the result of where – is longs, and Index At uses it to index vector t, ignoring the tables it names.