blob: 006414e4094d47b7cc3e3c66195371ae8c2f52da (
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
|defv "==?" deffd
|deff "=*?" deffd
|defvst "==" deffd
|deffst "=*" deffd
|defvc "==:" deffd
|deffc "=*:" deffd
{ "}" | *
{ /f deff /x defv
{ x f }
} quoted { } { * } ? *
} "}_" defq
{
{ -01 < ==o { o -01 . } > -12 }" quoted { }" { * }" ? *
quoted { |deffst } { deffst }" ? *
}" /via defq
{ -1110 ; ==f =*a len _
{
0 a
1 -102 range f each
}' { "fold on empty array" die }'
? *
} /fold deffd
{ _ =*a len
[ 1 -1202 1 add range { -110 sub a -01 }' each -- ] # TODO: rethink this one, seems overly complicated
} /reverse deffd
{ |or fold } /any deffd
{ |and fold } /all deffd
{ =*p {
[ -01 { _ p { } { -- } ? * } each ]
} } /engrep deffd
{ engrep * } /grep deffd
{ -110 ; engrep |dom -20*1* } /indices deffd
{ =*p _ =*a len ==l
1 neg ==r
0 {
_ l lt 1 neg r eq and
} {
_ a p { _ =r } { } ? *
1 add
} loop --
r
} /index deffd
{
not { "Assertion failure" die } rep
} /assert deffd
{ ==s
[ s keys { s -01 . } each ]
} /values deffd
{ _ =*conds len ==max
0 ==i { i max lt } {
i conds * { i 1 add conds * max =i } { } ? *
i 2 add =i
} loop
} /conds deffd
# vim: syn=elymas
|