// type-lifted joy / words v:{{(-2_ y),x .-2#y}[x]y z} / verb u:{{(-1_ y),x@*-1#y}[x]y z} / unary n:{x[z],,y} / noun W:(();()) / wordlist w:{W[],:(x;y)} / add word d:{w[x]{e(y z),x}[y]} / define word {w[. x;v[. x]];w[. x;u[. x,:":"]];}'"~!@#$%^&*-_=+|:,<.>?"; w[`dup]{{(-1_ x),2#-1#x}x y} w[`swap]{{(-2_ x),|-2#x}x y} w[`pop]{{-1_ x}x y} w[`i]{{e(-1_ x),*-1#x}x y} w[`id]{x y} w[`dip]{{e(-2_ x),(*-1#x),1#-2#x}x y} w[`if]{{e(-2_ x),(-2#x)@~*-3#x}x y} / eval a:_n{t[x]y;:[(#*W)>i:W[0]?y;W[1;i][x];n[x;y]]}/ e:{a[x][]} / represent t:{`0:,(60$r x)," : ",5:y} q:{{,/@[x;&x=y;:[;"[",y,"]"]]}/[x;"[]?*"]} r:{_ssr/[5:x;q'($W 1),,$n;($*W),,""]} / eg d[`fac;((`dup;-1;+;`fac;*);(`pop;1);`if)] e(5;`fac) \ e(2;3;`swap;`dup) e(2;3;4;+;*) e(2;3;4;(+;*);`i) e(2;3;4;,(+;*);`i;`i) e(2;3;4;5 6 7 8;,(+);`dip) r a(2;3;4;5 6 7 8;,(+);`dip) d[`foo;(2;+)] e(3;`foo) e(10;(2;+);(3;-);`if)