blob: a28a18e5c77a5b0b69b7da39026914ddfe7f7308 (
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
<
[ ] ==:NONE
0 ==l # placeholder, zero value is never read
{ -102 .len -021 ? }" "#?" defmd
{ .len }" "#len" defmd
{ 0 -01 .len range }" "#dom" defmd
{ [ 0 ] }" _ "#in" deffd "#out" deffd
{ ==m ==l
l .len {
l .start l .len 1 sub { 1 -01 * } rep
m .start 1 -102 =[]
l .len m .len add l .setLen
} {
m .start l .setStart m .len l .setLen
} ? *
m .end l .setEnd
0 m .setLen
NONE m .setStart
NONE m .setEnd
l
# FIXME think hard whether cat should be destructive
} "#cat" defmd
{ ==l =*f
l .start ==n
l .len { n 2 dearray =n f }" rep
} "#each" defmd
{ l .len mod ==i
l .start i { 1 -01 * } rep
0 -01 *
} '0.0 /access deffd
{ =l access } "#*" defmd
{ ==l ==i ==v
l .len not { "=[] into empty list" die } rep
l .start i l .len mod { 1 -01 * } rep
v 0 -102 =[]
} "#=[]" defmd
{ ==l
list ==m
l .len {
[ 0 NONE ] _ m .setEnd
l .len 1 sub { [ 0 -102 ] } rep
m .setStart
l .len m .setLen
} { } ? *
m
} "#iclone" defmd
{ 0 }" "#istart" deffd
{ .len eq }" "#iend" defmd
{ }" "#itrans" deffd
{ 1 add }" "#istep" deffd
{ =l [ -01 NONE ]
l .len {
_ 1 l .end =[]
}" {
_ l .setStart
}" ? *
l .setEnd
l .len 1 add l .setLen
}' /append1 defmd
{ =l
l .len 2 ge {
l .start
l .len _ 1 sub l .setLen
2 sub { 1 -01 * } rep
_ l .setEnd
NONE 1 -102 =[]
} {
0 l .setLen
NONE l .setStart
NONE l .setEnd
} ? *
}' /pop defmd
{ { .append1 }_ '0. * } /append defmd
{ <
0 ==len { =len }' =*setLen
NONE ==start { =start }' =*setStart
NONE ==end { =end }' =*setEnd
> }'
> -- /list deffd
# vim: syn=elymas
|