@@ -2,19 +2,19 @@
22
33Mock interpreter
44
5−Bottom-level [mock]() (virtual nock) interpreter. Produces a
6−[`++tone`](), a nock computation result. If nock 11 is invoked, `sky`
7−computes on the subject and produces a [`++unit`]() result. An empty
5+Bottom-level mock (virtual nock) interpreter. Produces a
6+`++tone`, a nock computation result. If nock 11 is invoked, `sky`
7+computes on the subject and produces a `++unit` result. An empty
88result becomes a `%1` `++tone`, indicating a block.
99
1010Accepts
1111-------
1212
13−`sub` is the subject as a [noun]().
13+`sub` is the subject as a noun.
1414
1515`fol` is the formula as a noun.
1616
17−`sky` is an [`%iron`]() gate invoked with [nock operator 11]().
17+`sky` is an `%iron` gate invoked with nock operator 11.
1818
1919Produces
2020--------
@@ -26,98 +26,100 @@ Source
2626
2727 ++ mink
2828 ~/ %mink
29− |= [[sub=* fol=*] sky=$+(* (unit))]
30− =+ tax=*(list ,[@ta *])
29+ |= {{sub/* fol/*} gul/$-({* *} (unit (unit)))}
30+ =+ tax=*(list {@ta *})
3131 |- ^- tone
3232 ?@ fol
3333 [%2 tax]
3434 ?: ?=(^ -.fol)
3535 =+ hed=$(fol -.fol)
36− ?: ?=(%2 -.hed)
36+ ?: ?=($2 -.hed)
3737 hed
3838 =+ tal=$(fol +.fol)
3939 ?- -.tal
40− %0 ?-(-.hed %0 [%0 p.hed p.tal], %1 hed)
41− %1 ?-(-.hed %0 tal, %1 [%1 (weld p.hed p.tal)])
42− %2 tal
40+ $0 ?-(-.hed $0 [%0 p.hed p.tal], $1 hed)
41+ $1 ?-(-.hed $0 tal, $1 [%1 (weld p.hed p.tal)])
42+ $2 tal
4343 ==
4444 ?+ fol
4545 [%2 tax]
4646 ::
47− [0 b=@]
47+ {$0 b/@}
4848 ?: =(0 b.fol) [%2 tax]
4949 ?: =(1 b.fol) [%0 sub]
5050 ?: ?=(@ sub) [%2 tax]
5151 =+ [now=(cap b.fol) lat=(mas b.fol)]
5252 $(b.fol lat, sub ?:(=(2 now) -.sub +.sub))
5353 ::
54− [1 b=*]
54+ {$1 b/*}
5555 [%0 b.fol]
5656 ::
57− [2 b=[^ *]]
57+ {$2 b/{^ *}}
5858 =+ ben=$(fol b.fol)
59− ?. ?=(%0 -.ben) ben
59+ ?. ?=($0 -.ben) ben
6060 ?>(?=(^ p.ben) $(sub -.p.ben, fol +.p.ben))
6161 ::?>(?=(^ p.ben) $([sub fol] p.ben)
6262 ::
63− [3 b=*]
63+ {$3 b/*}
6464 =+ ben=$(fol b.fol)
65− ?. ?=(%0 -.ben) ben
65+ ?. ?=($0 -.ben) ben
6666 [%0 .?(p.ben)]
6767 ::
68− [4 b=*]
68+ {$4 b/*}
6969 =+ ben=$(fol b.fol)
70− ?. ?=(%0 -.ben) ben
70+ ?. ?=($0 -.ben) ben
7171 ?. ?=(@ p.ben) [%2 tax]
7272 [%0 .+(p.ben)]
7373 ::
74− [5 b=*]
74+ {$5 b/*}
7575 =+ ben=$(fol b.fol)
76− ?. ?=(%0 -.ben) ben
76+ ?. ?=($0 -.ben) ben
7777 ?. ?=(^ p.ben) [%2 tax]
7878 [%0 =(-.p.ben +.p.ben)]
7979 ::
80− [6 b=* c=* d=*]
80+ {$6 b/* c/* d/*}
8181 $(fol =>(fol [2 [0 1] 2 [1 c d] [1 0] 2 [1 2 3] [1 0] 4 4 b]))
8282 ::
83− [7 b=* c=*] $(fol =>(fol [2 b 1 c]))
84− [8 b=* c=*] $(fol =>(fol [7 [[0 1] b] c]))
85− [9 b=* c=*] $(fol =>(fol [7 c 0 b]))
86− [10 @ c=*] $(fol c.fol)
87− [10 [b=* c=*] d=*]
83+ {$7 b/* c/*} $(fol =>(fol [2 b 1 c]))
84+ {$8 b/* c/*} $(fol =>(fol [7 [[0 1] b] c]))
85+ {$9 b/* c/*} $(fol =>(fol [7 c 0 b]))
86+ {$10 @ c/*} $(fol c.fol)
87+ {$10 {b/* c/*} d/*}
8888 =+ ben=$(fol c.fol)
89− ?. ?=(%0 -.ben) ben
90− ?: ?=(?(%hunk %lose %mean %spot) b.fol)
89+ ?. ?=($0 -.ben) ben
90+ ?: ?=(?($hunk $hand $lose $mean $spot) b.fol)
9191 $(fol d.fol, tax [[b.fol p.ben] tax])
9292 $(fol d.fol)
9393 ::
94− [11 b=*]
95− =+ ben=$(fol b.fol)
96− ?. ?=(%0 -.ben) ben
97− =+ val=(sky p.ben)
98− ?~(val [%1 p.ben ~] [%0 u.val])
99− ::
94+ {$11 b/* c/*}
95+ =+ ref=$(fol b.fol)
96+ =+ ben=$(fol c.fol)
97+ ?. ?=($0 -.ref) ref
98+ ?. ?=($0 -.ben) ben
99+ =+ val=(gul p.ref p.ben)
100+ ?~(val [%1 p.ben ~] ?~(u.val [%2 [[%hunk (mush p.ben)] tax]] [%0 u.u.val]))
100101 ==
101102 ::
102103
104+
103105Examples
104106--------
105107
106− ~zod/try=> (mink [20 [4 0 1]] ,~)
108+ ~zod/try=> (mink [20 [4 0 1]] $~)
107109 [%0 p=21]
108− ~zod/try=> (mink [[90 5 3] [0 3]] ,~)
110+ ~zod/try=> (mink [[90 5 3] [0 3]] $~)
109111 [%0 p=[5 3]]
110− ~zod/try=> (mink 20^[4 0 1] ,~)
112+ ~zod/try=> (mink 20^[4 0 1] $~)
111113 [%0 p=21]
112− ~zod/try=> (mink [90 5 3]^[0 3] ,~)
114+ ~zod/try=> (mink [90 5 3]^[0 3] $~)
113115 [%0 p=[5 3]]
114− ~zod/try=> (mink [0]^[11 1 20] ,~)
116+ ~zod/try=> (mink [0]^[11 1 20] $~)
115117 [%1 p=~[20]]
116118 ~zod/try=> (mink [0]^[11 1 20] |=(a=* `[40 a]))
117119 [%0 p=[40 20]]
118− ~zod/try=> (mink [5]^[0 2] ,~)
120+ ~zod/try=> (mink [5]^[0 2] $~)
119121 [%2 p=~]
120− ~zod/try=> (mink [5]^[10 yelp/[0 1] 0 0] ,~)
122+ ~zod/try=> (mink [5]^[10 yelp/[0 1] 0 0] $~)
121123 [%2 p=~[[~.yelp 5]]]
122124
123125