summaryrefslogtreecommitdiff
path: root/g.k
blob: 5e8631a7557b09c4991c9f409af9bbc364c1035c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!k
h:("// ngn/k, (c) 2019-2024 ngn, license: GNU AGPLv3 - https://codeberg.org/ngn/k/raw/branch/master/LICENSE"
   "// generated by g.k")

v:"xyzu" /variable names
t:"AGHILFC" /some types
T:t,"BESMmilfscopqruvwx" /all types
U:T,"UPRtTzZ",$`cC`lL`fF`sS`zZ`mM`mt`MT`zf`ZF`zc`ZC`zfc`ZFC`mMA`sSA`SA /types and pseudotypes

c:+!: /cartesian product
e:,/{$[x~"@";*y;x~"$";y 1;x~"%";_*y;x]}\: /expand @:arg[0],$:arg[1],%:lower(arg[0])

r:()
r,:"@$ _$(@)"e/:c(v;"bEKkNnoRrtTVvwXxyz",t,(_t),"t",'U)
r,:"@$(a...) _$(@,a)"e/:c(v;"128")
r,:"M@(a...) M_(@,a)"e/:v
r,:"@$(a...) P(%t$,a)"e/:c("XYZ";U)
r,:"@(a) ({A r_=(a);mr(@);r_;})"e/:v
r,:"_@(x) ((@*)_V(x))"e/:t
r,:"_%(x) _@(x)[i]"e/:t
r,:"_t@(x) (_t(x)==t@)"e/:"AEBGHILFCSMmlfopqr"
r,:"_t@(x) (_t0(x)==t@)"e/:"iscuvwx"
r,:"N@(r) N(r,@(0))"e/:v
r,:{"_",x,"(x) ((A*)_V(x))[",($x-"x"),"]"}'"xyz"
r,:{"_t",x,"(x) (_t",(-1_x),"(x)||_t",(-1#x),"(x))"}'(1<#:')#U
r,:{"R",($x),"(x,a...) case x:R",($-1+x),"(a)"}'2+!12
r,:"R@(a...) R(t@,a)"e/:"AEBGHILFCSMmilfcsopqruvwx"

p!:p:`c$,/"aA"+\:!26 /pseudotype expansions
p["TtU"]:$`AEBGHILFCS`ilfcsopqruvwx`opqruvwx
R:$`BGHILF`cC`EGHIL`BGHIL`EBGHIL`EBGHILC`EGHILC`EGHILF`fF`GC`GHIL`GHILC`GHILF`ic`iI`il`ilc`ilEBGHIL`ilEGHIL`ilf`lL`mM`mMA`MT`opq`opqr`sS`t`T`U`uvw
R,:" "\"MT_C MT_E T_A T_AE T_E"
r,:{X:?^/,/'p@"_"\x;"R",x,"(a...) R",($#X),"(",(","/"t",'X),",a)"}'R

"g.h"0:h,"#define ",/:r