/ arguments, primitives, lambdas a_:`$'_ci 97+!26 A_:`$'_ci 65+!26 k_:{.:''(x,'":";x)}"~!@#$%^&*-_=+|:,<.>?" l_:({{}$"{[a;b]a[b]}[",x,"]"}';{{}$"{[a;b;c]a[b][c]}[",x,"]"}')@'$k_ k_:,/k_;l_:,/l_ / parsers p_:{1+s_[x;y]?0} q_:{~b|~=\~b:(~-1!x="\\")&x="\""} r_:{:[~"["=*x;x;,/(1!"][",1_)'(&(x=";")&&/~("()";"{}";"[]")s_\:x)_ x:";",1_-1_ x]} s_:{>/+\'q_[y]&/:y=/:x} t_:{:[~#x;x;1!"][",1_,/(";",1_-1_)'1_(&-1!~s_["[]"]x)_ x:" ",x]} u_:{-1_(&~s_["[]"]" ",x)_ x} / body: {a[b]..[z]} -> b_:{,/@[(0,y?"[")_ y;1;,/x u_@]} / reletter v_:{t:f_ x;a:(#*t)#a_;b:`$($*t),'"_";g_ .(a;_ssr/[_ssr/[t 1;*t;b];b;a];t 2)} / list from function: {[a]b}[c] -> (a;b;c) f_:{ if[(#k_)>i:k_?x:n_ x;:_f l_ i] c:r_(n::["{"=*x;p_["{}"]x;x?"["])_ x$: if[(#k_)>i:($k_)?x:n#x;:_f{}$($l_ i),c] b:(i:1+t?"]")_ t:1_-1_ x a:{`$1_'(&x=";")_ x}";",1_-1_ i#t (a;b;c)} / function from list: (a;b;c) -> {[a]b}..[c].. g_:{{}$(1!"}{",(1!"][",1_,/";",'$x),y),t_ z} / (bound;free) variables: {[a;..;b;..]..}[v;..] -> (a ..;b ..) w_:{(0,(#a)-v x)_ a:*f_ x} / nilad: function from value n_:{:[7=4:x;x;k[x]]} / adverbs h_:{{}$1!"}{",m,($y),x,m:1!"][",1_,/";",'$v[y]#a_} each:h_["'"] prior:h_["':"] right:h_["/:"] left:h_["\\:"] over:h_["/"] scan:h_["\\"] h_:{({}$"{[a;b]a",x,"b}")[y]} Each:h_["'"] Prior:h_["':"] Over:h_["/"] Scan:h_["\\"] / valence: {[a]b}..[c].. -> (#a)-#[c] v:{[a]t:f_ a;(#*t)-+/~>/+\'(|q_ t 2)&/:(|t 2)=/:"]["} / n[m] -> a-0[a-1]..[a-m] n:{[a]v:(a+1)#a_;g_[v;($*v),,/(1!"][",)'$1_ v]""} / merge m:{[a;b] d:-v a;e:-v b;a:f_ a;b:f_ b a[1]:_ssr[a 1;*|*a;_ssr/[b 1;*b;c:(#*b)#a_ _dvl(*a),*b]] a[0]:(d _*a),(e _ c),(-1_ d#*a),e#c a[2],:b 2 v_ g_ . a} / reverse x:{[a]g_ ..[f_ a;0;{(x _ y),|x#y}[-v a]]} X:{[a]g_ ..[f_ a;1;b_[|:]]} / rotate r:{[a]g_ ..[f_ a;0;{(x _ y),1!x#y}[-v a]]} R:{[a]g_ ..[f_ a;1;b_[1!]]} / swap s:{[a]g_ ..[f_ a;0;{(-2_ x),|-2#x}]} S:{[a]g_ ..[f_ a;1;b_[{(-2_ x),|-2#x}]]} / pop p:{[a]g_ ..[f_ a;0;{x,*a_ _dvl x}]} / dup d:{[a]g_ ..[f_ a;();{(-1_ x;_ssr[y;*|x;*|-1_ x];z)}.]} / dissect: f = a[h f]t f h:{[a]g_ .@[f_ a;2;{(-p_["]["]@|x)_ x}]} / head: f[a]..[b] -> f[a].. t:{[a]{}$1_-1_(-p_["]["]@|t)#t:*|f_ a} / tail: f[a]..[b] -> b / frame right f:{[a;b] n:$(0|-1+a)#2_ a_;m:$b#(#n)_ 2_ a_;j:{,/(1!"][",)'x} {}$1!"}{",j[,"a;b",,/";",'n,m],"a",j[n],j@,"b",j m} / frame left F:{[a;b] m:$b#2_ a_;n:$(0|-1+a)#(#m)_ 2_ a_;j:{,/(1!"][",)'x} {}$1!"}{",j[,"a;b",,/";",'m,n],"a",j[,"b",j m],j n} / construct right o:{[a;b]f[v a;v b][n_ a][n_ b]} / construct left O:{[a;b]F[v a;v b][n_ a][n_ b]} / right conditional: :[a x;b x;c[x]..[z]] z:{[a;b;c] m:{1!"][",1_,/";",'x}'$w#\:$w[i:w?|/w:v'(a;b;c)]#3_ a_ ({}$1!"}{[a;b;c;",(1_ m i),":[a",m[0],";b",m[1],";c",m[2],"]")[n_ a][n_ b][n_ c]} / left conditional: :[a z;b z;c[x]..[z]] Z:{[a;b;c] m:{1!"][",1_,/";",'x}'$(-w)#\:$w[i:w?|/w:v'(a;b;c)]#3_ a_ ({}$1!"}{[a;b;c;",(1_ m i),":[a",m[0],";b",m[1],";c",m[2],"]")[n_ a][n_ b][n_ c]} / application/projection: a[f][] -> f[] a:{[a;b]:[b~_n;a[];a[b]]} / composition f3:{[a;b;c]a+b-c} x:(f3;2;*;!:;-;*) comp:{ i:j:k:0;d:e:f:g:() do[#x|: if[~l:7=4:a:x i;c:1;d,:c#k _ a_;e,:i;g,:,a;j+:1] if[l;b:v a;c:0|b-j+~~i;d,:c#k _ a_;e,:c#i;g,:c#_n;j:0] f,:c#~l;k+:c;i+:1] i:0;r:"" do[#x r:($A_ i),:[#j:&e=i;,/(1!"][",)'$d j;""],:[#r;1!"][",r;r] i+:1] m:{}$(1!"}{",(1!"][",1_,/";",'$((#x)#A_),d),r) m:m{x[y]}/x / m:m{:[*y;x[y 1];x[;]]}/+(f;g) (d;e;f;g;m)} comp:{ i:j:k:0;d:e:f:g:() do[#x|: if[~l:7=4:a:x i;c:1;d,:c#k _ a_;e,:i;g,:,a;j+:1] if[l;b:v a;c:0|b-j+~~i;d,:c#k _ a_;e,:c#i;g,:c#_n;j:0] f,:c#~l;k+:c;i+:1] i:0;r:"" do[#x r:($A_ i),:[#j:&e=i;,/(1!"][",)'$d j;""],:[#r;1!"][",r;r] i+:1] m:{}$(1!"}{",(1!"][",1_,/";",'$((#x)#A_),d),r) m:m{x[y]}/x (d;e;f;g;m)} comp x \ / combinators i:(::) / identity k:p i / constant j:f[2]1 / a[c][b[d]] u:d a / a[a] b:f[1]1 / a[b[c]] e:x s x f[1]1 / b[a[c]] / s:d j / a[c][b[c]] c:f[2]0 / a[c][b] y:b[u][e[s[c][u]]] / {{x[{x[x]y}[y]]z}[x][{x[{x[x]y}[y]]z}[x]]y} / y:O[u][a][j[a][O[a]u]] / fac:{:[~x;1;x*_f x-1]} fac:y[z[s p=[0]][1]d O[*]s O[s a]s[-][1]] fac 5 / y (=> swap (pop ~:) 1 (dup <- * swap <- (swap apply) swap - 1)) / y => (swap pop ~:) 1 dup <- (*) swap <- (swap apply) swap (-) 1 / `- swap 1 `apply swap <- `* <- dup 1 `~: pop swap => y fib:{:[x<2;1;fib[x-2]+fib x-1]} fib:{:[x<2;1;{[a;b;c;d]a[fib b d]fib c d}[+;-1+;-2+][x]]} fib 5 fib:{:[x<2;1;{[a;b]a[b-2]+a b-1}[fib][x]]} fib:{:[x<2;1;{[a;b;c]a[b[c-2]]b c-1}[+][fib][x]]} fib:{:[x<2;1;{[a;b;c;d;e]a[d[b[e]]][d[c[e]]]}[+][s[-][2]][s[-][1]][fib][x]]} fib:{:[x<2;1;r[d x r x d{[a;b;c;d;e;f;g]a[d[b[f]]][e[c[g]]]}][+][s[-][2]][s[-][1]][fib][x]]} fib:y[z[s p s<[2]][1]r[d x r x d{[a;b;c;d;e;f;g]a[d[b[f]]][e[c[g]]]}][+][s[-][2]][s[-][1]]] fib:y[z[s p s<[2]][1]r[d x r x d{[a;b;c;d;e;f;g]a[b[d][f]]c[e][g]}][+][e[s[-][2]]][e[s[-][1]]]] fib 5 \ / derivation 1 of y: y:{{x[{x[x]y}[y]]z}[x][{x[{x[x]y}[y]]z}[x]]y} y:{[a;b]{x[{x[x]y}[y]]z}[a][{x[{x[x]y}[y]]z}[a]]b} y:{[a;b;c]a[b][a[b]]c}[{x[{x[x]y}[y]]z}] y:{[a;b;c]u[a[b]]c}[{x[{x[x]y}[y]]z}] y:{[a;b;c;d]a[b[c]]d}[u][{x[{x[x]y}[y]]z}] y:b[u][{x[{x[x]y}[y]]z}] y:b[u][{x[{[a;b]u[a]b}[y]]z}] y:b[u][{x[{[a;b;c]a[b]c}[u][y]]z}] y:b[u][{x[s[c][u][y]]z}] y:b[u][{[a;b;c;d]b[a[c]]d}[s[c][u]]] y:b[u][e[s[c][u]]] / derivation 2 of y y:{[a;b;c]a[b][a[b]]c}[{x[{x[x]y}[y]]z}] y:{[a;b;c]u[a[b]]c}[{x[{x[x]y}[y]]z}] y:{[a;b;c]u[a[a]b]c}[{x[{x[x]y}[y]]z}] y:{[a;b;c]a[u[a[a]b]]c}[{x[{x[x]y}[y]]z}] y:O[a][O[u]a][{x[{x[x]y}[y]]z}] y:O[a][O[u]a][{x[{[a;b]a[u[a]]b}[y]]z}] y:O[a][O[u]a][{x[O[a][u][y]]z}] y:O[a][O[u]a][{[a;b;c]a[a[O[a][u]]b]c}] y:O[a][O[u]a][{[a;b;c]a[a[a][a[O[a][u]]b]]c}] y:O[a][O[u]a][{[a;b]a[a[a][a[O[a][u]]b]]}] y:O[a][O[u]a][{[a;b]a[a][a[O[a][u]]b]}] y:O[a][O[u]a][j[a][a[O[a][u]]]] y:O[a][O[u]a][j[a][O[a][u]]] y:O[u][a][j[a][O[a][u]]]