blob: 136e7b03731d7e9f9b531000dc80bebe07123c76 (
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
69
70
71
|
|defv "==?" deffd
|deff "=*?" deffd
|defvst "==" deffd
|deffst "=*" deffd
|defvc "==:" deffd
|deffc "=*:" deffd
"}" | {
{ =*f ==x
{ 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
{ _ len { |or fold }' { -- 0 }' ? * }' /any deffd
{ _ len { |and fold }' { -- 1 }' ? * }' /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
{ -1010 gt -021 ? }' /max deffd
{ -1010 lt -021 ? }' /min deffd
# vim: syn=elymas
|