// applicative ski interpreters / primitives s:{x[z][y[z]]} k:{y;x} i:{x} / step lr_:{x[1][y;z];:[~#z;(y;z);_n _in(-1#y),1#z;(y,1#z;1_ z);(-2_ y;x[0][*|y;*z],1_ z)]} rl_:{x[1][y;z];:[~#z;(y;z);_n~*z;((-2_ y),{x[z;y]}[*x]/-2#y;1_ z);(y,1#z;1_ z)]} / parse p:(,()),,(s;k;i;)"ski"?/: q:(,()),,("ski",_n)"ski"?/: / apply a:{x[y]} b:{,x,"[",y,"]"} / trace t:{`0:,1_,/":",'30 -30$'{,/(@[x;&x~'_n;:;"`"]),""}'(x;y)} / interpret lr:**(lr_[(a;:)].)/p@ rl:**(rl_[(a;:)].)/p@|: / compile lrk:**(lr_[(b;t)].)/q@ rlk:**(rl_[(b;t)].)/q@|: \ lr"``s`kss" lr"```skss" rl"``s`kss" rl"```skss" rlk"``s`kss" rlk"```skss" lrk"``s`kss" lrk"```skss"