@@ -19,92 +19,135 @@ extension (env: ENV)
19
19
*/
20
20
case " (" => env.startFN
21
21
/*
22
- @s ->
22
+ @s -> FN
23
23
End `FN`.
24
24
*/
25
25
case " )" => env
26
26
/*
27
- @s ->
28
- #{)} #{<+} .
27
+ @s -> FN
28
+ Empty `FN` .
29
29
*/
30
- case " )+ " => env.cons
30
+ case " () " => env.push( UN .toFN(env))
31
31
/*
32
- @s ->
33
- #{)} #{+` }.
32
+ @s -> FN
33
+ #{)} #{,+ }.
34
34
*/
35
- case " )++ " => env.add$$
35
+ case " )+" => env.consFN
36
36
/*
37
- @s ->
37
+ @s a -> FN
38
+ #{()} #{,+}.
39
+ */
40
+ case " ()+" => env.push(UN .toFN(env)).consFN
41
+ /*
42
+ @s -> FN
43
+ #{)} #{,+`}.
44
+ */
45
+ case " )++" => env.concatFN
46
+ /*
47
+ @s a -> FN
48
+ #{()} #{,+`}.
49
+ */
50
+ case " ()++" => env.push(UN .toFN(env)).concatFN
51
+ /*
52
+ @s -> TASK
38
53
#{)} #{~Q}.
39
54
*/
40
55
case " )~" => env.evalTASK
41
56
/*
57
+ @s -> TASK
58
+ Empty `TASK`.
59
+ */
60
+ case " ()~" => env.push(UN .toTASK)
61
+ /*
42
62
@s ->
43
63
#{)} #{!Q}.
44
64
*/
45
65
case " )!" => env.evalTRY
46
66
/*
67
+ @s -> TRY
68
+ Empty `TRY`.
69
+ */
70
+ case " ()!" => env.push(UN .toTRY)
71
+ /*
47
72
@s ->
48
73
#{)} #{@$}.
49
74
*/
50
- case " )#" => env.locId
75
+ case " )#" => env.locId
76
+ case " ()#" => env
51
77
/*
52
78
@s ->
53
79
#{)} #{@$$}.
54
80
*/
55
- case " )##" => env.globId
81
+ case " )##" => env.globId
82
+ case " ()##" => env
56
83
/*
57
84
@s ->
58
85
#{)} #{->}.
59
86
*/
60
- case " )=" => env.lambda
87
+ case " )=" => env.lambda
88
+ case " ()=" => env
61
89
/*
62
90
@s ->
63
91
Start `ARR`/`MAP`.
64
92
*/
65
93
case " [" => env.startARR
66
94
/*
67
- @s ->
95
+ @s -> ARR
68
96
End `ARR`.
69
97
*/
70
98
case " ]" => env.endARR
71
99
/*
72
- @s ->
100
+ @s -> ARR
101
+ Empty `ARR`.
102
+ */
103
+ case " []" => env.push(UN .toARR)
104
+ /*
105
+ @s -> STR
73
106
#{]} #{>S}.
74
107
*/
75
108
case " ]S" => env.endARR.envSTR
76
109
/*
77
- @s ->
110
+ @s -> STR
111
+ Empty `STR`.
112
+ */
113
+ case " []S" => env.push(UN .toSTR)
114
+ /*
115
+ @s -> MAP
78
116
End `MAP`.
79
117
*/
80
118
case " ]:" => env.endMAP
81
119
/*
82
- @s ->
120
+ @s -> MAP
121
+ Empty `MAP`.
122
+ */
123
+ case " []:" => env.push(UN .toMAP)
124
+ /*
125
+ @s -> _
83
126
#{]} #{:/}.
84
127
*/
85
128
case " /]" => env.endARR.getn
86
129
/*
87
- @s ->
130
+ @s -> _
88
131
#{]} #{:/=}.
89
132
*/
90
133
case " /]=" => env.endARR.setn
91
134
/*
92
- @s ->
135
+ @s -> _
93
136
#{]} #{:/%}.
94
137
*/
95
138
case " /]%" => env.endARR.setmodn
96
139
/*
97
- @s ->
140
+ @s -> _
98
141
#{]:} #{:*}.
99
142
*/
100
143
case " ]*" => env.endMAP.gets
101
144
/*
102
- @s ->
145
+ @s -> _
103
146
#{]:} #{:*=}.
104
147
*/
105
148
case " ]=" => env.endMAP.sets
106
149
/*
107
- @s ->
150
+ @s -> _
108
151
#{]:} #{:*%}.
109
152
*/
110
153
case " ]%" => env.endMAP.setmods
@@ -278,31 +321,6 @@ extension (env: ENV)
278
321
*/
279
322
case " $F" => env.push(TF (false ))
280
323
/*
281
- @s -> FN
282
- Empty `FN`.
283
- */
284
- case " ()" => env.push(UN .toFN(env))
285
- /*
286
- @s -> ARR
287
- Empty `ARR`.
288
- */
289
- case " []" => env.push(UN .toARR)
290
- /*
291
- @s -> MAP
292
- Empty `MAP`.
293
- */
294
- case " []:" => env.push(UN .toMAP)
295
- /*
296
- @s -> TASK
297
- Empty `TASK`.
298
- */
299
- case " ()~" => env.push(UN .toTASK)
300
- /*
301
- @s -> TRY
302
- Empty `TRY`.
303
- */
304
- case " ()!" => env.push(UN .toTRY)
305
- /*
306
324
@s -> NUM
307
325
π (Pi).
308
326
*/
@@ -913,6 +931,18 @@ extension (env: ENV)
913
931
*/
914
932
case " >+" => env.unsnoc
915
933
/*
934
+ @s a (b >FN) -> FN
935
+ `FN`-specific #{<+}.
936
+ Wraps `a` in `ARR` and uses #{,_} to preserve `a`'s value.'
937
+ */
938
+ case " ,+" => env.consFN
939
+ /*
940
+ @s a (b >FN) -> FN
941
+ `FN`-specific #{+`}.
942
+ Uses #{,_} to preserve the values of `a`'s elements.'
943
+ */
944
+ case " ,+`" => env.concatFN
945
+ /*
916
946
@s (a >NUM)' (b >NUM)' -> NUM'
917
947
`a - b`
918
948
*/
@@ -1334,47 +1364,47 @@ extension (env: ENV)
1334
1364
*/
1335
1365
case " :`" => env.get$$
1336
1366
/*
1337
- @s a (i >MAP) -> x
1367
+ @s a (i >MAP) -> _
1338
1368
#{:`} with `i` mapped over `a`.
1339
1369
*/
1340
1370
case " :*" => env.gets
1341
1371
/*
1342
- @s a b (i >SEQ) -> x
1372
+ @s a b (i >SEQ) -> _
1343
1373
#{:`} with `i` folded over `a`.
1344
1374
*/
1345
1375
case " :/" => env.getn
1346
1376
/*
1347
- @s a b i -> x
1377
+ @s a b i -> _
1348
1378
Sets value at index `i` in `a` to `b`.
1349
1379
*/
1350
1380
case " :=" => env.set
1351
1381
/*
1352
- @s a (m >MAP) -> x
1382
+ @s a (m >MAP) -> _
1353
1383
#{:=} with `i` mapped over `a`.
1354
1384
*/
1355
1385
case " :*=" => env.sets
1356
1386
/*
1357
- @s a b (i >SEQ) -> x
1387
+ @s a b (i >SEQ) -> _
1358
1388
#{:=} with `i` folded over `a`.
1359
1389
*/
1360
1390
case " :/=" => env.setn
1361
1391
/*
1362
- @s a (f >FN) i -> x
1392
+ @s a (f >FN) i -> _
1363
1393
Modifies value at index `i` using `f`.
1364
1394
*/
1365
1395
case " :%" => env.setmod
1366
1396
/*
1367
- @s a (m >MAP[(_ => (_ >FN))*]) -> x
1397
+ @s a (m >MAP[(_ => (_ >FN))*]) -> _
1368
1398
#{:%} with `i` mapped over `a`.
1369
1399
*/
1370
1400
case " :*%" => env.setmods
1371
1401
/*
1372
- @s a (f >FN) (i >SEQ) -> x
1402
+ @s a (f >FN) (i >SEQ) -> _
1373
1403
#{:%} with `i` folded over `a`.
1374
1404
*/
1375
1405
case " :/%" => env.setmodn
1376
1406
/*
1377
- @s a i -> x
1407
+ @s a i -> _
1378
1408
Removes index `i` from `a`.
1379
1409
*/
1380
1410
case " :-" => env.idel
0 commit comments