Compose out eaches¶
Learn to spot expressions with sequential Eaches such as this one:
first each reverse each v / first of each reverse of each v
and replace them with function compositions like this:
'[first;reverse] each v / last of each v
Combine Compose with over
to join longer sequences of functions:
('[;] over (upper;first;reverse)) each v
In general, seek to replace patterns like
f each g each … h each v
with any of (the forms are equivalent)
('[;] over (f;g;…;h)) each v
(('[;]/) (f;g;…;h)) each v
'[;]/[(f;g;…;h)] each v
'[;]/[(f;g;…;h)]'[v]
Here’s another example:
q)reverse each ,':[1 2 3 4]
1
1 2
2 3
3 4
q)'[reverse;,]':[1 2 3 4]
1
1 2
2 3
3 4
Compositions are faster than sequential Eaches (one iteration replaces many), and easier to read – and code!
0<('[type;key]) each paths / dictionaries in lists of paths