/ dyadic each for dictionaries dop_:{[V;f;x;y] l:5=4:x;r:5=4:y if[~l|r;:f[x]y];if[l&~r;:@[x;_n;_f[V;f;;y]]];if[r&~l;:@[y;_n;_f[V;f;x]]] a:!x;b:!y;i:a@&a _lin b;j:a _dvl i;k:b _dvl i;n:V[V[;0]?f;1 2] @[@[@[x;i;:;_f[V;f]'[x i;y i]];j;_f[V;f;;n 1]];k;:;_f[V;f;*n]'y k]} dop:dop_[((+;0;0);(-;0;0);(*;1;1);(%;0;0);(,;();()))] / monadic each for dictionaries mop:{[f;x]:[5=4:x;@[x;_n;_f[f]];f x]} / extended shape, take, count, enum, depth, raze, each shape:{s:!0;i:0;while[(i=#s)&~|/,//into[i;atom]x;if[1=#c:?(),i,//into[i;count]x;s,:c];i+:1];s} into:{x{each[x]}/y} each:{:[5=4:y;x'y[];x'y]} bang:{@[shape x;_n;{:[1=4:x;!x;x]}]} atom:{(@x)&~5=4:x} mat:{:[&/0>t:4::'x;1;|/t>0;0;&/,//atom''x@&~t]} sym:{:[x~_n;x;5=t:4:x;@[x;_n;_f];t _in-4 4;x;`$$x]} drop:{:[1=4:x;x _ y;(y?x)_ y]} take:{:[-1=4:x;x y;x x?/:y]} count:{:[5=4:x;,!x;#x]} enum:{cross bang x} depth:{:[~5=4:y;x;|/_f[x+1]'y[]]} raze:{:[~_n~x;(),x]} / cross:(,/,/:\:)/(),/: cross_:{:[~c:#x:(),/:(),x;x;1=c;+x;+x@'n _vs!*/n:#:'x]} cross:{((::;+:;(,/,/:\:)/)0 1?#x)x:(),/:(),x} / dyadic transpose transpose:{[p;m]s[p]#(,//m)i: