on master help sign in
Non-destructively porting page content changes
cc8114dMatilde Park
_index.md+4
@@ -3,3 +3,7 @@ title = "Docs"
3template = "sections/docs.html"
3template = "sections/docs.html"
4+++
4+++
5Welcome to the documentation for the Urbit project, including the Azimuth identity layer, the Arvo operating system, and the Hoon programming language. This documentation is maintained by [Tlon](https://tlon.io) in a public [Github repository](https://github.com/urbit/docs). Issues and contributions are welcome.
5Welcome to the documentation for the Urbit project, including the Azimuth identity layer, the Arvo operating system, and the Hoon programming language. This documentation is maintained by [Tlon](https://tlon.io) in a public [Github repository](https://github.com/urbit/docs). Issues and contributions are welcome.
6+
7+- [Install Urbit](/try)
8+- [Operator's Manual](/operations)
9+- [Developer's Guide](/develop)
learn/arvo/_index.md+9−9
@@ -4,37 +4,37 @@ weight = 1
4sort_by = "weight"
4sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6+++
6+++
7−Arvo is Urbit's functional operating system, written in [Hoon](@/docs/learn/hoon/_index.md). It's composed of modules called _vanes_:
7+Arvo is Urbit's functional operating system, written in [Hoon](@/docs/hoon/_index.md). It's composed of modules called _vanes_:
8
8
9−## [Ames](@/docs/learn/arvo/ames.md)
9+## [Ames](@/docs/arvo/ames.md)
10
10
11Ames is the name of our network and the vane that communicates over it. It's an encrypted P2P network composed of instances of the Arvo operating system.
11Ames is the name of our network and the vane that communicates over it. It's an encrypted P2P network composed of instances of the Arvo operating system.
12
12
13−## [Behn](@/docs/learn/arvo/behn.md)
13+## [Behn](@/docs/arvo/behn.md)
14
14
15Behn is our timer. It allows vanes and applications to set and timer events, which are managed in a simple priority queue.
15Behn is our timer. It allows vanes and applications to set and timer events, which are managed in a simple priority queue.
16
16
17−## [Clay](@/docs/learn/arvo/clay.md)
17+## [Clay](@/docs/arvo/clay.md)
18
18
19Clay is our filesystem and revision-control system.
19Clay is our filesystem and revision-control system.
20
20
21−## [Dill](@/docs/learn/arvo/dill.md)
21+## [Dill](@/docs/arvo/dill.md)
22
22
23Dill is our terminal driver. Unix sends keyboard events to dill from the terminal, and dill produces terminal output.
23Dill is our terminal driver. Unix sends keyboard events to dill from the terminal, and dill produces terminal output.
24
24
25−## [Eyre](@/docs/learn/arvo/eyre.md)
25+## [Eyre](@/docs/arvo/eyre.md)
26
26
27Eyre is our HTTP server. Unix sends HTTP messages to `%eyre`, and `%eyre` produces HTTP messages in response.
27Eyre is our HTTP server. Unix sends HTTP messages to `%eyre`, and `%eyre` produces HTTP messages in response.
28
28
29−## [Ford](@/docs/learn/arvo/ford.md)
29+## [Ford](@/docs/arvo/ford.md)
30
30
31Ford is our build system. It handles resources and publishing.
31Ford is our build system. It handles resources and publishing.
32
32
33−## [Gall](@/docs/learn/arvo/gall.md)
33+## [Gall](@/docs/arvo/gall.md)
34
34
35Gall is the vane for controlling userspace apps.
35Gall is the vane for controlling userspace apps.
36
36
37−### [Hall](@/docs/learn/arvo/hall.md)
37+### [Hall](@/docs/arvo/hall.md)
38
38
39Hall isn't a vane, but an important Gall app that functions as the Urbit messaging protocol.
39Hall isn't a vane, but an important Gall app that functions as the Urbit messaging protocol.
40
40
learn/arvo/ames.md+81−81
@@ -66,7 +66,7 @@ the path is the same for both.
66When an app (or a vane) wishes to send a packet to another ship, it must
66When an app (or a vane) wishes to send a packet to another ship, it must
67send a `%wont` card:
67send a `%wont` card:
68
68
69−```
69+```hoon
70 [%wont p=sock q=path r=*] :: e2e send message
70 [%wont p=sock q=path r=*] :: e2e send message
71```
71```
72
72
@@ -96,7 +96,7 @@ But enough about the interface. Grepping in ames.hoon for `%wont`, we
96find that it appears in `++knob`. We see that we go
96find that it appears in `++knob`. We see that we go
97directly into `++wise:am`.
97directly into `++wise:am`.
98
98
99−```
99+```hoon
100 ++ wise :: wise:am
100 ++ wise :: wise:am
101 |= [soq=sock hen=duct cha=path val=* ete=?] :: send a statement
101 |= [soq=sock hen=duct cha=path val=* ete=?] :: send a statement
102 ^- [p=(list boon) q=fort]
102 ^- [p=(list boon) q=fort]
@@ -119,7 +119,7 @@ The code predates the widespread usage of that name.
119The interesting part, then, is in `++wool:ho:um:am`. Let's look at the
119The interesting part, then, is in `++wool:ho:um:am`. Let's look at the
120code.
120code.
121
121
122−```
122+```hoon
123 ++ wool :: wool:ho:um:am
123 ++ wool :: wool:ho:um:am
124 |= [hen=duct cha=path val=* ete=?] :: send a statement
124 |= [hen=duct cha=path val=* ete=?] :: send a statement
125 ^+ +>
125 ^+ +>
@@ -164,7 +164,7 @@ Finally, we call `++wind:ho:um:am` with the `++soup` of the path and
164message number and the `++meal:ames` of the payload itself. For end-to-end
164message number and the `++meal:ames` of the payload itself. For end-to-end
165acknowledged messages, we use `%bund`.
165acknowledged messages, we use `%bund`.
166
166
167−```
167+```hoon
168 [%bund p=life q=path r=@ud s=*] :: e2e message
168 [%bund p=life q=path r=@ud s=*] :: e2e message
169```
169```
170
170
@@ -173,7 +173,7 @@ is for.
173
173
174Following the trail a little further, we go to `++wind:ho:um:am`.
174Following the trail a little further, we go to `++wind:ho:um:am`.
175
175
176−```
176+```hoon
177 ++ wind :: wind:ho:um:am
177 ++ wind :: wind:ho:um:am
178 |= [gom=soup ham=meal]
178 |= [gom=soup ham=meal]
179 :: ~& [%wind her gom]
179 :: ~& [%wind her gom]
@@ -192,7 +192,7 @@ gate is over. We'll go in order here.
192`++zuul:lax:as:go` is the what converts a `++meal:ames` into a list of
192`++zuul:lax:as:go` is the what converts a `++meal:ames` into a list of
193actual, 1KB packets.
193actual, 1KB packets.
194
194
195−```
195+```hoon
196 ++ zuul :: zuul:lax:as:go
196 ++ zuul :: zuul:lax:as:go
197 |= [now=@da ham=meal] :: encode message
197 |= [now=@da ham=meal] :: encode message
198 ^- [p=(list rock) q=_+>]
198 ^- [p=(list rock) q=_+>]
@@ -208,7 +208,7 @@ three arms. `++wasp` encodes the meal into an atom with no encryption.
208`++wasp`). `++weft` takes the result of `++wisp` and splits it into
208`++wasp`). `++weft` takes the result of `++wisp` and splits it into
209actual packets.
209actual packets.
210
210
211−```
211+```hoon
212 ++ wasp :: null security
212 ++ wasp :: null security
213 ^-([p=skin q=@] [%none (jam ham)])
213 ^-([p=skin q=@] [%none (jam ham)])
214```
214```
@@ -218,7 +218,7 @@ meaning no encryption.
218
218
219Since `++wisp` is a little long, we'll go through it line-by-line.
219Since `++wisp` is a little long, we'll go through it line-by-line.
220
220
221−```
221+```hoon
222 ++ wisp :: generate message
222 ++ wisp :: generate message
223 ^- [[p=skin q=@] q=_..wisp]
223 ^- [[p=skin q=@] q=_..wisp]
224```
224```
@@ -226,7 +226,7 @@ Since `++wisp` is a little long, we'll go through it line-by-line.
226`++wisp` produces a pair of a `skin` and an atom, which is the meal
226`++wisp` produces a pair of a `skin` and an atom, which is the meal
227encoded as a single atom and possibly encrypted.
227encoded as a single atom and possibly encrypted.
228
228
229−```
229+```hoon
230 ?: =(%carp -.ham)
230 ?: =(%carp -.ham)
231 [wasp ..wisp]
231 [wasp ..wisp]
232```
232```
@@ -236,7 +236,7 @@ A `%carp` meal is a partial meal, used when a message is more than 1KB.
236Since the entire message is already encrypted, we don't need to encrypt
236Since the entire message is already encrypted, we don't need to encrypt
237each packet individually again.
237each packet individually again.
238
238
239−```
239+```hoon
240 ?: !=(~ yed.caq.dur)
240 ?: !=(~ yed.caq.dur)
241 ?> ?=(^ yed.caq.dur)
241 ?> ?=(^ yed.caq.dur)
242 :_ ..wisp
242 :_ ..wisp
@@ -249,7 +249,7 @@ each packet individually again.
249If we have a symmetric key set up with this neighbor, then we simply use
249If we have a symmetric key set up with this neighbor, then we simply use
250it. The skin `%fast` is used to indicate a symmetric key.
250it. The skin `%fast` is used to indicate a symmetric key.
251
251
252−```
252+```hoon
253 ?: &(=(~ lew.wod.dur) |(=(%back -.ham) =(%buck -.ham)))
253 ?: &(=(~ lew.wod.dur) |(=(%back -.ham) =(%buck -.ham)))
254 [wasp ..wisp]
254 [wasp ..wisp]
255```
255```
@@ -259,7 +259,7 @@ can seal the message so that only they may read it. If what we're
259sending is an acknowledgment, then we go ahead and just send it in the
259sending is an acknowledgment, then we go ahead and just send it in the
260clear.
260clear.
261
261
262−```
262+```hoon
263 =^ tuy +>.$
263 =^ tuy +>.$
264 ?:(=(~ lew.wod.dur) [*code +>.$] (griz now))
264 ?:(=(~ lew.wod.dur) [*code +>.$] (griz now))
265```
265```
@@ -268,7 +268,7 @@ If we don't have our neighbor's will, then we "encrypt" with a key of 0.
268If we do have their will, then we generate a new symmetric key that we
268If we do have their will, then we generate a new symmetric key that we
269will propose.
269will propose.
270
270
271−```
271+```hoon
272 :_ ..wisp
272 :_ ..wisp
273 =+ yig=sen
273 =+ yig=sen
274 =+ bil=law.saf :: XX send whole will
274 =+ bil=law.saf :: XX send whole will
@@ -278,7 +278,7 @@ will propose.
278`yig` will be the life and engine for our current crypto. `bil` is our
278`yig` will be the life and engine for our current crypto. `bil` is our
279will. `hom` is the meal encoded as a single atom.
279will. `hom` is the meal encoded as a single atom.
280
280
281−```
281+```hoon
282 ?: =(~ lew.wod.dur)
282 ?: =(~ lew.wod.dur)
283 :- %open
283 :- %open
284 %^ jam
284 %^ jam
@@ -291,7 +291,7 @@ If we do not have our neighbor's will, then we send our current life
291along with our will and the message. The message itself is "signed" with
291along with our will and the message. The message itself is "signed" with
292a key of 0.
292a key of 0.
293
293
294−```
294+```hoon
295 :- %full
295 :- %full
296 =+ cay=cluy
296 =+ cay=cluy
297 %^ jam
297 %^ jam
@@ -307,7 +307,7 @@ is sealed with their public key so that only they can read our message.
307
307
308Once we have the message encoded as an atom, `++weft` goes to work.
308Once we have the message encoded as an atom, `++weft` goes to work.
309
309
310−```
310+```hoon
311 ++ weft :: fragment message
311 ++ weft :: fragment message
312 ^- [p=(list rock) q=_+>.$]
312 ^- [p=(list rock) q=_+>.$]
313 =^ gim ..weft wisp
313 =^ gim ..weft wisp
@@ -318,7 +318,7 @@ Once we have the message encoded as an atom, `++weft` goes to work.
318We're going to produce a list of the packets to send. First, we use the
318We're going to produce a list of the packets to send. First, we use the
319aforementioned `++wisp` to get the message as an atom.
319aforementioned `++wisp` to get the message as an atom.
320
320
321−```
321+```hoon
322 =+ wit=(met 13 q.gim)
322 =+ wit=(met 13 q.gim)
323 ?< =(0 wit)
323 ?< =(0 wit)
324```
324```
@@ -326,7 +326,7 @@ aforementioned `++wisp` to get the message as an atom.
326`wit` is the number of 1KB (2\^13 bit) blocks in the message. We assert
326`wit` is the number of 1KB (2\^13 bit) blocks in the message. We assert
327that there is at least one block.
327that there is at least one block.
328
328
329−```
329+```hoon
330 ?: =(1 wit)
330 ?: =(1 wit)
331 =+ yup=(spit [our her] p.gim q.gim)
331 =+ yup=(spit [our her] p.gim q.gim)
332 [yup ~]
332 [yup ~]
@@ -335,7 +335,7 @@ that there is at least one block.
335If there is exactly one block, then we just call `++spit` to turn the
335If there is exactly one block, then we just call `++spit` to turn the
336message into a packet. We'll explain what `++spit` does momentarily.
336message into a packet. We'll explain what `++spit` does momentarily.
337
337
338−```
338+```hoon
339 =+ ruv=(rip 13 q.gim)
339 =+ ruv=(rip 13 q.gim)
340 =+ gom=(shaf %thug q.gim)
340 =+ gom=(shaf %thug q.gim)
341 =+ inx=0
341 =+ inx=0
@@ -345,7 +345,7 @@ If there is more than one block, then we rip it into blocks in `ruv`.
345`gom` is a hash of the message, used as an id. `inx` is the number of
345`gom` is a hash of the message, used as an id. `inx` is the number of
346packets we've already made.
346packets we've already made.
347
347
348−```
348+```hoon
349 |- ^- (list rock)
349 |- ^- (list rock)
350 ?~ ruv ~
350 ?~ ruv ~
351 =+ ^= vie
351 =+ ^= vie
@@ -359,7 +359,7 @@ packets we've already made.
359Here we package each block into a packet with `++spit` and produce the
359Here we package each block into a packet with `++spit` and produce the
360list of packets.
360list of packets.
361
361
362−```
362+```hoon
363 ++ spit :: cake to packet
363 ++ spit :: cake to packet
364 |= kec=cake ^- @
364 |= kec=cake ^- @
365 =+ wim=(met 3 p.p.kec)
365 =+ wim=(met 3 p.p.kec)
@@ -426,7 +426,7 @@ This concludes our discussion of `++zuul:lax:as:go`. If you recall from
426`++whap:pu` to update the packet pump and get any packets that can be
426`++whap:pu` to update the packet pump and get any packets that can be
427sent immediately.
427sent immediately.
428
428
429−```
429+```hoon
430 ++ whap :: whap:pu
430 ++ whap :: whap:pu
431 |= [now=@da gom=soup wyv=(list rock)] :: send a message
431 |= [now=@da gom=soup wyv=(list rock)] :: send a message
432 ^- [(list rock) _+>]
432 ^- [(list rock) _+>]
@@ -456,7 +456,7 @@ the packet itself.
456
456
457Finally, we harvest the packet pump.
457Finally, we harvest the packet pump.
458
458
459−```
459+```hoon
460 ++ harv :: harv:pu
460 ++ harv :: harv:pu
461 |= now=@da :: harvest queue
461 |= now=@da :: harvest queue
462 ^- [(list rock) _+>]
462 ^- [(list rock) _+>]
@@ -480,7 +480,7 @@ we initialize `rub` to nil. `rub` will be the list of packets that are
480ready to be sent. We then call `++apse` and pass the result to `++abet`.
480ready to be sent. We then call `++apse` and pass the result to `++abet`.
481`++apse` decides which packets are ready to be sent.
481`++apse` decides which packets are ready to be sent.
482
482
483−```
483+```hoon
484 ++ apse
484 ++ apse
485 ^+ .
485 ^+ .
486 ?~ puq .
486 ?~ puq .
@@ -515,7 +515,7 @@ send; (3) increment `nif`, the number of live packets; (4) set the
515packet to be live; (5) increment the number of transmissions of the
515packet to be live; (5) increment the number of transmissions of the
516packet; and (6) set the last sent time of the packet to now.
516packet; and (6) set the last sent time of the packet to now.
517
517
518−```
518+```hoon
519 ++ left
519 ++ left
520 ?> ?=(^ puq)
520 ?> ?=(^ puq)
521 ^+(. =+(lef=apse(puq l.puq) lef(puq [n.puq puq.lef r.puq])))
521 ^+(. =+(lef=apse(puq l.puq) lef(puq [n.puq puq.lef r.puq])))
@@ -529,7 +529,7 @@ so that `++apse` gets called recursively through it.
529
529
530Finally, `++abet` gets called, which resolves the changes.
530Finally, `++abet` gets called, which resolves the changes.
531
531
532−```
532+```hoon
533 ++ abet
533 ++ abet
534 ?~ rub [~ +>.$]
534 ?~ rub [~ +>.$]
535 [(flop rub) +>.$(rtn [~ (add rto now)])]
535 [(flop rub) +>.$(rtn [~ (add rto now)])]
@@ -544,7 +544,7 @@ wait, in the call to `++busk`, the first argument is `xong:diz`. What is
544this? This, my dear reader, is one more detour, this time into
544this? This, my dear reader, is one more detour, this time into
545`++xong:lax:as:go`.
545`++xong:lax:as:go`.
546
546
547−```
547+```hoon
548 ++ xong :: xong:lax:as:go
548 ++ xong :: xong:lax:as:go
549 ^- (list ship) :: route unto
549 ^- (list ship) :: route unto
550 =+ [fro=xen too=xeno]
550 =+ [fro=xen too=xeno]
@@ -583,7 +583,7 @@ trying, in order, to find a lane to these.
583
583
584Now, we can finally get to `++busk:ho:um:am`.
584Now, we can finally get to `++busk:ho:um:am`.
585
585
586−```
586+```hoon
587 ++ busk :: busk:ho:um:am
587 ++ busk :: busk:ho:um:am
588 |= [waz=(list ship) pax=(list rock)] :: send packets
588 |= [waz=(list ship) pax=(list rock)] :: send packets
589 %_ +>
589 %_ +>
@@ -599,7 +599,7 @@ and convert them to `++boon:ames`s with `++wist:lax:as:go`. These boons are
599placed into `bin`, and they end up getting processed by `++clop` (this
599placed into `bin`, and they end up getting processed by `++clop` (this
600happens in `++knob`).
600happens in `++knob`).
601
601
602−```
602+```hoon
603 ++ wist :: wist:lax:as:go
603 ++ wist :: wist:lax:as:go
604 |= $: now=@da :: route via
604 |= $: now=@da :: route via
605 waz=(list ,@p)
605 waz=(list ,@p)
@@ -666,7 +666,7 @@ of moves. In `++clop`, we see the handling of each specific boon. The
666one we are interested in is `%ouzo`, since that is the only one we have
666one we are interested in is `%ouzo`, since that is the only one we have
667sent thus far.
667sent thus far.
668
668
669−```
669+```hoon
670 %ouzo
670 %ouzo
671 :: ~& [%send now p.bon `@p`(mug (shaf %flap q.bon))]
671 :: ~& [%send now p.bon `@p`(mug (shaf %flap q.bon))]
672 :_ fox
672 :_ fox
@@ -687,7 +687,7 @@ And now we reenter the kernel.
687The `%hear` task goes straight to `++knob`, just as did the `%wont` task
687The `%hear` task goes straight to `++knob`, just as did the `%wont` task
688earlier.
688earlier.
689
689
690−```
690+```hoon
691 %hear
691 %hear
692 (~(gnaw am [now fox]) %good p.kyz q.kyz)
692 (~(gnaw am [now fox]) %good p.kyz q.kyz)
693```
693```
@@ -701,7 +701,7 @@ event system, the `%hear` event will never be considered to have
701actually happened, and unix will send a `%hole` task so that we may send
701actually happened, and unix will send a `%hole` task so that we may send
702a negative acknowledgment.
702a negative acknowledgment.
703
703
704−```
704+```hoon
705 ++ gnaw :: gnaw:am
705 ++ gnaw :: gnaw:am
706 |= [kay=cape ryn=lane pac=rock] :: process packet
706 |= [kay=cape ryn=lane pac=rock] :: process packet
707 ^- [p=(list boon) q=fort]
707 ^- [p=(list boon) q=fort]
@@ -722,7 +722,7 @@ simply ignore the packet entirely. Otherwise, we parse the packet with
722of the `sock` (pair of sender and receiver), the `skin` (encryption
722of the `sock` (pair of sender and receiver), the `skin` (encryption
723type), and the data.
723type), and the data.
724
724
725−```
725+```hoon
726 ++ bite :: packet to cake
726 ++ bite :: packet to cake
727 |= pac=rock ^- cake
727 |= pac=rock ^- cake
728 =+ [mag=(end 5 1 pac) bod=(rsh 5 1 pac)]
728 =+ [mag=(end 5 1 pac) bod=(rsh 5 1 pac)]
@@ -760,7 +760,7 @@ and a hash of the packet, used as an id.
760contains a little helper core inside of it, which starts immediately
760contains a little helper core inside of it, which starts immediately
761with `++apse`.
761with `++apse`.
762
762
763−```
763+```hoon
764 ++ apse
764 ++ apse
765 ^+ +>.$
765 ^+ +>.$
766 =+ oub=bust:puz
766 =+ oub=bust:puz
@@ -795,7 +795,7 @@ first decrypts the message, then calls `++chow:la:ho:um:am` with the
795resultant meal. We'll go through each of the four cases in turn, but
795resultant meal. We'll go through each of the four cases in turn, but
796first since each one calls `++bilk:pu`, we'll take a brief detour.
796first since each one calls `++bilk:pu`, we'll take a brief detour.
797
797
798−```
798+```hoon
799 ++ bilk :: bilk:pu
799 ++ bilk :: bilk:pu
800 |= now=@da :: inbound packet
800 |= now=@da :: inbound packet
801 ^+ +>
801 ^+ +>
@@ -815,7 +815,7 @@ we've just heard a message.
815
815
816Back to `++east`.
816Back to `++east`.
817
817
818−```
818+```hoon
819 %none
819 %none
820 =. puz (bilk:puz now)
820 =. puz (bilk:puz now)
821 (chow ((hard meal) (cue msg)))
821 (chow ((hard meal) (cue msg)))
@@ -827,7 +827,7 @@ a meal. We hard cast it into a meal -- if the cast fails, then we do
827want to crash since someone is sending us malformed data. Finally, we
827want to crash since someone is sending us malformed data. Finally, we
828send the result to `++chow` for interpretation and handling.
828send the result to `++chow` for interpretation and handling.
829
829
830−```
830+```hoon
831 %fast
831 %fast
832 =+ [mag=`hand`(end 7 1 msg) bod=(rsh 7 1 msg)]
832 =+ [mag=`hand`(end 7 1 msg) bod=(rsh 7 1 msg)]
833 =+ dey=(kuch:diz mag)
833 =+ dey=(kuch:diz mag)
@@ -849,7 +849,7 @@ message.
849Otherwise, we call `++bilk` as before to update the packet pump and pass
849Otherwise, we call `++bilk` as before to update the packet pump and pass
850into `++chow` the decrypted data.
850into `++chow` the decrypted data.
851
851
852−```
852+```hoon
853 %full
853 %full
854 =+ mex=((hard ,[p=[p=life q=life] q=will r=@]) (cue msg))
854 =+ mex=((hard ,[p=[p=life q=life] q=will r=@]) (cue msg))
855 =. diz (deng:diz q.mex)
855 =. diz (deng:diz q.mex)
@@ -874,7 +874,7 @@ key from our neighbor's crypto. We register the proposed symmetric key,
874update the packet pump, and call `++west`, which simply casts the
874update the packet pump, and call `++west`, which simply casts the
875message to a meal and calls `++chow`, reporting any error.
875message to a meal and calls `++chow`, reporting any error.
876
876
877−```
877+```hoon
878 %open
878 %open
879 =+ mex=((hard ,[p=[~ q=life] q=will r=@]) (cue msg))
879 =+ mex=((hard ,[p=[~ q=life] q=will r=@]) (cue msg))
880 =. diz (deng:diz q.mex)
880 =. diz (deng:diz q.mex)
@@ -894,7 +894,7 @@ The rest you have seen. We call `++deng` to extend the will, we verify
894that their crypto life is what we think it ought to be, we "decrypt" the
894that their crypto life is what we think it ought to be, we "decrypt" the
895data, we update the packet pump, and we call `++west` to call `++chow`.
895data, we update the packet pump, and we call `++west` to call `++chow`.
896
896
897−```
897+```hoon
898 ++ chow :: chow:la:ho:um:am
898 ++ chow :: chow:la:ho:um:am
899 |= fud=meal :: interpret meal
899 |= fud=meal :: interpret meal
900 ^+ +>
900 ^+ +>
@@ -912,7 +912,7 @@ we want to do with it. The telos is of any meal to be dined on. We will
912choose out the cases here that are important to our current
912choose out the cases here that are important to our current
913investigation.
913investigation.
914
914
915−```
915+```hoon
916 %fore
916 %fore
917 =+ ^= lyn ^- lane
917 =+ ^= lyn ^- lane
918 ?~ q.fud ryn
918 ?~ q.fud ryn
@@ -932,7 +932,7 @@ resolves. If we're told to forward a packet to ourselves, then we emit a
932`%mead` boon which simply sends another `%hear` task to ourselves with
932`%mead` boon which simply sends another `%hear` task to ourselves with
933the data. Otherwise, we try to find a route to the recipient, as before.
933the data. Otherwise, we try to find a route to the recipient, as before.
934
934
935−```
935+```hoon
936 %carp
936 %carp
937 =+ zol=(~(get by olz.weg) s.fud)
937 =+ zol=(~(get by olz.weg) s.fud)
938 ?^ zol cock(kay u.zol)
938 ?^ zol cock(kay u.zol)
@@ -975,7 +975,7 @@ complete message into `olz.weg`, and call `++golf`, which assembles the
975message and calls `++chew`, to start the dance again with the complete
975message and calls `++chew`, to start the dance again with the complete
976message.
976message.
977
977
978−```
978+```hoon
979 %bund
979 %bund
980 :: ~& [%bund q.fud r.fud]
980 :: ~& [%bund q.fud r.fud]
981 ?> =(p:sen:gus p.fud)
981 ?> =(p:sen:gus p.fud)
@@ -989,7 +989,7 @@ unix rather than a `%hear` card), then we don't even send the data at
989all. Remember, if a packet fails to process, it's as if it never even
989all. Remember, if a packet fails to process, it's as if it never even
990arrived, except that we send a negative acknowledgment.
990arrived, except that we send a negative acknowledgment.
991
991
992−```
992+```hoon
993 ++ deer :: deer:la:ho:um:am
993 ++ deer :: deer:la:ho:um:am
994 |= [cha=path num=@ud dut=(unit)] :: interpret message
994 |= [cha=path num=@ud dut=(unit)] :: interpret message
995 ^+ +>
995 ^+ +>
@@ -1029,7 +1029,7 @@ acknowledgment.
1029
1029
1030Otherwise, we're ready for a packet, so we process it.
1030Otherwise, we're ready for a packet, so we process it.
1031
1031
1032−```
1032+```hoon
1033 ++ coat :: coat:ho:um:am
1033 ++ coat :: coat:ho:um:am
1034 |= [cha=path rum=race] :: update input race
1034 |= [cha=path rum=race] :: update input race
1035 ^+ +>
1035 ^+ +>
@@ -1064,7 +1064,7 @@ been here before, if you recall, when we handled the `%cake` boon to
1064send a message. Now, we're handling the `%mulk` boon, which is
1064send a message. Now, we're handling the `%mulk` boon, which is
1065unfortunately slightly more complicated.
1065unfortunately slightly more complicated.
1066
1066
1067−```
1067+```hoon
1068 %mulk
1068 %mulk
1069 :: ~& [%mulk p.bon q.bon]
1069 :: ~& [%mulk p.bon q.bon]
1070 ?> ?=([@ @ *] q.q.bon)
1070 ?> ?=([@ @ *] q.q.bon)
@@ -1140,7 +1140,7 @@ After this brief interlude, our story resumes in `++knap`, where we
1140receive responses. In particular, a `%mean` indicates a negative
1140receive responses. In particular, a `%mean` indicates a negative
1141acknowledgment while a `%nice` indicates a positive acknowledgment.
1141acknowledgment while a `%nice` indicates a positive acknowledgment.
1142
1142
1143−```
1143+```hoon
1144 ?(%mean %nice)
1144 ?(%mean %nice)
1145 ?> ?=([@ @ @ *] tea)
1145 ?> ?=([@ @ @ *] tea)
1146 =+ soq=[(slav %p i.tea) (slav %p i.t.tea)]
1146 =+ soq=[(slav %p i.tea) (slav %p i.t.tea)]
@@ -1164,7 +1164,7 @@ which the message was sent. The rest of this is structured much like
1164`++knob`, so we call `++rack:am` and send the resulting boons to
1164`++knob`, so we call `++rack:am` and send the resulting boons to
1165`++clop`. Business as usual.
1165`++clop`. Business as usual.
1166
1166
1167−```
1167+```hoon
1168 ++ rack :: rack:am
1168 ++ rack :: rack:am
1169 |= [soq=sock cha=path cop=coop] :: e2e ack
1169 |= [soq=sock cha=path cop=coop] :: e2e ack
1170 =+ oh=(ho:(um p.soq) q.soq)
1170 =+ oh=(ho:(um p.soq) q.soq)
@@ -1178,7 +1178,7 @@ new, though. Well, `++cook` is not actually new, but we delayed the
1178explanation saying only that it sends an acknowledgment. The time has
1178explanation saying only that it sends an acknowledgment. The time has
1179come.
1179come.
1180
1180
1181−```
1181+```hoon
1182 ++ cook :: cook:ho:um:am
1182 ++ cook :: cook:ho:um:am
1183 |= [cop=coop cha=path ram=(unit ,[ryn=lane dam=flap])]
1183 |= [cop=coop cha=path ram=(unit ,[ryn=lane dam=flap])]
1184 ^+ +> :: acknowledgment
1184 ^+ +> :: acknowledgment
@@ -1253,7 +1253,7 @@ The last thing we need to do on this ship is move on to the next packet
1253in the queue if there is one. If you recall, in `++rack` after the call
1253in the queue if there is one. If you recall, in `++rack` after the call
1254to `++cook` there was a call to `++cans:ho:um:am`.
1254to `++cook` there was a call to `++cans:ho:um:am`.
1255
1255
1256−```
1256+```hoon
1257 ++ cans :: cans:ho:um:am
1257 ++ cans :: cans:ho:um:am
1258 |= cha=path
1258 |= cha=path
1259 =+ rum=(need (~(get by raz.bah) cha))
1259 =+ rum=(need (~(get by raz.bah) cha))
@@ -1285,7 +1285,7 @@ going over to `++chew`, `++apse`, `++chow`, and eventualy to `++dine`.
1285We've seen most of the cases in `++dine`, but we haven't yet looked at
1285We've seen most of the cases in `++dine`, but we haven't yet looked at
1286the handling of this `%buck` meal.
1286the handling of this `%buck` meal.
1287
1287
1288−```
1288+```hoon
1289 %buck
1289 %buck
1290 =. +> ?.(=(%full aut) +> cock) :: finish key exch
1290 =. +> ?.(=(%full aut) +> cock) :: finish key exch
1291 +>(..la (tock p.fud q.fud r.fud))
1291 +>(..la (tock p.fud q.fud r.fud))
@@ -1300,7 +1300,7 @@ as a `%woot` card back to the app who sent it. For those brave souls who
1300wish to see this thing through to the end, it's once more into the
1300wish to see this thing through to the end, it's once more into the
1301breach.
1301breach.
1302
1302
1303−```
1303+```hoon
1304 ++ tock :: tock:ho:um:am
1304 ++ tock :: tock:ho:um:am
1305 |= [cop=coop fap=flap cot=@dr] :: e2e ack by hash
1305 |= [cop=coop fap=flap cot=@dr] :: e2e ack by hash
1306 ^+ +>
1306 ^+ +>
@@ -1324,7 +1324,7 @@ skip `++bick` for the moment and finish the rest.
1324
1324
1325If `++bick` succesfully acks the message, then we call `++done`.
1325If `++bick` succesfully acks the message, then we call `++done`.
1326
1326
1327−```
1327+```hoon
1328 ++ done :: done:ho:um:am
1328 ++ done :: done:ho:um:am
1329 |= [cha=path num=@ud] :: complete outgoing
1329 |= [cha=path num=@ud] :: complete outgoing
1330 ^- [(unit duct) _+>]
1330 ^- [(unit duct) _+>]
@@ -1357,7 +1357,7 @@ ones have been acknowledged.
1357We'll look at the processing of the `%cake` boon in `++clop` before we
1357We'll look at the processing of the `%cake` boon in `++clop` before we
1358get back to talking about `++bick`.
1358get back to talking about `++bick`.
1359
1359
1360−```
1360+```hoon
1361 %cake
1361 %cake
1362 :_ fox
1362 :_ fox
1363 :~ [s.bon %give %woot q.p.bon r.bon]
1363 :~ [s.bon %give %woot q.p.bon r.bon]
@@ -1374,7 +1374,7 @@ the application. Our job is done.
1374
1374
1375Well, except that we skipped `++bick:pu`. Let's go back to that.
1375Well, except that we skipped `++bick:pu`. Let's go back to that.
1376
1376
1377−```
1377+```hoon
1378 ++ bick :: bick:pu
1378 ++ bick :: bick:pu
1379 |= [now=@da fap=flap] :: ack by hash
1379 |= [now=@da fap=flap] :: ack by hash
1380 ^- [[p=(unit soup) q=(list rock)] _+>]
1380 ^- [[p=(unit soup) q=(list rock)] _+>]
@@ -1401,7 +1401,7 @@ In `++bock`, there are three arms we haven't seen before: `++bine`,
1401`+wept`, and `++beet`. We'll describe each of these before we get to
1401`+wept`, and `++beet`. We'll describe each of these before we get to
1402`++bock`. `++bine` looks scariest.
1402`++bock`. `++bine` looks scariest.
1403
1403
1404−```
1404+```hoon
1405 ++ bine :: bine:pu
1405 ++ bine :: bine:pu
1406 |= [now=@da num=@ud] :: apply ack
1406 |= [now=@da num=@ud] :: apply ack
1407 ^- [(unit soup) _+>]
1407 ^- [(unit soup) _+>]
@@ -1458,7 +1458,7 @@ message. Otherwise, we simply update `pyz` with the new number of
1458unacked messages. In either case, we remove the packet from the packet
1458unacked messages. In either case, we remove the packet from the packet
1459queue.
1459queue.
1460
1460
1461−```
1461+```hoon
1462 ++ wept :: wept:pu
1462 ++ wept :: wept:pu
1463 |= [fip=@ud lap=@ud] :: fip thru lap-1
1463 |= [fip=@ud lap=@ud] :: fip thru lap-1
1464 =< abet =< apse
1464 =< abet =< apse
@@ -1489,7 +1489,7 @@ mourn too much the passing of these packets, know that they shall soon
1489rise again. Recall that in `++bick` after the call to `++bock` we call
1489rise again. Recall that in `++bick` after the call to `++bock` we call
1490`++harv`. This will resend the packets that have just been labeled dead.
1490`++harv`. This will resend the packets that have just been labeled dead.
1491
1491
1492−```
1492+```hoon
1493 ++ beet :: beet:pu
1493 ++ beet :: beet:pu
1494 ^+ . :: advance unacked
1494 ^+ . :: advance unacked
1495 =- +(nep ?~(foh nus u.foh))
1495 =- +(nep ?~(foh nus u.foh))
@@ -1508,7 +1508,7 @@ number of packets sent.
1508
1508
1509We can now dive into `++bock`, our last arm.
1509We can now dive into `++bock`, our last arm.
1510
1510
1511−```
1511+```hoon
1512 ++ bock :: bock:pu
1512 ++ bock :: bock:pu
1513 |= [now=@da num=@ud] :: ack by sequence
1513 |= [now=@da num=@ud] :: ack by sequence
1514 ^- [(unit soup) _+>]
1514 ^- [(unit soup) _+>]
@@ -1555,7 +1555,7 @@ involved.
1555
1555
1556### `++sufi:ames`, domestic host
1556### `++sufi:ames`, domestic host
1557
1557
1558−```
1558+```hoon
1559 ++ sufi :: domestic host
1559 ++ sufi :: domestic host
1560 $: hoy=(list ship) :: hierarchy
1560 $: hoy=(list ship) :: hierarchy
1561 val=wund :: private keys
1561 val=wund :: private keys
@@ -1583,7 +1583,7 @@ information about foreign ships. The keys to this map are the neighbors
1583
1583
1584### `++wund:ames`, private keys
1584### `++wund:ames`, private keys
1585
1585
1586−```
1586+```hoon
1587 ++ wund (list ,[p=life q=ring r=acru]) :: mace in action
1587 ++ wund (list ,[p=life q=ring r=acru]) :: mace in action
1588```
1588```
1589
1589
@@ -1595,7 +1595,7 @@ at the head of the list and can be accessed with `++sen:as:go`.
1595
1595
1596### `++ring`, private key
1596### `++ring`, private key
1597
1597
1598−```
1598+```hoon
1599 ++ ring ,@ :: private key
1599 ++ ring ,@ :: private key
1600```
1600```
1601
1601
@@ -1605,7 +1605,7 @@ key, and the letter identifies which `++acru:ames` to use.
1605
1605
1606### `++pass`, public key
1606### `++pass`, public key
1607
1607
1608−```
1608+```hoon
1609 ++ pass ,@ :: public key
1609 ++ pass ,@ :: public key
1610```
1610```
1611
1611
@@ -1615,7 +1615,7 @@ and the letter identifies which `++acru:ames` to use.
1615
1615
1616### `++mace:ames`, private secrets
1616### `++mace:ames`, private secrets
1617
1617
1618−```
1618+```hoon
1619 ++ mace (list ,[p=life q=ring]) :: private secrets
1619 ++ mace (list ,[p=life q=ring]) :: private secrets
1620```
1620```
1621
1621
@@ -1624,7 +1624,7 @@ can generate a `++wund:ames` for actual use.
1624
1624
1625### `++skin:ames`, encoding stem
1625### `++skin:ames`, encoding stem
1626
1626
1627−```
1627+```hoon
1628 ++ skin ?(%none %open %fast %full) :: encoding stem
1628 ++ skin ?(%none %open %fast %full) :: encoding stem
1629```
1629```
1630
1630
@@ -1635,7 +1635,7 @@ encrypted messages. See `++acru:ames` for details.
1635
1635
1636### `++acru:ames`, asymmetric cryptosuite
1636### `++acru:ames`, asymmetric cryptosuite
1637
1637
1638−```
1638+```hoon
1639 ++ acru :: asym cryptosuite
1639 ++ acru :: asym cryptosuite
1640 $_ ^? |% :: opaque object
1640 $_ ^? |% :: opaque object
1641 ++ as ^? :: asym ops
1641 ++ as ^? :: asym ops
@@ -1669,7 +1669,7 @@ which is elliptic-curve cryptography.
1669
1669
1670#### `++as:acru:ames`, asymmetric operations
1670#### `++as:acru:ames`, asymmetric operations
1671
1671
1672−```
1672+```hoon
1673 ++ as ^? :: asym ops
1673 ++ as ^? :: asym ops
1674 |% ++ seal |=([a=pass b=@ c=@] _@) :: encrypt to a
1674 |% ++ seal |=([a=pass b=@ c=@] _@) :: encrypt to a
1675 ++ sign |=([a=@ b=@] _@) :: certify as us
1675 ++ sign |=([a=@ b=@] _@) :: certify as us
@@ -1706,7 +1706,7 @@ associated with the `++skin:ames` `%full`.
1706
1706
1707#### `++de:acru:ames`, `++dy:acru:ames`, and `++en:acru:ames`, symmetric encryption/decryption
1707#### `++de:acru:ames`, `++dy:acru:ames`, and `++en:acru:ames`, symmetric encryption/decryption
1708
1708
1709−```
1709+```hoon
1710 ++ de |+([a=@ b=@] *(unit ,@)) :: symmetric de, soft
1710 ++ de |+([a=@ b=@] *(unit ,@)) :: symmetric de, soft
1711 ++ dy |+([a=@ b=@] _@) :: symmetric de, hard
1711 ++ dy |+([a=@ b=@] _@) :: symmetric de, hard
1712 ++ en |+([a=@ b=@] _@) :: symmetric en
1712 ++ en |+([a=@ b=@] _@) :: symmetric en
@@ -1725,7 +1725,7 @@ semantically equivalent to, `(need (de a b))`.
1725
1725
1726#### `++ex:acru:ames`, exporting data
1726#### `++ex:acru:ames`, exporting data
1727
1727
1728−```
1728+```hoon
1729 ++ ex ^? :: export
1729 ++ ex ^? :: export
1730 |% ++ fig _@uvH :: fingerprint
1730 |% ++ fig _@uvH :: fingerprint
1731 ++ pac _@uvG :: default passcode
1731 ++ pac _@uvG :: default passcode
@@ -1747,7 +1747,7 @@ owned by their owners
1747
1747
1748#### `++nu:acru:ames`, reconstructors
1748#### `++nu:acru:ames`, reconstructors
1749
1749
1750−```
1750+```hoon
1751 ++ nu ^? :: reconstructors
1751 ++ nu ^? :: reconstructors
1752 |% ++ pit |=([a=@ b=@] ^?(..nu)) :: from [width seed]
1752 |% ++ pit |=([a=@ b=@] ^?(..nu)) :: from [width seed]
1753 ++ nol |=(a=@ ^?(..nu)) :: from naked ring
1753 ++ nol |=(a=@ ^?(..nu)) :: from naked ring
@@ -1769,7 +1769,7 @@ the `++acru:ames`.
1769
1769
1770### `++will`, certificate
1770### `++will`, certificate
1771
1771
1772−```
1772+```hoon
1773 ++ will (list deed) :: certificate
1773 ++ will (list deed) :: certificate
1774```
1774```
1775
1775
@@ -1782,7 +1782,7 @@ issued \~tasruc's deed).
1782
1782
1783### `++deed`, identity
1783### `++deed`, identity
1784
1784
1785−```
1785+```hoon
1786 ++ deed ,[p=@ q=step r=?] :: sig, stage, fake?
1786 ++ deed ,[p=@ q=step r=?] :: sig, stage, fake?
1787```
1787```
1788
1788
@@ -1797,7 +1797,7 @@ networks for development without interfering with the real network.
1797
1797
1798### `++step:ames`, identity stage
1798### `++step:ames`, identity stage
1799
1799
1800−```
1800+```hoon
1801 ++ step ,[p=bray q=gens r=pass] :: identity stage
1801 ++ step ,[p=bray q=gens r=pass] :: identity stage
1802```
1802```
1803
1803
@@ -1813,7 +1813,7 @@ lives.
1813
1813
1814### `++bray:ames`
1814### `++bray:ames`
1815
1815
1816−```
1816+```hoon
1817 ++ bray ,[p=life q=(unit life) r=ship s=@da] :: our parent us now
1817 ++ bray ,[p=life q=(unit life) r=ship s=@da] :: our parent us now
1818```
1818```
1819
1819
@@ -1821,7 +1821,7 @@ XXX
1821
1821
1822### `++gens:ames`, general identity
1822### `++gens:ames`, general identity
1823
1823
1824−```
1824+```hoon
1825 ++ gens ,[p=lang q=gcos] :: general identity
1825 ++ gens ,[p=lang q=gcos] :: general identity
1826```
1826```
1827
1827
@@ -1833,7 +1833,7 @@ localized based on this.
1833
1833
1834### `++gcos:ames`, identity description
1834### `++gcos:ames`, identity description
1835
1835
1836−```
1836+```hoon
1837 ++ gcos :: id description
1837 ++ gcos :: id description
1838 $% [%czar ~] :: 8-bit ship
1838 $% [%czar ~] :: 8-bit ship
1839 [%duke p=what] :: 32-bit ship
1839 [%duke p=what] :: 32-bit ship
@@ -1872,7 +1872,7 @@ This is the underworld of Urbit, where anonymity reigns supreme.
1872
1872
1873### `++what:ames`, logical destroyer identity
1873### `++what:ames`, logical destroyer identity
1874
1874
1875−```
1875+```hoon
1876 ++ what :: logical identity
1876 ++ what :: logical identity
1877 $% [%anon ~] :: anonymous
1877 $% [%anon ~] :: anonymous
1878 [%lady p=whom] :: female person ()
1878 [%lady p=whom] :: female person ()
@@ -1896,7 +1896,7 @@ A `%punk` is a person who is identified only by a handle.
1896
1896
1897### `++whom:ames`, real person
1897### `++whom:ames`, real person
1898
1898
1899−```
1899+```hoon
1900 ++ whom ,[p=@ud q=govt r=sect s=name] :: year/govt/id
1900 ++ whom ,[p=@ud q=govt r=sect s=name] :: year/govt/id
1901```
1901```
1902
1902
@@ -1913,7 +1913,7 @@ information that could be observed with the briefest of interactions.
1913
1913
1914### `++govt:ames`
1914### `++govt:ames`
1915
1915
1916−```
1916+```hoon
1917 ++ govt path :: country/postcode
1917 ++ govt path :: country/postcode
1918```
1918```
1919
1919
@@ -1921,7 +1921,7 @@ This is the location of the user, usually of the form "country/zip".
1921
1921
1922### `++sect:ames`
1922### `++sect:ames`
1923
1923
1924−```
1924+```hoon
1925 ++ sect ?(%black %blue %red %orange %white) :: banner
1925 ++ sect ?(%black %blue %red %orange %white) :: banner
1926```
1926```
1927
1927
@@ -1929,7 +1929,7 @@ XXX
1929
1929
1930### `++name:ames`
1930### `++name:ames`
1931
1931
1932−```
1932+```hoon
1933 ++ name ,[p=@t q=(unit ,@t) r=(unit ,@t) s=@t] :: first mid/nick last
1933 ++ name ,[p=@t q=(unit ,@t) r=(unit ,@t) s=@t] :: first mid/nick last
1934```
1934```
1935
1935
learn/arvo/clay.md+92−92
@@ -473,7 +473,7 @@ back when you need to.
473
473
474### `++raft`, formal state
474### `++raft`, formal state
475
475
476−```
476+```hoon
477 ++ raft :: filesystem
477 ++ raft :: filesystem
478 $: fat=(map ship room) :: domestic
478 $: fat=(map ship room) :: domestic
479 hoy=(map ship rung) :: foreign
479 hoy=(map ship rung) :: foreign
@@ -496,7 +496,7 @@ bookkeeping".
496
496
497#### `++room`, filesystem per domestic ship
497#### `++room`, filesystem per domestic ship
498
498
499−```
499+```hoon
500 ++ room :: fs per ship
500 ++ room :: fs per ship
501 $: hun=duct :: terminal duct
501 $: hun=duct :: terminal duct
502 hez=(unit duct) :: sync duch
502 hez=(unit duct) :: sync duch
@@ -519,7 +519,7 @@ set of desks on this ship, mapped to their data.
519
519
520#### `++desk`, filesystem branch
520#### `++desk`, filesystem branch
521
521
522−```
522+```hoon
523 ++ desk ,@tas :: ship desk case spur
523 ++ desk ,@tas :: ship desk case spur
524```
524```
525
525
@@ -530,7 +530,7 @@ merged into each other.
530
530
531### `++dojo`, domestic desk state
531### `++dojo`, domestic desk state
532
532
533−```
533+```hoon
534 ++ dojo ,[p=cult q=dome] :: domestic desk state
534 ++ dojo ,[p=cult q=dome] :: domestic desk state
535```
535```
536
536
@@ -540,7 +540,7 @@ data in the desk.
540
540
541#### `++cult`, subscriptions
541#### `++cult`, subscriptions
542
542
543−```
543+```hoon
544 ++ cult (map duct rave) :: subscriptions
544 ++ cult (map duct rave) :: subscriptions
545```
545```
546
546
@@ -551,7 +551,7 @@ requested information.
551
551
552#### `++rave:clay`, general subscription request
552#### `++rave:clay`, general subscription request
553
553
554−```
554+```hoon
555 ++ rave :: general request
555 ++ rave :: general request
556 $% [& p=mood] :: single request
556 $% [& p=mood] :: single request
557 [| p=moat] :: change range
557 [| p=moat] :: change range
@@ -564,7 +564,7 @@ the desk.
564
564
565### `++rove`, stored general subscription request
565### `++rove`, stored general subscription request
566
566
567−```
567+```hoon
568 ++ rove (each mood moot) :: stored request
568 ++ rove (each mood moot) :: stored request
569```
569```
570
570
@@ -574,7 +574,7 @@ affect the path we're subscribed to.
574
574
575#### `++mood:clay`, single subscription request
575#### `++mood:clay`, single subscription request
576
576
577−```
577+```hoon
578 ++ mood ,[p=care q=case r=path] :: request in desk
578 ++ mood ,[p=care q=case r=path] :: request in desk
579```
579```
580
580
@@ -584,7 +584,7 @@ desired, and `r` specifies the path we are requesting.
584
584
585#### `++moat:clay`, range subscription request
585#### `++moat:clay`, range subscription request
586
586
587−```
587+```hoon
588 ++ moat ,[p=case q=case r=path] :: change range
588 ++ moat ,[p=case q=case r=path] :: change range
589```
589```
590
590
@@ -594,7 +594,7 @@ by the path or to any of its children.
594
594
595### `++moot`, stored range subscription request
595### `++moot`, stored range subscription request
596
596
597−```
597+```hoon
598 ++ moot ,[p=case q=case r=path s=(map path lobe)] ::
598 ++ moot ,[p=case q=case r=path s=(map path lobe)] ::
599```
599```
600
600
@@ -605,7 +605,7 @@ the subscription if the data at a new revision is different than it was.
605
605
606### `++care:clay`, clay submode
606### `++care:clay`, clay submode
607
607
608−```
608+```hoon
609 ++ care ?(%u %v %w %x %y %z) :: clay submode
609 ++ care ?(%u %v %w %x %y %z) :: clay submode
610```
610```
611
611
@@ -630,7 +630,7 @@ if `q:ankh` is null), then this produces null.
630
630
631### `++arch`, shallow filesystem node
631### `++arch`, shallow filesystem node
632
632
633−```
633+```hoon
634 ++ arch ,[p=@uvI q=(unit ,@uvI) r=(map ,@ta ,~)] :: fundamental node
634 ++ arch ,[p=@uvI q=(unit ,@uvI) r=(map ,@ta ,~)] :: fundamental node
635```
635```
636
636
@@ -644,7 +644,7 @@ efficient conversion.
644
644
645#### `++case:clay`, specifying a commit
645#### `++case:clay`, specifying a commit
646
646
647−```
647+```hoon
648 ++ case :: ship desk case spur
648 ++ case :: ship desk case spur
649 $% [%da p=@da] :: date
649 $% [%da p=@da] :: date
650 [%tas p=@tas] :: label
650 [%tas p=@tas] :: label
@@ -660,7 +660,7 @@ referenced with a `++case:clay`.
660
660
661#### `++dome:clay`, desk data
661#### `++dome:clay`, desk data
662
662
663−```
663+```hoon
664 ++ dome :: project state
664 ++ dome :: project state
665 $: ang=agon :: pedigree
665 $: ang=agon :: pedigree
666 ank=ankh :: state
666 ank=ankh :: state
@@ -700,7 +700,7 @@ desk.
700
700
701#### `++ankh`, filesystem node
701#### `++ankh`, filesystem node
702
702
703−```
703+```hoon
704 ++ ankh :: fs node (new)
704 ++ ankh :: fs node (new)
705 $: p=cash :: recursive hash
705 $: p=cash :: recursive hash
706 q=(unit ,[p=cash q=*]) :: file
706 q=(unit ,[p=cash q=*]) :: file
@@ -724,7 +724,7 @@ are, recursively, the nodes themselves.
724
724
725#### `++cash`, ankh hash
725#### `++cash`, ankh hash
726
726
727−```
727+```hoon
728 ++ cash ,@uvH :: ankh hash
728 ++ cash ,@uvH :: ankh hash
729```
729```
730
730
@@ -734,7 +734,7 @@ hierarchies.
734
734
735#### `++rung`, filesystem per neighbor ship
735#### `++rung`, filesystem per neighbor ship
736
736
737−```
737+```hoon
738 ++ rung $: rus=(map desk rede) :: neighbor desks
738 ++ rung $: rus=(map desk rede) :: neighbor desks
739 == ::
739 == ::
740```
740```
@@ -744,7 +744,7 @@ the desks we know about on their ship.
744
744
745#### `++rede`, desk state
745#### `++rede`, desk state
746
746
747−```
747+```hoon
748 ++ rede :: universal project
748 ++ rede :: universal project
749 $: lim=@da :: complete to
749 $: lim=@da :: complete to
750 qyx=cult :: subscribers
750 qyx=cult :: subscribers
@@ -770,7 +770,7 @@ null since we handle requests ourselves.
770
770
771#### `++rind`, request manager
771#### `++rind`, request manager
772
772
773−```
773+```hoon
774 ++ rind :: request manager
774 ++ rind :: request manager
775 $: nix=@ud :: request index
775 $: nix=@ud :: request index
776 bom=(map ,@ud ,[p=duct q=rave]) :: outstanding
776 bom=(map ,@ud ,[p=duct q=rave]) :: outstanding
@@ -801,7 +801,7 @@ for a particular `++mood:clay` is nearly instantaneous.
801
801
802#### `++rang:clay`, data store
802#### `++rang:clay`, data store
803
803
804−```
804+```hoon
805 ++ rang $: hut=(map tako yaki) ::
805 ++ rang $: hut=(map tako yaki) ::
806 lat=(map lobe blob) ::
806 lat=(map lobe blob) ::
807 == ::
807 == ::
@@ -821,7 +821,7 @@ this map.
821
821
822#### `++tako:clay`, commit reference
822#### `++tako:clay`, commit reference
823
823
824−```
824+```hoon
825 ++ tako ,@ :: yaki ref
825 ++ tako ,@ :: yaki ref
826```
826```
827
827
@@ -832,7 +832,7 @@ associated with these.
832
832
833#### `++yaki:clay`, commit
833#### `++yaki:clay`, commit
834
834
835−```
835+```hoon
836 ++ yaki ,[p=(list tako) q=(map path lobe) r=tako t=@da] :: commit
836 ++ yaki ,[p=(list tako) q=(map path lobe) r=tako t=@da] :: commit
837```
837```
838
838
@@ -854,7 +854,7 @@ here tells the whole story.
854
854
855#### `++lobe:clay`, data reference
855#### `++lobe:clay`, data reference
856
856
857−```
857+```hoon
858 ++ lobe ,@ :: blob ref
858 ++ lobe ,@ :: blob ref
859```
859```
860
860
@@ -864,7 +864,7 @@ where they are associated with the actual `++blob:clay`, and as the values in
864
864
865#### `++blob:clay`, data
865#### `++blob:clay`, data
866
866
867−```
867+```hoon
868 ++ blob $% [%delta p=lobe q=lobe r=udon] :: delta on q
868 ++ blob $% [%delta p=lobe q=lobe r=udon] :: delta on q
869 [%direct p=lobe q=* r=umph] ::
869 [%direct p=lobe q=* r=umph] ::
870 [%indirect p=lobe q=* r=udon s=lobe] ::
870 [%indirect p=lobe q=* r=udon s=lobe] ::
@@ -892,7 +892,7 @@ not have to traverse the delta chain back to the creation of the file.
892
892
893#### `++udon`, abstract delta
893#### `++udon`, abstract delta
894
894
895−```
895+```hoon
896 ++ udon :: abstract delta
896 ++ udon :: abstract delta
897 $: p=umph :: preprocessor
897 $: p=umph :: preprocessor
898 $= q :: patch
898 $= q :: patch
@@ -927,7 +927,7 @@ moment, and may in fact be unimplemented.
927
927
928#### `++urge`, list change
928#### `++urge`, list change
929
929
930−```
930+```hoon
931 ++ urge |*(a=_,* (list (unce a))) :: list change
931 ++ urge |*(a=_,* (list (unce a))) :: list change
932```
932```
933
933
@@ -936,7 +936,7 @@ is a list change for lines of text.
936
936
937#### `++unce`, change part of a list.
937#### `++unce`, change part of a list.
938
938
939−```
939+```hoon
940 ++ unce |* a=_,* :: change part
940 ++ unce |* a=_,* :: change part
941 $% [%& p=@ud] :: skip[copy]
941 $% [%& p=@ud] :: skip[copy]
942 [%| p=(list a) q=(list a)] :: p -> q[chunk]
942 [%| p=(list a) q=(list a)] :: p -> q[chunk]
@@ -952,7 +952,7 @@ This is a single change in a list of elements of type `a`. For example,
952
952
953#### `++umph`, preprocessing information
953#### `++umph`, preprocessing information
954
954
955−```
955+```hoon
956 ++ umph :: change filter
956 ++ umph :: change filter
957 $| $? %a :: no filter
957 $| $? %a :: no filter
958 %b :: jamfile
958 %b :: jamfile
@@ -967,7 +967,7 @@ we get a well-typed clay.
967
967
968#### `++upas`, tree change
968#### `++upas`, tree change
969
969
970−```
970+```hoon
971 ++ upas :: tree change (%d)
971 ++ upas :: tree change (%d)
972 $& [p=upas q=upas] :: cell
972 $& [p=upas q=upas] :: cell
973 $% [%0 p=axis] :: copy old
973 $% [%0 p=axis] :: copy old
@@ -982,7 +982,7 @@ is not a complicated type; it is not difficult to work out the meaning.
982
982
983#### `++nori:clay`, repository action
983#### `++nori:clay`, repository action
984
984
985−```
985+```hoon
986 ++ nori :: repository action
986 ++ nori :: repository action
987 $% [& q=soba] :: delta
987 $% [& q=soba] :: delta
988 [| p=@tas] :: label
988 [| p=@tas] :: label
@@ -998,7 +998,7 @@ label. In the `&` case, we will apply the given changes.
998
998
999#### `++soba:clay`, delta
999#### `++soba:clay`, delta
1000
1000
1001−```
1001+```hoon
1002 ++ soba ,[p=cart q=(list ,[p=path q=miso])] :: delta
1002 ++ soba ,[p=cart q=(list ,[p=path q=miso])] :: delta
1003```
1003```
1004
1004
@@ -1010,7 +1010,7 @@ itself.
1010
1010
1011#### `++miso:clay`, ankh delta
1011#### `++miso:clay`, ankh delta
1012
1012
1013−```
1013+```hoon
1014 ++ miso :: ankh delta
1014 ++ miso :: ankh delta
1015 $% [%del p=*] :: delete
1015 $% [%del p=*] :: delete
1016 [%ins p=*] :: insert
1016 [%ins p=*] :: insert
@@ -1026,7 +1026,7 @@ changes we are applying to the file.
1026
1026
1027#### `++mizu:clay`, merged state
1027#### `++mizu:clay`, merged state
1028
1028
1029−```
1029+```hoon
1030 ++ mizu ,[p=@u q=(map ,@ud tako) r=rang] :: new state
1030 ++ mizu ,[p=@u q=(map ,@ud tako) r=rang] :: new state
1031```
1031```
1032
1032
@@ -1040,7 +1040,7 @@ commits or data need be here.
1040
1040
1041#### `++riff:clay`, request/desist
1041#### `++riff:clay`, request/desist
1042
1042
1043−```
1043+```hoon
1044 ++ riff ,[p=desk q=(unit rave)] :: request/desist
1044 ++ riff ,[p=desk q=(unit rave)] :: request/desist
1045```
1045```
1046
1046
@@ -1051,7 +1051,7 @@ along this duct.
1051
1051
1052#### `++riot:clay`, response
1052#### `++riot:clay`, response
1053
1053
1054−```
1054+```hoon
1055 ++ riot (unit rant) :: response/complete
1055 ++ riot (unit rant) :: response/complete
1056```
1056```
1057
1057
@@ -1061,7 +1061,7 @@ been completed, and no more responses will be sent. Otherwise, the
1061
1061
1062#### `++rant:clay`, response data
1062#### `++rant:clay`, response data
1063
1063
1064−```
1064+```hoon
1065 ++ rant :: namespace binding
1065 ++ rant :: namespace binding
1066 $: p=[p=care q=case r=@tas] :: clade release book
1066 $: p=[p=care q=case r=@tas] :: clade release book
1067 q=path :: spur
1067 q=path :: spur
@@ -1077,7 +1077,7 @@ node. `r` is the data itself (in the format specified by `p.p`).
1077
1077
1078### `++nako`, subscription response data
1078### `++nako`, subscription response data
1079
1079
1080−```
1080+```hoon
1081 ++ nako $: gar=(map ,@ud tako) :: new ids
1081 ++ nako $: gar=(map ,@ud tako) :: new ids
1082 let=@ud :: next id
1082 let=@ud :: next id
1083 lar=(set yaki) :: new commits
1083 lar=(set yaki) :: new commits
@@ -1105,7 +1105,7 @@ As with all vanes, there are exactly two ways to interact with clay.
1105above under `++care:clay`. The primary way of interacting with clay, though,
1105above under `++care:clay`. The primary way of interacting with clay, though,
1106is by sending kisses and receiving gifts.
1106is by sending kisses and receiving gifts.
1107
1107
1108−```
1108+```hoon
1109 ++ gift :: out result <-$
1109 ++ gift :: out result <-$
1110 $% [%ergo p=@p q=@tas r=@ud] :: version update
1110 $% [%ergo p=@p q=@tas r=@ud] :: version update
1111 [%note p=@tD q=tank] :: debug message
1111 [%note p=@tD q=tank] :: debug message
@@ -1126,7 +1126,7 @@ is by sending kisses and receiving gifts.
1126There are only a small number of possible kisses, so it behooves us to
1126There are only a small number of possible kisses, so it behooves us to
1127describe each in detail.
1127describe each in detail.
1128
1128
1129−```
1129+```hoon
1130 $% [%info p=@p q=@tas r=nori] :: internal edit
1130 $% [%info p=@p q=@tas r=nori] :: internal edit
1131
1131
1132 [%into p=@p q=@tas r=nori] :: external edit
1132 [%into p=@p q=@tas r=nori] :: external edit
@@ -1145,7 +1145,7 @@ duct that unix is listening on for changes. From within Arvo, though, we
1145should never send a `%into` kiss. The `%info` kiss is exactly identical
1145should never send a `%into` kiss. The `%info` kiss is exactly identical
1146except it does not reset the duct.
1146except it does not reset the duct.
1147
1147
1148−```
1148+```hoon
1149 [%ingo p=@p q=@tas r=nori] :: internal noun edit
1149 [%ingo p=@p q=@tas r=nori] :: internal noun edit
1150
1150
1151 [%invo p=@p q=@tas r=nori] :: external noun edit
1151 [%invo p=@p q=@tas r=nori] :: external noun edit
@@ -1156,7 +1156,7 @@ will not always be the case. The intent is for these kisses to allow
1156typed changes to clay so that we may store typed data. This is currently
1156typed changes to clay so that we may store typed data. This is currently
1157unimplemented.
1157unimplemented.
1158
1158
1159−```
1159+```hoon
1160 [%init p=@p] :: report install
1160 [%init p=@p] :: report install
1161```
1161```
1162
1162
@@ -1164,7 +1164,7 @@ Init is called when a ship is started on our pier. This simply creates a
1164default `room` to go into our `raft`. Essentially, this initializes the
1164default `room` to go into our `raft`. Essentially, this initializes the
1165filesystem for a ship.
1165filesystem for a ship.
1166
1166
1167−```
1167+```hoon
1168 [%merg p=@p q=@tas r=mizu] :: internal change
1168 [%merg p=@p q=@tas r=mizu] :: internal change
1169```
1169```
1170
1170
@@ -1181,7 +1181,7 @@ time is XX usually the closest time specified in a subscription request.
1181When `%wake` is XX called, we update our subscribers if there have been
1181When `%wake` is XX called, we update our subscribers if there have been
1182any changes.
1182any changes.
1183
1183
1184−```
1184+```hoon
1185 [%wart p=sock q=@tas r=path s=*] :: network request
1185 [%wart p=sock q=@tas r=path s=*] :: network request
1186```
1186```
1187
1187
@@ -1190,7 +1190,7 @@ file. When another ship asks for a file from us, that request comes to
1190us in the form of a `%wart` kiss. This is handled by trivially turning
1190us in the form of a `%wart` kiss. This is handled by trivially turning
1191it into a `%warp`.
1191it into a `%warp`.
1192
1192
1193−```
1193+```hoon
1194 [%warp p=sock q=riff] :: file request
1194 [%warp p=sock q=riff] :: file request
1195```
1195```
1196
1196
@@ -1220,7 +1220,7 @@ version.
1220As in all vanes, a kiss enters clay via a call to `++call`. Scanning
1220As in all vanes, a kiss enters clay via a call to `++call`. Scanning
1221through the arm, we quickly see where `%warp` is handled.
1221through the arm, we quickly see where `%warp` is handled.
1222
1222
1223−```
1223+```hoon
1224 ?: =(p.p.q.hic q.p.q.hic)
1224 ?: =(p.p.q.hic q.p.q.hic)
1225 =+ une=(un p.p.q.hic now ruf)
1225 =+ une=(un p.p.q.hic now ruf)
1226 =+ wex=(di:une p.q.q.hic)
1226 =+ wex=(di:une p.q.q.hic)
@@ -1261,7 +1261,7 @@ Although it's called last, it's usually worth examining `++abet` first,
1261since it defines in what ways we can cause side effects. Let's do that,
1261since it defines in what ways we can cause side effects. Let's do that,
1262and also a few of the lines at the beginning of `++de`.
1262and also a few of the lines at the beginning of `++de`.
1263
1263
1264−```
1264+```hoon
1265 =| yel=(list ,[p=duct q=gift])
1265 =| yel=(list ,[p=duct q=gift])
1266 =| byn=(list ,[p=duct q=riot])
1266 =| byn=(list ,[p=duct q=riot])
1267 =| vag=(list ,[p=duct q=gift])
1267 =| vag=(list ,[p=duct q=gift])
@@ -1317,7 +1317,7 @@ the only notes we pass here are `%wait` and `%rest` to the timer vane.
1317Now that we know what kinds of side effects we may have, we can jump
1317Now that we know what kinds of side effects we may have, we can jump
1318into the handling of requests.
1318into the handling of requests.
1319
1319
1320−```
1320+```hoon
1321 ++ ease :: release request
1321 ++ ease :: release request
1322 |= hen=duct
1322 |= hen=duct
1323 ^+ +>
1323 ^+ +>
@@ -1347,7 +1347,7 @@ it's easy to see that for foreign desks, we cancel any outstanding
1347requests for this duct and send a message over ames to the other ship
1347requests for this duct and send a message over ames to the other ship
1348telling them to cancel the subscription.
1348telling them to cancel the subscription.
1349
1349
1350−```
1350+```hoon
1351 ++ best
1351 ++ best
1352 |= [hen=duct tym=@da]
1352 |= [hen=duct tym=@da]
1353 %_(+> tag :_(tag [hen /tyme %t %rest tym]))
1353 %_(+> tag :_(tag [hen /tyme %t %rest tym]))
@@ -1357,7 +1357,7 @@ This simply pushes a `%rest` note onto `tag`, from where it will be
1357passed back to arvo to be handled. This cancels the timer at the given
1357passed back to arvo to be handled. This cancels the timer at the given
1358duct (with the given time).
1358duct (with the given time).
1359
1359
1360−```
1360+```hoon
1361 ++ mabe :: maybe fire function
1361 ++ mabe :: maybe fire function
1362 |* [rov=rove fun=$+(@da _+>.^$)]
1362 |* [rov=rove fun=$+(@da _+>.^$)]
1363 ^+ +>.$
1363 ^+ +>.$
@@ -1394,7 +1394,7 @@ smallest time.
1394The more interesting case is, of course, when we're not cancelling a
1394The more interesting case is, of course, when we're not cancelling a
1395subscription but starting one.
1395subscription but starting one.
1396
1396
1397−```
1397+```hoon
1398 ++ eave :: subscribe
1398 ++ eave :: subscribe
1399 |= [hen=duct rav=rave]
1399 |= [hen=duct rav=rave]
1400 ^+ +>
1400 ^+ +>
@@ -1428,7 +1428,7 @@ This case occurs when we make a request for a case whose (1) date is
1428after the current date, (2) number is after the current number, or (3)
1428after the current date, (2) number is after the current number, or (3)
1429label is not yet used.
1429label is not yet used.
1430
1430
1431−```
1431+```hoon
1432 ++ duce :: produce request
1432 ++ duce :: produce request
1433 |= [hen=duct rov=rove]
1433 |= [hen=duct rov=rove]
1434 ^+ +>
1434 ^+ +>
@@ -1456,7 +1456,7 @@ Recall that `ref` is null for domestic desks and that `++mabe` fires the
1456given function with the time we need to be woken up at, if we need to be
1456given function with the time we need to be woken up at, if we need to be
1457woken up at a particular time.
1457woken up at a particular time.
1458
1458
1459−```
1459+```hoon
1460 ++ bait
1460 ++ bait
1461 |= [hen=duct tym=@da]
1461 |= [hen=duct tym=@da]
1462 %_(+> tag :_(tag [hen /tyme %t %wait tym]))
1462 %_(+> tag :_(tag [hen /tyme %t %wait tym]))
@@ -1471,7 +1471,7 @@ that does not exist, (2) a `%w` request with a case that is not a
1471number, or (3) a `%w` request with a nonempty path. The `++blub` is
1471number, or (3) a `%w` request with a nonempty path. The `++blub` is
1472exactly what you would expect it to be.
1472exactly what you would expect it to be.
1473
1473
1474−```
1474+```hoon
1475 ++ blub :: ship stop
1475 ++ blub :: ship stop
1476 |= hen=duct
1476 |= hen=duct
1477 %_(+> byn [[hen ~] byn])
1477 %_(+> byn [[hen ~] byn])
@@ -1483,7 +1483,7 @@ isn't satisfiable.
1483Otherwise, we have received the desired information, so we send it on to
1483Otherwise, we have received the desired information, so we send it on to
1484the subscriber with `++blab`.
1484the subscriber with `++blab`.
1485
1485
1486−```
1486+```hoon
1487 ++ blab :: ship result
1487 ++ blab :: ship result
1488 |= [hen=duct mun=mood dat=*]
1488 |= [hen=duct mun=mood dat=*]
1489 ^+ +>
1489 ^+ +>
@@ -1493,7 +1493,7 @@ the subscriber with `++blab`.
1493The most interesting arm called in `++eave` is, of course, `++aver`,
1493The most interesting arm called in `++eave` is, of course, `++aver`,
1494where we actually try to read the data.
1494where we actually try to read the data.
1495
1495
1496−```
1496+```hoon
1497 ++ aver :: read
1497 ++ aver :: read
1498 |= mun=mood
1498 |= mun=mood
1499 ^- (unit (unit ,*))
1499 ^- (unit (unit ,*))
@@ -1520,7 +1520,7 @@ Here, we jump into `arvo/zuse.hoon`, which is where much of the
1520algorithmic code is stored, as opposed to the clay interface, which is
1520algorithmic code is stored, as opposed to the clay interface, which is
1521stored in `arvo/clay.hoon`. We examine `++case-to-aeon:ze`.
1521stored in `arvo/clay.hoon`. We examine `++case-to-aeon:ze`.
1522
1522
1523−```
1523+```hoon
1524 ++ case-to-aeon :: case-to-aeon:ze
1524 ++ case-to-aeon :: case-to-aeon:ze
1525 |= lok=case :: act count through
1525 |= lok=case :: act count through
1526 ^- (unit aeon)
1526 ^- (unit aeon)
@@ -1561,7 +1561,7 @@ revisions were committed, we produce `0`.
1561
1561
1562The definitions of `++aeon-to-tako` and `++tako-to-yaki` are trivial.
1562The definitions of `++aeon-to-tako` and `++tako-to-yaki` are trivial.
1563
1563
1564−```
1564+```hoon
1565 ++ aeon-to-tako ~(got by hit)
1565 ++ aeon-to-tako ~(got by hit)
1566
1566
1567 ++ tako-to-yaki ~(got by hut) :: grab yaki
1567 ++ tako-to-yaki ~(got by hut) :: grab yaki
@@ -1574,7 +1574,7 @@ Assuming we got a valid version number, `++aver` calls
1574`++read-at-aeon:ze`, which reads the requested data at the given
1574`++read-at-aeon:ze`, which reads the requested data at the given
1575revision.
1575revision.
1576
1576
1577−```
1577+```hoon
1578 ++ read-at-aeon :: read-at-aeon:ze
1578 ++ read-at-aeon :: read-at-aeon:ze
1579 |= [oan=aeon mun=mood] :: seek and read
1579 |= [oan=aeon mun=mood] :: seek and read
1580 ^- (unit)
1580 ^- (unit)
@@ -1588,7 +1588,7 @@ number, then we go ahead and just produce the number we were given.
1588Otherwise, we call `++rewind` to rewind our state to the given revision,
1588Otherwise, we call `++rewind` to rewind our state to the given revision,
1589and then we call `++read` to get the requested information.
1589and then we call `++read` to get the requested information.
1590
1590
1591−```
1591+```hoon
1592 ++ rewind :: rewind:ze
1592 ++ rewind :: rewind:ze
1593 |= oan=aeon :: rewind to aeon
1593 |= oan=aeon :: rewind to aeon
1594 ^+ +>
1594 ^+ +>
@@ -1606,7 +1606,7 @@ represents a version of the filesystem. We call `++checkout-ankh` to
1606checkout the commit, and we replace `ank` in our context with the
1606checkout the commit, and we replace `ank` in our context with the
1607result.
1607result.
1608
1608
1609−```
1609+```hoon
1610 ++ checkout-ankh :: checkout-ankh:ze
1610 ++ checkout-ankh :: checkout-ankh:ze
1611 |= hat=(map path lobe) :: checkout commit
1611 |= hat=(map path lobe) :: checkout commit
1612 ^- ankh
1612 ^- ankh
@@ -1629,7 +1629,7 @@ Twice we call `++cosh`, which hashes a commit, updating `p` in an
1629`ankh`. Let's jump into that algorithm before we describe
1629`ankh`. Let's jump into that algorithm before we describe
1630`++checkout-ankh`.
1630`++checkout-ankh`.
1631
1631
1632−```
1632+```hoon
1633 ++ cosh :: locally rehash
1633 ++ cosh :: locally rehash
1634 |= ank=ankh :: NB v/unix.c
1634 |= ank=ankh :: NB v/unix.c
1635 ank(p rehash:(zu ank))
1635 ank(p rehash:(zu ank))
@@ -1638,7 +1638,7 @@ Twice we call `++cosh`, which hashes a commit, updating `p` in an
1638We simply replace `p` in the hash with the `cash` we get from a call to
1638We simply replace `p` in the hash with the `cash` we get from a call to
1639`++rehash:zu`.
1639`++rehash:zu`.
1640
1640
1641−```
1641+```hoon
1642 ++ zu !: :: filesystem
1642 ++ zu !: :: filesystem
1643 |= ank=ankh :: filesystem state
1643 |= ank=ankh :: filesystem state
1644 =| myz=(list ,[p=path q=miso]) :: changes in reverse
1644 =| myz=(list ,[p=path q=miso]) :: changes in reverse
@@ -1676,7 +1676,7 @@ We fold over every path in this version of the filesystem and create a
1676great ankh out of them. First, we call `++lobe-to-noun` to get the raw
1676great ankh out of them. First, we call `++lobe-to-noun` to get the raw
1677data referred to be each lobe.
1677data referred to be each lobe.
1678
1678
1679−```
1679+```hoon
1680 ++ lobe-to-noun :: grab blob
1680 ++ lobe-to-noun :: grab blob
1681 |= p=lobe :: ^- *
1681 |= p=lobe :: ^- *
1682 %- blob-to-noun
1682 %- blob-to-noun
@@ -1687,13 +1687,13 @@ This converts a lobe into the raw data it refers to by first getting the
1687blob with `++lobe-to-blob` and converting that into data with
1687blob with `++lobe-to-blob` and converting that into data with
1688`++blob-to-noun`.
1688`++blob-to-noun`.
1689
1689
1690−```
1690+```hoon
1691 ++ lobe-to-blob ~(got by lat) :: grab blob
1691 ++ lobe-to-blob ~(got by lat) :: grab blob
1692```
1692```
1693
1693
1694This just grabs the blob that the lobe refers to.
1694This just grabs the blob that the lobe refers to.
1695
1695
1696−```
1696+```hoon
1697 ++ blob-to-noun :: grab blob
1697 ++ blob-to-noun :: grab blob
1698 |= p=blob
1698 |= p=blob
1699 ?- -.p
1699 ?- -.p
@@ -1708,7 +1708,7 @@ right in the blob. Otherwise, we have to reconstruct it from the diffs.
1708We do this by calling `++lump` on the diff in the blob with the data
1708We do this by calling `++lump` on the diff in the blob with the data
1709obtained by recursively calling the parent of this blob.
1709obtained by recursively calling the parent of this blob.
1710
1710
1711−```
1711+```hoon
1712 ++ lump :: apply patch
1712 ++ lump :: apply patch
1713 |= [don=udon src=*]
1713 |= [don=udon src=*]
1714 ^- *
1714 ^- *
@@ -1738,7 +1738,7 @@ we're performing a trivial replace, so we produce simply `q.q.don`. If
1738we have a `%c` udon, then we're performing a list merge (as in, for
1738we have a `%c` udon, then we're performing a list merge (as in, for
1739example, lines of text). The merge is performed by `++lurk`.
1739example, lines of text). The merge is performed by `++lurk`.
1740
1740
1741−```
1741+```hoon
1742 ++ lurk :: apply list patch
1742 ++ lurk :: apply list patch
1743 |* [hel=(list) rug=(urge)]
1743 |* [hel=(list) rug=(urge)]
1744 ^+ hel
1744 ^+ hel
@@ -1777,7 +1777,7 @@ crashing on failure. If they're good, then we append the new lines in
1777And that's really it. List merges are pretty easy. Anyway, if you
1777And that's really it. List merges are pretty easy. Anyway, if you
1778recall, we were discussing `++checkout-ankh`.
1778recall, we were discussing `++checkout-ankh`.
1779
1779
1780−```
1780+```hoon
1781 ++ checkout-ankh :: checkout-ankh:ze
1781 ++ checkout-ankh :: checkout-ankh:ze
1782 |= hat=(map path lobe) :: checkout commit
1782 |= hat=(map path lobe) :: checkout commit
1783 ^- ankh
1783 ^- ankh
@@ -1887,7 +1887,7 @@ in which our current state is (very nearly) as it was when the specified
1887version of the desk was the head. This allows `++read-at-aeon` to call
1887version of the desk was the head. This allows `++read-at-aeon` to call
1888`++read` to read the requested information.
1888`++read` to read the requested information.
1889
1889
1890−```
1890+```hoon
1891 ++ read :: read:ze
1891 ++ read :: read:ze
1892 |= mun=mood :: read at point
1892 |= mun=mood :: read at point
1893 ^- (unit)
1893 ^- (unit)
@@ -1919,7 +1919,7 @@ doesn't seem to work, so we'll ignore this case.
1919Otherwise, we descend into the ankh tree to the given path with
1919Otherwise, we descend into the ankh tree to the given path with
1920`++descend-path:zu`, and then we handle specific request in `++query`.
1920`++descend-path:zu`, and then we handle specific request in `++query`.
1921
1921
1922−```
1922+```hoon
1923 ++ descend-path :: descend recursively
1923 ++ descend-path :: descend recursively
1924 |= way=path
1924 |= way=path
1925 ^+ +>
1925 ^+ +>
@@ -1929,7 +1929,7 @@ Otherwise, we descend into the ankh tree to the given path with
1929This is simple recursion down into the ankh tree. `++descend` descends
1929This is simple recursion down into the ankh tree. `++descend` descends
1930one level, so this will eventually get us down to the path we want.
1930one level, so this will eventually get us down to the path we want.
1931
1931
1932−```
1932+```hoon
1933 ++ descend :: descend
1933 ++ descend :: descend
1934 |= lol=@ta
1934 |= lol=@ta
1935 ^+ +>
1935 ^+ +>
@@ -1944,7 +1944,7 @@ one at that path if it exists; else we create a blank one.
1944Once we've decscended to the correct level, we need to actually deal
1944Once we've decscended to the correct level, we need to actually deal
1945with the request.
1945with the request.
1946
1946
1947−```
1947+```hoon
1948 ++ query :: query:ze
1948 ++ query :: query:ze
1949 |= ren=?(%u %v %x %y %z) :: endpoint query
1949 |= ren=?(%u %v %x %y %z) :: endpoint query
1950 ^- (unit ,*)
1950 ^- (unit ,*)
@@ -1962,7 +1962,7 @@ the rang, dome, or ankh, we give it to them. If the contents of a file,
1962we give it to them if it is in fact a file. If the `arch`, then we
1962we give it to them if it is in fact a file. If the `arch`, then we
1963calculate it with `++as-arch`.
1963calculate it with `++as-arch`.
1964
1964
1965−```
1965+```hoon
1966 ++ as-arch :: as-arch:ze
1966 ++ as-arch :: as-arch:ze
1967 ^- arch :: arch report
1967 ^- arch :: arch report
1968 :+ p.ank
1968 :+ p.ank
@@ -1983,7 +1983,7 @@ same path that a single read does. In `++aver`, we checked the head of
1983the given rave. If the head was `&`, then it was a single request, so we
1983the given rave. If the head was `&`, then it was a single request, so we
1984handled it above. If `|`, then we handle it with the following code.
1984handled it above. If `|`, then we handle it with the following code.
1985
1985
1986−```
1986+```hoon
1987 =+ nab=(~(case-to-aeon ze lim dom ran) p.p.rav)
1987 =+ nab=(~(case-to-aeon ze lim dom ran) p.p.rav)
1988 ?~ nab
1988 ?~ nab
1989 ?> =(~ (~(case-to-aeon ze lim dom ran) q.p.rav))
1989 ?> =(~ (~(case-to-aeon ze lim dom ran) q.p.rav))
@@ -2043,7 +2043,7 @@ We glossed over the calls to `++lobes-at-path`, `++make-nako`, and
2043`++bleb`, so we'll get back to those right now. `++bleb` is simple, so
2043`++bleb`, so we'll get back to those right now. `++bleb` is simple, so
2044we'll start with that.
2044we'll start with that.
2045
2045
2046−```
2046+```hoon
2047 ++ bleb :: ship sequence
2047 ++ bleb :: ship sequence
2048 |= [hen=duct ins=@ud hip=nako]
2048 |= [hen=duct ins=@ud hip=nako]
2049 ^+ +>
2049 ^+ +>
@@ -2057,7 +2057,7 @@ of the beginning of the subscription, and the data is the nako itself.
2057
2057
2058We call `++lobes-at-path:ze` to get the data at the particular path.
2058We call `++lobes-at-path:ze` to get the data at the particular path.
2059
2059
2060−```
2060+```hoon
2061 ++ lobes-at-path :: lobes-at-path:ze
2061 ++ lobes-at-path :: lobes-at-path:ze
2062 |= [oan=aeon pax=path] :: data at path
2062 |= [oan=aeon pax=path] :: data at path
2063 ^- (map path lobe)
2063 ^- (map path lobe)
@@ -2090,7 +2090,7 @@ tell if a node or its children have changed.
2090
2090
2091Finally, we will describe `++make-nako:ze`.
2091Finally, we will describe `++make-nako:ze`.
2092
2092
2093−```
2093+```hoon
2094 ++ make-nako :: gack a through b
2094 ++ make-nako :: gack a through b
2095 |= [a=aeon b=aeon]
2095 |= [a=aeon b=aeon]
2096 ^- [(map aeon tako) aeon (set yaki) (set blob)]
2096 ^- [(map aeon tako) aeon (set yaki) (set blob)]
@@ -2119,7 +2119,7 @@ commit.
2119The third and fourth are slightly more interesting, though not too
2119The third and fourth are slightly more interesting, though not too
2120terribly difficult. First, we call `++reachable-between-takos`.
2120terribly difficult. First, we call `++reachable-between-takos`.
2121
2121
2122−```
2122+```hoon
2123 ++ reachable-between-takos
2123 ++ reachable-between-takos
2124 |= [a=(unit tako) b=tako] :: pack a through b
2124 |= [a=(unit tako) b=tako] :: pack a through b
2125 ^- [(set tako) (set lobe)]
2125 ^- [(set tako) (set lobe)]
@@ -2150,7 +2150,7 @@ We let `sar` be the set of commits reachable from `a`. If `a` is null,
2150then obviously no commits are reachable. Otherwise, we call
2150then obviously no commits are reachable. Otherwise, we call
2151`++reachable-takos` to calculate this.
2151`++reachable-takos` to calculate this.
2152
2152
2153−```
2153+```hoon
2154 ++ reachable-takos :: reachable
2154 ++ reachable-takos :: reachable
2155 |= p=tako :: XX slow
2155 |= p=tako :: XX slow
2156 ^- (set tako)
2156 ^- (set tako)
@@ -2175,7 +2175,7 @@ tako referenced by `a`. The result is passed into `++new-lobes-takos` to
2175do the same, but not recomputing those in already calculated last
2175do the same, but not recomputing those in already calculated last
2176sentence. This produces the sets of takos and lobes we need.
2176sentence. This produces the sets of takos and lobes we need.
2177
2177
2178−```
2178+```hoon
2179 ++ new-lobes :: object hash set
2179 ++ new-lobes :: object hash set
2180 |= [b=(set lobe) a=(set tako)] :: that aren't in b
2180 |= [b=(set lobe) a=(set tako)] :: that aren't in b
2181 ^- (set lobe)
2181 ^- (set lobe)
@@ -2206,7 +2206,7 @@ there, and, if it's not already in `b`, we add it to `b`. In the case of
2206a direct blob, we're done. For a delta or an indirect blob, we
2206a direct blob, we're done. For a delta or an indirect blob, we
2207recursively add every blob referenced within the blob.
2207recursively add every blob referenced within the blob.
2208
2208
2209−```
2209+```hoon
2210 ++ new-lobes-takos :: garg & repack
2210 ++ new-lobes-takos :: garg & repack
2211 |= [b=(set lobe) a=(set tako)]
2211 |= [b=(set lobe) a=(set tako)]
2212 ^- [(set tako) (set lobe)]
2212 ^- [(set tako) (set lobe)]
@@ -2229,7 +2229,7 @@ Thus, we start in the same place -- in `++call`, handling `%warp`.
2229However, since the two side of the `sock` are different, we follow a
2229However, since the two side of the `sock` are different, we follow a
2230different path.
2230different path.
2231
2231
2232−```
2232+```hoon
2233 =+ wex=(do now p.q.hic p.q.q.hic ruf)
2233 =+ wex=(do now p.q.hic p.q.q.hic ruf)
2234 =+ ^= woo
2234 =+ ^= woo
2235 ?~ q.q.q.hic
2235 ?~ q.q.q.hic
@@ -2249,7 +2249,7 @@ the modified rung into the raft.
2249
2249
2250We'll first trace through `++do`.
2250We'll first trace through `++do`.
2251
2251
2252−```
2252+```hoon
2253 ++ do
2253 ++ do
2254 |= [now=@da [who=ship him=ship] syd=@tas ruf=raft]
2254 |= [now=@da [who=ship him=ship] syd=@tas ruf=raft]
2255 =+ ^= rug ^- rung
2255 =+ ^= rug ^- rung
@@ -2273,7 +2273,7 @@ With this information, we create a `++de` core as usual.
2273Although we've already covered `++ease` and `++eave`, we'll go through
2273Although we've already covered `++ease` and `++eave`, we'll go through
2274them quickly again, highlighting the case of foreign request.
2274them quickly again, highlighting the case of foreign request.
2275
2275
2276−```
2276+```hoon
2277 ++ ease :: release request
2277 ++ ease :: release request
2278 |= hen=duct
2278 |= hen=duct
2279 ^+ +>
2279 ^+ +>
@@ -2307,7 +2307,7 @@ is exactly identical to the case of the local request except `++duce`.
2307We said that `++duce` simply puts the request into our cult. This is
2307We said that `++duce` simply puts the request into our cult. This is
2308true for a domestic request, but distinctly untrue for foreign requests.
2308true for a domestic request, but distinctly untrue for foreign requests.
2309
2309
2310−```
2310+```hoon
2311 ++ duce :: produce request
2311 ++ duce :: produce request
2312 |= [hen=duct rov=rove]
2312 |= [hen=duct rov=rove]
2313 ^+ +>
2313 ^+ +>
@@ -2344,7 +2344,7 @@ ship, that comes to us in the form of a `%wart` from ames.
2344We handle a `%wart` in `++call`, right next to where we handle the
2344We handle a `%wart` in `++call`, right next to where we handle the
2345`%warp` case.
2345`%warp` case.
2346
2346
2347−```
2347+```hoon
2348 %wart
2348 %wart
2349 ?> ?=(%re q.q.hic)
2349 ?> ?=(%re q.q.hic)
2350 =+ ryf=((hard riff) s.q.hic)
2350 =+ ryf=((hard riff) s.q.hic)
@@ -2362,7 +2362,7 @@ ourself. This gets handled like normal, as a local request. When the
2362request produces a value, it does so like normal as a `%writ`, which is
2362request produces a value, it does so like normal as a `%writ`, which is
2363returned to `++take` along the path we just sent it on.
2363returned to `++take` along the path we just sent it on.
2364
2364
2365−```
2365+```hoon
2366 %writ
2366 %writ
2367 ?> ?=([@ @ *] tea)
2367 ?> ?=([@ @ *] tea)
2368 =+ our=(need (slaw %p i.tea))
2368 =+ our=(need (slaw %p i.tea))
@@ -2380,7 +2380,7 @@ the new data.
2380This comes back to the original ship as a `%waft` from ames, which comes
2380This comes back to the original ship as a `%waft` from ames, which comes
2381into `++take`, right next to where we handled `%writ`.
2381into `++take`, right next to where we handled `%writ`.
2382
2382
2383−```
2383+```hoon
2384 %waft
2384 %waft
2385 ?> ?=([@ @ ~] tea)
2385 ?> ?=([@ @ ~] tea)
2386 =+ syd=(need (slaw %tas i.tea))
2386 =+ syd=(need (slaw %tas i.tea))
@@ -2402,7 +2402,7 @@ We call `++knit:de` to apply the changes to our local desk, and we call
2402
2402
2403We'll examine `++knit` and `++wake`, in that order.
2403We'll examine `++knit` and `++wake`, in that order.
2404
2404
2405−```
2405+```hoon
2406 ++ knit :: external change
2406 ++ knit :: external change
2407 |= [inx=@ud rot=riot]
2407 |= [inx=@ud rot=riot]
2408 ^+ +>
2408 ^+ +>
@@ -2474,7 +2474,7 @@ of the desk. We do so in `++edis`, and then we remove the stuff we just
2474applied from the cache, since it's not really a true "single read", like
2474applied from the cache, since it's not really a true "single read", like
2475what should really be in the cache.
2475what should really be in the cache.
2476
2476
2477−```
2477+```hoon
2478 ++ edis :: apply subscription
2478 ++ edis :: apply subscription
2479 |= nak=nako
2479 |= nak=nako
2480 ^+ +>
2480 ^+ +>
@@ -2509,7 +2509,7 @@ This concludes our discussion of `++knit`. Now the changes have been
2509applied to our local copy of the desk, and we just need to update our
2509applied to our local copy of the desk, and we just need to update our
2510subscribers. We do so in `++wake:de`.
2510subscribers. We do so in `++wake:de`.
2511
2511
2512−```
2512+```hoon
2513 ++ wake :: update subscribers
2513 ++ wake :: update subscribers
2514 ^+ .
2514 ^+ .
2515 =+ xiq=(~(tap by qyx) ~)
2515 =+ xiq=(~(tap by qyx) ~)
@@ -2585,7 +2585,7 @@ it.
2585`++balk` is very simple, so we'll describe it here before we get to the
2585`++balk` is very simple, so we'll describe it here before we get to the
2586subscription case.
2586subscription case.
2587
2587
2588−```
2588+```hoon
2589 ++ balk :: read and send
2589 ++ balk :: read and send
2590 |= [hen=duct oan=@ud mun=mood]
2590 |= [hen=duct oan=@ud mun=mood]
2591 ^+ +>
2591 ^+ +>
learn/arvo/ford.md+25−25
@@ -118,9 +118,9 @@ library in urbit.
118
118
119To run this example, put this code in your desk at `gen/faslus.hoon` and run
119To run this example, put this code in your desk at `gen/faslus.hoon` and run
120`+faslus` in your dojo. This example is a generator. For more information on
120`+faslus` in your dojo. This example is a generator. For more information on
121−generators, see the [generator docs](@/docs/learn/hoon/hoon-tutorial/generators.md).
121+generators, see the [generator docs](@/docs/hoon/hoon-tutorial/generators.md).
122
122
123−```
123+```hoon
124/+ time-to-id
124/+ time-to-id
125::
125::
126:- %say
126:- %say
@@ -136,7 +136,7 @@ with commas.
136
136
137Replace the code in `gen/faslus.hoon` with the following:
137Replace the code in `gen/faslus.hoon` with the following:
138
138
139−```
139+```hoon
140/+ time-to-id, hep-to-cab
140/+ time-to-id, hep-to-cab
141::
141::
142:- %say
142:- %say
@@ -170,7 +170,7 @@ similar to including a header file in C.
170
170
171Example:
171Example:
172
172
173−```
173+```hoon
174/- talk
174/- talk
175::
175::
176*serial:talk
176*serial:talk
@@ -191,7 +191,7 @@ structure representing a `%ford` static resource.
191
191
192Example:
192Example:
193
193
194−```
194+```hoon
195/~ [a=0 b=1]
195/~ [a=0 b=1]
196[a b]
196[a b]
197```
197```
@@ -201,12 +201,12 @@ produces: `[0 1]`
201In wide-form, `/~` always takes a tuple (which may be a degenerate tuple of one element), and produces it.
201In wide-form, `/~` always takes a tuple (which may be a degenerate tuple of one element), and produces it.
202
202
203Example:
203Example:
204−```
204+```hoon
205/~[%something]
205/~[%something]
206```
206```
207produces: `%something`
207produces: `%something`
208
208
209−```
209+```hoon
210/~[%a %b]
210/~[%a %b]
211```
211```
212produces: `[%a %b]`
212produces: `[%a %b]`
@@ -219,7 +219,7 @@ just a hoon twig, so its result can't be used as an argument to other runes
219that expect a horn. There is no wide-form for this rune.
219that expect a horn. There is no wide-form for this rune.
220
220
221Example:
221Example:
222−```
222+```hoon
223// %/file-to-include
223// %/file-to-include
224::
224::
225(frobnicate:file-to-include %.n)
225(frobnicate:file-to-include %.n)
@@ -245,7 +245,7 @@ stored at that path._
245that horn, and wraps a face around it.
245that horn, and wraps a face around it.
246
246
247Example:
247Example:
248−```
248+```hoon
249/= foo /~ [a=0 b=1]
249/= foo /~ [a=0 b=1]
250::
250::
251[a.foo b.foo]
251[a.foo b.foo]
@@ -260,7 +260,7 @@ In wide-form, `/=` uses `=` as a delimiter: `/=foo=/~[a=0 b=1]`
260`/mar/` renders the mark 'mar' at the current path.
260`/mar/` renders the mark 'mar' at the current path.
261
261
262Example:
262Example:
263−```
263+```hoon
264/= hoo-source /: /path/to/hoon-file /hoon/
264/= hoo-source /: /path/to/hoon-file /hoon/
265::
265::
266`@t`hoo-source
266`@t`hoo-source
@@ -275,7 +275,7 @@ operations. For details on marks, see the
275[Gall docs](../gall).
275[Gall docs](../gall).
276
276
277Here's an example that includes a mark conversion:
277Here's an example that includes a mark conversion:
278−```
278+```hoon
279/= page /: /path/to/html/file /mime/
279/= page /: /path/to/html/file /mime/
280::
280::
281page
281page
@@ -294,7 +294,7 @@ In wide-form, `/:` uses `:` as a delimiter: `/=page=/:/path/to/html/file:/mime/`
294### `/!mark/` evaluate as hoon, then pass through mark
294### `/!mark/` evaluate as hoon, then pass through mark
295
295
296Example:
296Example:
297−```
297+```hoon
298/= mime /: /%/some-hoon-file /!mime/
298/= mime /: /%/some-hoon-file /!mime/
299::
299::
300mime
300mime
@@ -311,7 +311,7 @@ wide-form and a tall-form syntax. In wide-form, it takes a series of mark
311arguments followed by a horn. In tall-form, it takes a single mark followed by
311arguments followed by a horn. In tall-form, it takes a single mark followed by
312a horn.
312a horn.
313
313
314−```
314+```hoon
315/= some-text /: /%/text-file /&mime&/txt/
315/= some-text /: /%/text-file /&mime&/txt/
316::
316::
317some-text
317some-text
@@ -326,7 +326,7 @@ cord is a single line. Once we've read the file, the `%mime` mark converts the
326`wain` to a triple that includes the MIME type ("text/plain"), the content
326`wain` to a triple that includes the MIME type ("text/plain"), the content
327length in bytes, and the content itself as a cord.
327length in bytes, and the content itself as a cord.
328
328
329−```
329+```hoon
330/= page /&html&elem&/~[;div.foo;]
330/= page /&html&elem&/~[;div.foo;]
331::
331::
332page
332page
@@ -354,7 +354,7 @@ need to be enclosed in `/`'s: `/& html /elem/`
354succeeds. If none succeed, it produces stack traces from all of its arguments.
354succeeds. If none succeed, it produces stack traces from all of its arguments.
355
355
356Example:
356Example:
357−```
357+```hoon
358/= res /: /%/path/to/file
358/= res /: /%/path/to/file
359/|
359/|
360 /!elem/
360 /!elem/
@@ -384,7 +384,7 @@ directory, and each value is the result of running that horn on the contents of
384the file.
384the file.
385
385
386Example:
386Example:
387−```
387+```hoon
388/= kids /_ /hoon/
388/= kids /_ /hoon/
389::
389::
390`(map term cord)`kids
390`(map term cord)`kids
@@ -407,7 +407,7 @@ that atom type, and each value is the result of running the horn on the
407contents of that file.
407contents of that file.
408
408
409Example:
409Example:
410−```
410+```hoon
411/= timed-posts /_ @da /md/
411/= timed-posts /_ @da /md/
412`(map @da @t)`timed-posts
412`(map @da @t)`timed-posts
413```
413```
@@ -423,7 +423,7 @@ Wide-form filtered `/_` uses `_` as a delimiter: `/= timed-posts /_@da_/md/`
423with the result of the horn as its sample.
423with the result of the horn as its sample.
424
424
425Example:
425Example:
426−```
426+```hoon
427/= goo
427/= goo
428 /; |=({a/@ b/@} +(b))
428 /; |=({a/@ b/@} +(b))
429 /~ [a=0 b=1]
429 /~ [a=0 b=1]
@@ -434,7 +434,7 @@ goo
434produces: `2`
434produces: `2`
435
435
436Here's a slightly more complex example with runes that use the filesystem:
436Here's a slightly more complex example with runes that use the filesystem:
437−```
437+```hoon
438/= file-length
438/= file-length
439 /; |=(a/@t (lent (crip a)))
439 /; |=(a/@t (lent (crip a)))
440 /: /%/path/to/hoon/file /hoon/
440 /: /%/path/to/hoon/file /hoon/
@@ -450,7 +450,7 @@ whether the current path matches the path in the switch statement.
450Takes a sequence of pairs of (path, horn) terminated by a `==`. No wide-form.
450Takes a sequence of pairs of (path, horn) terminated by a `==`. No wide-form.
451
451
452Example:
452Example:
453−```
453+```hoon
454/= just-right
454/= just-right
455 /: /===/right-path :: set path to /%/right-path
455 /: /===/right-path :: set path to /%/right-path
456 /,
456 /,
@@ -469,7 +469,7 @@ produces: `'evaluate-me'`
469Produce a null-terminated list from a sequence of horns, terminated by a `==`. No wide-form.
469Produce a null-terminated list from a sequence of horns, terminated by a `==`. No wide-form.
470
470
471Example:
471Example:
472−```
472+```hoon
473/= vanes
473/= vanes
474 /.
474 /.
475 /~ %ames
475 /~ %ames
@@ -495,7 +495,7 @@ TODO: remove
495`/^` takes a mold and a horn, and casts the result of the horn to the mold.
495`/^` takes a mold and a horn, and casts the result of the horn to the mold.
496
496
497Example:
497Example:
498−```
498+```hoon
499/= liz /^ (list @) :: cast to real list
499/= liz /^ (list @) :: cast to real list
500 /~ ~[1 2 3] :: no 'i' or 't' faces
500 /~ ~[1 2 3] :: no 'i' or 't' faces
501::
501::
@@ -515,7 +515,7 @@ Wide-form `/^` uses `^` as a delimiter: `/^(list @)^/~[1 2 3 ~]`
515hash of the result of the horn, and the result itself.
515hash of the result of the horn, and the result itself.
516
516
517Example:
517Example:
518−```
518+```hoon
519/= inline /^ {dep/@uvH txt/@t} /# /: /%/my-script /js/
519/= inline /^ {dep/@uvH txt/@t} /# /: /%/my-script /js/
520::
520::
521;= ;script: (trip txt.inline) :: set script contents
521;= ;script: (trip txt.inline) :: set script contents
@@ -539,7 +539,7 @@ contain an argument representing the query string, which can be parsed using the
539standard library gate `++fuel:html`.
539standard library gate `++fuel:html`.
540
540
541Example:
541Example:
542−```
542+```hoon
543/= gas /$ fuel:html
543/= gas /$ fuel:html
544::
544::
545:*
545:*
@@ -559,7 +559,7 @@ Wide-form `/$` takes its arguments inside brackets, like `/~`:
559renderers that use `/$` to read the extra arguments will crash.
559renderers that use `/$` to read the extra arguments will crash.
560
560
561Example:
561Example:
562−```
562+```hoon
563/= dat /% /tree-json/
563/= dat /% /tree-json/
564::
564::
565dat
565dat
learn/arvo/gall.md+29−29
@@ -104,14 +104,14 @@ of `move` and `sub-result` (all the types of data that can be
104returned by a place). This can just be a line at the top of the
104returned by a place). This can just be a line at the top of the
105main core:
105main core:
106
106
107−```
107+```hoon
108=+ connector=(connector move sub-result) :: Set up connector library
108=+ connector=(connector move sub-result) :: Set up connector library
109```
109```
110
110
111Most of the Github-specific logic is in `++places`, which is a
111Most of the Github-specific logic is in `++places`, which is a
112list of all the places we can request. A place consists of:
112list of all the places we can request. A place consists of:
113
113
114−```
114+```hoon
115++ place
115++ place
116 $: guard/mold
116 $: guard/mold
117 read-x/$-(path move)
117 read-x/$-(path move)
@@ -574,7 +574,7 @@ We'll need a new mark for our arguments. Let's call it
574
574
575> For app-specific marks, it's good style to prefix the name of the mark with the name of the app. Since many apps have several such marks, subdirectories in `/mar` are rendered as `-`, so that `ping-message` is written in (/mar/ping/message.hoon).
575> For app-specific marks, it's good style to prefix the name of the mark with the name of the app. Since many apps have several such marks, subdirectories in `/mar` are rendered as `-`, so that `ping-message` is written in (/mar/ping/message.hoon).
576
576
577−```
577+```hoon
578::
578::
579:::: /mar/ping/message/hoon
579:::: /mar/ping/message/hoon
580 ::
580 ::
@@ -589,7 +589,7 @@ We'll need a new mark for our arguments. Let's call it
589
589
590The app can easily be modified to use this (`/app/ping.hoon`):
590The app can easily be modified to use this (`/app/ping.hoon`):
591
591
592−```
592+```hoon
593:: Allows one ship to ping another with a string of text
593:: Allows one ship to ping another with a string of text
594::
594::
595:::: /app/ping/hoon
595:::: /app/ping/hoon
@@ -640,7 +640,7 @@ mandatory, and optional arguments are hard. Let's make a generator,
640`+send` to make everything nicer. Since it's specific to
640`+send` to make everything nicer. Since it's specific to
641`:ping`, let's put it in `/gen/ping/send.hoon`:
641`:ping`, let's put it in `/gen/ping/send.hoon`:
642
642
643−```
643+```hoon
644:- %say
644:- %say
645|= [^ [to=@p message=?(%~ [text=@t %~])] %~]
645|= [^ [to=@p message=?(%~ [text=@t %~])] %~]
646[%ping-message to ?~(message 'howdy' text.message)]
646[%ping-message to ?~(message 'howdy' text.message)]
@@ -686,7 +686,7 @@ Let's build an uptime-monitoring system. It'll ping a web
686service periodically and print out an error when the response
686service periodically and print out an error when the response
687code isn't 2xx. Save the following as `app/up.hoon`:
687code isn't 2xx. Save the following as `app/up.hoon`:
688
688
689−```
689+```hoon
690:: Up-ness monitor. Accepts atom url, 'on', or 'off'
690:: Up-ness monitor. Accepts atom url, 'on', or 'off'
691::
691::
692:::: /hoon/up/app
692:::: /hoon/up/app
@@ -774,7 +774,7 @@ produce a `%wake` when the time comes.
774
774
775Let's take a look at our state:
775Let's take a look at our state:
776
776
777−```
777+```hoon
778|_ [hid=bowl:gall on=_| in-progress=_| target=@t]
778|_ [hid=bowl:gall on=_| in-progress=_| target=@t]
779```
779```
780
780
@@ -807,7 +807,7 @@ actual url, so we save it in `target`.
807
807
808Here's the move that sends the HTTP request:
808Here's the move that sends the HTTP request:
809
809
810−```
810+```hoon
811[ost.hid %hiss /request ~ %httr %purl (need (de-purl:html target))]
811[ost.hid %hiss /request ~ %httr %purl (need (de-purl:html target))]
812```
812```
813
813
@@ -816,7 +816,7 @@ Here's the move that sends the HTTP request:
816The correspondence between this move and `[bone card]` can be hard to
816The correspondence between this move and `[bone card]` can be hard to
817visualize on one line. Here it is more pedantically:
817visualize on one line. Here it is more pedantically:
818
818
819−```
819+```hoon
820:* bone=ost.hid :: the move
820:* bone=ost.hid :: the move
821 term=%hiss
821 term=%hiss
822 wire=/request
822 wire=/request
@@ -896,7 +896,7 @@ Let's make a small "cord" mark. "Cord" is a name we use for `@t`
896text, but there's no predefined mark for it. Let's put the following code in:
896text, but there's no predefined mark for it. Let's put the following code in:
897`/mar/cord.hoon`:
897`/mar/cord.hoon`:
898
898
899−```
899+```hoon
900/? 314
900/? 314
901|_ cod=@t
901|_ cod=@t
902++ grab
902++ grab
@@ -1012,7 +1012,7 @@ In the following we assume that you have some knowledge of Hoon. If you don't,
1012
1012
1013Let's get our planets to talk to each other. To listen for and receive messages from other planets, we'll need an app. Let's look at a very simple one, `echo.hoon`:
1013Let's get our planets to talk to each other. To listen for and receive messages from other planets, we'll need an app. Let's look at a very simple one, `echo.hoon`:
1014
1014
1015−```
1015+```hoon
1016:: Accepts any noun from dojo and prints it out
1016:: Accepts any noun from dojo and prints it out
1017::
1017::
1018:::: /===/app/echo/hoon
1018:::: /===/app/echo/hoon
@@ -1090,7 +1090,7 @@ is a magic invocation that means "app state".
1090Let's look at another example. Say we want to
1090Let's look at another example. Say we want to
1091only accept a number, and then print out the square of that number.
1091only accept a number, and then print out the square of that number.
1092
1092
1093−```
1093+```hoon
1094:: Accepts an atom from the dojo and squares it.
1094:: Accepts an atom from the dojo and squares it.
1095::
1095::
1096:::: /===/app/square/hoon
1096:::: /===/app/square/hoon
@@ -1162,7 +1162,7 @@ so we'll be getting quite used to them.
1162
1162
1163Let's write our first network message! Here's `examples/app/pong.hoon`:
1163Let's write our first network message! Here's `examples/app/pong.hoon`:
1164
1164
1165−```
1165+```hoon
1166:: Allows one urbit to send the string 'Pong' to
1166:: Allows one urbit to send the string 'Pong' to
1167:: another urbit.
1167:: another urbit.
1168::
1168::
@@ -1214,7 +1214,7 @@ comet, see [the user setup section](/docs/getting-started/). Don't forget to sta
1214the `%pong` app on that urbit, too. You should see, on the foreign
1214the `%pong` app on that urbit, too. You should see, on the foreign
1215urbit, this output:
1215urbit, this output:
1216
1216
1217−```
1217+```hoon
1218[%pong 'Incoming pong!']
1218[%pong 'Incoming pong!']
1219[%pong %received 'Pong']
1219[%pong %received 'Pong']
1220```
1220```
@@ -1232,7 +1232,7 @@ now, we've left the list of moves empty, since we haven't wanted to tell Arvo to
1232do anything in particular. Now we want to send a message to another urbit. Thus,
1232do anything in particular. Now we want to send a message to another urbit. Thus,
1233we produce a list with one element:
1233we produce a list with one element:
1234
1234
1235−```
1235+```hoon
1236~[[ost.bow %poke /sending [to dap.bow] %atom 'Pong]]
1236~[[ost.bow %poke /sending [to dap.bow] %atom 'Pong]]
1237```
1237```
1238
1238
@@ -1413,7 +1413,7 @@ to be authenticated.
1413
1413
1414Here's a simple security driver:
1414Here's a simple security driver:
1415
1415
1416−```
1416+```hoon
1417:: Test url +https://api.github.com/user
1417:: Test url +https://api.github.com/user
1418::
1418::
1419:::: /hoon/github/com/sec
1419:::: /hoon/github/com/sec
@@ -1463,7 +1463,7 @@ can send data of any mark as long as it has a conversion path to
1463Let's take a look at the code and see if we can figure out what's
1463Let's take a look at the code and see if we can figure out what's
1464happening here:
1464happening here:
1465
1465
1466−```
1466+```hoon
1467/+ basic-auth
1467/+ basic-auth
1468```
1468```
1469
1469
@@ -1539,7 +1539,7 @@ just as with Basic Authentication.
1539
1539
1540Now we need a security driver. Use this:
1540Now we need a security driver. Use this:
1541
1541
1542−```
1542+```hoon
1543:: Test url +https://api.github.com/user
1543:: Test url +https://api.github.com/user
1544::
1544::
1545:::: /hoon/github/com/sec
1545:::: /hoon/github/com/sec
@@ -1634,7 +1634,7 @@ entirely stateless, however. Most useful apps require some amount of state.
1634Let's build a trivial stateful app. It'll keep a running the sum of all the
1634Let's build a trivial stateful app. It'll keep a running the sum of all the
1635atoms we poke it with. Here's `examples/app/sum.hoon`:
1635atoms we poke it with. Here's `examples/app/sum.hoon`:
1636
1636
1637−```
1637+```hoon
1638:: Keeps track of the sum of all the atoms it has been
1638:: Keeps track of the sum of all the atoms it has been
1639:: poked with and prints the sum out
1639:: poked with and prints the sum out
1640::
1640::
@@ -1755,7 +1755,7 @@ that it's built into Arvo.
1755Let's take a look at two apps, `:source` and `:sink`. First,
1755Let's take a look at two apps, `:source` and `:sink`. First,
1756`:source`:
1756`:source`:
1757
1757
1758−```
1758+```hoon
1759:: Sends subscription updates to sink.hoon
1759:: Sends subscription updates to sink.hoon
1760::
1760::
1761:::: /===/app/source/hoon
1761:::: /===/app/source/hoon
@@ -1813,7 +1813,7 @@ Save this as `source.hoon` in the `/app` directory of your urbit's pier.
1813
1813
1814And secondly, `:sink`:
1814And secondly, `:sink`:
1815
1815
1816−```
1816+```hoon
1817:: Sets up a simple subscription to source.hoon
1817:: Sets up a simple subscription to source.hoon
1818::
1818::
1819:::: /===/app/sink/hoon
1819:::: /===/app/sink/hoon
@@ -2008,7 +2008,7 @@ In `++poke-noun` we check our input to see both if it's `%on` and we're
2008available (`val` is true). If so, we produce the move to subscribe to
2008available (`val` is true). If so, we produce the move to subscribe to
2009`:source`:
2009`:source`:
2010
2010
2011−```
2011+```hoon
2012:~ :* ost.bow
2012:~ :* ost.bow
2013 %peer
2013 %peer
2014 /subscribe
2014 /subscribe
@@ -2029,7 +2029,7 @@ Otherwise, if our input is `%off` and we're already subscribed (i.e. `val`
2029is false), then we unsubscribe from `:source` and set `val` back to true (`&`),
2029is false), then we unsubscribe from `:source` and set `val` back to true (`&`),
2030again using our handy inverted cell constructor mold `:_`:
2030again using our handy inverted cell constructor mold `:_`:
2031
2031
2032−```
2032+```hoon
2033:_ +>.$(val &)
2033:_ +>.$(val &)
2034~[[ost.bow %pull /subscribe [our.bow %source] ~]]
2034~[[ost.bow %pull /subscribe [our.bow %source] ~]]
2035```
2035```
@@ -2041,7 +2041,7 @@ If neither of these cases are true, then we print our current subscription
2041state, based on whether `val` is true or false, and return a cell containing
2041state, based on whether `val` is true or false, and return a cell containing
2042a null list of moves and our unchanged app state:
2042a null list of moves and our unchanged app state:
2043
2043
2044−```
2044+```hoon
2045~& ?: val
2045~& ?: val
2046 sink+unsubscribed+'You are now unsubscribed!'
2046 sink+unsubscribed+'You are now unsubscribed!'
2047 sink+subscribed+'You are now subscribed!'
2047 sink+subscribed+'You are now subscribed!'
@@ -2053,7 +2053,7 @@ mark of `noun`. `++diff-noun` is given the wire that we originally passed with
2053the `%peer` subscription request along and the data we got back. In our case we
2053the `%peer` subscription request along and the data we got back. In our case we
2054just print out the data:
2054just print out the data:
2055
2055
2056−```
2056+```hoon
2057~& sink+received-data+'You got something!'
2057~& sink+received-data+'You got something!'
2058~& sink+data+non
2058~& sink+data+non
2059```
2059```
@@ -2086,7 +2086,7 @@ update this by subscribing our page to the relevant path on its app.
2086
2086
2087Save the following as `click.hoon` in the `/app` directory of your urbit's pier.
2087Save the following as `click.hoon` in the `/app` directory of your urbit's pier.
2088
2088
2089−```
2089+```hoon
2090/? 314
2090/? 314
2091!:
2091!:
2092|%
2092|%
@@ -2115,7 +2115,7 @@ number of clicks.
2115
2115
2116Let's take a look at the new marks. Save this as `/mar/click.hoon`:
2116Let's take a look at the new marks. Save this as `/mar/click.hoon`:
2117
2117
2118−```
2118+```hoon
2119|_ click=%click
2119|_ click=%click
2120++ grab
2120++ grab
2121 |%
2121 |%
@@ -2161,7 +2161,7 @@ ford: cast %click
2161
2161
2162And save the following as `/mar/clicks.hoon`:
2162And save the following as `/mar/clicks.hoon`:
2163
2163
2164−```
2164+```hoon
2165|_ clicks=@
2165|_ clicks=@
2166++ grab
2166++ grab
2167 |%
2167 |%
@@ -2240,7 +2240,7 @@ we'll put the number of clicks. We also include a small
2240javascript file where the client-side application logic can be
2240javascript file where the client-side application logic can be
2241found. It's in `/web/pages/click.js`:
2241found. It's in `/web/pages/click.js`:
2242
2242
2243−```
2243+```js
2244$(function() {
2244$(function() {
2245 var clicks, $go, $clicks, $err
2245 var clicks, $go, $clicks, $err
2246
2246
learn/arvo/hall.md+43−43
@@ -34,7 +34,7 @@ The messaging parts of Talk have been separated from its user-interface parts. W
34
34
35### Circles
35### Circles
36
36
37−```
37+```hoon
38++ circle {hos/ship nom/term} :: native target
38++ circle {hos/ship nom/term} :: native target
39```
39```
40
40
@@ -44,7 +44,7 @@ A `circle` is essentially a named collection of messages created by and hosted o
44
44
45When we subscribe to a circle, the primary thing we're interested in is its messages. Message data itself isn't that complicated, but a fair amount of metadata comes into play when actually sending a message. Let's work our way up, starting at the contents.
45When we subscribe to a circle, the primary thing we're interested in is its messages. Message data itself isn't that complicated, but a fair amount of metadata comes into play when actually sending a message. Let's work our way up, starting at the contents.
46
46
47−```
47+```hoon
48++ speech :> content body
48++ speech :> content body
49 $% {$lin pat/? msg/cord} :< no/@ text line
49 $% {$lin pat/? msg/cord} :< no/@ text line
50 {$url url/purf:eyre} :< parsed url
50 {$url url/purf:eyre} :< parsed url
@@ -58,7 +58,7 @@ When we subscribe to a circle, the primary thing we're interested in is its mess
58
58
59At the heart of every message lies a `speech` that describes the message body. There's a large number of different speech types, from simple text messages to parsed URLs, Hoon expressions and more.
59At the heart of every message lies a `speech` that describes the message body. There's a large number of different speech types, from simple text messages to parsed URLs, Hoon expressions and more.
60
60
61−```
61+```hoon
62++ audience (set circle) :< destinations
62++ audience (set circle) :< destinations
63++ serial @uvH :< unique identifier
63++ serial @uvH :< unique identifier
64++ thought :> inner message
64++ thought :> inner message
@@ -71,7 +71,7 @@ At the heart of every message lies a `speech` that describes the message body. T
71
71
72A `speech` is always accompanied by various bits of metadata. We include a unique identifier, a message timestamp and an `audience`, the set of all intended recipients of the message.
72A `speech` is always accompanied by various bits of metadata. We include a unique identifier, a message timestamp and an `audience`, the set of all intended recipients of the message.
73
73
74−```
74+```hoon
75++ telegram {aut/ship thought} :< whose message
75++ telegram {aut/ship thought} :< whose message
76++ envelope {num/@ud gam/telegram} :< outward message
76++ envelope {num/@ud gam/telegram} :< outward message
77```
77```
@@ -82,7 +82,7 @@ Finally, before sending the message over the wire, we add on the message's origi
82
82
83Messages aren't the only thing a subscription gets us. We're also kept up to date with relevant metadata.
83Messages aren't the only thing a subscription gets us. We're also kept up to date with relevant metadata.
84
84
85−```
85+```hoon
86++ crowd {loc/group rem/(map partner group)} :< our & srcs presences
86++ crowd {loc/group rem/(map partner group)} :< our & srcs presences
87++ group (map ship status) :< presence map
87++ group (map ship status) :< presence map
88++ status {pec/presence man/human} :< participant
88++ status {pec/presence man/human} :< participant
@@ -105,7 +105,7 @@ For reasons we'll discover shortly, circles keep track of both their own `group`
105
105
106### Configurations
106### Configurations
107
107
108−```
108+```hoon
109++ lobby {loc/config rem/(map circle config)} :< our & srcs configs
109++ lobby {loc/config rem/(map circle config)} :< our & srcs configs
110++ config :> circle config
110++ config :> circle config
111 $: src/(set circle) :< active sources
111 $: src/(set circle) :< active sources
@@ -128,7 +128,7 @@ Aside from that, `config` contains a description for the circle, which is exactl
128
128
129Lastly, there's a `control` structure that contains both a security mode and a list of ships, which is either a white- or blacklist depending on the aforementioned mode. There are four such modes available.
129Lastly, there's a `control` structure that contains both a security mode and a list of ships, which is either a white- or blacklist depending on the aforementioned mode. There are four such modes available.
130
130
131−```
131+```hoon
132++ security :> security mode
132++ security :> security mode
133 $? $channel :< blacklist
133 $? $channel :< blacklist
134 $village :< whitelist
134 $village :< whitelist
@@ -146,7 +146,7 @@ A `mailbox` is readable by its owner and publicly writable, with a blacklist for
146
146
147To see how that all ties together, we're going to take a look at Hall's state.
147To see how that all ties together, we're going to take a look at Hall's state.
148
148
149−```
149+```hoon
150++ state :> hall state
150++ state :> hall state
151 $: stories/(map term story) :< conversations
151 $: stories/(map term story) :< conversations
152 :: ... ::
152 :: ... ::
@@ -186,7 +186,7 @@ Applications can interact with Hall in two complementary ways: they can tell it
186
186
187Hall can be commanded by poking it with `action`s.
187Hall can be commanded by poking it with `action`s.
188
188
189−```
189+```hoon
190++ action :> user action
190++ action :> user action
191 $% :: circle configuration ::
191 $% :: circle configuration ::
192 {$create nom/term des/cord sec/security} :< create circle
192 {$create nom/term des/cord sec/security} :< create circle
@@ -221,7 +221,7 @@ To send messages, two interfaces are available. `%convey` lets you specify all d
221
221
222To receive data from Hall, applications will have to query it. There are two paths that are useful for clients to query. Let's look at them and their results.
222To receive data from Hall, applications will have to query it. There are two paths that are useful for clients to query. Let's look at them and their results.
223
223
224−```
224+```hoon
225++ query :> query paths
225++ query :> query paths
226 $% {$client $~} :< shared ui state
226 $% {$client $~} :< shared ui state
227 $: $circle :> story query
227 $: $circle :> story query
@@ -269,7 +269,7 @@ To be clear, the paths for those queries are `/client` and `/circle/[name]/[data
269
269
270Any changes to the results of these queries are communicated via the following `rumor`s. It's a fairly long list of potential changes,
270Any changes to the results of these queries are communicated via the following `rumor`s. It's a fairly long list of potential changes,
271
271
272−```
272+```hoon
273++ rumor :< query result change
273++ rumor :< query result change
274 $% {$client rum/rumor-client} :< /client
274 $% {$client rum/rumor-client} :< /client
275 {$circle rum/rumor-story} :< /circle
275 {$circle rum/rumor-story} :< /circle
@@ -325,7 +325,7 @@ Halls can communicate with other Halls by sending commands and subscription upda
325
325
326To request changes to a story, Halls can send `command`s.
326To request changes to a story, Halls can send `command`s.
327
327
328−```
328+```hoon
329++ command :> effect on story
329++ command :> effect on story
330 $% {$publish tos/(list thought)} :< deliver
330 $% {$publish tos/(list thought)} :< deliver
331 {$present nos/(set term) dif/diff-status} :< status update
331 {$present nos/(set term) dif/diff-status} :< status update
@@ -341,7 +341,7 @@ The `%present` command is used for sending status updates about our ship.
341
341
342Halls can query other halls. Here's the peer move we send when we open a query on a foreign circle:
342Halls can query other halls. Here's the peer move we send when we open a query on a foreign circle:
343
343
344−```
344+```hoon
345:* ost.bol :< bone
345:* ost.bol :< bone
346 %peer :< move type
346 %peer :< move type
347 /[our-circle]/[host]/[query-path] :< rumor path
347 /[our-circle]/[host]/[query-path] :< rumor path
@@ -358,7 +358,7 @@ The query path is slightly more interesting. Of course it specifies the name of
358
358
359Along the way so far, we've skipped some parts of structures. Most of those relate to federation. Let's see what we missed.
359Along the way so far, we've skipped some parts of structures. Most of those relate to federation. Let's see what we missed.
360
360
361−```
361+```hoon
362++ query :> query paths
362++ query :> query paths
363 $% {$burden who/ship} :< duties to share
363 $% {$burden who/ship} :< duties to share
364 {$report $~} :< duty reports
364 {$report $~} :< duty reports
@@ -420,7 +420,7 @@ Upon receiving a valid peer on a `/circle` path, the subscribing ship is added t
420
420
421![subscriptions implementation flow](https://media.urbit.org/docs/hall/diagrams/flow-subscriptions.png)
421![subscriptions implementation flow](https://media.urbit.org/docs/hall/diagrams/flow-subscriptions.png)
422
422
423−```
423+```hoon
424++ poke-talk-action :< we got poked with an action.
424++ poke-talk-action :< we got poked with an action.
425 ++ ta-action :< applies an action.
425 ++ ta-action :< applies an action.
426 ++ ta-config :< (re)configures a story.
426 ++ ta-config :< (re)configures a story.
@@ -437,7 +437,7 @@ Once a query has opened, Hall will receive updates on it, rumors. The changes de
437
437
438![rumor implementation flow](https://media.urbit.org/docs/hall/diagrams/flow-rumors.png)
438![rumor implementation flow](https://media.urbit.org/docs/hall/diagrams/flow-rumors.png)
439
439
440−```
440+```hoon
441++ diff-talk-rumor :< we got a query update.
441++ diff-talk-rumor :< we got a query update.
442 ++ ta-hear :< applies a rumor to the story it's intended for.
442 ++ ta-hear :< applies a rumor to the story it's intended for.
443 ++ so-hear :< applies a %circle rumor to the story.
443 ++ so-hear :< applies a %circle rumor to the story.
@@ -452,7 +452,7 @@ To send messages, the user sends a `%convey` or `%phrase` action, resulting in a
452
452
453![messaging implementation flow](https://media.urbit.org/docs/hall/diagrams/flow-messaging.png)
453![messaging implementation flow](https://media.urbit.org/docs/hall/diagrams/flow-messaging.png)
454
454
455−```
455+```hoon
456++ poke-talk-action :< we got poked with an action.
456++ poke-talk-action :< we got poked with an action.
457 ++ ta-action :< applies an action.
457 ++ ta-action :< applies an action.
458:: ::
458:: ::
@@ -514,7 +514,7 @@ Queries are the paths you pass into `%peer` moves. Internally, they get translat
514
514
515To be able to keep certain UI elements like glyphs and local nicknames consistent across different Hall clients, they can query Hall for the current UI state.
515To be able to keep certain UI elements like glyphs and local nicknames consistent across different Hall clients, they can query Hall for the current UI state.
516
516
517−```
517+```hoon
518++ query ::
518++ query ::
519 $% {$client $~} :< shared ui state
519 $% {$client $~} :< shared ui state
520 :: .... ::
520 :: .... ::
@@ -532,7 +532,7 @@ Valid paths include:
532
532
533Contains a map of glyphs and the audiences that they map to, as well as a map of ships and their locally set nicknames.
533Contains a map of glyphs and the audiences that they map to, as well as a map of ships and their locally set nicknames.
534
534
535−```
535+```hoon
536++ prize :> query result
536++ prize :> query result
537 $% {$client prize-client} :< /client
537 $% {$client prize-client} :< /client
538 :: ... ::
538 :: ... ::
@@ -547,7 +547,7 @@ Contains a map of glyphs and the audiences that they map to, as well as a map of
547
547
548Contains either a bound or unbound glyph and its target, or a ship with its new nickname. A nickname of `''` means the associated ship no longer has a nickname set for it.
548Contains either a bound or unbound glyph and its target, or a ship with its new nickname. A nickname of `''` means the associated ship no longer has a nickname set for it.
549
549
550−```
550+```hoon
551++ rumor :> query result change
551++ rumor :> query result change
552 $% {$client rum/rumor-client} :< /client
552 $% {$client rum/rumor-client} :< /client
553 :: ... ::
553 :: ... ::
@@ -565,7 +565,7 @@ Contains either a bound or unbound glyph and its target, or a ship with its new
565
565
566To aid in circle discoverability, users can add circles to their "public membership" list. This can then be queried for by, for example, a profile page.
566To aid in circle discoverability, users can add circles to their "public membership" list. This can then be queried for by, for example, a profile page.
567
567
568−```
568+```hoon
569++ query ::
569++ query ::
570 $% {$public $~} :< public memberships
570 $% {$public $~} :< public memberships
571 :: .... ::
571 :: .... ::
@@ -583,7 +583,7 @@ Valid paths include:
583
583
584Contains the set of circles the user has on their public list.
584Contains the set of circles the user has on their public list.
585
585
586−```
586+```hoon
587++ prize :> query result
587++ prize :> query result
588 $% {$public cis/(set circle)} :< /public
588 $% {$public cis/(set circle)} :< /public
589 :: ... ::
589 :: ... ::
@@ -594,7 +594,7 @@ Contains the set of circles the user has on their public list.
594
594
595Contains a circle that was either added or removed from the public list.
595Contains a circle that was either added or removed from the public list.
596
596
597−```
597+```hoon
598++ rumor :> query result change
598++ rumor :> query result change
599 $% {$public add/? cir/circle} :< /public
599 $% {$public add/? cir/circle} :< /public
600 :: ... ::
600 :: ... ::
@@ -605,7 +605,7 @@ Contains a circle that was either added or removed from the public list.
605
605
606To allow a circle owner to inspect who is currently subscribed to their stories, they can issue a query to retrieve subscription data.
606To allow a circle owner to inspect who is currently subscribed to their stories, they can issue a query to retrieve subscription data.
607
607
608−```
608+```hoon
609++ query ::
609++ query ::
610 $% {$peers nom/naem} :< readers of story
610 $% {$peers nom/naem} :< readers of story
611 :: .... ::
611 :: .... ::
@@ -629,7 +629,7 @@ Valid paths include:
629
629
630Contains a map of ships and the different queries they currently have active for the selected story.
630Contains a map of ships and the different queries they currently have active for the selected story.
631
631
632−```
632+```hoon
633++ prize :> query result
633++ prize :> query result
634 $% {$peers pes/(jar ship query)} :< /peers
634 $% {$peers pes/(jar ship query)} :< /peers
635 :: ... ::
635 :: ... ::
@@ -640,7 +640,7 @@ Contains a map of ships and the different queries they currently have active for
640
640
641Contains a ship and a query, and a flag to indicate whether that subscription has started or ended.
641Contains a ship and a query, and a flag to indicate whether that subscription has started or ended.
642
642
643−```
643+```hoon
644++ rumor :> query result change
644++ rumor :> query result change
645 $% {$peers add/? who/ship qer/query} :< /peers
645 $% {$peers add/? who/ship qer/query} :< /peers
646 :: ... ::
646 :: ... ::
@@ -654,7 +654,7 @@ Circle queries allow for the retrieving of data from stories. Their messages, co
654
654
655A quick refresher on the difference between "local" and "remote" presence and configuration: "local" means it pertains to the circle itself; "remote" means it pertains to one of its configured sources. The latter is primarily useful to clients when using a circle for aggregation, like the `%inbox`.
655A quick refresher on the difference between "local" and "remote" presence and configuration: "local" means it pertains to the circle itself; "remote" means it pertains to one of its configured sources. The latter is primarily useful to clients when using a circle for aggregation, like the `%inbox`.
656
656
657−```
657+```hoon
658++ query ::
658++ query ::
659 $% $: $circle :> story query
659 $% $: $circle :> story query
660 nom/naem :< circle name
660 nom/naem :< circle name
@@ -718,7 +718,7 @@ Valid paths include:
718
718
719Contains (where applicable) messages in envelopes (with message numbers), as well as local and remote configurations and presences.
719Contains (where applicable) messages in envelopes (with message numbers), as well as local and remote configurations and presences.
720
720
721−```
721+```hoon
722++ prize :> query result
722++ prize :> query result
723 $% {$circle package} :< /circle
723 $% {$circle package} :< /circle
724 :: ... ::
724 :: ... ::
@@ -736,7 +736,7 @@ Contains a detailed change description of the data relevant to the query that ch
736
736
737Messages are wrapped in envelopes to include their sequence number, and note the source they were heard from. Configuration and status changes specify the circle they apply to.
737Messages are wrapped in envelopes to include their sequence number, and note the source they were heard from. Configuration and status changes specify the circle they apply to.
738
738
739−```
739+```hoon
740++ rumor :> query result change
740++ rumor :> query result change
741 $% {$circle rum/rumor-story} :< /circle
741 $% {$circle rum/rumor-story} :< /circle
742 :: ... ::
742 :: ... ::
@@ -779,7 +779,7 @@ Actions can be sent by poking Hall with data marked as `%hall-action`. Actions a
779
779
780Since all of these apply to a specific circle, they all specify a name `nom` of the circle to operate on.
780Since all of these apply to a specific circle, they all specify a name `nom` of the circle to operate on.
781
781
782−```
782+```hoon
783++ action :> user action
783++ action :> user action
784 $% {$create nom/naem des/cord sec/security} :< create circle
784 $% {$create nom/naem des/cord sec/security} :< create circle
785 {$delete nom/naem why/(unit cord)} :< delete + announce
785 {$delete nom/naem why/(unit cord)} :< delete + announce
@@ -807,7 +807,7 @@ Since all of these apply to a specific circle, they all specify a name `nom` of
807
807
808There are two interfaces for telling Hall to send a message. The first takes entire `thought`s, the second only `speech`es and the audience to send them to.
808There are two interfaces for telling Hall to send a message. The first takes entire `thought`s, the second only `speech`es and the audience to send them to.
809
809
810−```
810+```hoon
811++ action :> user action
811++ action :> user action
812 $% {$convey tos/(list thought)} :< post exact
812 $% {$convey tos/(list thought)} :< post exact
813 {$phrase aud/audience ses/(list speech)} :< post easy
813 {$phrase aud/audience ses/(list speech)} :< post easy
@@ -823,7 +823,7 @@ There are two interfaces for telling Hall to send a message. The first takes ent
823
823
824These concern the presence users have in circles they are participating in.
824These concern the presence users have in circles they are participating in.
825
825
826−```
826+```hoon
827++ action :> user action
827++ action :> user action
828 $% {$notify aud/audience pes/(unit presence)} :< our presence update
828 $% {$notify aud/audience pes/(unit presence)} :< our presence update
829 {$naming aud/audience man/human} :< our name update
829 {$naming aud/audience man/human} :< our name update
@@ -839,7 +839,7 @@ These concern the presence users have in circles they are participating in.
839
839
840When the user makes any changes to shared UI elements (elements that should persist between clients), this has to be communicated to Hall.
840When the user makes any changes to shared UI elements (elements that should persist between clients), this has to be communicated to Hall.
841
841
842−```
842+```hoon
843++ action :> user action
843++ action :> user action
844 $% {$glyph gyf/char aud/audience bin/?} :< un/bind a glyph
844 $% {$glyph gyf/char aud/audience bin/?} :< un/bind a glyph
845 {$nick who/ship nic/nick} :< new identity
845 {$nick who/ship nic/nick} :< new identity
@@ -853,7 +853,7 @@ When the user makes any changes to shared UI elements (elements that should pers
853
853
854### Miscellaneous changes
854### Miscellaneous changes
855
855
856−```
856+```hoon
857++ action :> user action
857++ action :> user action
858 $% {$public add/? cir/circle} :< show/hide membership
858 $% {$public add/? cir/circle} :< show/hide membership
859 :: ... ::
859 :: ... ::
@@ -925,7 +925,7 @@ These should be fairly straightforward. Like packets are to Urbits, `delta`s are
925
925
926This also wouldn't be Urbit if we couldn't boil that down to a few simple pseudocode functions. Let's try, shall we?
926This also wouldn't be Urbit if we couldn't boil that down to a few simple pseudocode functions. Let's try, shall we?
927
927
928−```
928+```hoon
929++ bake |= {brain delta} ^- {brain opera}
929++ bake |= {brain delta} ^- {brain opera}
930++ peek |= {brain query} ^- (unit (unit prize))
930++ peek |= {brain query} ^- (unit (unit prize))
931++ feel |= {query delta} ^- (unit rumor)
931++ feel |= {query delta} ^- (unit rumor)
@@ -955,7 +955,7 @@ To help solidify this and see what this would looks like in the wild, let's make
955
955
956Below is the application state, and the deltas we'll be using to modify it.
956Below is the application state, and the deltas we'll be using to modify it.
957
957
958−```
958+```hoon
959|%
959|%
960++ brain {num/@ud $~} :< application state
960++ brain {num/@ud $~} :< application state
961++ delta :> state change
961++ delta :> state change
@@ -970,7 +970,7 @@ Fairly simple, right? We store a number, and every change either in- or decremen
970
970
971Let's also define the queries we'll be supporting, their results, and the changes to their results. Instead of only allowing people to query the current number, let's make it a tad more interesting by allowing them to query whether or not the current number is a multiple of something.
971Let's also define the queries we'll be supporting, their results, and the changes to their results. Instead of only allowing people to query the current number, let's make it a tad more interesting by allowing them to query whether or not the current number is a multiple of something.
972
972
973−```
973+```hoon
974++ query :> valid queries
974++ query :> valid queries
975 $% {$number $~} :< current number
975 $% {$number $~} :< current number
976 {$mul-of val/@ud} :< is num multiple of?
976 {$mul-of val/@ud} :< is num multiple of?
@@ -992,7 +992,7 @@ You'll see the `rumor` for a `/number` query just contains a delta. In this spec
992
992
993Now, let's implement all the arms that will be called as things start happening. First, we want to implement `++leak`, which checks if a given `ship` is allowed to make a certain `query`. In this case, we're fine with everyone checking out our application's data.
993Now, let's implement all the arms that will be called as things start happening. First, we want to implement `++leak`, which checks if a given `ship` is allowed to make a certain `query`. In this case, we're fine with everyone checking out our application's data.
994
994
995−```
995+```hoon
996|_ {bol/bowl brain}
996|_ {bol/bowl brain}
997::
997::
998++ leak :> read permission
998++ leak :> read permission
@@ -1003,7 +1003,7 @@ Now, let's implement all the arms that will be called as things start happening.
1003
1003
1004Next, let's create the `prize`s for the folks that make it through `++leak`. We'll be producing a `(unit (unit prize))` so we can potentially say `~` for "unavailable" and `[~ ~]` for "invalid query."
1004Next, let's create the `prize`s for the folks that make it through `++leak`. We'll be producing a `(unit (unit prize))` so we can potentially say `~` for "unavailable" and `[~ ~]` for "invalid query."
1005
1005
1006−```
1006+```hoon
1007++ peek :> synchronous read
1007++ peek :> synchronous read
1008 |= qer/query
1008 |= qer/query
1009 ^- (unit (unit prize))
1009 ^- (unit (unit prize))
@@ -1019,7 +1019,7 @@ Next, let's create the `prize`s for the folks that make it through `++leak`. We'
1019
1019
1020Our app can be queried! If they're interested enough, they'll want to receive updates on that whenever relevant state changes. First, let's see how state changes happen. We still have regular old `++poke` arms, let's use that to prompt our application to change its state.
1020Our app can be queried! If they're interested enough, they'll want to receive updates on that whenever relevant state changes. First, let's see how state changes happen. We still have regular old `++poke` arms, let's use that to prompt our application to change its state.
1021
1021
1022−```
1022+```hoon
1023++ poke-loob :> regular old poke
1023++ poke-loob :> regular old poke
1024 |= inc/?
1024 |= inc/?
1025 ^- (list delta)
1025 ^- (list delta)
@@ -1039,7 +1039,7 @@ Our app can be queried! If they're interested enough, they'll want to receive up
1039
1039
1040`delta`s get redirected into `++bake` so that our state can get changed as described. After this happens the same `delta`s get, for each active query, routed into `++feel`. That then figures out what the `rumor` relevant to the query is, if applicable.
1040`delta`s get redirected into `++bake` so that our state can get changed as described. After this happens the same `delta`s get, for each active query, routed into `++feel`. That then figures out what the `rumor` relevant to the query is, if applicable.
1041
1041
1042−```
1042+```hoon
1043++ feel :> delta to rumor
1043++ feel :> delta to rumor
1044 |= {qer/query del/delta}
1044 |= {qer/query del/delta}
1045 ^- (unit rumor)
1045 ^- (unit rumor)
@@ -1090,7 +1090,7 @@ As we saw earlier, for `/number` queries the `delta`s match one-on-one with the
1090
1090
1091`~sorreg-namtyv`
1091`~sorreg-namtyv`
1092
1092
1093−```
1093+```hoon
1094=> |%
1094=> |%
1095 --
1095 --
1096|* $: :> vinyl: historical state (including version)
1096|* $: :> vinyl: historical state (including version)
@@ -1244,7 +1244,7 @@ As we saw earlier, for `/number` queries the `delta`s match one-on-one with the
1244
1244
1245## A new-Gall example app
1245## A new-Gall example app
1246
1246
1247−```
1247+```hoon
1248:: counter app
1248:: counter app
1249:: new gall example, may or may not compile.
1249:: new gall example, may or may not compile.
1250::
1250::
learn/hoon/_index.md+3−3
@@ -10,14 +10,14 @@ Hoon is an unusual language in several respects, both in syntax and semantics.
10
10
11In this section, you'll find useful resources on the Hoon programming language.
11In this section, you'll find useful resources on the Hoon programming language.
12
12
13−## [The Hoon Tutorial](@/docs/learn/hoon/hoon-tutorial/_index.md)
13+## [The Hoon Tutorial](@/docs/hoon/hoon-tutorial/_index.md)
14
14
15This section is the place to learn the fundamentals of the language, from the very beginning.
15This section is the place to learn the fundamentals of the language, from the very beginning.
16
16
17−## [The Hoon Workbook](@/docs/learn/hoon/workbook/_index.md)
17+## [The Hoon Workbook](@/docs/hoon/workbook/_index.md)
18
18
19The workbook lets you dive right into code walkthroughs.
19The workbook lets you dive right into code walkthroughs.
20
20
21−## [The Style Guide](@/docs/learn/hoon/style.md)
21+## [The Style Guide](@/docs/hoon/style.md)
22
22
23This guide shows you how to write code in the correct way.
23This guide shows you how to write code in the correct way.
learn/hoon/hoon-tutorial/_index.md+4−2
@@ -3,6 +3,7 @@ title = "Hoon Tutorial"
3weight = 1
3weight = 1
4sort_by = "weight"
4sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6+aliases = ["/docs/byte/0/", "/docs/byte"]
6+++
7+++
7
8
8This series is designed to teach you Hoon without assuming you have an extensive programming background. In fact, you should be able to follow much of it even if you have no programming experience at all, though of course experience helps. We strongly encourage you to try out all the examples of each lesson. These lessons are meant for the beginner but they aren't meant to be skimmed. Each lesson falls into one of two categories: **readings**, which are prose-heavy explanations of Hoon fundamentals, and **walkthroughs**, which are line-by-line explanations of example programs. Walkthroughs are found between readings, offering a practical implementation of the concepts taught in the reading before.
9This series is designed to teach you Hoon without assuming you have an extensive programming background. In fact, you should be able to follow much of it even if you have no programming experience at all, though of course experience helps. We strongly encourage you to try out all the examples of each lesson. These lessons are meant for the beginner but they aren't meant to be skimmed. Each lesson falls into one of two categories: **readings**, which are prose-heavy explanations of Hoon fundamentals, and **walkthroughs**, which are line-by-line explanations of example programs. Walkthroughs are found between readings, offering a practical implementation of the concepts taught in the reading before.
@@ -42,12 +43,13 @@ Chapter 2 covers the type system, and writing apps, and the workings of the Arvo
42- [2.3 Structures and Complex Types](structures-and-complex-types)
43- [2.3 Structures and Complex Types](structures-and-complex-types)
43- [2.4 Standard Library: Trees, Sets, and Maps](trees-sets-and-maps)
44- [2.4 Standard Library: Trees, Sets, and Maps](trees-sets-and-maps)
44- [2.5 Type Polymorphism](type-polymorphism)
45- [2.5 Type Polymorphism](type-polymorphism)
46+- [2.7 Gall](gall)
45
47
46## Other Resources
48## Other Resources
47
49
48−Consult the [Reference section](@/docs/reference/_index.md) to look up any unknown rune or standard library function you don't understand.
50+Consult the [standard libary documentation](@/docs/hoon/library/_index.md) or [rune reference](@/docs/hoon/hoon-expressions/_index.md) to look up any unknown rune or standard library function you don't understand.
49
51
50−As you work your way through these lessons you may want to work on example problems from the [Hoon Workbook](@/docs/learn/hoon/workbook/_index.md) for practice. Once you finish the lessons here you may want to write more versatile Hoon programs which can make use of more of your urbit's environment, in which case you'll want to check out the [Generators](@/docs/learn/hoon/hoon-tutorial/generators.md) documentation. Or maybe you'd like to learn how to write a [Gall app](content/docs/learn/arvo/gall.md). Learn about [Udon](@/docs/using/sail-and-udon.md), Urbit's stripped-down version of Markdown. Or learn [Sail](@/docs/using/sail-and-udon.md), a subset of Hoon used for generating XML nodes.
52+As you work your way through these lessons you may want to work on example problems from the [Hoon Workbook](@/docs/hoon/workbook/_index.md) for practice. Once you finish the lessons here you may want to write more versatile Hoon programs which can make use of more of your urbit's environment, in which case you'll want to check out the [Generators](@/docs/hoon/hoon-tutorial/generators.md) documentation. Or maybe you'd like to learn how to write a [Gall app](content/docs/learn/arvo/gall.md). Learn about [Udon](@/docs/arvo/sail-and-udon.md), Urbit's stripped-down version of Markdown. Or learn [Sail](@/docs/arvo/sail-and-udon.md), a subset of Hoon used for generating XML nodes.
51
53
52
54
53> Last major revision of this section: February 2019
55> Last major revision of this section: February 2019
learn/hoon/hoon-tutorial/ackermann.md+1−1
@@ -8,7 +8,7 @@ The Ackermann function is one of the earliest examples of a function that is bot
8
8
9In this lesson, we will write a gate that computes the [Ackermann function](https://en.wikipedia.org/wiki/Ackermann_function)
9In this lesson, we will write a gate that computes the [Ackermann function](https://en.wikipedia.org/wiki/Ackermann_function)
10
10
11− ```
11+``` hoon
12|= [m=@ n=@]
12|= [m=@ n=@]
13?: =(m 0) +(n)
13?: =(m 0) +(n)
14?: =(n 0) $(m (dec m), n 1)
14?: =(n 0) $(m (dec m), n 1)
learn/hoon/hoon-tutorial/arms-and-cores.md+5−5
@@ -25,7 +25,7 @@ We'll make a core using a multi-line Hoon expression that is more complex than t
25
25
26Use the following to bind `c` to a core. It begins with a **rune**, `|%`, which is used for creating a core. (A rune is just a pair of ASCII characters, and it usually indicates the beginning of a complex Hoon expression.) Take note of the expression spacing -- Hoon uses significant whitespace. Feel free to cut and paste the following expression into the dojo, starting with `=c`:
26Use the following to bind `c` to a core. It begins with a **rune**, `|%`, which is used for creating a core. (A rune is just a pair of ASCII characters, and it usually indicates the beginning of a complex Hoon expression.) Take note of the expression spacing -- Hoon uses significant whitespace. Feel free to cut and paste the following expression into the dojo, starting with `=c`:
27
27
28−```
28+```hoon
29> =c |%
29> =c |%
30 ++ twenty 20
30 ++ twenty 20
31 ++ double-twenty (mul 2 twenty)
31 ++ double-twenty (mul 2 twenty)
@@ -98,7 +98,7 @@ First let's use the dojo to bind the face `a` to the value `12`, and the face `b
98
98
99Now use the following multi-line expression to bind `c` to a core. As before, feel free to cut and paste the following expression into the dojo (starting at `=c`):
99Now use the following multi-line expression to bind `c` to a core. As before, feel free to cut and paste the following expression into the dojo (starting at `=c`):
100
100
101−```
101+```hoon
102> =c |%
102> =c |%
103 ++ two 2
103 ++ two 2
104 ++ inc (add 1 a)
104 ++ inc (add 1 a)
@@ -214,7 +214,7 @@ The result is a tree of uncomputed Nock formulas. But you virtually never need
214
214
215To get the arm of a core to compute you must use its name. The arm names of `c` are in the expression used to create `c`:
215To get the arm of a core to compute you must use its name. The arm names of `c` are in the expression used to create `c`:
216
216
217−```
217+```hoon
218> =c |%
218> =c |%
219 ++ two 2
219 ++ two 2
220 ++ inc (add 1 a)
220 ++ inc (add 1 a)
@@ -409,7 +409,7 @@ This almost looks like a function call of sorts.
409
409
410Let's take a quick look at the battery of one core in the dojo to show that this is true by inputting one into the dojo.
410Let's take a quick look at the battery of one core in the dojo to show that this is true by inputting one into the dojo.
411
411
412−```
412+```hoon
413> =dec |%
413> =dec |%
414 ++ dec
414 ++ dec
415 |= a=@
415 |= a=@
@@ -450,7 +450,7 @@ Again, being able to read Nock is not essential to understanding Hoon.
450
450
451Let's take a quick look at how cores can be combined to build up larger structures.
451Let's take a quick look at how cores can be combined to build up larger structures.
452
452
453−```
453+```hoon
454=>
454=>
455|%
455|%
456++ dec
456++ dec
learn/hoon/hoon-tutorial/atoms-auras-and-simple-cell-types.md+1−1
@@ -17,7 +17,7 @@ In this lesson we'll cover (1)-(4) as they pertain to atoms and simple cell type
17
17
18## Atoms and Auras
18## Atoms and Auras
19
19
20−In [lesson 1.2](@/docs/learn/hoon/hoon-tutorial/nouns.md) we defined what an atom is: any unsigned integer. In this lesson we'll expand on that discussion, going over how Hoon's type system implements auras.
20+In [lesson 1.2](@/docs/hoon/hoon-tutorial/nouns.md) we defined what an atom is: any unsigned integer. In this lesson we'll expand on that discussion, going over how Hoon's type system implements auras.
21
21
22In the most straightforward sense, atoms simply are unsigned integers. But they can also be interpreted as representing signed integers, ASCII symbols, floating-point values, dates, binary numbers, hexadecimal numbers, and more. Every atom is, in and of itself, just an unsigned integer; but Hoon keeps track of type information about each atom, and this info tells Hoon how to interpret the atom in question.
22In the most straightforward sense, atoms simply are unsigned integers. But they can also be interpreted as representing signed integers, ASCII symbols, floating-point values, dates, binary numbers, hexadecimal numbers, and more. Every atom is, in and of itself, just an unsigned integer; but Hoon keeps track of type information about each atom, and this info tells Hoon how to interpret the atom in question.
23
23
learn/hoon/hoon-tutorial/bank-account.md+5−5
@@ -6,7 +6,7 @@ template = "doc.html"
6
6
7In this lesson, we will write a door that can act as a bank account with the ability to withdraw, deposit, and check the account's balance.
7In this lesson, we will write a door that can act as a bank account with the ability to withdraw, deposit, and check the account's balance.
8
8
9−```
9+```hoon
10:- %say
10:- %say
11|= *
11|= *
12:- %noun
12:- %noun
@@ -31,7 +31,7 @@ In this lesson, we will write a door that can act as a bank account with the abi
31
31
32We start with the three lines we have in every `%say` generator:
32We start with the three lines we have in every `%say` generator:
33
33
34−```
34+```hoon
35:- %say
35:- %say
36|= *
36|= *
37:- %noun
37:- %noun
@@ -39,7 +39,7 @@ We start with the three lines we have in every `%say` generator:
39
39
40In the above code chunk, we're creating a cell. The head of this cell is `%say`. The tail is a gate (`|= *`) that produces another cell (`:- %noun`) with a head of the mark of a the kind of data we are going to produce, a noun; the tail of the second cell is the rest of the program.
40In the above code chunk, we're creating a cell. The head of this cell is `%say`. The tail is a gate (`|= *`) that produces another cell (`:- %noun`) with a head of the mark of a the kind of data we are going to produce, a noun; the tail of the second cell is the rest of the program.
41
41
42−```
42+```hoon
43=< =~ new-account
43=< =~ new-account
44 (deposit 100)
44 (deposit 100)
45 (deposit 100)
45 (deposit 100)
@@ -52,7 +52,7 @@ In this code above, we're going to compose two runes using `=<`, which has inver
52
52
53`=~` is a rune that composes multiple expressions. We take `new-account` and use that as the subject for the call to `deposit`. `deposit` and `withdraw` both produce a new version of the door that's used in subsequent calls, which is why we are able to chain them in this fashion. The final reference is to `balance`, which is the account balance contained in the core we that that we examine below.
53`=~` is a rune that composes multiple expressions. We take `new-account` and use that as the subject for the call to `deposit`. `deposit` and `withdraw` both produce a new version of the door that's used in subsequent calls, which is why we are able to chain them in this fashion. The final reference is to `balance`, which is the account balance contained in the core we that that we examine below.
54
54
55−```
55+```hoon
56|%
56|%
57++ new-account
57++ new-account
58 |_ balance=@ud
58 |_ balance=@ud
@@ -70,7 +70,7 @@ We've chosen here to wrap our door in it's own core to emulate the style of prog
70
70
71Each of these arms produces a gate which takes an `@ud` argument. Each of these gates has a similar bit of code inside:
71Each of these arms produces a gate which takes an `@ud` argument. Each of these gates has a similar bit of code inside:
72
72
73−```
73+```hoon
74+>.$(balance (add balance amount))
74+>.$(balance (add balance amount))
75```
75```
76
76
learn/hoon/hoon-tutorial/caesar.md+9−9
@@ -28,7 +28,7 @@ isn't the most compact implementation of such a cipher in Hoon, but it
28demonstrates important principles that more laconic code would not. Save it as
28demonstrates important principles that more laconic code would not. Save it as
29`caesar.hoon` in your `/gen` directory.
29`caesar.hoon` in your `/gen` directory.
30
30
31−```
31+```hoon
32!:
32!:
33|= [msg=tape key=@ud]
33|= [msg=tape key=@ud]
34=<
34=<
@@ -112,7 +112,7 @@ in written order; instead, we'll cover code in the intuitive order of the
112program. For each chunk that we cover, try to read and understand the code
112program. For each chunk that we cover, try to read and understand the code
113itself before reading the explanation.
113itself before reading the explanation.
114
114
115−```
115+```hoon
116!:
116!:
117|= [msg=tape key=@ud]
117|= [msg=tape key=@ud]
118=+ ^= caesar
118=+ ^= caesar
@@ -134,7 +134,7 @@ expressions in the code chunk below against the core declared later, which
134allows us reference the core's contained arms before they are defined. Without
134allows us reference the core's contained arms before they are defined. Without
135`=<`, we would need to put the code chunk below at the bottom of our program.
135`=<`, we would need to put the code chunk below at the bottom of our program.
136
136
137−```
137+```hoon
138=. msg (cass msg)
138=. msg (cass msg)
139:- (shift msg key)
139:- (shift msg key)
140(unshift msg key)
140(unshift msg key)
@@ -149,7 +149,7 @@ gate that converts uppercase letters to lowercase.
149cell of a right-shifted cipher and a left-shifted cell. This is the final output
149cell of a right-shifted cipher and a left-shifted cell. This is the final output
150of our generator.
150of our generator.
151
151
152−```
152+```hoon
153 ++ rott
153 ++ rott
154 |= [m=tape n=@ud]
154 |= [m=tape n=@ud]
155 =/ length=@ud (lent m)
155 =/ length=@ud (lent m)
@@ -176,7 +176,7 @@ if `n` is larger than `length`.
176instance, we are switching the two parts: the second part `q.s` is welded to the
176instance, we are switching the two parts: the second part `q.s` is welded to the
177front, and the first part `p.s` is welded to the back.
177front, and the first part `p.s` is welded to the back.
178
178
179−```
179+```hoon
180 ++ zipper
180 ++ zipper
181 |= [a=tape b=tape]
181 |= [a=tape b=tape]
182 ^- (map @t @t)
182 ^- (map @t @t)
@@ -232,7 +232,7 @@ We have three related arms to look at next, `coder`, `encoder`, and
232`decoder`. `coder` is the foundation of the other two, so we'll look at it
232`decoder`. `coder` is the foundation of the other two, so we'll look at it
233first.
233first.
234
234
235−```
235+```hoon
236 ++ coder
236 ++ coder
237 |= [a=tape b=tape]
237 |= [a=tape b=tape]
238 (~(put by (zipper a b)) ' ' ' ')
238 (~(put by (zipper a b)) ' ' ' ')
@@ -246,7 +246,7 @@ character (called `ace`) simply maps to itself. This is done to simplify
246the handling of spaces in `tapes` we want to encode, since we don't want to
246the handling of spaces in `tapes` we want to encode, since we don't want to
247shift them.
247shift them.
248
248
249−```
249+```hoon
250 ++ encoder
250 ++ encoder
251 |= [key=@ud]
251 |= [key=@ud]
252 =/ keytape=tape (rott alpha key)
252 =/ keytape=tape (rott alpha key)
@@ -280,7 +280,7 @@ translation between the alphabet and our shifted alphabet, or vice versa.
280Still with us? Good. We are finally about to use all the stuff that we've
280Still with us? Good. We are finally about to use all the stuff that we've
281walked through.
281walked through.
282
282
283−```
283+```hoon
284 ++ shift
284 ++ shift
285 |= [message=tape key=@ud]
285 |= [message=tape key=@ud]
286 (operate message key (encoder key))
286 (operate message key (encoder key))
@@ -299,7 +299,7 @@ that call with `(operate message key (decoder key))`. These both produce the
299final output of the core, to be called in the form of `(shift msg key)`
299final output of the core, to be called in the form of `(shift msg key)`
300and `(unshift msg key)` at the bottom of the program.
300and `(unshift msg key)` at the bottom of the program.
301
301
302−```
302+```hoon
303++ operate
303++ operate
304 |= [message=tape key=@ud encoder=(map @t @t)]
304 |= [message=tape key=@ud encoder=(map @t @t)]
305 ^- tape
305 ^- tape
learn/hoon/hoon-tutorial/conditionals.md+5−5
@@ -6,7 +6,7 @@ template = "doc.html"
6
6
7In this lesson, we will write a generator that takes an integer and checks if it is an even number between 1 and 100. This will help demonstrate how boolean (true or false) conditional expressions work in Hoon.
7In this lesson, we will write a generator that takes an integer and checks if it is an even number between 1 and 100. This will help demonstrate how boolean (true or false) conditional expressions work in Hoon.
8
8
9−```
9+```hoon
10:- %say
10:- %say
11|= [* [n=@ud ~] ~]
11|= [* [n=@ud ~] ~]
12:- %noun
12:- %noun
@@ -21,13 +21,13 @@ In this lesson, we will write a generator that takes an integer and checks if it
21
21
22On the very first line, with `:- %say` we are beginning to create a generator of the `%say` variety. The result of a `%say` generator is a cell with a head of `%say` and tail that is a gate, itself producing a `cask`, a pair of a `mark` and some data. It's not important for understanding conditionals; this is just template code. For more information about `%say` generators, see the [Generators](../generators) documentation.
22On the very first line, with `:- %say` we are beginning to create a generator of the `%say` variety. The result of a `%say` generator is a cell with a head of `%say` and tail that is a gate, itself producing a `cask`, a pair of a `mark` and some data. It's not important for understanding conditionals; this is just template code. For more information about `%say` generators, see the [Generators](../generators) documentation.
23
23
24−```
24+```hoon
25|= [* [n=@ud ~] ~]
25|= [* [n=@ud ~] ~]
26```
26```
27
27
28The code above builds a gate. The gate's first argument is a cell provided by Dojo that contains some system information we're not going to use, so we use `*` to indicate "any noun." The next cell is our arguments provided to the generator upon invocation at the `dojo`. Here we only want one `@ud` with the face `n`.
28The code above builds a gate. The gate's first argument is a cell provided by Dojo that contains some system information we're not going to use, so we use `*` to indicate "any noun." The next cell is our arguments provided to the generator upon invocation at the `dojo`. Here we only want one `@ud` with the face `n`.
29
29
30−```
30+```hoon
31:- %noun
31:- %noun
32```
32```
33
33
@@ -35,7 +35,7 @@ This code is the third line of the `%say` "boilerplate," and it produces a `cask
35
35
36But now let's get into the conditionals themselves. Below we'll examine the series of `?` runes used.
36But now let's get into the conditionals themselves. Below we'll examine the series of `?` runes used.
37
37
38−```
38+```hoon
39?: ?& =(0 (mod n 2))
39?: ?& =(0 (mod n 2))
40```
40```
41
41
@@ -45,7 +45,7 @@ In our case, the first child of `?:` is `?& =(0 (mod n 2))`. It itself has anot
45
45
46The second child is:
46The second child is:
47
47
48−```
48+```hoon
49 ?& (gte n 1)
49 ?& (gte n 1)
50 ?! (gth n 100)
50 ?! (gth n 100)
51 ==
51 ==
learn/hoon/hoon-tutorial/doors.md+2−2
@@ -52,7 +52,7 @@ It's important to learn the difference, however, because for certain use cases y
52
52
53Let's make a core with arms that build gates of various kinds. As we did in a previous lesson, we'll use the `|%` rune. Feel free to cut and paste the following into the dojo:
53Let's make a core with arms that build gates of various kinds. As we did in a previous lesson, we'll use the `|%` rune. Feel free to cut and paste the following into the dojo:
54
54
55−```
55+```hoon
56> =c |%
56> =c |%
57 ++ inc |=(a=@ (add 1 a))
57 ++ inc |=(a=@ (add 1 a))
58 ++ add-two |=(a=@ (inc (inc a)))
58 ++ add-two |=(a=@ (inc (inc a)))
@@ -267,7 +267,7 @@ Gates are useful for defining functions. But there are many-armed doors as well
267
267
268Let's write an example door in order to illustrate its features. Each of the arms in the door will define a simple gate. Let's bind the door to `c` as we did with the last core. To make a door we use the `|_` rune:
268Let's write an example door in order to illustrate its features. Each of the arms in the door will define a simple gate. Let's bind the door to `c` as we did with the last core. To make a door we use the `|_` rune:
269
269
270−```
270+```hoon
271> =c |_ b=@
271> =c |_ b=@
272 ++ plus |=(a=@ (add a b))
272 ++ plus |=(a=@ (add a b))
273 ++ times |=(a=@ (mul a b))
273 ++ times |=(a=@ (mul a b))
learn/hoon/hoon-tutorial/egg-timer.md+6−6
@@ -7,7 +7,7 @@ template = "doc.html"
7The Arvo operating system is divided up into modules called vanes. Gall is the vane responsible for providing an API for building stateful applications in Urbit. Gall is a complex system that takes a lot of getting used to, so let's dip our toes in with a simple egg-timer app.
7The Arvo operating system is divided up into modules called vanes. Gall is the vane responsible for providing an API for building stateful applications in Urbit. Gall is a complex system that takes a lot of getting used to, so let's dip our toes in with a simple egg-timer app.
8
8
9
9
10−```
10+```hoon
11|%
11|%
12+$ effect (pair bone syscall)
12+$ effect (pair bone syscall)
13+$ syscall [%wait path @da]
13+$ syscall [%wait path @da]
@@ -28,7 +28,7 @@ The Arvo operating system is divided up into modules called vanes. Gall is the v
28
28
29The first thing to notice is that we are creating a `core` (`|%`) and a `door` (`|_`). This is a typical style of Gall programming where your types are defined in the first `core` and your application is defined in the following `door`.
29The first thing to notice is that we are creating a `core` (`|%`) and a `door` (`|_`). This is a typical style of Gall programming where your types are defined in the first `core` and your application is defined in the following `door`.
30
30
31−```
31+```hoon
32|%
32|%
33+$ effect (pair bone syscall)
33+$ effect (pair bone syscall)
34+$ syscall [%wait path @da]
34+$ syscall [%wait path @da]
@@ -41,7 +41,7 @@ It's important to note that the names `effect` and `syscall` are arbitrary; you
41
41
42The sample of the `door` is:
42The sample of the `door` is:
43
43
44−```
44+```hoon
45[bowl:gall ~]
45[bowl:gall ~]
46```
46```
47
47
@@ -55,7 +55,7 @@ You can find the full definition of `bowl` in `sys/zuse.hoon`, but for now it's
55
55
56The `door` we've made has two arms `poke-noun` and `wake`. Gall is capable of dispatching `pokes`, or requests, to an app based on the mark of the data given along with that poke. These are sent to the arm with the name that matches the mark of the data. Here we use the generic `noun` mark:
56The `door` we've made has two arms `poke-noun` and `wake`. Gall is capable of dispatching `pokes`, or requests, to an app based on the mark of the data given along with that poke. These are sent to the arm with the name that matches the mark of the data. Here we use the generic `noun` mark:
57
57
58−```
58+```hoon
59++ poke-noun
59++ poke-noun
60 |= t=@dr
60 |= t=@dr
61 ^+ [*(list effect) +>.$]
61 ^+ [*(list effect) +>.$]
@@ -73,7 +73,7 @@ As a matter of good type hygiene, we explicitly cast the output of this gate wit
73
73
74Next we're going to use the `:_` rune which is just the inverted form a `:-` the cell construction rune. We use it twice so the actual data will end up looking something like:
74Next we're going to use the `:_` rune which is just the inverted form a `:-` the cell construction rune. We use it twice so the actual data will end up looking something like:
75
75
76−```
76+```hoon
77[[[ost %wait /egg-timer (add now t)] ~] +>.$]
77[[[ost %wait /egg-timer (add now t)] ~] +>.$]
78```
78```
79
79
@@ -97,7 +97,7 @@ The final part of this `syscall` is:
97
97
98That's all for our `poke-noun` arm. But what about when the timer goes off? Behn will create a `gift`, a similar construct to how we created an `effect`, only this time it will end up being dispatched back to us via Gall in the `++wake` arm. Any app that wants to use a timer trigger needs to have an arm called `++wake`.
98That's all for our `poke-noun` arm. But what about when the timer goes off? Behn will create a `gift`, a similar construct to how we created an `effect`, only this time it will end up being dispatched back to us via Gall in the `++wake` arm. Any app that wants to use a timer trigger needs to have an arm called `++wake`.
99
99
100−```
100+```hoon
101++ wake
101++ wake
102 |= [=wire error=(unit tang)]
102 |= [=wire error=(unit tang)]
103 ^+ [*(list effect) +>.$]
103 ^+ [*(list effect) +>.$]
learn/hoon/hoon-tutorial/fibonacci.md+6−6
@@ -6,7 +6,7 @@ template = "doc.html"
6
6
7In this example, we will write a generator that produces a list of Fibonacci numbers up to `n`.
7In this example, we will write a generator that produces a list of Fibonacci numbers up to `n`.
8
8
9−```
9+```hoon
10|= n=@ud
10|= n=@ud
11%- flop
11%- flop
12=+ [i=0 p=0 q=1 r=*(list @ud)]
12=+ [i=0 p=0 q=1 r=*(list @ud)]
@@ -22,7 +22,7 @@ In this example, we will write a generator that produces a list of Fibonacci num
22
22
23On the first line, we use `|=` to produce a gate which takes an `@ud` that's stored in the face `n`. This `n` sample that we give our gate determines how long our Fibonacci sequence is. When the list that our program builds has `n` members, the program ends.
23On the first line, we use `|=` to produce a gate which takes an `@ud` that's stored in the face `n`. This `n` sample that we give our gate determines how long our Fibonacci sequence is. When the list that our program builds has `n` members, the program ends.
24
24
25−```
25+```hoon
26%- flop
26%- flop
27```
27```
28
28
@@ -30,25 +30,25 @@ In the line above, we use `flop` on the output of the rest of the program. `flop
30
30
31Why are we using this instead of just producing the list in the order we want it in the first place? Because with lists, adding an element to the end is a computationally expensive operation that gets more expensive the longer the list is, due to the fact that you need to traverse to the end of the tree. Adding an element to the front, however, is cheap. [In Big-O Notation](https://en.wikipedia.org/wiki/Big_O_notation), adding to the end of a list is O(n) and the front is O(1).
31Why are we using this instead of just producing the list in the order we want it in the first place? Because with lists, adding an element to the end is a computationally expensive operation that gets more expensive the longer the list is, due to the fact that you need to traverse to the end of the tree. Adding an element to the front, however, is cheap. [In Big-O Notation](https://en.wikipedia.org/wiki/Big_O_notation), adding to the end of a list is O(n) and the front is O(1).
32
32
33−```
33+```hoon
34=+ [i=0 p=0 q=1 r=*(list @ud)]
34=+ [i=0 p=0 q=1 r=*(list @ud)]
35```
35```
36
36
37Here we declare several values that we are going to use the execution of our program. The only one of these that is noteworthy is `r`: we're using `*` to bunt, or get the default value for, the mold `(list @ud)`.
37Here we declare several values that we are going to use the execution of our program. The only one of these that is noteworthy is `r`: we're using `*` to bunt, or get the default value for, the mold `(list @ud)`.
38
38
39−```
39+```hoon
40|- ^+ r
40|- ^+ r
41```
41```
42
42
43With this code, we define `|-`, the _trap_ that acts as a recursion point and contains the rest of our program. We also use `^+` to cast the output by example. This will result in the output being the same type as `r`, a list of `@ud`.
43With this code, we define `|-`, the _trap_ that acts as a recursion point and contains the rest of our program. We also use `^+` to cast the output by example. This will result in the output being the same type as `r`, a list of `@ud`.
44
44
45−```
45+```hoon
46?: =(i n) r
46?: =(i n) r
47```
47```
48
48
49In the code above, `?:` checks whether the first child, `=(i n)`, our terminating case, is true or false. If it is true, it branches to `r` and the program ends. If it is false, the program continues to the code below.
49In the code above, `?:` checks whether the first child, `=(i n)`, our terminating case, is true or false. If it is true, it branches to `r` and the program ends. If it is false, the program continues to the code below.
50
50
51−```
51+```hoon
52%= $
52%= $
53 i +(i)
53 i +(i)
54 p q
54 p q
learn/hoon/hoon-tutorial/gall.md+2−2
@@ -16,7 +16,7 @@ A `bone` is an opaque cause that initiates a request. When constructing a `move`
16
16
17A `card` is the effect or event that is being requested. Each application should define the set of `cards` it can produce. Here is an excerpt from `clock.hoon` showing its `cards`
17A `card` is the effect or event that is being requested. Each application should define the set of `cards` it can produce. Here is an excerpt from `clock.hoon` showing its `cards`
18
18
19−```
19+```hoon
20+$ card
20+$ card
21 $% [%poke wire dock poke]
21 $% [%poke wire dock poke]
22 [%http-response =http-event:http]
22 [%http-response =http-event:http]
@@ -37,7 +37,7 @@ Gall applications can have a number of arms that get called depending on the inf
37
37
38Often when developing an application you will not initially care about the data. Here is a sample `++prep` arm that will simply throw away the previous application state.
38Often when developing an application you will not initially care about the data. Here is a sample `++prep` arm that will simply throw away the previous application state.
39
39
40−```
40+```hoon
41++ prep
41++ prep
42 |= a=(unit *)
42 |= a=(unit *)
43 `(quip move _+>.$)`[~ +>.$]
43 `(quip move _+>.$)`[~ +>.$]
learn/hoon/hoon-tutorial/generators.md+28−28
@@ -18,14 +18,14 @@ takes a `sample` (argument) and produces a noun. All you need to do is write a
18`gate` and put it into a file in the `/gen` directory. Let's take a look at a
18`gate` and put it into a file in the `/gen` directory. Let's take a look at a
19very simple one:
19very simple one:
20
20
21−```
21+```hoon
22|= a=*
22|= a=*
23a
23a
24```
24```
25
25
26This generator takes one argument of any noun and produces it without any
26This generator takes one argument of any noun and produces it without any
27changes. If we put this into a file named `echo.hoon` in the `/gen` directory,
27changes. If we put this into a file named `echo.hoon` in the `/gen` directory,
28−we can run it from the [Dojo](@/docs/using/shell.md):
28+we can run it from the [Dojo](@/operations.md):
29
29
30```
30```
31> +echo 42
31> +echo 42
@@ -65,7 +65,7 @@ generator to see something more familiar:
65Now let's create a generator with two arguments instead of one. Save the code
65Now let's create a generator with two arguments instead of one. Save the code
66below as `add.hoon` in the `/gen` directory.
66below as `add.hoon` in the `/gen` directory.
67
67
68−```
68+```hoon
69|= [a=@ud b=@ud]
69|= [a=@ud b=@ud]
70(add a b)
70(add a b)
71```
71```
@@ -105,7 +105,7 @@ output data and the `mark` describing that data.
105Below is an example of a `%say` generator. Save it to `add.hoon` in the `/gen`
105Below is an example of a `%say` generator. Save it to `add.hoon` in the `/gen`
106directory.
106directory.
107
107
108−```
108+```hoon
109:- %say
109:- %say
110|= *
110|= *
111:- %noun
111:- %noun
@@ -124,7 +124,7 @@ generators but impossible with naked generators. We'll explain that in a moment.
124For now, let's focus on the code that is necessary to make something a `%say`
124For now, let's focus on the code that is necessary to make something a `%say`
125generator.
125generator.
126
126
127−```
127+```hoon
128:- %say
128:- %say
129```
129```
130
130
@@ -134,7 +134,7 @@ as its head and the second following expression as its tail.
134The expression above creates a cell with `%say` as the head. The tail is
134The expression above creates a cell with `%say` as the head. The tail is
135the `|= *` expression on the line that follows.
135the `|= *` expression on the line that follows.
136
136
137−```
137+```hoon
138|= *
138|= *
139:- %noun
139:- %noun
140(add 40 2)
140(add 40 2)
@@ -176,7 +176,7 @@ You can access each of those pieces of data by typing their names into the Dojo.
176But in a generator, we need to put faces (variable names) onto that data so we
176But in a generator, we need to put faces (variable names) onto that data so we
177can easily use it in the program. We can do so like this:
177can easily use it in the program. We can do so like this:
178
178
179−```
179+```hoon
180|= [[now=@da eny=@uvJ bec=beak] ~ ~]
180|= [[now=@da eny=@uvJ bec=beak] ~ ~]
181```
181```
182
182
@@ -191,7 +191,7 @@ represent this second part. But that would mean we don't want to use any new
191faces for our generator. So a sample where we want to declare a single required
191faces for our generator. So a sample where we want to declare a single required
192argument would look like this:
192argument would look like this:
193
193
194−```
194+```hoon
195|= [* [n=@ud ~] ~]
195|= [* [n=@ud ~] ~]
196```
196```
197
197
@@ -201,7 +201,7 @@ in the first part of the sample, somewhat similar to how we use a `~` to say
201
201
202But to use both parts together, our gate and sample would look like this:
202But to use both parts together, our gate and sample would look like this:
203
203
204−```
204+```hoon
205|= [[now=@da eny=@uvJ bec=beak] [n=@ud ~] ~]
205|= [[now=@da eny=@uvJ bec=beak] [n=@ud ~] ~]
206```
206```
207
207
@@ -210,14 +210,14 @@ arguments may be passed to the program as it's being run, but the program doesn'
210require them. The syntax for the third part is just like the syntax for the
210require them. The syntax for the third part is just like the syntax for the
211second part, besides its position:
211second part, besides its position:
212
212
213−```
213+```hoon
214|= [* ~ [bet=@ud ~]]
214|= [* ~ [bet=@ud ~]]
215```
215```
216
216
217Let's look at an example that uses all three parts. Save the code below in a
217Let's look at an example that uses all three parts. Save the code below in a
218file called `dice.hoon` in your `/gen` directory.
218file called `dice.hoon` in your `/gen` directory.
219
219
220−```
220+```hoon
221:- %say
221:- %say
222|= [[now=@da eny=@uvJ bec=beak] [n=@ud ~] [bet=@ud ~]]
222|= [[now=@da eny=@uvJ bec=beak] [n=@ud ~] [bet=@ud ~]]
223:- %noun
223:- %noun
@@ -263,7 +263,7 @@ to not use the second argument.
263Also unlike a naked generator, we don't need to put our arguments together into
263Also unlike a naked generator, we don't need to put our arguments together into
264a cell. Swap the code below into your `add.hoon` file.
264a cell. Swap the code below into your `add.hoon` file.
265
265
266−```
266+```hoon
267:- %say
267:- %say
268|= [* [a=@ud b=@ud ~] ~]
268|= [* [a=@ud b=@ud ~] ~]
269:- %noun
269:- %noun
@@ -312,7 +312,7 @@ to explain how this kind of generator works.
312The code below is an `%ask` generator that checks if the user inputs "blue" when
312The code below is an `%ask` generator that checks if the user inputs "blue" when
313prompted. Save it as `axe.hoon` in `/gen`.
313prompted. Save it as `axe.hoon` in `/gen`.
314
314
315−```
315+```hoon
316/- sole
316/- sole
317/+ generators
317/+ generators
318=, [sole generators]
318=, [sole generators]
@@ -352,7 +352,7 @@ Aaaaagh!
352
352
353Let's go over what exactly is happening in this code.
353Let's go over what exactly is happening in this code.
354
354
355−```
355+```hoon
356/- sole
356/- sole
357/+ generators
357/+ generators
358=, [sole generators]
358=, [sole generators]
@@ -369,7 +369,7 @@ gates we will use from `/lib/generators`. We use some special runes for this.
369to write `sole-result:sole` instead of `sole-result` or `print:generators`
369to write `sole-result:sole` instead of `sole-result` or `print:generators`
370instead of `print`.
370instead of `print`.
371
371
372−```
372+```hoon
373:- %ask
373:- %ask
374|= *
374|= *
375```
375```
@@ -381,7 +381,7 @@ generator we are running.
381With `|= *`, we create a gate and ignore the standard arguments we are given,
381With `|= *`, we create a gate and ignore the standard arguments we are given,
382because we're not using them.
382because we're not using them.
383
383
384−```
384+```hoon
385^- (sole-result (cask tang))
385^- (sole-result (cask tang))
386```
386```
387
387
@@ -398,7 +398,7 @@ There are three types of `tank`: `leaf`, `palm`, and `rose`. A `leaf` is for
398printing a single noun, a `rose` is for printing rows of data, and a `palm` is
398printing a single noun, a `rose` is for printing rows of data, and a `palm` is
399for printing backstep-indented lists.
399for printing backstep-indented lists.
400
400
401−```
401+```hoon
402%+ print leaf+"What is your favorite color?"
402%+ print leaf+"What is your favorite color?"
403%+ prompt [%& %prompt "color: "]
403%+ prompt [%& %prompt "color: "]
404|= t=tape
404|= t=tape
@@ -434,7 +434,7 @@ use to prompt the user. In the case of our example, we use `"color: "`.
434we produce a `tang`.
434we produce a `tang`.
435
435
436
436
437−```
437+```hoon
438|= t=tape
438|= t=tape
439```
439```
440
440
@@ -457,7 +457,7 @@ This is a [known issue](https://github.com/urbit/arvo/issues/840) to be resolved
457section we'll assume knowledge of generators covered in previous sections, so
457section we'll assume knowledge of generators covered in previous sections, so
458we can jump in with an example:
458we can jump in with an example:
459
459
460−```
460+```hoon
461/- sole
461/- sole
462/+ generators
462/+ generators
463=, generators
463=, generators
@@ -481,7 +481,7 @@ The above generator was written with the
481[Studio Ghibli API](https://ghibliapi.herokuapp.com/). It uses this API to
481[Studio Ghibli API](https://ghibliapi.herokuapp.com/). It uses this API to
482print the title of a Studio Ghibli film.
482print the title of a Studio Ghibli film.
483
483
484−```
484+```hoon
485/- sole
485/- sole
486/+ generators
486/+ generators
487=, generators
487=, generators
@@ -491,7 +491,7 @@ Here we import types from `/sur/sole.hoon` and gates from
491`/lib/generators.hoon`. We also use `=,` to expose the namespace of
491`/lib/generators.hoon`. We also use `=,` to expose the namespace of
492`generators` that we just imported.
492`generators` that we just imported.
493
493
494−```
494+```hoon
495:- %get
495:- %get
496|= [* [url=tape ~] ~]
496|= [* [url=tape ~] ~]
497```
497```
@@ -501,7 +501,7 @@ code that produces a generator-specific `cell`. The head of that cell is `%get`,
501and the tail is a gate that takes a `tape` of the URL that we are trying
501and the tail is a gate that takes a `tape` of the URL that we are trying
502to access.
502to access.
503
503
504−```
504+```hoon
505^- (sole-request:sole (cask json))
505^- (sole-request:sole (cask json))
506```
506```
507
507
@@ -509,7 +509,7 @@ Here we make sure our gate is producing a `sole-request` which contains a `cask`
509of the type `json`.
509of the type `json`.
510
510
511
511
512−```
512+```hoon
513%+ curl (scan url auri:de-purl:html)
513%+ curl (scan url auri:de-purl:html)
514|= hit/httr:eyre
514|= hit/httr:eyre
515```
515```
@@ -520,7 +520,7 @@ make sure it's in the proper format.
520The second part of the `curl` call is the `gate` that will get called with the
520The second part of the `curl` call is the `gate` that will get called with the
521result provided by the actual HTTP request.
521result provided by the actual HTTP request.
522
522
523−```
523+```hoon
524?~ r.hit !!
524?~ r.hit !!
525```
525```
526
526
@@ -528,7 +528,7 @@ Here we verify that the `r` face of our response is not null before
528continuing. If it is null, the generator will crash, as there is nothing left to
528continuing. If it is null, the generator will crash, as there is nothing left to
529do.
529do.
530
530
531−```
531+```hoon
532=/ my-json (de-json:html q.u.r.hit)
532=/ my-json (de-json:html q.u.r.hit)
533```
533```
534
534
@@ -538,7 +538,7 @@ entire response object, including headers, which we don't care about for this
538example. `de-json` out of `html` will parse the `cord` and produce a `json` type
538example. `de-json` out of `html` will parse the `cord` and produce a `json` type
539for us that we can then use to inspect the data.
539for us that we can then use to inspect the data.
540
540
541−```
541+```hoon
542?~ my-json !!
542?~ my-json !!
543=, dejs:format
543=, dejs:format
544```
544```
@@ -548,7 +548,7 @@ type. To do that, we test for null and crash if that test passes. If it doesn't
548pass, we use `=,` on the `dejs:format` core so that we can more easily pull arms
548pass, we use `=,` on the `dejs:format` core so that we can more easily pull arms
549out of it.
549out of it.
550
550
551−```
551+```hoon
552%+ produce %json
552%+ produce %json
553%. %title
553%. %title
554%~ got by
554%~ got by
@@ -572,7 +572,7 @@ access members of a given `map`.
572
572
573At the moment, however, we do not have a `map`, but instead have a `json` type.
573At the moment, however, we do not have a `map`, but instead have a `json` type.
574
574
575−```
575+```hoon
576%- (om same)
576%- (om same)
577u.my-json
577u.my-json
578```
578```
learn/hoon/hoon-tutorial/hoon-syntax.md+8−8
@@ -83,7 +83,7 @@ We start with atom literals. Each of these is a basic expression of Hoon that e
83~zod
83~zod
84```
84```
85
85
86−Recall from [lesson 1.2](@/docs/learn/hoon/hoon-tutorial/nouns.md) that even though atoms are unsigned integers, they can be pretty-printed in different ways. The way an atom is to be represented depends on its aura. The literal syntax for each of the hard-coded auras will be explained further in [lesson 2.4](@/docs/learn/hoon/hoon-tutorial/atoms-auras-and-simple-cell-types.md).
86+Recall from [lesson 1.2](@/docs/hoon/hoon-tutorial/nouns.md) that even though atoms are unsigned integers, they can be pretty-printed in different ways. The way an atom is to be represented depends on its aura. The literal syntax for each of the hard-coded auras will be explained further in [lesson 2.4](@/docs/hoon/hoon-tutorial/atoms-auras-and-simple-cell-types.md).
87
87
88Cell literals can be written in Hoon using `[ ]`. Cell literals are complex, because other expressions are put inside the square brackets. Examples:
88Cell literals can be written in Hoon using `[ ]`. Cell literals are complex, because other expressions are put inside the square brackets. Examples:
89
89
@@ -110,7 +110,7 @@ You can also put complex expressions inside square brackets to make a cell. The
110
110
111### Wings
111### Wings
112
112
113−A wing expression is a series of limb expressions separated by `.`. A deeper explanation can be found on the [wing](@/docs/reference/hoon-expressions/limb/wing.md) and [limb](@/docs/reference/hoon-expressions/limb/limb.md) reference pages.
113+A wing expression is a series of limb expressions separated by `.`. A deeper explanation can be found on the [wing](@/docs/hoon/hoon-expressions/limb/wing.md) and [limb](@/docs/hoon/hoon-expressions/limb/limb.md) reference pages.
114
114
115Let's start with the base case: a single limb. A limb expression is a trivial wing expression -- there is only one limb in the series. Some one-limb wings:
115Let's start with the base case: a single limb. A limb expression is a trivial wing expression -- there is only one limb in the series. Some one-limb wings:
116
116
@@ -123,7 +123,7 @@ Let's start with the base case: a single limb. A limb expression is a trivial w
123- `add`
123- `add`
124- `mul`
124- `mul`
125
125
126−As a special limb we also have `$`. This is the name of the arm in special one-armed cores called "gates". (We'll cover the role of `$` in [lesson 1.5](@/docs/learn/hoon/hoon-tutorial/gates.md).)
126+As a special limb we also have `$`. This is the name of the arm in special one-armed cores called "gates". (We'll cover the role of `$` in [lesson 1.5](@/docs/hoon/hoon-tutorial/gates.md).)
127
127
128Wing expressions with multiple limbs are complex expressions. Examples:
128Wing expressions with multiple limbs are complex expressions. Examples:
129
129
@@ -140,7 +140,7 @@ Wing expressions with multiple limbs are complex expressions. Examples:
140
140
141Hoon is a statically typed language. You'll learn more about the type system later in the chapter. For now, just know that Hoon's type system uses special symbols to indicate certain fundamental types: `~` (null), `*` (noun), `@` (atom), `^` (cell), and `?` (flag). Each of these symbols can be used as a stand-alone expression of Hoon. In the case of `@` there may be a series of letters following it, to indicate an atom aura; e.g., `@s`, `@rs`, `@tas`, and `@tD`.
141Hoon is a statically typed language. You'll learn more about the type system later in the chapter. For now, just know that Hoon's type system uses special symbols to indicate certain fundamental types: `~` (null), `*` (noun), `@` (atom), `^` (cell), and `?` (flag). Each of these symbols can be used as a stand-alone expression of Hoon. In the case of `@` there may be a series of letters following it, to indicate an atom aura; e.g., `@s`, `@rs`, `@tas`, and `@tD`.
142
142
143−They may also be put in brackets to indicate compound types, e.g., `[@ ^]`, `[@ud @sb]`, `[[? *] ^]`. (Technically these expressions don't _always_ indicate compound types. In certain contexts they're interpreted in a different way. We'll address this variation of meaning in [lesson 2.6](@/docs/learn/hoon/hoon-tutorial/structures-and-complex-types.md).)
143+They may also be put in brackets to indicate compound types, e.g., `[@ ^]`, `[@ud @sb]`, `[[? *] ^]`. (Technically these expressions don't _always_ indicate compound types. In certain contexts they're interpreted in a different way. We'll address this variation of meaning in [lesson 2.6](@/docs/hoon/hoon-tutorial/structures-and-complex-types.md).)
144
144
145### Rune Expressions
145### Rune Expressions
146
146
@@ -150,7 +150,7 @@ Expressions with a rune at the beginning are rune expressions. Most runes are u
150
150
151Runes are classified by family (with the exceptions of `--` and `==`). The first of the two symbols indicates the family -- e.g., the `^-` rune is in the `^` family of runes, and the `|=` and `|%` runes are in the `|` family. The runes of particular family usually have related meanings. Two simple examples: the runes in the `|` family are all used to create cores, and the runes in the `:` family are all used to create cells.
151Runes are classified by family (with the exceptions of `--` and `==`). The first of the two symbols indicates the family -- e.g., the `^-` rune is in the `^` family of runes, and the `|=` and `|%` runes are in the `|` family. The runes of particular family usually have related meanings. Two simple examples: the runes in the `|` family are all used to create cores, and the runes in the `:` family are all used to create cells.
152
152
153−Rune expressions are usually complex, which means they usually have one or more subexpressions. The appropriate syntax varies from rune to rune; after all, they're used for different purposes. To see the syntax rules for a particular rune, consult the [rune reference](@/docs/reference/hoon-expressions/rune/_index.md). Nevertheless, there are some general principles that hold of all rune expressions.
153+Rune expressions are usually complex, which means they usually have one or more subexpressions. The appropriate syntax varies from rune to rune; after all, they're used for different purposes. To see the syntax rules for a particular rune, consult the [rune reference](@/docs/hoon/hoon-expressions/rune/_index.md). Nevertheless, there are some general principles that hold of all rune expressions.
154
154
155Runes generally do not need to be closed. In other languages you'll see an abundance of terminators, such as opening and closing parentheses, and this way of doing this is largely absent from Urbit. That's because all runes take a fixed number of children. Children can themselves be runes (with more children), and Hoon programs work by chaining through these series of children until a value -- not another rune -- is arrived at. This makes Hoon code nice and neat to look at.
155Runes generally do not need to be closed. In other languages you'll see an abundance of terminators, such as opening and closing parentheses, and this way of doing this is largely absent from Urbit. That's because all runes take a fixed number of children. Children can themselves be runes (with more children), and Hoon programs work by chaining through these series of children until a value -- not another rune -- is arrived at. This makes Hoon code nice and neat to look at.
156
156
@@ -249,7 +249,7 @@ The irregular `( )` gate-calling syntax is versatile -- it is also a shortcut fo
249
249
250The `( )` gate-calling syntax can be used for gates with any number of arguments.
250The `( )` gate-calling syntax can be used for gates with any number of arguments.
251
251
252−You can find other irregular forms in the irregular expression [reference document](@/docs/reference/hoon-expressions/irregular.md).
252+You can find other irregular forms in the irregular expression [reference document](@/docs/hoon/hoon-expressions/irregular.md).
253
253
254### Expressions That Are Only Irregular
254### Expressions That Are Only Irregular
255
255
@@ -284,7 +284,7 @@ b=[16 18]
284[16 18]
284[16 18]
285```
285```
286
286
287−To see other irregular expressions, check the irregular expression [reference document](@/docs/reference/hoon-expressions/irregular.md).
287+To see other irregular expressions, check the irregular expression [reference document](@/docs/hoon/hoon-expressions/irregular.md).
288
288
289
289
290## The Standard Library
290## The Standard Library
@@ -293,7 +293,7 @@ The Hoon standard library is a compilation of generally useful Hoon gates (funct
293
293
294It's important to know about standard library functions, because they make certain tasks much easier, and spare you from having to write the code itself. If you did not use the `add` library function, for example, you would have to write out code like this every time you wanted to find the sum of two numbers:
294It's important to know about standard library functions, because they make certain tasks much easier, and spare you from having to write the code itself. If you did not use the `add` library function, for example, you would have to write out code like this every time you wanted to find the sum of two numbers:
295
295
296−```
296+```hoon
297++ add
297++ add
298 ~/ %add
298 ~/ %add
299 |= [a=@ b=@]
299 |= [a=@ b=@]
learn/hoon/hoon-tutorial/iron-polymorphism.md+6−6
@@ -10,7 +10,7 @@ Polymorphism is a programming concept that allows a a piece of code to use diffe
10
10
11A dry gate (also simply a _gate_) is the kind that you're already familiar with by now: a one-armed core with a sample. A wet gate is also a one-armed core with a sample, but there is a difference. With a dry gate, when you pass in an argument and the code gets compiled, the type system will try to cast to the type specified by the gate; if you pass something that does not fit in the specified type, for example a `cord` instead of a `cell` you will get a nest failure. On the other hand, when you pass arguments to a wet gate, their types are preserved and type analysis is done at the definition site of the gate -- in our case, `fold` in `hoon.hoon` -- rather than the call site.
11A dry gate (also simply a _gate_) is the kind that you're already familiar with by now: a one-armed core with a sample. A wet gate is also a one-armed core with a sample, but there is a difference. With a dry gate, when you pass in an argument and the code gets compiled, the type system will try to cast to the type specified by the gate; if you pass something that does not fit in the specified type, for example a `cord` instead of a `cell` you will get a nest failure. On the other hand, when you pass arguments to a wet gate, their types are preserved and type analysis is done at the definition site of the gate -- in our case, `fold` in `hoon.hoon` -- rather than the call site.
12
12
13−```
13+```hoon
14++ fold
14++ fold
15 |* [state=mold elem=mold]
15 |* [state=mold elem=mold]
16 |= [[st=state xs=(list elem)] f=$-([state elem] state)]
16 |= [[st=state xs=(list elem)] f=$-([state elem] state)]
@@ -22,7 +22,7 @@ A dry gate (also simply a _gate_) is the kind that you're already familiar with
22
22
23On the first line of the arm, we use `|*` to create a wet gate, with two arguments: `state` and `elem`. These arguments are both `mold`s; that is to say, they are type definitions. We use this to define the types used in the dry gate.
23On the first line of the arm, we use `|*` to create a wet gate, with two arguments: `state` and `elem`. These arguments are both `mold`s; that is to say, they are type definitions. We use this to define the types used in the dry gate.
24
24
25−```
25+```hoon
26|= [[st=state xs=(list elem)] f=$-([state elem] state)]
26|= [[st=state xs=(list elem)] f=$-([state elem] state)]
27```
27```
28
28
@@ -32,7 +32,7 @@ The second argument is `f=$-([state elem] state)`. `$-` is a rune that takes two
32
32
33The rest of the dry gate is straightforward:
33The rest of the dry gate is straightforward:
34
34
35−```
35+```hoon
36 ^- state
36 ^- state
37 |-
37 |-
38 ?~ xs st
38 ?~ xs st
@@ -43,7 +43,7 @@ We ensure the output is of type `state`. Then we check if `xs`, the list, is emp
43
43
44Lets look at two examples of using `fold`.
44Lets look at two examples of using `fold`.
45
45
46−```
46+```hoon
47%+ (fold (list @) @)
47%+ (fold (list @) @)
48 :- ~
48 :- ~
49 ~[1 2 3 4]
49 ~[1 2 3 4]
@@ -57,7 +57,7 @@ Here we have a call to `fold` that we can see will produce a `(list @)` from a l
57
57
58The gate will simply add two to each element `e` and append that to the front of `s`. Let's run this in the `dojo`:
58The gate will simply add two to each element `e` and append that to the front of `s`. Let's run this in the `dojo`:
59
59
60−```
60+```hoon
61> %+ (fold (list @) @)
61> %+ (fold (list @) @)
62 :- ~
62 :- ~
63 ~[1 2 3 4]
63 ~[1 2 3 4]
@@ -74,7 +74,7 @@ The list is in reverse order simply because it's easier to add to the front of a
74But `fold` does not have to produce a `list`. Let's look at another example:
74But `fold` does not have to produce a `list`. Let's look at another example:
75
75
76
76
77−```
77+```hoon
78%+ (fold @ @)
78%+ (fold @ @)
79 [0 ~[1 2 3 4]]
79 [0 ~[1 2 3 4]]
80|= [s=@ e=@]
80|= [s=@ e=@]
learn/hoon/hoon-tutorial/lead-polymorphism.md+7−7
@@ -8,7 +8,7 @@ There are four kinds of cores: gold, iron, zinc, and lead. You are able to use c
8
8
9Lead cores have opaque payloads. That is, the payload can not be written to or read from. Below is an example of using lead cores. The program produces a list populated by the first 10 elements of `fib`.
9Lead cores have opaque payloads. That is, the payload can not be written to or read from. Below is an example of using lead cores. The program produces a list populated by the first 10 elements of `fib`.
10
10
11−```
11+```hoon
12=< (to-list (take fib 10))
12=< (to-list (take fib 10))
13|%
13|%
14++ stream
14++ stream
@@ -59,7 +59,7 @@ Lead cores have opaque payloads. That is, the payload can not be written to or r
59There are five arms in this core: `stream`, `stream-type`, `to-list`, `take`, and `fib`.
59There are five arms in this core: `stream`, `stream-type`, `to-list`, `take`, and `fib`.
60
60
61
61
62−```
62+```hoon
63++ stream
63++ stream
64 |* of=mold
64 |* of=mold
65 $_ ^? |.
65 $_ ^? |.
@@ -77,7 +77,7 @@ The final `~` here is used as the type produced when initially calling this wet
77
77
78Now you can see that a `stream` is either `~` or a pair of a value of some type and a `stream`. This type represents an infinite series.
78Now you can see that a `stream` is either `~` or a pair of a value of some type and a `stream`. This type represents an infinite series.
79
79
80−```
80+```hoon
81++ stream-type
81++ stream-type
82 |* s=(stream)
82 |* s=(stream)
83 $_ => (s)
83 $_ => (s)
@@ -89,7 +89,7 @@ Now you can see that a `stream` is either `~` or a pair of a value of some type
89
89
90Calling a `stream`, which is a trap, will either produce `item` and `more` or it will produce `~`. If it does produce `~`, the `stream` is empty and we can't find what type it is, so we simply crash with `!!`.
90Calling a `stream`, which is a trap, will either produce `item` and `more` or it will produce `~`. If it does produce `~`, the `stream` is empty and we can't find what type it is, so we simply crash with `!!`.
91
91
92−```
92+```hoon
93++ take
93++ take
94 |* [s=(stream) n=@]
94 |* [s=(stream) n=@]
95 =| i=@
95 =| i=@
@@ -109,7 +109,7 @@ We're going to skip over `to-list` and examine `take` first. `take` is another w
109
109
110If `i` and `n` are equal, the trap will produce `~`. Otherwise, `s` is called and has its result put on the front of the subject. If its value is `~`, then the trap again produces `~`. Otherwise the trap produces a cell of `item`, the first part of the value of `s`, and a new trap that increments `i`, and sets `s` to be the `more` trap which produces the next value of the `stream`. The result here is a `stream` that will only ever produce `n` items, even if the stream otherwise would have been infinite.
110If `i` and `n` are equal, the trap will produce `~`. Otherwise, `s` is called and has its result put on the front of the subject. If its value is `~`, then the trap again produces `~`. Otherwise the trap produces a cell of `item`, the first part of the value of `s`, and a new trap that increments `i`, and sets `s` to be the `more` trap which produces the next value of the `stream`. The result here is a `stream` that will only ever produce `n` items, even if the stream otherwise would have been infinite.
111
111
112−```
112+```hoon
113++ to-list
113++ to-list
114 |* s=(stream)
114 |* s=(stream)
115 %- flop
115 %- flop
@@ -127,7 +127,7 @@ Now with that in hand, let's go back to `to-list`. It's also a wet gate that tak
127
127
128`r` is added to the subject as an empty `list` of whatever type is produced by `s`. A new trap is formed and called, and it will produce the same type as `r`. Then `s` is called and has its value added to the subject. If the result is `~`, the trap produces `r`. Otherwise, we want to call the trap again, adding `item` to the front of `r` and changing `s` to `more`. Now the utility of `take` should be clear. We don't want to feed `to-list` an infinite stream as it would never terminate.
128`r` is added to the subject as an empty `list` of whatever type is produced by `s`. A new trap is formed and called, and it will produce the same type as `r`. Then `s` is called and has its value added to the subject. If the result is `~`, the trap produces `r`. Otherwise, we want to call the trap again, adding `item` to the front of `r` and changing `s` to `more`. Now the utility of `take` should be clear. We don't want to feed `to-list` an infinite stream as it would never terminate.
129
129
130−```
130+```hoon
131++ fib
131++ fib
132 ^- (stream @ud)
132 ^- (stream @ud)
133 =+ [p=0 q=1]
133 =+ [p=0 q=1]
@@ -141,7 +141,7 @@ Now with that in hand, let's go back to `to-list`. It's also a wet gate that tak
141The final arm in our core is `fib`, which is a `stream` of `@ud` and therefore an iron core. It's subject contains `p` and `q`, which will not be accessible outside of this trap. The product of the trap is a pair of an `@ud` and the trap that will produce the next `@ud` in the Fibonacci series.
141The final arm in our core is `fib`, which is a `stream` of `@ud` and therefore an iron core. It's subject contains `p` and `q`, which will not be accessible outside of this trap. The product of the trap is a pair of an `@ud` and the trap that will produce the next `@ud` in the Fibonacci series.
142
142
143
143
144−```
144+```hoon
145=< (to-list (take fib 10))
145=< (to-list (take fib 10))
146```
146```
147
147
learn/hoon/hoon-tutorial/libraries.md+7−7
@@ -6,7 +6,7 @@ template = "doc.html"
6
6
7In Hoon, like in other languages, it's often useful to create a library for other code to access. In this example, we look at one example of a library that can be used to represent a deck of 52 playing cards. The core below builds such a library, and can be accessed by programs.
7In Hoon, like in other languages, it's often useful to create a library for other code to access. In this example, we look at one example of a library that can be used to represent a deck of 52 playing cards. The core below builds such a library, and can be accessed by programs.
8
8
9−```
9+```hoon
10|%
10|%
11+$ suit ?(%hearts %spades %clubs %diamonds)
11+$ suit ?(%hearts %spades %clubs %diamonds)
12+$ darc [sut=suit val=@ud]
12+$ darc [sut=suit val=@ud]
@@ -64,7 +64,7 @@ On the very first line, we create a core with `|%`. This core contains all of ou
64To create three types we're going to need, we use `+$`, which is an arm used to define a type.
64To create three types we're going to need, we use `+$`, which is an arm used to define a type.
65
65
66
66
67−```
67+```hoon
68+$ suit ?(%hearts %spades %clubs %diamonds)
68+$ suit ?(%hearts %spades %clubs %diamonds)
69+$ darc [sut=suit val=@ud]
69+$ darc [sut=suit val=@ud]
70+$ deck (list darc)
70+$ deck (list darc)
@@ -78,7 +78,7 @@ Our final type is `deck`, which is simply a `list` of `darc`.
78
78
79One way to get a feel for how a library works is to skim the `++` arm-names before diving into any specific arm. In this library, the arms are `make-deck`, `num-to-suit`, `shuffle-deck`, and `draw`. These names should be very clear, with the exception of `num-to-suit` though you could probably hazard a guess at what it does. Let's take a closer look at that one first.
79One way to get a feel for how a library works is to skim the `++` arm-names before diving into any specific arm. In this library, the arms are `make-deck`, `num-to-suit`, `shuffle-deck`, and `draw`. These names should be very clear, with the exception of `num-to-suit` though you could probably hazard a guess at what it does. Let's take a closer look at that one first.
80
80
81−```
81+```hoon
82++ num-to-suit
82++ num-to-suit
83 |= val=@ud
83 |= val=@ud
84 ^- suit
84 ^- suit
@@ -94,7 +94,7 @@ We can see this is a gate that takes a single `@ud` and produces a `suit`.
94
94
95The `?+` rune is the rune to switch against a value with a default. The default here is to crash with `!!`. Then we have the four options of 1 through 4, based on the value of `val`, which each resulting in a different suit.
95The `?+` rune is the rune to switch against a value with a default. The default here is to crash with `!!`. Then we have the four options of 1 through 4, based on the value of `val`, which each resulting in a different suit.
96
96
97−```
97+```hoon
98++ make-deck
98++ make-deck
99 ^- deck
99 ^- deck
100 =| mydeck=deck
100 =| mydeck=deck
@@ -115,7 +115,7 @@ The `?+` rune is the rune to switch against a value with a default. The default
115`num-to-suit` is used in the `make-deck` arm shown above. This arm should be quite readable to you at this point. Here we simply have two loops where we use counters to build up the full set of 52 cards, by cycling through every possible suit and number and combining them. Once we have reached the point where `j` is greater than 14, we're going to jump back out to the "suit" outer-loop and increment `i`. `?.` may be an unfamiliar rune; it is simply the inverted version of `?:`, so the first branch is actually the "no" branch and the second is the "yes" branch. This is done to keep the "heaviest" branch at the bottom.
115`num-to-suit` is used in the `make-deck` arm shown above. This arm should be quite readable to you at this point. Here we simply have two loops where we use counters to build up the full set of 52 cards, by cycling through every possible suit and number and combining them. Once we have reached the point where `j` is greater than 14, we're going to jump back out to the "suit" outer-loop and increment `i`. `?.` may be an unfamiliar rune; it is simply the inverted version of `?:`, so the first branch is actually the "no" branch and the second is the "yes" branch. This is done to keep the "heaviest" branch at the bottom.
116
116
117
117
118−```
118+```hoon
119++ draw
119++ draw
120 |= [n=@ud d=deck]
120 |= [n=@ud d=deck]
121 ^- [hand=deck rest=deck]
121 ^- [hand=deck rest=deck]
@@ -125,7 +125,7 @@ The `?+` rune is the rune to switch against a value with a default. The default
125
125
126`draw` takes two arguments: `n`, a number; and `d`, a `deck`. It's going to produce a cell of two `decks`. The cell is created using `scag` and `slag`. [`scag`](https://urbit.org/docs/reference/library/2b/#scag) is a standard-library gate produces the first `n` elements from a list, and [`slag`](https://urbit.org/docs/reference/library/2b/#slag) is a standard-library gate that produces the remaining elements of a list starting after the `n`th element. So we use `scag` to produce the drawn hand of `n` cards in the head of the cell as `hand`, and `slag` to produce the remaining deck in the tail of the cell as `rest`.
126`draw` takes two arguments: `n`, a number; and `d`, a `deck`. It's going to produce a cell of two `decks`. The cell is created using `scag` and `slag`. [`scag`](https://urbit.org/docs/reference/library/2b/#scag) is a standard-library gate produces the first `n` elements from a list, and [`slag`](https://urbit.org/docs/reference/library/2b/#slag) is a standard-library gate that produces the remaining elements of a list starting after the `n`th element. So we use `scag` to produce the drawn hand of `n` cards in the head of the cell as `hand`, and `slag` to produce the remaining deck in the tail of the cell as `rest`.
127
127
128−```
128+```hoon
129++ shuffle-deck
129++ shuffle-deck
130 |= [unshuffled=deck entropy=@]
130 |= [unshuffled=deck entropy=@]
131 ^- deck
131 ^- deck
@@ -169,7 +169,7 @@ This is a very naive shuffling algorithm, and you could imagine a better one. Im
169
169
170So now that we have this library, how do we actually use it? Let's look at a very simple `say` generator that takes advantage of what we built.
170So now that we have this library, how do we actually use it? Let's look at a very simple `say` generator that takes advantage of what we built.
171
171
172−```
172+```hoon
173/+ playing-cards
173/+ playing-cards
174:- %say
174:- %say
175|= [[* eny=@uv *] *]
175|= [[* eny=@uv *] *]
learn/hoon/hoon-tutorial/list-of-numbers.md+8−8
@@ -7,7 +7,7 @@ This code-example is intended to familiarize you with the basics of Hoon syntax.
7
7
8Below is a simple Hoon program that takes a single number `n` from the user as input and produces a list of numbers from `1` up to (but not including) `n`. So, if the user gives the number `5`, the program will produce: `~[1 2 3 4]`.
8Below is a simple Hoon program that takes a single number `n` from the user as input and produces a list of numbers from `1` up to (but not including) `n`. So, if the user gives the number `5`, the program will produce: `~[1 2 3 4]`.
9
9
10−```
10+```hoon
11|= end=@ :: 1
11|= end=@ :: 1
12=/ count=@ 1 :: 2
12=/ count=@ 1 :: 2
13|- :: 3
13|- :: 3
@@ -34,7 +34,7 @@ In our example program, we use comments with line numbers for convenient referen
34
34
35### Line 1
35### Line 1
36
36
37−```
37+```hoon
38|= end=@
38|= end=@
39```
39```
40
40
@@ -50,7 +50,7 @@ Our program is simple, so the _entire program_ is the gate that's being created
50
50
51### Line 2
51### Line 2
52
52
53−```
53+```hoon
54=/ count=@ 1
54=/ count=@ 1
55```
55```
56
56
@@ -62,7 +62,7 @@ We're using `count` to keep track of what numbers we're including in the list we
62
62
63### Line 3
63### Line 3
64
64
65−```
65+```hoon
66|-
66|-
67```
67```
68
68
@@ -70,7 +70,7 @@ The `|-` rune functions as a "restart" point for recursion that will be defined
70
70
71### Line 4
71### Line 4
72
72
73−```
73+```hoon
74^- (list @)
74^- (list @)
75```
75```
76
76
@@ -80,7 +80,7 @@ In this case, the rune specifies that our gate's output must be `(list @)` -- th
80
80
81### Lines 5 and 6
81### Lines 5 and 6
82
82
83−```
83+```hoon
84?: =(end count)
84?: =(end count)
85 ~
85 ~
86```
86```
@@ -99,13 +99,13 @@ In our case, `:- count` creates a cell out of whatever value is stored in `coun
99
99
100## Line 8
100## Line 8
101
101
102−```
102+```hoon
103$(count (add 1 count))
103$(count (add 1 count))
104```
104```
105
105
106The above code is, once again, a compact way of writing a rune expression. All you need to know is that this line of code restarts the program at `|-`, except with the value stored in `count` incremented by 1. The construction of `(count (add 1 count))` tells the computer, "replace the value of count with count+1".
106The above code is, once again, a compact way of writing a rune expression. All you need to know is that this line of code restarts the program at `|-`, except with the value stored in `count` incremented by 1. The construction of `(count (add 1 count))` tells the computer, "replace the value of count with count+1".
107
107
108−You'll notice that we use an unfamiliar word here: `add`. Unlike `count` and `end`, `add` is not defined anywhere in our program. That's because it's a gate that's predefined in the Hoon **standard library**. The standard library is filled with pre-defined gates that are generally useful, and these gates can be used just like something that you defined in your own program. You can see this gate, and other mathematical operators, in [section 1a](@/docs/reference/library/1a.md) of the standard-library documentation.
108+You'll notice that we use an unfamiliar word here: `add`. Unlike `count` and `end`, `add` is not defined anywhere in our program. That's because it's a gate that's predefined in the Hoon **standard library**. The standard library is filled with pre-defined gates that are generally useful, and these gates can be used just like something that you defined in your own program. You can see this gate, and other mathematical operators, in [section 1a](@/docs/hoon/library/1a.md) of the standard-library documentation.
109
109
110## Explanation
110## Explanation
111
111
learn/hoon/hoon-tutorial/lists.md+3−3
@@ -269,7 +269,7 @@ Or to double each item in a list of atoms:
269
269
270We can rewrite the Caesar cipher program using `turn`:
270We can rewrite the Caesar cipher program using `turn`:
271
271
272−```
272+```hoon
273|= [a=@ b=tape]
273|= [a=@ b=tape]
274^- tape
274^- tape
275?: (gth a 25)
275?: (gth a 25)
@@ -295,7 +295,7 @@ The Hoon standard library and compiler are written in Hoon. At this point, you
295
295
296#### `flop`
296#### `flop`
297
297
298−```
298+```hoon
299:: flop.hoon
299:: flop.hoon
300::
300::
301|= a=(list @)
301|= a=(list @)
@@ -314,7 +314,7 @@ Run in dojo:
314
314
315#### `snag`
315#### `snag`
316
316
317−```
317+```hoon
318:: snag.hoon
318:: snag.hoon
319::
319::
320|= [a=@ b=(list @)]
320|= [a=@ b=(list @)]
learn/hoon/hoon-tutorial/molds.md+6−6
@@ -8,7 +8,7 @@ A mold is a function that coerces a noun to a type or crashes.
8
8
9Let's take some examples from `hoon.hoon`. `|$` is a new rune as of the writing of this document so you may see this spelled in slightly different way if you don't have the latest version of `hoon.hoon`. `|$` is the mold builder rune which takes a list of molds and produces a mold.
9Let's take some examples from `hoon.hoon`. `|$` is a new rune as of the writing of this document so you may see this spelled in slightly different way if you don't have the latest version of `hoon.hoon`. `|$` is the mold builder rune which takes a list of molds and produces a mold.
10
10
11−```
11+```hoon
12++ pair
12++ pair
13 |$ [head tail]
13 |$ [head tail]
14 [p=head q=tail]
14 [p=head q=tail]
@@ -16,7 +16,7 @@ Let's take some examples from `hoon.hoon`. `|$` is a new rune as of the writing
16
16
17Here is a very simple mold builder. It takes two molds and produces a mold that is a pair of those with the faces `p` and `q`. An example of using this would be `(pair @ud @ud)` which would produce a mold for a cell of `@ud` and `@ud`.
17Here is a very simple mold builder. It takes two molds and produces a mold that is a pair of those with the faces `p` and `q`. An example of using this would be `(pair @ud @ud)` which would produce a mold for a cell of `@ud` and `@ud`.
18
18
19−```
19+```hoon
20++ each
20++ each
21 |$ [this that]
21 |$ [this that]
22 $% [%| p=that]
22 $% [%| p=that]
@@ -26,7 +26,7 @@ Here is a very simple mold builder. It takes two molds and produces a mold that
26
26
27`++each` is very slightly more complicated than `pair`. `$%` is a rune that is a tagged union. The mold produced by this will match either `this` or `that`. An example of this would be `(each @ud @tas)` which will match either an `@ud` or a `@tas`.
27`++each` is very slightly more complicated than `pair`. `$%` is a rune that is a tagged union. The mold produced by this will match either `this` or `that`. An example of this would be `(each @ud @tas)` which will match either an `@ud` or a `@tas`.
28
28
29−```
29+```hoon
30++ list
30++ list
31 |$ [item]
31 |$ [item]
32 $@(~ [i=item t=(list item)])
32 $@(~ [i=item t=(list item)])
@@ -34,14 +34,14 @@ Here is a very simple mold builder. It takes two molds and produces a mold that
34Here is a mold builder you've used previously. `$@` is a rune that will match the first thing if it's sample is an atom and the second if the sample is a cell. You should be familiar at this point that a `list` is either `~` or a pair of an item and a list of item.
34Here is a mold builder you've used previously. `$@` is a rune that will match the first thing if it's sample is an atom and the second if the sample is a cell. You should be familiar at this point that a `list` is either `~` or a pair of an item and a list of item.
35
35
36
36
37−```
37+```hoon
38++ lest
38++ lest
39 |$ [item]
39 |$ [item]
40 [i/item t/(list item)]
40 [i/item t/(list item)]
41```
41```
42`lest` you may have heard of as a "non empty list." You can see that it lacks the `~` case that `list` has but it matches the second part of the `list` definition. Remember that Hoon types are defined by shape. `list` could also have been defined in terms of `lest` like this:
42`lest` you may have heard of as a "non empty list." You can see that it lacks the `~` case that `list` has but it matches the second part of the `list` definition. Remember that Hoon types are defined by shape. `list` could also have been defined in terms of `lest` like this:
43
43
44−```
44+```hoon
45++ list
45++ list
46 |$ [item]
46 |$ [item]
47 $@(~ lest)
47 $@(~ lest)
@@ -49,7 +49,7 @@ Here is a mold builder you've used previously. `$@` is a rune that will match th
49
49
50Another possible way to write it could have been
50Another possible way to write it could have been
51
51
52−```
52+```hoon
53++ list
53++ list
54 |$ [item]
54 |$ [item]
55 $@(~ [i=item t=$])
55 $@(~ [i=item t=$])
learn/hoon/hoon-tutorial/recursion.md+4−4
@@ -20,7 +20,7 @@ recursive `gate` (Hoon's equivalent of a function) to perform the relevant
20computation. Save the code below as `factorial.hoon` in your ship's `/gen`
20computation. Save the code below as `factorial.hoon` in your ship's `/gen`
21directory.
21directory.
22
22
23−```
23+```hoon
24|= n=@ud
24|= n=@ud
25?: =(n 1)
25?: =(n 1)
26 1
26 1
@@ -124,7 +124,7 @@ frame that simply has its values replaced with each recursion.
124With a bit of refactoring, we can write a version of our factorial gate that
124With a bit of refactoring, we can write a version of our factorial gate that
125_is_ tail-recursive and can take advantage of this feature:
125_is_ tail-recursive and can take advantage of this feature:
126
126
127−```
127+```hoon
128|= n=@ud
128|= n=@ud
129=/ t=@ud 1
129=/ t=@ud 1
130|-
130|-
@@ -142,7 +142,7 @@ point.
142We then evaluate `n` to see if it is 1. If it is we return the value of `t`. In
142We then evaluate `n` to see if it is 1. If it is we return the value of `t`. In
143the case that `n` is anything other than 1, we perform our recursion:
143the case that `n` is anything other than 1, we perform our recursion:
144
144
145−```
145+```hoon
146$(n (dec n), t (mul t n))
146$(n (dec n), t (mul t n))
147```
147```
148
148
@@ -177,7 +177,7 @@ of. That's because a gate is just a core with a single arm named `$`. The
177subject is searched depth-first, head before tail, with faces skipped, and
177subject is searched depth-first, head before tail, with faces skipped, and
178stopping on the first result. In other words, the first match found in the head
178stopping on the first result. In other words, the first match found in the head
179will be returned. If you wished to refer to the outer `$` in this context, the
179will be returned. If you wished to refer to the outer `$` in this context, the
180−idiomatic way would be to use [`^$`](@/docs/reference/hoon-expressions/rune/ket.md). The `^` operator
180+idiomatic way would be to use [`^$`](@/docs/hoon/hoon-expressions/rune/ket.md). The `^` operator
181skips the first match of a name.
181skips the first match of a name.
182
182
183### Exercises
183### Exercises
learn/hoon/hoon-tutorial/setup.md+1−1
@@ -42,7 +42,7 @@ $
42
42
43Your ship isn't running anymore and you're back at your computer's normal terminal prompt. If your ship is `~zod`, then you can restart the ship by typing:
43Your ship isn't running anymore and you're back at your computer's normal terminal prompt. If your ship is `~zod`, then you can restart the ship by typing:
44
44
45−```
45+```sh
46urbit zod
46urbit zod
47```
47```
48
48
learn/hoon/hoon-tutorial/structures-and-complex-types.md+1−1
@@ -350,6 +350,6 @@ Often `$@` is used to define a type with a null or trivial case for the `@` case
350
350
351Now the `~` value is included as a possible value for `user`.
351Now the `~` value is included as a possible value for `user`.
352
352
353−That's all we have to say about types in this chapter. More on types in [Chapter 3](@/docs/learn/hoon/hoon-tutorial/type-polymorphism.md).
353+That's all we have to say about types in this chapter. More on types in [Chapter 3](@/docs/hoon/hoon-tutorial/type-polymorphism.md).
354
354
355### [Next Up: Walkthrough -- Libraries](../libraries)
355### [Next Up: Walkthrough -- Libraries](../libraries)
learn/hoon/hoon-tutorial/trees-sets-and-maps.md+2−2
@@ -61,7 +61,7 @@ This didn't work because we haven't first proved to Hoon that `b` is a non-null
61
61
62Here's a program that finds and replaces certain atoms in a `(tree @)`.
62Here's a program that finds and replaces certain atoms in a `(tree @)`.
63
63
64−```
64+```hoon
65|= [nedl=@ hay=(tree @) new=@]
65|= [nedl=@ hay=(tree @) new=@]
66^- (tree @)
66^- (tree @)
67?~ hay ~
67?~ hay ~
@@ -196,7 +196,7 @@ There are other set functions in the Hoon standard library we won't cover here.
196
196
197Here's a program that takes two sets of atoms and returns the [Cartesian product](https://en.wikipedia.org/wiki/Cartesian_product) of those sets. A Cartesian product of two sets `a` and `b` is a set of all the cells whose head is a member of `a` and whose tail is a member of `b`.
197Here's a program that takes two sets of atoms and returns the [Cartesian product](https://en.wikipedia.org/wiki/Cartesian_product) of those sets. A Cartesian product of two sets `a` and `b` is a set of all the cells whose head is a member of `a` and whose tail is a member of `b`.
198
198
199−```
199+```hoon
200|= [a=(set @) b=(set @)]
200|= [a=(set @) b=(set @)]
201=/ c=(list @) ~(tap in a)
201=/ c=(list @) ~(tap in a)
202=/ d=(list @) ~(tap in b)
202=/ d=(list @) ~(tap in b)
learn/hoon/hoon-tutorial/type-checking-and-type-inference.md+9−7
@@ -179,7 +179,7 @@ By now you've used the `|=` rune to define several gates. This rune is used to
179
179
180The first subexpression after the `|=` defines the sample type. Any faces used in this definition have the type declared for it in this definition. Consider again the addition function:
180The first subexpression after the `|=` defines the sample type. Any faces used in this definition have the type declared for it in this definition. Consider again the addition function:
181
181
182−```
182+```hoon
183|= [a=@ b=@] :: take two @
183|= [a=@ b=@] :: take two @
184^- @ :: output is one @
184^- @ :: output is one @
185?: =(b 0) :: if b is 0
185?: =(b 0) :: if b is 0
@@ -195,6 +195,8 @@ We run it in the dojo using a cell to pass the two arguments:
195
195
196> +add 22
196> +add 22
197nest-fail
197nest-fail
198+-want.{a/@ b/@}
199+-have.@ud
198```
200```
199
201
200If you try to call this gate with the wrong kind of argument, you get a `nest-fail`. If the call succeeds, then the argument takes on the type of the sample definition: `[a=@ b=@]`. Accordingly, the inferred type of `a` is `@`, and the inferred type of `b` is `@`. In this case some type information has been thrown away; the inferred type of `[12 14]` is `[@ud @ud]`, but the addition program takes all atoms, regardless of aura.
202If you try to call this gate with the wrong kind of argument, you get a `nest-fail`. If the call succeeds, then the argument takes on the type of the sample definition: `[a=@ b=@]`. Accordingly, the inferred type of `a` is `@`, and the inferred type of `b` is `@`. In this case some type information has been thrown away; the inferred type of `[12 14]` is `[@ud @ud]`, but the addition program takes all atoms, regardless of aura.
@@ -410,7 +412,7 @@ nest-fail
410
412
411Nouns can be understood as binary trees in which each 'leaf' of the tree is an atom. Let's look at a program that takes a noun and returns the number of leaves in it, i.e., the number of atoms.
413Nouns can be understood as binary trees in which each 'leaf' of the tree is an atom. Let's look at a program that takes a noun and returns the number of leaves in it, i.e., the number of atoms.
412
414
413−```
415+```hoon
414|= a=* :: 1
416|= a=* :: 1
415^- @ :: 2
417^- @ :: 2
416?@ a :: 3
418?@ a :: 3
@@ -439,7 +441,7 @@ We have been careful to use `-.a` and `+.a` only on a branch for which `a` is pr
439
441
440Here's a program that counts the number of cells in a noun:
442Here's a program that counts the number of cells in a noun:
441
443
442−```
444+```hoon
443|= a=* :: 1
445|= a=* :: 1
444=| c=@ :: 2
446=| c=@ :: 2
445|- ^- @ :: 3
447|- ^- @ :: 3
@@ -499,7 +501,7 @@ To illustrate: let's say that `b` is the list of the atoms `11`, `22`, and `33`.
499
501
500Here's a program that takes atoms `a` and `b` and returns a list of all atoms from `a` to `b`:
502Here's a program that takes atoms `a` and `b` and returns a list of all atoms from `a` to `b`:
501
503
502−```
504+```hoon
503|= [a=@ b=@] :: 1
505|= [a=@ b=@] :: 1
504^- (list @) :: 2
506^- (list @) :: 2
505?: (gth a b) :: 3
507?: (gth a b) :: 3
@@ -526,7 +528,7 @@ Where are all the `i`s and `t`s??? For the sake of neatness the Hoon pretty-pri
526
528
527In fact, we could have left out the `i` and `t` faces in the program itself:
529In fact, we could have left out the `i` and `t` faces in the program itself:
528
530
529−```
531+```hoon
530|= [a=@ b=@] :: 1
532|= [a=@ b=@] :: 1
531^- (list @) :: 2
533^- (list @) :: 2
532?: (gth a b) :: 3
534?: (gth a b) :: 3
@@ -577,7 +579,7 @@ Hoon will infer that `b` either is or isn't null based on which `?~` branch is e
577
579
578The `?~` is especially useful for working with lists. Is a list null, or not? You probably want to do different things based on the answer to that question. Here's a program using `?~` to calculate the number of items in a list of atoms:
580The `?~` is especially useful for working with lists. Is a list null, or not? You probably want to do different things based on the answer to that question. Here's a program using `?~` to calculate the number of items in a list of atoms:
579
581
580−```
582+```hoon
581|= a=(list @) :: 1
583|= a=(list @) :: 1
582=| c=@ :: 2
584=| c=@ :: 2
583|- ^- @ :: 3
585|- ^- @ :: 3
@@ -607,7 +609,7 @@ Save the above code as `lent.hoon` in your urbit's pier and run it from the dojo
607
609
608Here's a program that takes a noun and returns a list of its 'leaves' (atoms) in order of their appearance:
610Here's a program that takes a noun and returns a list of its 'leaves' (atoms) in order of their appearance:
609
611
610−```
612+```hoon
611|= a=* :: 1
613|= a=* :: 1
612=/ lis=(list @) ~ :: 2
614=/ lis=(list @) ~ :: 2
613|- ^- (list @) :: 3
615|- ^- (list @) :: 3
learn/hoon/hoon-tutorial/type-polymorphism.md+3−4
@@ -193,7 +193,7 @@ We may use the `+*` rune to define an arm that produced a more complex type from
193
193
194For example, we have `list`s, `tree`s, and `set`s in Hoon, which are each defined in `hoon.hoon` with `+*` arms. (Take a moment to see for yourself.) Each `+*` arm is followed by an argument definition, inside brackets `[ ]`. After that subexpression comes another that defines a type, relative to the input value. For example, here is the definition of `list` from `hoon.hoon`:
194For example, we have `list`s, `tree`s, and `set`s in Hoon, which are each defined in `hoon.hoon` with `+*` arms. (Take a moment to see for yourself.) Each `+*` arm is followed by an argument definition, inside brackets `[ ]`. After that subexpression comes another that defines a type, relative to the input value. For example, here is the definition of `list` from `hoon.hoon`:
195
195
196−```
196+```hoon
197+* list [item]
197+* list [item]
198 :: null-terminated list
198 :: null-terminated list
199 ::
199 ::
@@ -356,7 +356,7 @@ The context type of `B` isn't checked at all; and because of the nesting rules i
356
356
357Iron gates are particularly useful when you want to pass gates (having various payload types) to other gates. We can illustrate this use with a very simple example. Save the following as `gatepass.hoon` in the `gen` directory of your urbit's pier:
357Iron gates are particularly useful when you want to pass gates (having various payload types) to other gates. We can illustrate this use with a very simple example. Save the following as `gatepass.hoon` in the `gen` directory of your urbit's pier:
358
358
359−```
359+```hoon
360|= a=_^|(|=(@ 15))
360|= a=_^|(|=(@ 15))
361^- @
361^- @
362=/ b=@ (a 10)
362=/ b=@ (a 10)
@@ -389,7 +389,7 @@ Yup, it still works. You can't do that with a gold core sample!
389
389
390There's a simpler way to define an iron sample. Revise the first line of `gatepass.hoon` to the following:
390There's a simpler way to define an iron sample. Revise the first line of `gatepass.hoon` to the following:
391
391
392−```
392+```hoon
393|= a=$-(@ @)
393|= a=$-(@ @)
394^- @
394^- @
395=/ b=@ (a 10)
395=/ b=@ (a 10)
@@ -574,4 +574,3 @@ Once more let's clear up the dojo subject:
574```
574```
575
575
576
576
577−### [Next Up: Walkthrough -- <placeholder>]
learn/hoon/style.md+21−21
@@ -28,19 +28,19 @@ and avoid terminators when the content has a fixed structure.
28For example, the wide form `=+(a b)` could be written in tall form
28For example, the wide form `=+(a b)` could be written in tall form
29as
29as
30
30
31−```
31+```hoon
32 =+ a
32 =+ a
33 b
33 b
34```
34```
35
35
36or
36or
37
37
38−```
38+```hoon
39 =+ a b
39 =+ a b
40```
40```
41
41
42These are regular forms -- every rune can be written this way.
42These are regular forms -- every rune can be written this way.
43−Hoon also has a variety of wide [irregular forms](@/docs/reference/hoon-expressions/irregular.md). All tall
43+Hoon also has a variety of wide [irregular forms](@/docs/hoon/hoon-expressions/irregular.md). All tall
44forms are regular. All code within a wide form is wide.
44forms are regular. All code within a wide form is wide.
45Almost all code has both wide and tall forms, the exception
45Almost all code has both wide and tall forms, the exception
46being named cores.
46being named cores.
@@ -76,21 +76,21 @@ across the page.
76
76
77With one child:
77With one child:
78
78
79−```
79+```hoon
80 !:
80 !:
81 a
81 a
82```
82```
83
83
84With two:
84With two:
85
85
86−```
86+```hoon
87 =+ a
87 =+ a
88 b
88 b
89```
89```
90
90
91With three:
91With three:
92
92
93−```
93+```hoon
94 ?: a
94 ?: a
95 b
95 b
96 c
96 c
@@ -98,7 +98,7 @@ With three:
98
98
99With four (the maximum rune fanout):
99With four (the maximum rune fanout):
100
100
101−```
101+```hoon
102 :^ a
102 :^ a
103 b
103 b
104 c
104 c
@@ -115,7 +115,7 @@ Variable sequences can have an arbitrary number of elements, so
115they can't self-terminate. They are terminated by a `==` marker.
115they can't self-terminate. They are terminated by a `==` marker.
116The sequence, or its variable part, is indented and vertical:
116The sequence, or its variable part, is indented and vertical:
117
117
118−```
118+```hoon
119 :* a
119 :* a
120 b
120 b
121 c
121 c
@@ -125,7 +125,7 @@ The sequence, or its variable part, is indented and vertical:
125Another representation wastes a line, but saves an indent. Use
125Another representation wastes a line, but saves an indent. Use
126this only for very long sequences:
126this only for very long sequences:
127
127
128−```
128+```hoon
129 :*
129 :*
130 a
130 a
131 b
131 b
@@ -140,7 +140,7 @@ looks better for this particular code.
140
140
141Kingside format:
141Kingside format:
142
142
143−```
143+```hoon
144 ?+ x default
144 ?+ x default
145 %foo 99
145 %foo 99
146 %foobar ?: y
146 %foobar ?: y
@@ -152,7 +152,7 @@ Kingside format:
152
152
153Queenside format:
153Queenside format:
154
154
155−```
155+```hoon
156 ?+ x
156 ?+ x
157 default
157 default
158 ::
158 ::
@@ -173,7 +173,7 @@ as demonstrated above.
173We sometimes end up with multiple terminators on separate lines,
173We sometimes end up with multiple terminators on separate lines,
174two or more spaces apart. These lines can be collapsed:
174two or more spaces apart. These lines can be collapsed:
175
175
176−```
176+```hoon
177 ?+ x default
177 ?+ x default
178 %foo 99
178 %foo 99
179 37 36
179 37 36
@@ -217,7 +217,7 @@ more spaces, newlines, or comments are one gap.
217Hoon suggests "breathing comments." There should always be an
217Hoon suggests "breathing comments." There should always be an
218empty comment line between a comment and the line **below** it:
218empty comment line between a comment and the line **below** it:
219
219
220−```
220+```hoon
221 :: look, code
221 :: look, code
222 ::
222 ::
223 this.is.code
223 this.is.code
@@ -229,7 +229,7 @@ empty comment line between a comment and the line **below** it:
229Sometimes dense code does need air on both sides. Also
229Sometimes dense code does need air on both sides. Also
230legitimate:
230legitimate:
231
231
232−```
232+```hoon
233 :: look, code
233 :: look, code
234 ::
234 ::
235 this.is.code
235 this.is.code
@@ -289,7 +289,7 @@ optional whitespace; then `::`; then two spaces; then a parsed
289line of **lowercase** ASCII whose syntax depends on the comment
289line of **lowercase** ASCII whose syntax depends on the comment
290type. Like this:
290type. Like this:
291
291
292−```
292+```hoon
293 :: $foo: the definition of a foo
293 :: $foo: the definition of a foo
294```
294```
295
295
@@ -297,7 +297,7 @@ A complex formal comment is the headline; then an empty line;
297then an udon body with paragraphs broken by empty lines, indented
297then an udon body with paragraphs broken by empty lines, indented
298four spaces, in ASCII mixed case:
298four spaces, in ASCII mixed case:
299
299
300−```
300+```hoon
301 :: $foo: the definition of a foo
301 :: $foo: the definition of a foo
302 ::
302 ::
303 :: The source of the word "foo" is lost in history. Some
303 :: The source of the word "foo" is lost in history. Some
@@ -318,7 +318,7 @@ but with a line-length summary/headline.
318A feature headline is `::`, then two spaces, then a qualified
318A feature headline is `::`, then two spaces, then a qualified
319location, then `:`, then a freeform string. Like:
319location, then `:`, then a freeform string. Like:
320
320
321−```
321+```hoon
322 :: $foo: a the definition of a foo
322 :: $foo: a the definition of a foo
323 ::
323 ::
324 +$ foo [head=@ tail=^]
324 +$ foo [head=@ tail=^]
@@ -334,7 +334,7 @@ resolve to any data value) it becomes the chapter description.
334Product comments describe the product of the expression below.
334Product comments describe the product of the expression below.
335The headline is a string in parentheses:
335The headline is a string in parentheses:
336
336
337−```
337+```hoon
338 :: (a very strange $foo indeed)
338 :: (a very strange $foo indeed)
339 ::
339 ::
340 make:a:strange:foo
340 make:a:strange:foo
@@ -361,7 +361,7 @@ For example, let's fix `[%wtcl p=hoon q=hoon r=hoon]`. Let's
361make it... `[%wtcl if=hoon then=hoon else=hoon]`. Then we
361make it... `[%wtcl if=hoon then=hoon else=hoon]`. Then we
362could write flow comments as follows:
362could write flow comments as follows:
363
363
364−```
364+```hoon
365 ?: :: if, it's it winter
365 ?: :: if, it's it winter
366 ::
366 ::
367 is-winter
367 is-winter
@@ -389,7 +389,7 @@ probably help us document them, anyway.
389Sometimes, just for cosmetic reasons, we like to raise the
389Sometimes, just for cosmetic reasons, we like to raise the
390comment on the first leg of a rune up above the parent:
390comment on the first leg of a rune up above the parent:
391
391
392−```
392+```hoon
393 :: if, it's it winter
393 :: if, it's it winter
394 ::
394 ::
395 ?: is-winter
395 ?: is-winter
@@ -403,7 +403,7 @@ comment on the first leg of a rune up above the parent:
403
403
404This can make flow comments collide, as in "else, if," below:
404This can make flow comments collide, as in "else, if," below:
405
405
406−```
406+```hoon
407 :: if, it's winter
407 :: if, it's winter
408 ::
408 ::
409 ?: is-winter
409 ?: is-winter
learn/hoon/workbook/_index.md+4−4
@@ -7,10 +7,10 @@ template = "sections/docs/chapters.html"
7The Workbook is the place to sharpen your Hoon skills. Each entry in the
7The Workbook is the place to sharpen your Hoon skills. Each entry in the
8Workbook is a code walkthrough followed by exercises.
8Workbook is a code walkthrough followed by exercises.
9
9
10−- The [Digits](@/docs/learn/hoon/workbook/digits.md) example demonstrates how to decompose a number into a list of its digits.
10+- The [Digits](@/docs/hoon/workbook/digits.md) example demonstrates how to decompose a number into a list of its digits.
11
11
12−- The [Magic 8-Ball](@/docs/learn/hoon/workbook/eightball.md) example emulates everyone's favorite decision-making machine.
12+- The [Magic 8-Ball](@/docs/hoon/workbook/eightball.md) example emulates everyone's favorite decision-making machine.
13
13
14−- The [Traffic-light](@/docs/learn/hoon/workbook/traffic-light.md) example demonstrates how to creates a state machine in Hoon.
14+- The [Traffic-light](@/docs/hoon/workbook/traffic-light.md) example demonstrates how to creates a state machine in Hoon.
15
15
16−- The [Bomb-defusing](@/docs/learn/hoon/workbook/bomb.md) exercise shows how to program, well, a bomb-defusing scenario.
16+- The [Bomb-defusing](@/docs/hoon/workbook/bomb.md) exercise shows how to program, well, a bomb-defusing scenario.
learn/hoon/workbook/bomb.md+2−2
@@ -27,7 +27,7 @@ a tape `bomb defused`. If any of the rules were broken, it should output the
27tape `boom`.
27tape `boom`.
28
28
29
29
30−```
30+```hoon
31!:
31!:
32:- %say
32:- %say
33|= [* [cuts=(list tape) ~] ~]
33|= [* [cuts=(list tape) ~] ~]
@@ -106,7 +106,7 @@ rules above we have specified when you cut a wire, which of the other wires you
106cannot cut. This required some reformulating of the rules given to use at the
106cannot cut. This required some reformulating of the rules given to use at the
107start, but it is much simpler to work with.
107start, but it is much simpler to work with.
108
108
109−```
109+```hoon
110++ defuse
110++ defuse
111 |= cuts=(list tape)
111 |= cuts=(list tape)
112 =| bad=(list tape)
112 =| bad=(list tape)
learn/hoon/workbook/digits.md+8−8
@@ -6,7 +6,7 @@ template = "doc.html"
6Let's write a generator that takes a `@ud` (unsigned decimal) and returns a list
6Let's write a generator that takes a `@ud` (unsigned decimal) and returns a list
7of its digits.
7of its digits.
8
8
9−```
9+```hoon
10!:
10!:
11:- %say
11:- %say
12|= [* [n=@ud ~] ~]
12|= [* [n=@ud ~] ~]
@@ -21,10 +21,10 @@ of its digits.
21==
21==
22```
22```
23
23
24−We're creating a [`%say` generator](@/docs/learn/hoon/hoon-tutorial/generators.md). That means we
24+We're creating a [`%say` generator](@/docs/hoon/hoon-tutorial/generators.md). That means we
25need some "boilerplate" code in the format of `[%say [%noun "data"]]`:
25need some "boilerplate" code in the format of `[%say [%noun "data"]]`:
26
26
27−```
27+```hoon
28:- %say
28:- %say
29|= [* [n=@ud ~] ~]
29|= [* [n=@ud ~] ~]
30:- %noun
30:- %noun
@@ -42,7 +42,7 @@ print the value we are creating. In this case, we use the generic `%noun`.
42
42
43The tail of our second cell is the product of the rest of the program.
43The tail of our second cell is the product of the rest of the program.
44
44
45−```
45+```hoon
46=| lis=(list @ud)
46=| lis=(list @ud)
47```
47```
48
48
@@ -50,7 +50,7 @@ We use the above code to construct a `list` of `@ud` by cutting up the `@ud` we
50got passed and so we add a face onto that type. This list is empty until we
50got passed and so we add a face onto that type. This list is empty until we
51manipulate it further.
51manipulate it further.
52
52
53−```
53+```hoon
54|- ^+ lis
54|- ^+ lis
55?: (lte n 0)
55?: (lte n 0)
56 lis
56 lis
@@ -63,7 +63,7 @@ to produce. A sibling of the `^-` rune, `^+` is distinct because it is for
63casting _by example_. It takes type information from an _instance_ of that type.
63casting _by example_. It takes type information from an _instance_ of that type.
64It's useful when using a complicated type.
64It's useful when using a complicated type.
65
65
66−```
66+```hoon
67?: (lte n 0)
67?: (lte n 0)
68 lis
68 lis
69```
69```
@@ -72,7 +72,7 @@ It's useful when using a complicated type.
72true that `n` is less than or equal to `0`, we simply return `lis`. Otherwise,
72true that `n` is less than or equal to `0`, we simply return `lis`. Otherwise,
73we branch to the following operations:
73we branch to the following operations:
74
74
75−```
75+```hoon
76%= $
76%= $
77 n (div n 10)
77 n (div n 10)
78 lis (mod n 10)^lis
78 lis (mod n 10)^lis
@@ -96,7 +96,7 @@ Together, these operations will pull each digit out of `n` and put it into a
96the value, and `mod` will store the actual discarded digit. To visualize this
96the value, and `mod` will store the actual discarded digit. To visualize this
97complementarity, let's run some operations in the dojo:
97complementarity, let's run some operations in the dojo:
98
98
99−```
99+```hoon
100> (div 146 10)
100> (div 146 10)
10114
10114
102
102
learn/hoon/workbook/eightball.md+8−8
@@ -8,7 +8,7 @@ Magic 8-Ball, producing a randomized response with each run.
8
8
9Save the code below as `eightball.hoon` in your `/gen` directory.
9Save the code below as `eightball.hoon` in your `/gen` directory.
10
10
11−```
11+```hoon
12!:
12!:
13:- %say
13:- %say
14|= [[* eny=@uv *] *]
14|= [[* eny=@uv *] *]
@@ -43,7 +43,7 @@ Save the code below as `eightball.hoon` in your `/gen` directory.
43
43
44Let's go through our code in chunks so that we might more easily understand it.
44Let's go through our code in chunks so that we might more easily understand it.
45
45
46−```
46+```hoon
47!:
47!:
48```
48```
49
49
@@ -51,7 +51,7 @@ We start with the `!:` rune to enable a full stack trace for any errors. This
51is good practice whenever developing something in Hoon.
51is good practice whenever developing something in Hoon.
52
52
53
53
54−```
54+```hoon
55:- %say
55:- %say
56|= [[* eny=@uv *] *]
56|= [[* eny=@uv *] *]
57:- %noun
57:- %noun
@@ -59,7 +59,7 @@ is good practice whenever developing something in Hoon.
59
59
60To make our program produce a random result, we need entropy. To get entropy,
60To make our program produce a random result, we need entropy. To get entropy,
61we need data from Arvo. To get data from Arvo, we use a generator of the
61we need data from Arvo. To get data from Arvo, we use a generator of the
62−[`%say`](@/docs/learn/hoon/hoon-tutorial/generators.md) variety. The above code chunk is
62+[`%say`](@/docs/hoon/hoon-tutorial/generators.md) variety. The above code chunk is
63the template that is followed for all `%say` generators.
63the template that is followed for all `%say` generators.
64
64
65`:- %say` creates a cell with `%say` as that cell's head to define
65`:- %say` creates a cell with `%say` as that cell's head to define
@@ -79,14 +79,14 @@ producing. In this case, we are using the `%noun` `mark` to tell the system how
79to print the generator's outputted value. The tail of this cell is that value
79to print the generator's outputted value. The tail of this cell is that value
80itself, produced by the rest of our program.
80itself, produced by the rest of our program.
81
81
82−```
82+```hoon
83^- tape
83^- tape
84```
84```
85
85
86Above is a cast statement that requires the non-`mark` component of our cell to
86Above is a cast statement that requires the non-`mark` component of our cell to
87be of the `tape` type. If it's not, the program doesn't compile.
87be of the `tape` type. If it's not, the program doesn't compile.
88
88
89−```
89+```hoon
90=/ answers=(list tape)
90=/ answers=(list tape)
91 :~ "It is certain."
91 :~ "It is certain."
92 "It is decidedly so."
92 "It is decidedly so."
@@ -127,7 +127,7 @@ elements are the `tape`s that are selected as the 8-Ball's responses.
127
127
128`==` terminates our list. `:~` expressions are always closed in this way.
128`==` terminates our list. `:~` expressions are always closed in this way.
129
129
130−```
130+```hoon
131=/ rng ~(. og eny)
131=/ rng ~(. og eny)
132=/ val (rad:rng (lent answers))
132=/ val (rad:rng (lent answers))
133```
133```
@@ -144,7 +144,7 @@ Is the upper bound that we give it. In this case, the upper bound is the number
144of elements in `answers`, obtained by using the `lent` standard-library arm. We
144of elements in `answers`, obtained by using the `lent` standard-library arm. We
145store the random result in `val`.
145store the random result in `val`.
146
146
147−```
147+```hoon
148(snag val answers)
148(snag val answers)
149```
149```
150
150
learn/hoon/workbook/traffic-light.md+10−10
@@ -6,7 +6,7 @@ template = "doc.html"
6Let's create a state machine in Hoon that models the functionality of a traffic
6Let's create a state machine in Hoon that models the functionality of a traffic
7light. Save the code below as `traffic.hoon` in your `/gen` directory.
7light. Save the code below as `traffic.hoon` in your `/gen` directory.
8
8
9−```
9+```hoon
10:- %say
10:- %say
11|= *
11|= *
12:- %noun
12:- %noun
@@ -29,18 +29,18 @@ light. Save the code below as `traffic.hoon` in your `/gen` directory.
29
29
30Let's look at the code piece-by-piece.
30Let's look at the code piece-by-piece.
31
31
32−```
32+```hoon
33:- %say
33:- %say
34|= *
34|= *
35:- %noun
35:- %noun
36```
36```
37
37
38Here's the boilerplate code to designate our generator as being a
38Here's the boilerplate code to designate our generator as being a
39−[`%say` generator](@/docs/learn/hoon/hoon-tutorial/generators.md). We're using this variant because
39+[`%say` generator](@/docs/hoon/hoon-tutorial/generators.md). We're using this variant because
40it allows us to run the generator without any arguments. It's otherwise not
40it allows us to run the generator without any arguments. It's otherwise not
41relevant to the functionality of our program.
41relevant to the functionality of our program.
42
42
43−```
43+```hoon
44=+ |%
44=+ |%
45 ++ state ?(%red %yellow %green)
45 ++ state ?(%red %yellow %green)
46 --
46 --
@@ -60,7 +60,7 @@ Having new types in a separate core is a common idiom in Hoon programs that allo
60the compiler to do [constant folding](https://en.wikipedia.org/wiki/Constant_folding),
60the compiler to do [constant folding](https://en.wikipedia.org/wiki/Constant_folding),
61which improves performance.
61which improves performance.
62
62
63−```
63+```hoon
64=/ current-state=state %red
64=/ current-state=state %red
65```
65```
66
66
@@ -69,7 +69,7 @@ the arm in previous code chunk - and gives it a default value. Because we are
69putting this noun into the subject, it will be available for use in the
69putting this noun into the subject, it will be available for use in the
70`traffic-light` core we are about to create.
70`traffic-light` core we are about to create.
71
71
72−```
72+```hoon
73=+ ^= traffic-light
73=+ ^= traffic-light
74 |%
74 |%
75 ++ look current-state
75 ++ look current-state
@@ -97,7 +97,7 @@ We first produce a core with one arm named `$`. That `$` arm will produce a new
97core with `current-state` changed to match the `s` provided when it was called.
97core with `current-state` changed to match the `s` provided when it was called.
98How does this work?
98How does this work?
99
99
100−Remember that `.` is [wing syntax](@/docs/reference/hoon-expressions/limb/wing.md) that
100+Remember that `.` is [wing syntax](@/docs/hoon/hoon-expressions/limb/wing.md) that
101applies the wing expression on the left of it to the noun to the right of it.
101applies the wing expression on the left of it to the noun to the right of it.
102`$` is the arm of the core. Then by using the wing expression `+>`, which means
102`$` is the arm of the core. Then by using the wing expression `+>`, which means
103"return the head of the tail", we traverse the subject to the core to latch onto
103"return the head of the tail", we traverse the subject to the core to latch onto
@@ -105,7 +105,7 @@ its parent core. where we defined the arms `look` and `set`. The `( )` then
105lists changes to the core we would like to make as we produce a new one. You
105lists changes to the core we would like to make as we produce a new one. You
106will often see `+>.$` used in this way.
106will often see `+>.$` used in this way.
107
107
108−```
108+```hoon
109=+ a=traffic-light
109=+ a=traffic-light
110=+ b=traffic-light
110=+ b=traffic-light
111```
111```
@@ -115,7 +115,7 @@ noun to the head of the subject. In this case, we are adding two nouns, one with
115the face `a` and a second with the face `b`. These two nouns will be copies of
115the face `a` and a second with the face `b`. These two nouns will be copies of
116the `traffic-light` core, with all the bits we previously created.
116the `traffic-light` core, with all the bits we previously created.
117
117
118−```
118+```hoon
119=. a (set.a %yellow)
119=. a (set.a %yellow)
120```
120```
121
121
@@ -123,7 +123,7 @@ the `traffic-light` core, with all the bits we previously created.
123and give that the argument of `%yellow`. Remember that we are actually producing
123and give that the argument of `%yellow`. Remember that we are actually producing
124a new core in the gate, so we have to then assign that back to the face `a`.
124a new core in the gate, so we have to then assign that back to the face `a`.
125
125
126−```
126+```hoon
127[current-state.a current-state.b]
127[current-state.a current-state.b]
128```
128```
129
129
learn/nock/_index.md+4−4
@@ -8,18 +8,18 @@ template = "sections/docs/chapters.html"
8
8
9Nock is the low-level functional programming language that is interpreted by Vere. You don't need to know Nock to write Hoon, or even to work on most parts of Vere. But if you want to understand the foundations of Urbit and are mathematically-inclined, dive right in.
9Nock is the low-level functional programming language that is interpreted by Vere. You don't need to know Nock to write Hoon, or even to work on most parts of Vere. But if you want to understand the foundations of Urbit and are mathematically-inclined, dive right in.
10
10
11−## [Nock Definition](@/docs/learn/nock/definition.md)
11+## [Nock Definition](@/docs/nock/definition.md)
12
12
13The Nock specification.
13The Nock specification.
14
14
15−## [An explanation of Nock](@/docs/learn/nock/explanation.md)
15+## [An explanation of Nock](@/docs/nock/explanation.md)
16
16
17A comprehensive walkthrough of the Nock spec.
17A comprehensive walkthrough of the Nock spec.
18
18
19−## [Nock by hand](@/docs/learn/nock/example.md)
19+## [Nock by hand](@/docs/nock/example.md)
20
20
21Learn Nock by example.
21Learn Nock by example.
22
22
23−## [Nock Implementations](@/docs/learn/nock/implementations.md)
23+## [Nock Implementations](@/docs/nock/implementations.md)
24
24
25The many ways that Nock has been implemented.
25The many ways that Nock has been implemented.
learn/nock/definition.md+2
@@ -2,7 +2,9 @@
2title = "Nock Definition"
2title = "Nock Definition"
3weight = 1
3weight = 1
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/nock/definition/"]
5+++
6+++
7+
6Nock is a Turing-complete function that maps a cell
8Nock is a Turing-complete function that maps a cell
7`[subject formula]` to a noun `product`, where `subject` is the
9`[subject formula]` to a noun `product`, where `subject` is the
8data, `formula` is the code, and `product` is the result.
10data, `formula` is the code, and `product` is the result.
learn/nock/example.md+1−1
@@ -249,7 +249,7 @@ could also write this subject as
249and we see readily that `a` is at slot `7`, `b` `6`, `l` `2`.
249and we see readily that `a` is at slot `7`, `b` `6`, `l` `2`.
250With this subject, we need to express the Hoon loop body
250With this subject, we need to express the Hoon loop body
251
251
252−```
252+```hoon
253?: =(a +(b)) :: line 4
253?: =(a +(b)) :: line 4
254 b :: line 5
254 b :: line 5
255$(b +(b)) :: line 6
255$(b +(b)) :: line 6
learn/nock/implementations.md+8−8
@@ -33,7 +33,7 @@ We use a C implementation for our Nock interpreter. But building a Nock interpre
33
33
34The actual production Nock interpreter. Note gotos for tail-call elimination,
34The actual production Nock interpreter. Note gotos for tail-call elimination,
35and manual reference counting. More about the C environment can be found
35and manual reference counting. More about the C environment can be found
36−in the [runtime system documentation](@/docs/learn/vere/runtime.md).
36+in the [runtime system documentation](@/docs/vere/runtime.md).
37```
37```
38/* _n_nock_on(): produce .*(bus fol). Do not virtualize.
38/* _n_nock_on(): produce .*(bus fol). Do not virtualize.
39*/
39*/
@@ -1128,7 +1128,7 @@ tar a = Left "*a"
1128
1128
1129## Hoon
1129## Hoon
1130
1130
1131−```
1131+```hoon
1132|= {sub/* fol/*}
1132|= {sub/* fol/*}
1133^- *
1133^- *
1134?< ?=(@ fol)
1134?< ?=(@ fol)
@@ -1179,7 +1179,7 @@ tar a = Left "*a"
1179
1179
1180From [Joe Bryan](https://github.com/joemfb/nock.js/blob/master/nock.js):
1180From [Joe Bryan](https://github.com/joemfb/nock.js/blob/master/nock.js):
1181
1181
1182−```
1182+```js
1183(function (self, factory) {
1183(function (self, factory) {
1184 'use strict'
1184 'use strict'
1185
1185
@@ -1538,7 +1538,7 @@ From [Joe Bryan](https://github.com/joemfb/nock.js/blob/master/nock.js):
1538
1538
1539From [James Tauber](https://github.com/jtauber/pynock/blob/master/nock.py):
1539From [James Tauber](https://github.com/jtauber/pynock/blob/master/nock.py):
1540
1540
1541−```
1541+```py
1542#!/usr/bin/env python3
1542#!/usr/bin/env python3
1543
1543
1544# []
1544# []
@@ -1627,7 +1627,7 @@ def tar(noun):
1627
1627
1628From [T.J. Corcoran](https://github.com/TJamesCorcoran/nock/blob/master/nock.rb):
1628From [T.J. Corcoran](https://github.com/TJamesCorcoran/nock/blob/master/nock.rb):
1629
1629
1630−```
1630+```ruby
1631def str_to_tree(str)
1631def str_to_tree(str)
1632 arr = []
1632 arr = []
1633 str.scan(/\+|\=|\?|\/|\*|\[|\]|\d+/).each do |token|
1633 str.scan(/\+|\=|\?|\/|\*|\[|\]|\d+/).each do |token|
@@ -1760,7 +1760,7 @@ end
1760
1760
1761From [Steve Randy Waldman](https://github.com/swaldman/nnnock/blob/master/src/main/scala/com/mchange/sc/v1/nnnock/package.scala):
1761From [Steve Randy Waldman](https://github.com/swaldman/nnnock/blob/master/src/main/scala/com/mchange/sc/v1/nnnock/package.scala):
1762
1762
1763−```
1763+```scala
1764package object nnnock {
1764package object nnnock {
1765
1765
1766 sealed trait Noun;
1766 sealed trait Noun;
@@ -1842,7 +1842,7 @@ package object nnnock {
1842
1842
1843From [Kohányi Róbert](https://github.com/kohanyirobert/snock/blob/master/snock.ss):
1843From [Kohányi Róbert](https://github.com/kohanyirobert/snock/blob/master/snock.ss):
1844
1844
1845−```
1845+```scheme
1846(import (rnrs (6)))
1846(import (rnrs (6)))
1847
1847
1848(define (i a) a)
1848(define (i a) a)
@@ -1962,7 +1962,7 @@ From [Kohányi Róbert](https://github.com/kohanyirobert/snock/blob/master/snock
1962
1962
1963## Swift
1963## Swift
1964
1964
1965−```
1965+```swift
1966import Foundation
1966import Foundation
1967// 1 :: A noun is an atom or a cell.
1967// 1 :: A noun is an atom or a cell.
1968// 2 :: An atom is a natural number.
1968// 2 :: An atom is a natural number.
learn/vere/_index.md+5−5
@@ -10,26 +10,26 @@ Keep reading if you're planning to work on the Urbit interpreter, you're a
10language implementation geek, or you don't really understand anything until
10language implementation geek, or you don't really understand anything until
11you've seen the actual structs.
11you've seen the actual structs.
12
12
13−## [C runtime system](@/docs/learn/vere/runtime.md)
13+## [C runtime system](@/docs/vere/runtime.md)
14
14
15The Urbit interpreter is built on a Nock runtime system written
15The Urbit interpreter is built on a Nock runtime system written
16in C, `u3`. This section is a relatively complete description.
16in C, `u3`. This section is a relatively complete description.
17
17
18−## [c3: C in Urbit](@/docs/learn/vere/c.md)
18+## [c3: C in Urbit](@/docs/vere/c.md)
19
19
20Under `u3` is the simple `c3` layer, which is just how we write C
20Under `u3` is the simple `c3` layer, which is just how we write C
21in Urbit.
21in Urbit.
22
22
23−## [u3: Land of nouns](@/docs/learn/vere/nouns.md)
23+## [u3: Land of nouns](@/docs/vere/nouns.md)
24
24
25The division between `c3` and `u3` is that you could theoretically
25The division between `c3` and `u3` is that you could theoretically
26imagine using `c3` as just a generic C environment. Anything to do
26imagine using `c3` as just a generic C environment. Anything to do
27with nouns is in `u3`.
27with nouns is in `u3`.
28
28
29−## [u3: API overview by prefix](@/docs/learn/vere/api.md)
29+## [u3: API overview by prefix](@/docs/vere/api.md)
30
30
31A walkthrough of each of the `u3` modules.
31A walkthrough of each of the `u3` modules.
32
32
33−## [How to write a jet](@/docs/learn/vere/jetting.md)
33+## [How to write a jet](@/docs/vere/jetting.md)
34
34
35A jetting guide by for new Urbit developers.
35A jetting guide by for new Urbit developers.
learn/vere/api.md+18−18
@@ -10,7 +10,7 @@ functions are commented, but the comments may be cryptic.
10
10
11To start `u3`, run
11To start `u3`, run
12
12
13−```
13+```c
14/* u3m_boot(): start the u3 system.
14/* u3m_boot(): start the u3 system.
15*/
15*/
16 void
16 void
@@ -30,7 +30,7 @@ complete, should be run (a) virtualized and (b) in an inner road.
30These are slightly different things, but at the highest level we
30These are slightly different things, but at the highest level we
31bundle them together for your convenience, in `u3m_soft()`:
31bundle them together for your convenience, in `u3m_soft()`:
32
32
33−```
33+```c
34/* u3m_soft(): system soft wrapper. unifies unix and nock errors.
34/* u3m_soft(): system soft wrapper. unifies unix and nock errors.
35**
35**
36** Produces [%$ result] or [%error (list tank)].
36** Produces [%$ result] or [%error (list tank)].
@@ -219,7 +219,7 @@ numbering itself on process initialization. This structure -
219which embeds function pointers to all the jets - is defined
219which embeds function pointers to all the jets - is defined
220in `j/tree.c`. The data structures:
220in `j/tree.c`. The data structures:
221
221
222−```
222+```c
223 /* u3j_harm: driver arm.
223 /* u3j_harm: driver arm.
224 */
224 */
225 typedef struct _u3j_harm {
225 typedef struct _u3j_harm {
@@ -253,7 +253,7 @@ in `j/tree.c`. The data structures:
253Warm and cold state is **per road**. In other words, as we nest
253Warm and cold state is **per road**. In other words, as we nest
254roads, we also nest jet state. The jet state in the road is:
254roads, we also nest jet state. The jet state in the road is:
255
255
256−```
256+```c
257 struct { // jet dashboard
257 struct { // jet dashboard
258 u3p(u3h_root) har_p; // warm state
258 u3p(u3h_root) har_p; // warm state
259 u3_noun das; // cold state
259 u3_noun das; // cold state
@@ -263,7 +263,7 @@ roads, we also nest jet state. The jet state in the road is:
263In case you understand Hoon, `das` (cold state) is a `++dash`,
263In case you understand Hoon, `das` (cold state) is a `++dash`,
264and `har_p` (warm state) is a map from battery to `++calx`:
264and `har_p` (warm state) is a map from battery to `++calx`:
265
265
266−```
266+```hoon
267 ++ bane ,@tas :: battery name
267 ++ bane ,@tas :: battery name
268 ++ bash ,@uvH :: label hash
268 ++ bash ,@uvH :: label hash
269 ++ bosh ,@uvH :: local battery hash
269 ++ bosh ,@uvH :: local battery hash
@@ -321,7 +321,7 @@ above, which we want to annotate it with.
321
321
322A clue is a triple of name, parent, and hooks:
322A clue is a triple of name, parent, and hooks:
323
323
324−```
324+```hoon
325++ clue (trel chum nock (list (pair term nock)))
325++ clue (trel chum nock (list (pair term nock)))
326```
326```
327
327
@@ -442,7 +442,7 @@ There are two cases for a jet-propelled core - either the entire
442core is a static constant, or it isn't. Hence the definition
442core is a static constant, or it isn't. Hence the definition
443of `corp`:
443of `corp`:
444
444
445−```
445+```hoon
446++ corp (each core batt) :: parent or static
446++ corp (each core batt) :: parent or static
447```
447```
448
448
@@ -613,7 +613,7 @@ instructions.
613These allocators are **not compatible**. For 32-bit alignment
613These allocators are **not compatible**. For 32-bit alignment
614as used in nouns, call
614as used in nouns, call
615
615
616−```
616+```c
617 /* u3a_walloc(): allocate storage measured in words.
617 /* u3a_walloc(): allocate storage measured in words.
618 */
618 */
619 void*
619 void*
@@ -632,7 +632,7 @@ as used in nouns, call
632
632
633For full alignment, call:
633For full alignment, call:
634
634
635−```
635+```c
636 /* u3a_malloc(): aligned storage measured in bytes.
636 /* u3a_malloc(): aligned storage measured in bytes.
637 */
637 */
638 void*
638 void*
@@ -701,7 +701,7 @@ programming language which didn't talk funny and was retarded,
701`u3n_slam_on()` would call a function on an argument.) We could
701`u3n_slam_on()` would call a function on an argument.) We could
702write it most simply as:
702write it most simply as:
703
703
704−```
704+```c
705 u3_noun
705 u3_noun
706 u3n_slam_on(u3_noun gat, u3_noun sam)
706 u3n_slam_on(u3_noun gat, u3_noun sam)
707 {
707 {
@@ -718,7 +718,7 @@ Simpler is `u3n_kick_on(u3_noun gat)`, which slams a gate (or,
718more generally, a **trap** - because sample structure is not even
718more generally, a **trap** - because sample structure is not even
719needed here) without changing its sample:
719needed here) without changing its sample:
720
720
721−```
721+```c
722 u3_noun
722 u3_noun
723 u3n_kick_on(u3_noun gat, u3_noun sam)
723 u3n_kick_on(u3_noun gat, u3_noun sam)
724 {
724 {
@@ -758,7 +758,7 @@ to a `fly` is a `++path`, just a list of text `span`.
758
758
759`mock` functions produce a `++toon`. Fully elaborated:
759`mock` functions produce a `++toon`. Fully elaborated:
760
760
761−```
761+```hoon
762 ++ noun ,* :: any noun
762 ++ noun ,* :: any noun
763 ++ path (list ,@ta) :: namespace path
763 ++ path (list ,@ta) :: namespace path
764 ++ span ,@ta :: text-atom (ASCII)
764 ++ span ,@ta :: text-atom (ASCII)
@@ -796,7 +796,7 @@ In any case, the simplest `mock` functions are `u3n_nock_un()`
796and `u3n_slam_un()`. These provide exception control without
796and `u3n_slam_un()`. These provide exception control without
797any namespace change, as you can see by the code:
797any namespace change, as you can see by the code:
798
798
799−```
799+```c
800 /* u3n_nock_un(): produce .*(bus fol), as ++toon.
800 /* u3n_nock_un(): produce .*(bus fol), as ++toon.
801 */
801 */
802 u3_noun
802 u3_noun
@@ -917,7 +917,7 @@ Each `u3z` function comes with a `c3_m` mote which disambiguates
917the function mapping key to value. For Nock itself, use 0. For
917the function mapping key to value. For Nock itself, use 0. For
918extra speed, small tuples are split out in C; thus, find with
918extra speed, small tuples are split out in C; thus, find with
919
919
920−```
920+```c
921 u3_weak u3z_find(c3_m, u3_noun);
921 u3_weak u3z_find(c3_m, u3_noun);
922 u3_weak u3z_find_2(c3_m, u3_noun, u3_noun);
922 u3_weak u3z_find_2(c3_m, u3_noun, u3_noun);
923 u3_weak u3z_find_3(c3_m, u3_noun, u3_noun, u3_noun);
923 u3_weak u3z_find_3(c3_m, u3_noun, u3_noun, u3_noun);
@@ -926,7 +926,7 @@ extra speed, small tuples are split out in C; thus, find with
926
926
927and save with
927and save with
928
928
929−```
929+```c
930 u3_noun u3z_save(c3_m, u3_noun, u3_noun);
930 u3_noun u3z_save(c3_m, u3_noun, u3_noun);
931 u3_noun u3z_save_2(c3_m, u3_noun, u3_noun, u3_noun);
931 u3_noun u3z_save_2(c3_m, u3_noun, u3_noun, u3_noun);
932 u3_noun u3z_save_3(c3_m, u3_noun, u3_noun, u3_noun, u3_noun);
932 u3_noun u3z_save_3(c3_m, u3_noun, u3_noun, u3_noun, u3_noun);
@@ -936,7 +936,7 @@ and save with
936where the value is the last argument. To eliminate duplicate
936where the value is the last argument. To eliminate duplicate
937nouns, there is also
937nouns, there is also
938
938
939−```
939+```c
940 u3_noun
940 u3_noun
941 u3z_uniq(u3_noun);
941 u3z_uniq(u3_noun);
942```
942```
@@ -958,7 +958,7 @@ An Arvo kernel - or at least, a core that compiles with the Arvo
958interface - is part of the global `u3` state. What is an Arvo
958interface - is part of the global `u3` state. What is an Arvo
959core? Slightly pseudocoded:
959core? Slightly pseudocoded:
960
960
961−```
961+```hoon
962 ++ arvo
962 ++ arvo
963 |%
963 |%
964 ++ come |/ {yen/@ ova/(list ovum) nyf/pone} :: 11
964 ++ come |/ {yen/@ ova/(list ovum) nyf/pone} :: 11
@@ -1031,7 +1031,7 @@ you're not writing the next event system. There are only two.
1031calling Hoon kernel functions by name. Even more conveniently,
1031calling Hoon kernel functions by name. Even more conveniently,
1032we tend to call `u3v_do()` with these convenient aliases:
1032we tend to call `u3v_do()` with these convenient aliases:
1033
1033
1034−```
1034+```c
1035 #define u3do(txt_c, arg) u3v_do(txt_c, arg)
1035 #define u3do(txt_c, arg) u3v_do(txt_c, arg)
1036 #define u3dc(txt_c, a, b) u3v_do(txt_c, u3nc(a, b))
1036 #define u3dc(txt_c, a, b) u3v_do(txt_c, u3nc(a, b))
1037 #define u3dt(txt_c, a, b, c) u3v_do(txt_c, u3nt(a, b, c))
1037 #define u3dt(txt_c, a, b, c) u3v_do(txt_c, u3nt(a, b, c))
learn/vere/c.md+3−3
@@ -20,7 +20,7 @@ First, it's generally acknowledged that underspecified integer
20types are C's worst disaster. C99 fixed this, but the `stdint`
20types are C's worst disaster. C99 fixed this, but the `stdint`
21types are wordy and annoying. We've replaced them with:
21types are wordy and annoying. We've replaced them with:
22
22
23−```
23+```c
24 /* Good integers.
24 /* Good integers.
25 */
25 */
26 typedef uint64_t c3_d; // double-word
26 typedef uint64_t c3_d; // double-word
@@ -87,7 +87,7 @@ hard to relearn. And of course, when in doubt, comment it.
87Variables take pseudo-Hungarian suffixes, matching in general the
87Variables take pseudo-Hungarian suffixes, matching in general the
88suffix of the integer type:
88suffix of the integer type:
89
89
90−```
90+```c
91c3_w wor_w; // 32-bit word
91c3_w wor_w; // 32-bit word
92```
92```
93
93
@@ -98,7 +98,7 @@ variables. C structure variables take a `_u` suffix.
98
98
99The code (from `defs.h`) tells the story:
99The code (from `defs.h`) tells the story:
100
100
101−```
101+```c
102 # define c3y 0
102 # define c3y 0
103 # define c3n 1
103 # define c3n 1
104
104
learn/vere/jetting.md+31−31
@@ -111,7 +111,7 @@ Feel free to use `~&` liberally! (Just remove them when you're done).
111
111
112Let's use the three to jet some code. Starting with this example:
112Let's use the three to jet some code. Starting with this example:
113
113
114−```
114+```hoon
115 ++ aaa
115 ++ aaa
116 ...
116 ...
117 ++ bbb
117 ++ bbb
@@ -175,12 +175,12 @@ For each jet you will write one `u3we()` function and one `u3qe()` function.
175
175
176- edit the header file `include/jets/w.h` to have a declaration for each of your `u3we()` functions. Every `u3we()` function looks the same, e.g.
176- edit the header file `include/jets/w.h` to have a declaration for each of your `u3we()` functions. Every `u3we()` function looks the same, e.g.
177
177
178− ```
178+ ```c
179 u3_noun u3we_xxx(u3_noun);
179 u3_noun u3we_xxx(u3_noun);
180 ```
180 ```
181- edit the header file `~/tlon/urbit/include/jets/q.h` to have a declaration for your `u3qe()` function. `u3qe()` functions can differ from each other, taking distinct numbers of `u3_nouns` and/or `u3_atoms`, e.g.
181- edit the header file `~/tlon/urbit/include/jets/q.h` to have a declaration for your `u3qe()` function. `u3qe()` functions can differ from each other, taking distinct numbers of `u3_nouns` and/or `u3_atoms`, e.g.
182
182
183− ```
183+ ```c
184 u3_noun u3qe_yyy(u3_atom, u3_atom);
184 u3_noun u3qe_yyy(u3_atom, u3_atom);
185 u3_noun u3qe_zzz(u3_noun, u3_noun, u3_atom, u3_atom);
185 u3_noun u3qe_zzz(u3_noun, u3_noun, u3_atom, u3_atom);
186 ```
186 ```
@@ -194,7 +194,7 @@ In the Hoon code we hinted some leaf node functions (`ccc` in our example) and t
194
194
195We need to replicate this structure in C. Here's example C code to jet our above example Hoon:
195We need to replicate this structure in C. Here's example C code to jet our above example Hoon:
196
196
197−```
197+```c
198 // 1: register a C func u3we_ccc()
198 // 1: register a C func u3we_ccc()
199 static u3j_harm _143_hex_hobo_reco_d[] =
199 static u3j_harm _143_hex_hobo_reco_d[] =
200 {
200 {
@@ -271,13 +271,13 @@ hinting in Hoon).
271
271
272The line in section 2
272The line in section 2
273
273
274−```
274+```c
275 { "ccc", _143_hex_hobo_ccc_a },
275 { "ccc", _143_hex_hobo_ccc_a },
276```
276```
277
277
278looks very similar to the line in section 3
278looks very similar to the line in section 3
279
279
280−```
280+```c
281 { "bbb", 0, _143_hex_hobo_bbb_d },
281 { "bbb", 0, _143_hex_hobo_bbb_d },
282```
282```
283
283
@@ -331,7 +331,7 @@ To unpack the sample
331
331
332We use the function `u3r_mean()` to do this, thusly:
332We use the function `u3r_mean()` to do this, thusly:
333
333
334−```
334+```c
335 u3_noun arg_a, arg_b, arg_c ... ;
335 u3_noun arg_a, arg_b, arg_c ... ;
336
336
337 u3r_mean(cor,
337 u3r_mean(cor,
@@ -388,7 +388,7 @@ N.B. in our fprintf()s we're using both \n and \r to achieve line feed
388because Urbit uses ncurses to control the screen and it changes the
388because Urbit uses ncurses to control the screen and it changes the
389default behavior you may be used to (where \n accomplishes both).
389default behavior you may be used to (where \n accomplishes both).
390
390
391−```
391+```c
392 c3_o ret;
392 c3_o ret;
393 u3_noun sample;
393 u3_noun sample;
394 ret = u3r_mean(cor, u3x_sam_1, &sample, 0);
394 ret = u3r_mean(cor, u3x_sam_1, &sample, 0);
@@ -414,7 +414,7 @@ default behavior you may be used to (where \n accomplishes both).
414
414
415If the Hoon that you're jetting looks like this
415If the Hoon that you're jetting looks like this
416
416
417−```
417+```hoon
418 ++ make-k
418 ++ make-k
419 ~/ %make-k
419 ~/ %make-k
420 =, mimes:html
420 =, mimes:html
@@ -423,7 +423,7 @@ If the Hoon that you're jetting looks like this
423
423
424In the C code you'd fetch them out of the payload with
424In the C code you'd fetch them out of the payload with
425
425
426−```
426+```c
427 u3r_mean(cor,
427 u3r_mean(cor,
428 u3x_sam_2, & arg_aaa,
428 u3x_sam_2, & arg_aaa,
429 u3x_sam_5, & arg_bbb,
429 u3x_sam_5, & arg_bbb,
@@ -438,7 +438,7 @@ sample.
438
438
439You could - IN THEORY - inspect / pretty-print the noun by calling
439You could - IN THEORY - inspect / pretty-print the noun by calling
440
440
441−```
441+```c
442 u3m_p("description", cor); :: DO NOT DO THIS !!!
442 u3m_p("description", cor); :: DO NOT DO THIS !!!
443```
443```
444
444
@@ -447,7 +447,7 @@ entire context - the whole enchilada.
447
447
448Do instead, perhaps,
448Do instead, perhaps,
449
449
450−```
450+```c
451 c3_o ret;
451 c3_o ret;
452 u3_noun sample;
452 u3_noun sample;
453
453
@@ -461,19 +461,19 @@ After our C function pulls out the arguments it needs to type check them.
461
461
462If `arg_a` is supposed to be a atom, trust but verify:
462If `arg_a` is supposed to be a atom, trust but verify:
463
463
464−```
464+```c
465 u3ud(arg_a); // checks for atomicity; alias for u3a_is_atom()
465 u3ud(arg_a); // checks for atomicity; alias for u3a_is_atom()
466```
466```
467
467
468If it's supposed to be a cell:
468If it's supposed to be a cell:
469
469
470−```
470+```c
471 u3du(arg_a); // checks for cell-ness
471 u3du(arg_a); // checks for cell-ness
472```
472```
473
473
474There are other tests you might need to use
474There are other tests you might need to use
475
475
476−```
476+```c
477 u3a_is_cat()
477 u3a_is_cat()
478 u3a_is_dog()
478 u3a_is_dog()
479
479
@@ -485,7 +485,7 @@ All of these rests return Hoon loobeans (yes/no vs true / false), so
485check return values vs `c3n` / `c3y`. If any of these `u3_mean()`, `u3ud()`
485check return values vs `c3n` / `c3y`. If any of these `u3_mean()`, `u3ud()`
486etc return u3n you have an error and should return
486etc return u3n you have an error and should return
487
487
488−```
488+```c
489 return u3m_bail(c3__exit);
489 return u3m_bail(c3__exit);
490```
490```
491
491
@@ -504,32 +504,32 @@ A `u3_noun` will want to be further disassembled into atoms.
504A `u3_atom` represents a simple number, but the implementation may or
504A `u3_atom` represents a simple number, but the implementation may or
505may not be simple. If the value held in the atom is 31 bits or less,
505may not be simple. If the value held in the atom is 31 bits or less,
506it's stored directly in the atom. If the value is 32 bits the atom
506it's stored directly in the atom. If the value is 32 bits the atom
507−holds a pointer into the loom where the actual value is stored. ( see [Nouns](@/docs/learn/vere/nouns.md) )
507+holds a pointer into the loom where the actual value is stored. ( see [Nouns](@/docs/vere/nouns.md) )
508
508
509You don't want to get bogged down in the details of this -- you just
509You don't want to get bogged down in the details of this -- you just
510want to get data out of your atoms.
510want to get data out of your atoms.
511
511
512If you know that the data fits in 32 bits or less, you can use
512If you know that the data fits in 32 bits or less, you can use
513
513
514−```
514+```c
515 u3r_word(c3_w a_w, u3_atom b);
515 u3r_word(c3_w a_w, u3_atom b);
516```
516```
517
517
518If it is longer than 32 bits, use
518If it is longer than 32 bits, use
519
519
520−```
520+```c
521 u3r_words(c3_w a_w, c3_w b_w, c3_w* c_w, u3_atom d);
521 u3r_words(c3_w a_w, c3_w b_w, c3_w* c_w, u3_atom d);
522```
522```
523
523
524or
524or
525
525
526−```
526+```c
527 u3r_bytes(c3_w a_w, c3_w b_w, c3_y* c_y, u3_atom d)
527 u3r_bytes(c3_w a_w, c3_w b_w, c3_y* c_y, u3_atom d)
528```
528```
529
529
530If you need to get the size
530If you need to get the size
531
531
532−```
532+```c
533 u3r_met(3, a);
533 u3r_met(3, a);
534```
534```
535
535
@@ -539,13 +539,13 @@ Now we move on to return semantics.
539
539
540First, you can transfer raw values into nouns using
540First, you can transfer raw values into nouns using
541
541
542−```
542+```c
543 u3_noun u3i_words(c3_w a_w, const c3_w* b_w)
543 u3_noun u3i_words(c3_w a_w, const c3_w* b_w)
544```
544```
545
545
546and you can build cells out of nouns using
546and you can build cells out of nouns using
547
547
548−```
548+```c
549 u3nc(); // pair
549 u3nc(); // pair
550 u3nt(); // triple
550 u3nt(); // triple
551 u3nq(); // quad
551 u3nq(); // quad
@@ -555,7 +555,7 @@ There are two facets here: (i) data format, (ii) memory allocation.
555
555
556Regarding data format, if the Hoon is expected to return a single atom (e.g. if the Hoon looks like this:)
556Regarding data format, if the Hoon is expected to return a single atom (e.g. if the Hoon looks like this:)
557
557
558−```
558+```hoon
559 ++ make-k
559 ++ make-k
560 ~/ %make-k
560 ~/ %make-k
561 |= [has=@uvI prv=@] :: <---- input parguments
561 |= [has=@uvI prv=@] :: <---- input parguments
@@ -565,13 +565,13 @@ Regarding data format, if the Hoon is expected to return a single atom (e.g. if
565
565
566then your C code - at least when you're stubbing it out - can do something like
566then your C code - at least when you're stubbing it out - can do something like
567
567
568−```
568+```c
569 return(123);
569 return(123);
570```
570```
571
571
572Or, if you want to create an atom more formally, you can build it like this
572Or, if you want to create an atom more formally, you can build it like this
573
573
574−```
574+```c
575 // this variable is on the stack and will disappear
575 // this variable is on the stack and will disappear
576 unsigned char nonce32[32];
576 unsigned char nonce32[32];
577
577
@@ -585,7 +585,7 @@ Or, if you want to create an atom more formally, you can build it like this
585
585
586If, on the other hand, your Hoon looks like
586If, on the other hand, your Hoon looks like
587
587
588−```
588+```hoon
589 ++ ecdsa-raw-sign :: generate signature
589 ++ ecdsa-raw-sign :: generate signature
590 ~/ %ecdsa-raw-sign
590 ~/ %ecdsa-raw-sign
591 |= [has=@uvI prv=@]
591 |= [has=@uvI prv=@]
@@ -595,7 +595,7 @@ If, on the other hand, your Hoon looks like
595
595
596ending your C code with
596ending your C code with
597
597
598−```
598+```c
599 return(123);
599 return(123);
600```
600```
601
601
@@ -603,7 +603,7 @@ is wrong and will result in a dojo error because you are returning a single atom
603
603
604Instead do one of these:
604Instead do one of these:
605
605
606−```
606+```c
607 return(u3nc(a, b)); // for two atoms
607 return(u3nc(a, b)); // for two atoms
608 return(u3nt(a, b, c)); // for three atoms
608 return(u3nt(a, b, c)); // for three atoms
609 return(u3nq(a, b, c, d)); // for four atoms
609 return(u3nq(a, b, c, d)); // for four atoms
@@ -613,11 +613,11 @@ If you need to return a longer list, you can compose your own. Look
613at the definitions of these three functions and you will see that they
613at the definitions of these three functions and you will see that they
614are just recursive calls to the cell constructor `u3i_cell()` e.g.
614are just recursive calls to the cell constructor `u3i_cell()` e.g.
615
615
616−```
616+```c
617 u3i_cell(a, u3i_cell(b, u3i_cell(c, d));
617 u3i_cell(a, u3i_cell(b, u3i_cell(c, d));
618```
618```
619
619
620−Understanding the memory model, allocation, freeing, and ownership ('transfer' vs 'retain' semantics) is important. Some info is available at [Nouns](@/docs/learn/vere/nouns.md).
620+Understanding the memory model, allocation, freeing, and ownership ('transfer' vs 'retain' semantics) is important. Some info is available at [Nouns](@/docs/vere/nouns.md).
621
621
622## Compile the C code
622## Compile the C code
623
623
learn/vere/nouns.md+6−6
@@ -50,7 +50,7 @@ bit is reserved. Bit `29` is `1` if the noun is a cell, `0` if
50it's an atom. Bits `28` through `0` are a word pointer into the
50it's an atom. Bits `28` through `0` are a word pointer into the
51loom - see below. The structures are:
51loom - see below. The structures are:
52
52
53−```
53+```c
54 typedef struct {
54 typedef struct {
55 c3_w mug_w;
55 c3_w mug_w;
56 c3_w len_w;
56 c3_w len_w;
@@ -116,7 +116,7 @@ There are two semantic patterns, `transfer` and `retain`. In
116`transfer` semantics, the caller "gives" a use count to the
116`transfer` semantics, the caller "gives" a use count to the
117callee, which "gives back" any return. For instance, if I have
117callee, which "gives back" any return. For instance, if I have
118
118
119−```
119+```c
120 {
120 {
121 u3_noun foo = u3i_string("foobar");
121 u3_noun foo = u3i_string("foobar");
122 u3_noun bar;
122 u3_noun bar;
@@ -136,7 +136,7 @@ point a `u3z()` is required.
136On the other hand, if `u3f_futz()` has `retain` semantics, we
136On the other hand, if `u3f_futz()` has `retain` semantics, we
137need to write
137need to write
138
138
139−```
139+```c
140 {
140 {
141 u3_noun foo = u3i_string("foobar");
141 u3_noun foo = u3i_string("foobar");
142 u3_noun bar;
142 u3_noun bar;
@@ -369,7 +369,7 @@ done it because we haven't needed to.
369Within the interpreter, your code can run either in the surface
369Within the interpreter, your code can run either in the surface
370road or in a deep road. You can test this by testing
370road or in a deep road. You can test this by testing
371
371
372−```
372+```c
373 (&u3H->rod_u == u3R)
373 (&u3H->rod_u == u3R)
374```
374```
375
375
@@ -404,7 +404,7 @@ event queue. Let's see how this happens.
404
404
405You produce an exception with
405You produce an exception with
406
406
407−```
407+```c
408 /* u3m_bail(): bail out. Does not return.
408 /* u3m_bail(): bail out. Does not return.
409 **
409 **
410 ** Bail motes:
410 ** Bail motes:
@@ -461,7 +461,7 @@ To point to non-noun C structs on the loom, we use a `u3_post`,
461which is just a loom word offset. A macro lets us declare this
461which is just a loom word offset. A macro lets us declare this
462as if it was a pointer:
462as if it was a pointer:
463
463
464−```
464+```c
465 typedef c3_w u3_post;
465 typedef c3_w u3_post;
466 #define u3p(type) u3_post
466 #define u3p(type) u3_post
467```
467```
learn/vere/runtime.md+2
@@ -2,7 +2,9 @@
2title = "C Runtime System"
2title = "C Runtime System"
3weight = 1
3weight = 1
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/about/runtime/"]
5+++
6+++
7+
6The Urbit interpreter is built on a Nock runtime system written
8The Urbit interpreter is built on a Nock runtime system written
7in C, `u3`. This section is a relatively complete description.
9in C, `u3`. This section is a relatively complete description.
8
10
reference/cheat-sheet.md+1−1
@@ -11,7 +11,7 @@ hand. So above is a download link to a Hoon cheatsheet .pdf. It's missing a
11few of the literal syntaxes, but it covers the most common ones.
11few of the literal syntaxes, but it covers the most common ones.
12
12
13This doesn't list any of the Ford runes, although there is now at least
13This doesn't list any of the Ford runes, although there is now at least
14−some documentation for those [here](@/docs/learn/arvo/ford.md).
14+some documentation for those [here](@/docs/arvo/ford.md).
15
15
16The following runes also exist, but are currently undocumented and not listed in
16The following runes also exist, but are currently undocumented and not listed in
17the cheat sheet:
17the cheat sheet:
reference/hoon-errors.md+6−6
@@ -23,7 +23,7 @@ somewhere above, you've confused Hoon's tall form by using the
23wrong fanout for a rune. For example, `%+` ([**cenlus**](@/docs/reference/hoon-expressions/rune/cen.md#cenlus),
23wrong fanout for a rune. For example, `%+` ([**cenlus**](@/docs/reference/hoon-expressions/rune/cen.md#cenlus),
24a function call whose sample is a cell) has three subhoons:
24a function call whose sample is a cell) has three subhoons:
25
25
26−```
26+```hoon
27%+ foo
27%+ foo
28 bar
28 bar
29baz
29baz
@@ -31,7 +31,7 @@ baz
31
31
32But if you make a mistake and write
32But if you make a mistake and write
33
33
34−```
34+```hoon
35%+ foo
35%+ foo
36bar
36bar
37```
37```
@@ -106,7 +106,7 @@ any hoon in your stack trace.
106For instance, you wrote `(foo bar)` and got a `nest-fail`. Change
106For instance, you wrote `(foo bar)` and got a `nest-fail`. Change
107your code to be:
107your code to be:
108
108
109−```
109+```hoon
110~! bar
110~! bar
111~! +6.foo
111~! +6.foo
112(foo bar)
112(foo bar)
@@ -146,7 +146,7 @@ stack trace will show what your code was doing when interrupted.
146The counterpart of `~!` for runtime crashes is `~|`
146The counterpart of `~!` for runtime crashes is `~|`
147([**sigbar**](@/docs/reference/hoon-expressions/rune/sig.md#sigbar)):
147([**sigbar**](@/docs/reference/hoon-expressions/rune/sig.md#sigbar)):
148
148
149−```
149+```hoon
150~| foo
150~| foo
151(foo bar)
151(foo bar)
152```
152```
@@ -163,7 +163,7 @@ functional language, but it still happens.
163`~&` ([**sigpam**](@/docs/reference/hoon-expressions/rune/sig.md#sigpam)) is Hoon's debugging printf.
163`~&` ([**sigpam**](@/docs/reference/hoon-expressions/rune/sig.md#sigpam)) is Hoon's debugging printf.
164This pretty-prints its argument:
164This pretty-prints its argument:
165
165
166−```
166+```hoon
167~& foo
167~& foo
168(foo bar)
168(foo bar)
169```
169```
@@ -172,7 +172,7 @@ will always print `foo` every time it executes. A variant is
172`~?` ([**sigwut**](@/docs/reference/hoon-expressions/rune/sig.md#sigwut)), which prints only if a condition is
172`~?` ([**sigwut**](@/docs/reference/hoon-expressions/rune/sig.md#sigwut)), which prints only if a condition is
173true:
173true:
174
174
175−```
175+```hoon
176~? =(37 (lent foo)) foo
176~? =(37 (lent foo)) foo
177(foo bar)
177(foo bar)
178```
178```
reference/hoon-expressions/advanced.md+2−2
@@ -12,7 +12,7 @@ large functions. Don't worry about them for a little while.
12
12
13## The Full Version of `$type`
13## The Full Version of `$type`
14
14
15−```
15+```hoon
16+$ type $~ %noun
16+$ type $~ %noun
17 $@ $? %noun
17 $@ $? %noun
18 %void
18 %void
@@ -190,7 +190,7 @@ limb, we just search the type depth-first.
190If a name is in the `p.p` map, it's an alias. (An alias is defined using the
190If a name is in the `p.p` map, it's an alias. (An alias is defined using the
191`=*` rune.) The map contains a `(unit hoon)`; if the unit is full, the name
191`=*` rune.) The map contains a `(unit hoon)`; if the unit is full, the name
192resolves to that hoon (compiled against the `q` type). If the unit is empty,
192resolves to that hoon (compiled against the `q` type). If the unit is empty,
193−the name is blocked / skipped (see [limb](@/docs/reference/hoon-expressions/limb/limb.md) for what
193+the name is blocked / skipped (see [limb](@/docs/hoon/hoon-expressions/limb/limb.md) for what
194this means).
194this means).
195
195
196If a name is in the `q.p` map, it's a bridge. (A bridge is defined using the
196If a name is in the `q.p` map, it's a bridge. (A bridge is defined using the
reference/hoon-expressions/basic.md+2−2
@@ -31,10 +31,10 @@ including both faces and arm names. (See Chapter 1 of the Hoon tutorial for an
31introduction to name resolution.)
31introduction to name resolution.)
32
32
33As noted, this is a simplified version of `type`. We undo and
33As noted, this is a simplified version of `type`. We undo and
34−explain the simplifications in the [advanced types](@/docs/reference/hoon-expressions/advanced.md)
34+explain the simplifications in the [advanced types](@/docs/hoon/hoon-expressions/advanced.md)
35section.
35section.
36
36
37−```
37+```hoon
38+$ term @tas
38+$ term @tas
39+$ type $~ %noun
39+$ type $~ %noun
40 $@ $? %noun
40 $@ $? %noun
reference/hoon-expressions/irregular.md+18−18
@@ -17,7 +17,7 @@ Anything Nock can do, Hoon can do also.
17
17
18### .+ dotlus
18### .+ dotlus
19
19
20−[docs](@/docs/reference/hoon-expressions/rune/dot.md#dotlus) \\+
20+[docs](@/docs/hoon/hoon-expressions/rune/dot.md#dotlus) \\+
21`[%dtls p=atom]`: increment an atom with Nock 4.
21`[%dtls p=atom]`: increment an atom with Nock 4.
22
22
23R: `.+(p)`
23R: `.+(p)`
@@ -25,7 +25,7 @@ I: `+(p)`
25
25
26### .= dottis
26### .= dottis
27
27
28−[docs](@/docs/reference/hoon-expressions/rune/dot.md#dottis) \\=
28+[docs](@/docs/hoon/hoon-expressions/rune/dot.md#dottis) \\=
29`[%dtts p=hoon q=hoon]`: test for equality with Nock 5.
29`[%dtts p=hoon q=hoon]`: test for equality with Nock 5.
30
30
31R: `.=(p q)`
31R: `.=(p q)`
@@ -37,7 +37,7 @@ Miscellaneous useful macros.
37
37
38### ;: miccol
38### ;: miccol
39
39
40−[docs](@/docs/reference/hoon-expressions/rune/mic.md#miccol) \\:
40+[docs](@/docs/hoon/hoon-expressions/rune/mic.md#miccol) \\:
41`[%mccl p=hoon q=(list hoon)]`: call a binary function as an n-ary function.
41`[%mccl p=hoon q=(list hoon)]`: call a binary function as an n-ary function.
42
42
43R: `;:(p q)`
43R: `;:(p q)`
@@ -49,7 +49,7 @@ The cell runes.
49
49
50### :- colhep
50### :- colhep
51
51
52−[docs](@/docs/reference/hoon-expressions/rune/col.md#colhep) \\[\\]\\^\\+\\\`\\~
52+[docs](@/docs/hoon/hoon-expressions/rune/col.md#colhep) \\[\\]\\^\\+\\\`\\~
53`[%clhp p=hoon q=hoon]`: construct a cell (2-tuple).
53`[%clhp p=hoon q=hoon]`: construct a cell (2-tuple).
54
54
55R: `:-(p q)`
55R: `:-(p q)`
@@ -71,7 +71,7 @@ Flow hoons change the subject. All non-flow hoons (except cores) pass the subjec
71
71
72### =< tisgal
72### =< tisgal
73
73
74−[docs](@/docs/reference/hoon-expressions/rune/tis.md#tisgal) \\:
74+[docs](@/docs/hoon/hoon-expressions/rune/tis.md#tisgal) \\:
75`[%tsgl p=hoon q=hoon]`: compose two hoons, inverted.
75`[%tsgl p=hoon q=hoon]`: compose two hoons, inverted.
76
76
77R: `=<(p q)`
77R: `=<(p q)`
@@ -79,7 +79,7 @@ I: `p:q`
79
79
80## | bar (core)
80## | bar (core)
81
81
82−[docs](@/docs/reference/hoon-expressions/rune/bar.md) \\$
82+[docs](@/docs/hoon/hoon-expressions/rune/bar.md) \\$
83Core hoons are flow hoon.
83Core hoons are flow hoon.
84
84
85Technically not irregular syntax, but worth mentioning.
85Technically not irregular syntax, but worth mentioning.
@@ -97,7 +97,7 @@ The invocation family of runes.
97
97
98### %= centis
98### %= centis
99
99
100−[docs](@/docs/reference/hoon-expressions/rune/cen.md#centis) \\(\\)
100+[docs](@/docs/hoon/hoon-expressions/rune/cen.md#centis) \\(\\)
101`[%cnts p=wing q=(list (pair wing hoon))]`: take a wing with changes.
101`[%cnts p=wing q=(list (pair wing hoon))]`: take a wing with changes.
102
102
103R: `%=(p a 1)`
103R: `%=(p a 1)`
@@ -105,7 +105,7 @@ I: `p(a 1)`
105
105
106### %~ censig
106### %~ censig
107
107
108−[docs](@/docs/reference/hoon-expressions/rune/cen.md#censig) \\~
108+[docs](@/docs/hoon/hoon-expressions/rune/cen.md#censig) \\~
109`[%cnsg p=wing q=hoon r=hoon]`: call with multi-armed door.
109`[%cnsg p=wing q=hoon r=hoon]`: call with multi-armed door.
110
110
111R: `%~(p q r)`
111R: `%~(p q r)`
@@ -113,7 +113,7 @@ I: `~(p q r)`
113
113
114### %- cenhep
114### %- cenhep
115
115
116−[docs](@/docs/reference/hoon-expressions/rune/cen.md#cenhep) \\(\\)
116+[docs](@/docs/hoon/hoon-expressions/rune/cen.md#cenhep) \\(\\)
117`[%cnhp p=hoon q=hoon]`: call a gate (function).
117`[%cnhp p=hoon q=hoon]`: call a gate (function).
118
118
119R: `%-(p q)`
119R: `%-(p q)`
@@ -127,7 +127,7 @@ A mold is a gate (function) that helps us build simple and rigorous data structu
127
127
128### $? bucwut
128### $? bucwut
129
129
130−[docs](@/docs/reference/hoon-expressions/rune/buc.md#bucwut) \\?
130+[docs](@/docs/hoon/hoon-expressions/rune/buc.md#bucwut) \\?
131`[%bcwt p=(list model)]`: mold which normalizes a general union.
131`[%bcwt p=(list model)]`: mold which normalizes a general union.
132
132
133R: `$?(p)`
133R: `$?(p)`
@@ -135,7 +135,7 @@ I: `?(p)`
135
135
136### $_ buccab
136### $_ buccab
137
137
138−[docs](@/docs/reference/hoon-expressions/rune/buc.md#buccab) \\_
138+[docs](@/docs/hoon/hoon-expressions/rune/buc.md#buccab) \\_
139`[%bccb p=value]`: mold which normalizes to an example.
139`[%bccb p=value]`: mold which normalizes to an example.
140
140
141R: `$_(p)`
141R: `$_(p)`
@@ -147,7 +147,7 @@ Hoon has the usual branches and logical tests.
147
147
148### ?! wutzap
148### ?! wutzap
149
149
150−[docs](@/docs/reference/hoon-expressions/rune/wut.md#wutzap) \\!
150+[docs](@/docs/hoon/hoon-expressions/rune/wut.md#wutzap) \\!
151`[%wtzp p=hoon]`: logical not.
151`[%wtzp p=hoon]`: logical not.
152
152
153R: `?!(p)`
153R: `?!(p)`
@@ -155,7 +155,7 @@ I: `!(p)`
155
155
156### ?& wutpam
156### ?& wutpam
157
157
158−[docs](@/docs/reference/hoon-expressions/rune/wut.md#wutpam) \\&
158+[docs](@/docs/hoon/hoon-expressions/rune/wut.md#wutpam) \\&
159`[%wtpm p=(list hoon)]`: logical and.
159`[%wtpm p=(list hoon)]`: logical and.
160
160
161R: `?&(p)`
161R: `?&(p)`
@@ -163,7 +163,7 @@ I: `&(p)`
163
163
164### ?| wutbar
164### ?| wutbar
165
165
166−[docs](@/docs/reference/hoon-expressions/rune/wut.md#wutbar) \\|
166+[docs](@/docs/hoon/hoon-expressions/rune/wut.md#wutbar) \\|
167`[%wtbr p=(list hoon)]`: logical or.
167`[%wtbr p=(list hoon)]`: logical or.
168
168
169R: `?|(p)`
169R: `?|(p)`
@@ -175,7 +175,7 @@ Lets us adjust types without violating type constraints.
175
175
176### ^- kethep
176### ^- kethep
177
177
178−[docs](@/docs/reference/hoon-expressions/rune/ket.md#kethep) \\\`
178+[docs](@/docs/hoon/hoon-expressions/rune/ket.md#kethep) \\\`
179`[%kthp p=model q=value]`: typecast by mold.
179`[%kthp p=model q=value]`: typecast by mold.
180
180
181R: `^-(p q)`
181R: `^-(p q)`
@@ -183,7 +183,7 @@ I: `` `p`q ``
183
183
184### ^= kettis
184### ^= kettis
185
185
186−[docs](@/docs/reference/hoon-expressions/rune/ket.md#kettis) \\=
186+[docs](@/docs/hoon/hoon-expressions/rune/ket.md#kettis) \\=
187`[%ktts p=toga q=value]`: name a value.
187`[%ktts p=toga q=value]`: name a value.
188
188
189R: `^=(p q)`
189R: `^=(p q)`
@@ -210,7 +210,7 @@ I: `p=q`
210- `|` loobean false.
210- `|` loobean false.
211- `%a` constant `a`, where `a` can be an ((ir)regularly defined) atom or a symbol.
211- `%a` constant `a`, where `a` can be an ((ir)regularly defined) atom or a symbol.
212
212
213−See [%sand](@/docs/reference/hoon-expressions/rune/constants.md#warm) for other irregular definitions of atoms.
213+See [%sand](@/docs/hoon/hoon-expressions/rune/constants.md#warm) for other irregular definitions of atoms.
214
214
215### List addressing
215### List addressing
216
216
@@ -219,7 +219,7 @@ See [%sand](@/docs/reference/hoon-expressions/rune/constants.md#warm) for other
219
219
220### Limbs
220### Limbs
221
221
222−[docs](@/docs/reference/hoon-expressions/limb/limb.md) \\+\\.\\^
222+[docs](@/docs/hoon/hoon-expressions/limb/limb.md) \\+\\.\\^
223`[%limb p=(each @ud [p=@ud q=@tas])]`: attribute of subject.
223`[%limb p=(each @ud [p=@ud q=@tas])]`: attribute of subject.
224
224
225- `+15` is slot 15
225- `+15` is slot 15
reference/hoon-expressions/limb/_index.md+2−2
@@ -8,10 +8,10 @@ One feature Hoon lacks: a context that isn't a first-class value. Hoon has no
8concept of scope, environment, etc. An expression has exactly one data source,
8concept of scope, environment, etc. An expression has exactly one data source,
9the **subject**, a noun like any other.
9the **subject**, a noun like any other.
10
10
11−## [Limbs](@/docs/reference/hoon-expressions/limb/limb.md)
11+## [Limbs](@/docs/hoon/hoon-expressions/limb/limb.md)
12
12
13A limb is used to resolve to a piece of data in the subject. A wing is thus a resolution path into the subject.
13A limb is used to resolve to a piece of data in the subject. A wing is thus a resolution path into the subject.
14
14
15−## [Wings](@/docs/reference/hoon-expressions/limb/wing.md)
15+## [Wings](@/docs/hoon/hoon-expressions/limb/wing.md)
16
16
17In Hoon we use 'wings' to extract information from the subject. A wing is a list of limbs (including a trivial list of one limb).
17In Hoon we use 'wings' to extract information from the subject. A wing is a list of limbs (including a trivial list of one limb).
reference/hoon-expressions/rune/bar.md+29−29
@@ -21,7 +21,7 @@ Produce a **door** (a core with a sample).
21
21
22Regular:
22Regular:
23
23
24−```
24+```hoon
25|_ a=spec
25|_ a=spec
26++ b=term c=hoon
26++ b=term c=hoon
27++ d=term e=hoon
27++ d=term e=hoon
@@ -48,7 +48,7 @@ The context of the door is the subject of the `|_` expression.
48
48
49##### Expands to
49##### Expands to
50
50
51−```
51+```hoon
52=| a=spec
52=| a=spec
53|%
53|%
54++ b=term c=hoon
54++ b=term c=hoon
@@ -67,7 +67,7 @@ Calling a door is like calling a gate except the caller also needs
67to specify the arm to be computed. So, for example, if you have some door `door` which contains some arm `arm`, and you want to pass some argument (i.e., input value `arg`), you would call it with `~(arm door arg)`.
67to specify the arm to be computed. So, for example, if you have some door `door` which contains some arm `arm`, and you want to pass some argument (i.e., input value `arg`), you would call it with `~(arm door arg)`.
68
68
69Because gates are also doors, you can call them the same way. To call the gate `foo` as a door, instead of `(foo baz)` we would write `~($ foo baz)`. This
69Because gates are also doors, you can call them the same way. To call the gate `foo` as a door, instead of `(foo baz)` we would write `~($ foo baz)`. This
70−is an irregular form for `%~($ foo baz)`, [%~](/docs/reference/hoon-expressions/rune/cen#sig).
70+is an irregular form for `%~($ foo baz)`, [%~](/docs/hoon/hoon-expressions/rune/cen#sig).
71
71
72##### Examples
72##### Examples
73
73
@@ -86,7 +86,7 @@ A trivial door:
86
86
87A more interesting door, from the kernel library:
87A more interesting door, from the kernel library:
88
88
89−```
89+```hoon
90++ ne
90++ ne
91 |_ tig=@
91 |_ tig=@
92 ++ d (add tig '0')
92 ++ d (add tig '0')
@@ -111,7 +111,7 @@ Produce a core, `[battery payload]`.
111
111
112Regular:
112Regular:
113
113
114−```
114+```hoon
115|%
115|%
116++ a=term b=hoon
116++ a=term b=hoon
117++ c=term d=hoon
117++ c=term d=hoon
@@ -171,7 +171,7 @@ Produce a gate with a custom sample.
171
171
172Regular:
172Regular:
173
173
174−```
174+```hoon
175|: a=hoon b=hoon
175|: a=hoon b=hoon
176```
176```
177
177
@@ -187,7 +187,7 @@ AST:
187
187
188##### Expands to
188##### Expands to
189
189
190−```
190+```hoon
191=> ^~ a
191=> ^~ a
192 |. b
192 |. b
193```
193```
@@ -219,7 +219,7 @@ Produce a trap (a core with one arm `$`).
219
219
220Regular:
220Regular:
221
221
222−```
222+```hoon
223|. a=hoon
223|. a=hoon
224```
224```
225
225
@@ -237,7 +237,7 @@ The payload of the core is the subject of the `|.` expression.
237
237
238##### Expands to
238##### Expands to
239
239
240−```
240+```hoon
241|% ++ $ a=hoon
241|% ++ $ a=hoon
242--
242--
243```
243```
@@ -277,7 +277,7 @@ A more interesting trap:
277Note that we can use `$()` to recurse back into the
277Note that we can use `$()` to recurse back into the
278trap, since it's a core with an `$` arm.
278trap, since it's a core with an `$` arm.
279
279
280−> `$(...)` expands to `%=($ ...)` (["centis"](/docs/reference/hoon-expressions/rune/cen#centis)).
280+> `$(...)` expands to `%=($ ...)` (["centis"](/docs/hoon/hoon-expressions/rune/cen#centis)).
281
281
282### |- "barhep"
282### |- "barhep"
283
283
@@ -287,7 +287,7 @@ Produce a trap (a core with one arm `$`) and evaluate it.
287
287
288Regular:
288Regular:
289
289
290−```
290+```hoon
291|- a=hoon
291|- a=hoon
292```
292```
293
293
@@ -303,7 +303,7 @@ A `|-` expression produces a core with one arm named `$` and immediately evaluat
303
303
304##### Expands to
304##### Expands to
305
305
306−```
306+```hoon
307=<($ |.(a=hoon))
307=<($ |.(a=hoon))
308```
308```
309
309
@@ -311,7 +311,7 @@ A `|-` expression produces a core with one arm named `$` and immediately evaluat
311
311
312The `|-` rune can be thought of as a 'recursion point' or a 'loop starting point'. Since `|-` makes a `|.` (["bardot"](#bardot), a core with one arm named `$`, we can recurse back into it with `$()`.
312The `|-` rune can be thought of as a 'recursion point' or a 'loop starting point'. Since `|-` makes a `|.` (["bardot"](#bardot), a core with one arm named `$`, we can recurse back into it with `$()`.
313
313
314−> `$(...)` expands to `%=($ ...)` (["centis"](/docs/reference/hoon-expressions/rune/cen#centis)).
314+> `$(...)` expands to `%=($ ...)` (["centis"](/docs/hoon/hoon-expressions/rune/cen#centis)).
315
315
316##### Examples
316##### Examples
317
317
@@ -343,7 +343,7 @@ Produce a core whose battery includes a `$` arm and compute the latter.
343
343
344Regular:
344Regular:
345
345
346−```
346+```hoon
347|^ a=hoon
347|^ a=hoon
348++ b=term c=hoon
348++ b=term c=hoon
349++ d=term e=hoon
349++ d=term e=hoon
@@ -366,7 +366,7 @@ A `|^` expression produces a multi-arm core whose battery includes a `$` arm, wh
366
366
367##### Expands to
367##### Expands to
368
368
369−```
369+```hoon
370=> |%
370=> |%
371 ++ $ a=hoon
371 ++ $ a=hoon
372 ++ b=term c=hoon
372 ++ b=term c=hoon
@@ -402,7 +402,7 @@ Produce an iron gate.
402
402
403Regular:
403Regular:
404
404
405−```
405+```hoon
406|~ a=spec b=hoon
406|~ a=spec b=hoon
407```
407```
408
408
@@ -418,13 +418,13 @@ A `|~` expression produces an iron gate. `a` defines the sample, and `b` define
418
418
419##### Expands to
419##### Expands to
420
420
421−```
421+```hoon
422^| |=(a b)
422^| |=(a b)
423```
423```
424
424
425##### Discussion
425##### Discussion
426
426
427−See [this discussion of core variance models](@/docs/reference/hoon-expressions/advanced.md)
427+See [this discussion of core variance models](@/docs/hoon/hoon-expressions/advanced.md)
428
428
429##### Examples
429##### Examples
430
430
@@ -441,7 +441,7 @@ Produce a wet gate (one-armed core with sample).
441
441
442Regular:
442Regular:
443
443
444−```
444+```hoon
445|* a=spec b=hoon
445|* a=spec b=hoon
446```
446```
447
447
@@ -457,7 +457,7 @@ A `|*` expression produces a wet gate. `a` defines the gate's sample, and `b` i
457
457
458##### Expands to
458##### Expands to
459
459
460−```
460+```hoon
461=| a
461=| a
462|@
462|@
463++ $
463++ $
@@ -478,7 +478,7 @@ you know what you're doing.
478Just as with a [gate](#bartis), we can recurse back into a wet gate
478Just as with a [gate](#bartis), we can recurse back into a wet gate
479with `$()`.
479with `$()`.
480
480
481−> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/reference/hoon-expressions/rune/cen.md#centis)).
481+> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/hoon/hoon-expressions/rune/cen.md#centis)).
482
482
483##### Examples
483##### Examples
484
484
@@ -507,7 +507,7 @@ Produce a gate (a one-armed core with a sample).
507
507
508Regular:
508Regular:
509
509
510−```
510+```hoon
511|= a=spec b=hoon
511|= a=spec b=hoon
512```
512```
513
513
@@ -525,7 +525,7 @@ The product of a `|=` expression is a dry **gate**, i.e., a Hoon function.
525
525
526##### Expands to
526##### Expands to
527
527
528−```
528+```hoon
529=| a=spec
529=| a=spec
530|% ++ $ b=hoon
530|% ++ $ b=hoon
531--
531--
@@ -537,7 +537,7 @@ Dry gates are used for the vast majority of ordinary functions in Hoon.
537
537
538A gate is a core with one arm named `$`, so we can recurse back into it with `$()`.
538A gate is a core with one arm named `$`, so we can recurse back into it with `$()`.
539
539
540−> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/reference/hoon-expressions/rune/cen.md#centis)).
540+> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/hoon/hoon-expressions/rune/cen.md#centis)).
541
541
542##### Examples
542##### Examples
543
543
@@ -567,7 +567,7 @@ Produce a 'wet' core `[battery payload]`.
567
567
568Regular:
568Regular:
569
569
570−```
570+```hoon
571|@
571|@
572++ a=term b=hoon
572++ a=term b=hoon
573++ c=term d=hoon
573++ c=term d=hoon
@@ -590,7 +590,7 @@ A `|@` expression produces a 'wet' core whose payload is the expression's subjec
590
590
591##### Discussion
591##### Discussion
592
592
593−The `|@` rune is just like the `|%` rune except that instead of producing a 'dry' core, it produces a 'wet' one. This allows for type polymorphism of its arms, using 'genericity'. See [Advanced types](@/docs/reference/hoon-expressions/advanced.md).
593+The `|@` rune is just like the `|%` rune except that instead of producing a 'dry' core, it produces a 'wet' one. This allows for type polymorphism of its arms, using 'genericity'. See [Advanced types](@/docs/hoon/hoon-expressions/advanced.md).
594
594
595### |? "barwut"
595### |? "barwut"
596
596
@@ -600,7 +600,7 @@ Produce a lead trap.
600
600
601Regular:
601Regular:
602
602
603−```
603+```hoon
604|? a=hoon
604|? a=hoon
605```
605```
606
606
@@ -616,13 +616,13 @@ A `|?` expression produces a lead trap (i.e., a lead core with one arm named `$`
616
616
617##### Expands to
617##### Expands to
618
618
619−```
619+```hoon
620^? |. a
620^? |. a
621```
621```
622
622
623##### Discussion
623##### Discussion
624
624
625−See this [discussion of the core variance model](@/docs/reference/hoon-expressions/advanced.md).
625+See this [discussion of the core variance model](@/docs/hoon/hoon-expressions/advanced.md).
626
626
627##### Examples
627##### Examples
628
628
reference/hoon-expressions/rune/buc.md+5−5
@@ -57,7 +57,7 @@ Irregular: `*` makes `%noun`, `^` makes `%cell`, `?` makes
57
57
58##### Expands to
58##### Expands to
59
59
60−```
60+```hoon
61|=(* p)
61|=(* p)
62```
62```
63
63
@@ -158,7 +158,7 @@ Irregular (structure mode): `[a b c]` is `$:(a b c)`.
158
158
159##### Expands to
159##### Expands to
160
160
161−```
161+```hoon
162$_ ^|
162$_ ^|
163|=(p $:q)
163|=(p $:q)
164```
164```
@@ -230,7 +230,7 @@ The product of `p`.
230
230
231Regular: **2-fixed**.
231Regular: **2-fixed**.
232
232
233−```
233+```hoon
234$~ p=hoon q=spec
234$~ p=hoon q=spec
235```
235```
236
236
@@ -238,7 +238,7 @@ $~ p=hoon q=spec
238
238
239##### Discussion
239##### Discussion
240
240
241−You should make sure that the product type of `p` nests under `q`. You can check the default value of some structure (custom type) `r` with `*r`. (See the [`^*` rune](@/docs/reference/hoon-expressions/rune/ket.md#kettar).)
241+You should make sure that the product type of `p` nests under `q`. You can check the default value of some structure (custom type) `r` with `*r`. (See the [`^*` rune](@/docs/hoon/hoon-expressions/rune/ket.md#kettar).)
242
242
243Do not confuse the `$~` rune with the constant type for null, `$~`. (The latter uses older Hoon syntax that is still accepted. Preferably it would be `%~`.)
243Do not confuse the `$~` rune with the constant type for null, `$~`. (The latter uses older Hoon syntax that is still accepted. Preferably it would be `%~`.)
244
244
@@ -320,7 +320,7 @@ Example:
320
320
321##### Expands to
321##### Expands to
322
322
323−```
323+```hoon
324|= *
324|= *
325^=(p %-(q +6))
325^=(p %-(q +6))
326```
326```
reference/hoon-expressions/rune/cen.md+24−24
@@ -17,7 +17,7 @@ Resolve a wing with changes, preserving type.
17
17
18Regular, tall:
18Regular, tall:
19
19
20−```
20+```hoon
21%_ a=wing
21%_ a=wing
22 b=wing c=hoon
22 b=wing c=hoon
23 d=wing e=hoon
23 d=wing e=hoon
@@ -28,7 +28,7 @@ Regular, tall:
28
28
29Regular, flat:
29Regular, flat:
30
30
31−```
31+```hoon
32%_(a=wing b=wing c=hoon, d=wing e=hoon, ...)
32%_(a=wing b=wing c=hoon, d=wing e=hoon, ...)
33```
33```
34
34
@@ -44,7 +44,7 @@ A `%_` expression resolves to the value of the subject at wing `a`, but modified
44
44
45##### Expands to
45##### Expands to
46
46
47−```
47+```hoon
48^+(a %=(a b c, d e, ...))
48^+(a %=(a b c, d e, ...))
49```
49```
50
50
@@ -52,7 +52,7 @@ A `%_` expression resolves to the value of the subject at wing `a`, but modified
52
52
53`%_` is different from `%=` because `%=` can change the type of a wing with mutations. `%_` preserves the wing type.
53`%_` is different from `%=` because `%=` can change the type of a wing with mutations. `%_` preserves the wing type.
54
54
55−See [how wings are resolved](@/docs/reference/hoon-expressions/limb/_index.md).
55+See [how wings are resolved](@/docs/hoon/hoon-expressions/limb/_index.md).
56
56
57##### Examples
57##### Examples
58
58
@@ -80,7 +80,7 @@ Call a gate with many arguments.
80
80
81Regular:
81Regular:
82
82
83−```
83+```hoon
84%: a=hoon
84%: a=hoon
85 b=hoon
85 b=hoon
86 c=hoon
86 c=hoon
@@ -105,7 +105,7 @@ When `%:` is used in tall-form syntax, the series of expressions after `p` must
105
105
106##### Examples
106##### Examples
107
107
108−```
108+```hoon
109> %: add 22 33 ==
109> %: add 22 33 ==
11055
11055
111
111
@@ -134,7 +134,7 @@ Call a gate (function), inverted.
134
134
135Regular:
135Regular:
136
136
137−```
137+```hoon
138%. a=hoon b=hoon
138%. a=hoon b=hoon
139```
139```
140
140
@@ -150,7 +150,7 @@ The `%.` rune is for evaluating the `$` arm of a gate, i.e., calling a function.
150
150
151##### Expands to
151##### Expands to
152
152
153−```
153+```hoon
154%-(b=hoon a=hoon)
154%-(b=hoon a=hoon)
155```
155```
156
156
@@ -175,13 +175,13 @@ Call a gate (function).
175
175
176Regular:
176Regular:
177
177
178−```
178+```hoon
179%- a=hoon b=hoon
179%- a=hoon b=hoon
180```
180```
181
181
182Irregular:
182Irregular:
183
183
184−```
184+```hoon
185(a=hoon b=hoon)
185(a=hoon b=hoon)
186```
186```
187
187
@@ -197,14 +197,14 @@ This rune is for evaluating the `$` arm of a gate, i.e., calling a gate as a fun
197
197
198##### Expands to
198##### Expands to
199
199
200−```
200+```hoon
201%~($ a b)
201%~($ a b)
202```
202```
203
203
204##### Discussion
204##### Discussion
205
205
206−`%-` is used to call a function; `a` is the function ([`gate`](@/docs/reference/hoon-expressions/rune/bar.md#bartis),
206+`%-` is used to call a function; `a` is the function ([`gate`](@/docs/hoon/hoon-expressions/rune/bar.md#bartis),
207−`q` the argument. `%-` is a special case of [`%~` ("censig")](#censig), and a gate is a special case of a [door](@/docs/reference/hoon-expressions/rune/bar.md#barcab).
207+`q` the argument. `%-` is a special case of [`%~` ("censig")](#censig), and a gate is a special case of a [door](@/docs/hoon/hoon-expressions/rune/bar.md#barcab).
208
208
209##### Examples
209##### Examples
210
210
@@ -224,7 +224,7 @@ Call gate with triple sample.
224
224
225Regular:
225Regular:
226
226
227−```
227+```hoon
228%^ a=hoon b=hoon c=hoon d=hoon
228%^ a=hoon b=hoon c=hoon d=hoon
229```
229```
230
230
@@ -237,7 +237,7 @@ AST:
237
237
238##### Expands to
238##### Expands to
239
239
240−```
240+```hoon
241%-(a=hoon [b=hoon c=hoon d=hoon])
241%-(a=hoon [b=hoon c=hoon d=hoon])
242```
242```
243
243
@@ -258,7 +258,7 @@ Call gate with a cell sample.
258
258
259Regular:
259Regular:
260
260
261−```
261+```hoon
262%+ a=hoon b=hoon c=hoon
262%+ a=hoon b=hoon c=hoon
263```
263```
264
264
@@ -274,7 +274,7 @@ A `%+` expression is for calling a gate with a cell sample. `a` is the gate to
274
274
275##### Expands to
275##### Expands to
276
276
277−```
277+```hoon
278%-(a=hoon [b=hoon c=hoon])
278%-(a=hoon [b=hoon c=hoon])
279```
279```
280
280
@@ -295,7 +295,7 @@ Evaluate an arm in a door.
295
295
296Regular:
296Regular:
297
297
298−```
298+```hoon
299%~ a=wing b=hoon
299%~ a=wing b=hoon
300 c=hoon
300 c=hoon
301 d=hoon
301 d=hoon
@@ -323,11 +323,11 @@ A `%~` expression evaluates the arm of a door (i.e., a core with a sample). `a`
323
323
324`%~` is the general case of a function call, `%-`. In both, we replace the sample (`+6`) of a core. In `%-` the core is a gate and the `$` arm is evaluated. In `%~` the core is a door and any arm may be evaluated. You must identify the arm to be run: `%~(arm door arg)`.
324`%~` is the general case of a function call, `%-`. In both, we replace the sample (`+6`) of a core. In `%-` the core is a gate and the `$` arm is evaluated. In `%~` the core is a door and any arm may be evaluated. You must identify the arm to be run: `%~(arm door arg)`.
325
325
326−See also [`|_`](@/docs/reference/hoon-expressions/rune/bar.md#barcab).
326+See also [`|_`](@/docs/hoon/hoon-expressions/rune/bar.md#barcab).
327
327
328##### Examples
328##### Examples
329
329
330−```
330+```hoon
331> =mycore |_ a=@
331> =mycore |_ a=@
332 ++ plus-two (add 2 a)
332 ++ plus-two (add 2 a)
333 ++ double (mul 2 a)
333 ++ double (mul 2 a)
@@ -347,7 +347,7 @@ Evaluate an expression, then resolve a wing with changes.
347
347
348Regular:
348Regular:
349
349
350−```
350+```hoon
351%* a=wing b=hoon
351%* a=wing b=hoon
352 c=wing d=hoon
352 c=wing d=hoon
353 e=wing f=hoon
353 e=wing f=hoon
@@ -368,7 +368,7 @@ A `%*` expression evaluates some arbitrary Hoon expression, `b`, and then resolv
368
368
369##### Expands to
369##### Expands to
370
370
371−```
371+```hoon
372=+ b=hoon
372=+ b=hoon
373%= a=wing
373%= a=wing
374 c=wing d=hoon
374 c=wing d=hoon
@@ -410,7 +410,7 @@ Resolve a wing with changes.
410
410
411Regular:
411Regular:
412
412
413−```
413+```hoon
414%= a=wing
414%= a=wing
415 b=wing c=hoon
415 b=wing c=hoon
416 d=wing e=hoon
416 d=wing e=hoon
@@ -451,7 +451,7 @@ a wing, we would just be mutating `+6` within the core that defines the
451
451
452Here's that again in tall form:
452Here's that again in tall form:
453
453
454−```
454+```hoon
455=+ foo
455=+ foo
456=> %= +2
456=> %= +2
457 +6 baz
457 +6 baz
reference/hoon-expressions/rune/col.md+8−8
@@ -13,7 +13,7 @@ The `:` ("col") expressions are used to produce cells, which are pairs of values
13
13
14##### Expands to
14##### Expands to
15
15
16−```
16+```hoon
17:-(q p)
17:-(q p)
18```
18```
19
19
@@ -38,7 +38,7 @@ Code comment
38
38
39##### Examples
39##### Examples
40
40
41−```
41+```hoon
42::
42::
43:: this is commented code
43:: this is commented code
44::
44::
@@ -101,7 +101,7 @@ compiler does), `[a b]` is the same as `:-(a b)`.
101
101
102##### Expands to
102##### Expands to
103
103
104−```
104+```hoon
105:-(p :-(q :-(r s)))
105:-(p :-(q :-(r s)))
106```
106```
107
107
@@ -129,7 +129,7 @@ Regular: **4-fixed**.
129
129
130##### Expands to:
130##### Expands to:
131
131
132−```
132+```hoon
133:-(p :-(q r))
133:-(p :-(q r))
134```
134```
135
135
@@ -157,13 +157,13 @@ Regular: **3-fixed**.
157
157
158**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
158**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
159
159
160−```
160+```hoon
161:-(a :-(b :-(c :-(... :-(z ~)))))
161:-(a :-(b :-(c :-(... :-(z ~)))))
162```
162```
163
163
164##### Desugaring
164##### Desugaring
165
165
166−```
166+```hoon
167|-
167|-
168?~ p
168?~ p
169 ~
169 ~
@@ -201,13 +201,13 @@ Regular: **running**.
201
201
202**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
202**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
203
203
204−```
204+```hoon
205:-(a :-(b :-(c :-(... z)))))
205:-(a :-(b :-(c :-(... z)))))
206```
206```
207
207
208##### Desugaring
208##### Desugaring
209
209
210−```
210+```hoon
211|-
211|-
212?~ p
212?~ p
213 !!
213 !!
reference/hoon-expressions/rune/ket.md+7−7
@@ -90,7 +90,7 @@ ford: %ride failed to execute:
90
90
91##### Expands to
91##### Expands to
92
92
93−```
93+```hoon
94^+(%:(p q) q)
94^+(%:(p q) q)
95```
95```
96
96
@@ -98,7 +98,7 @@ ford: %ride failed to execute:
98
98
99Regular: **2-fixed**.
99Regular: **2-fixed**.
100
100
101−```
101+```hoon
102^. p=hoon q=hoon
102^. p=hoon q=hoon
103```
103```
104
104
@@ -131,7 +131,7 @@ mint-vain
131
131
132##### Expands to
132##### Expands to
133
133
134−```
134+```hoon
135^+(^*(p) q)
135^+(^*(p) q)
136```
136```
137
137
@@ -202,7 +202,7 @@ Regular: **1-fixed**.
202
202
203##### Discussion
203##### Discussion
204
204
205−A zinc core has a read-only sample and an opaque context. See [Advanced types](@/docs/reference/hoon-expressions/advanced.md).
205+A zinc core has a read-only sample and an opaque context. See [Advanced types](@/docs/hoon/hoon-expressions/advanced.md).
206
206
207##### Examples
207##### Examples
208
208
@@ -275,7 +275,7 @@ A default value (i.e., 'bunt value') of the type `p`.
275
275
276Regular: **1-fixed**.
276Regular: **1-fixed**.
277
277
278−```
278+```hoon
279^* p=spec
279^* p=spec
280```
280```
281
281
@@ -287,7 +287,7 @@ Irregular: `*p`.
287
287
288Regular:
288Regular:
289
289
290−```
290+```hoon
291> ^* @
291> ^* @
2920
2920
293
293
@@ -303,7 +303,7 @@ Regular:
303
303
304Irregular:
304Irregular:
305
305
306−```
306+```hoon
307> *@
307> *@
3080
3080
309
309
reference/hoon-expressions/rune/lus.md+4−4
@@ -19,7 +19,7 @@ Chapter label.
19
19
20Regular: **1-fixed**.
20Regular: **1-fixed**.
21
21
22−```
22+```hoon
23+| %label
23+| %label
24```
24```
25
25
@@ -67,7 +67,7 @@ Produce a structure arm (type definition).
67
67
68Regular: **2-fixed**.
68Regular: **2-fixed**.
69
69
70−```
70+```hoon
71+$ p=term q=spec
71+$ p=term q=spec
72```
72```
73
73
@@ -105,7 +105,7 @@ Produce a normal arm.
105
105
106Regular: **2-fixed**.
106Regular: **2-fixed**.
107
107
108−```
108+```hoon
109++ p=term q=hoon
109++ p=term q=hoon
110```
110```
111
111
@@ -141,7 +141,7 @@ Produce a type constructor arm.
141
141
142Regular: **2-fixed**.
142Regular: **2-fixed**.
143
143
144−```
144+```hoon
145+* p=term [q=term] r=spec
145+* p=term [q=term] r=spec
146```
146```
147
147
reference/hoon-expressions/rune/mic.md+14−14
@@ -18,19 +18,19 @@ Miscellaneous useful macros.
18
18
19Regular form:
19Regular form:
20
20
21−```
21+```hoon
22%-(p a %-(p b %-(p c ...)))
22%-(p a %-(p b %-(p c ...)))
23```
23```
24
24
25Irregular form:
25Irregular form:
26
26
27−```
27+```hoon
28(p a (p b (p c ...)))
28(p a (p b (p c ...)))
29```
29```
30
30
31##### Desugaring
31##### Desugaring
32
32
33−```
33+```hoon
34|-
34|-
35?~ q !!
35?~ q !!
36?~ t.q !!
36?~ t.q !!
@@ -70,7 +70,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
70
70
71**1-fixed**
71**1-fixed**
72
72
73−```
73+```hoon
74;+ p=hoon
74;+ p=hoon
75```
75```
76
76
@@ -80,7 +80,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
80
80
81tl;dr -- `;+` converts a `manx` to a `marl`.
81tl;dr -- `;+` converts a `manx` to a `marl`.
82
82
83−`;+` is a Sail rune. Sail is a part of Hoon used for creating and operating on nouns that represent XML nodes. With the appropriate rendering pipeline, a Sail document can be used to generate a static website. See the [Sail tutorial](@/docs/using/sail-and-udon.md).
83+`;+` is a Sail rune. Sail is a part of Hoon used for creating and operating on nouns that represent XML nodes. With the appropriate rendering pipeline, a Sail document can be used to generate a static website. See the [Sail tutorial](@/docs/arvo/sail-and-udon.md).
84
84
85In Sail a single XML node is represented by a `manx`. A single `<p>` node `manx` can be produced in the following way:
85In Sail a single XML node is represented by a `manx`. A single `<p>` node `manx` can be produced in the following way:
86
86
@@ -123,7 +123,7 @@ One interesting thing about Sail is that it allows you to use complex Hoon expre
123
123
124##### Expands to
124##### Expands to
125
125
126−```
126+```hoon
127=+ a=(p q)
127=+ a=(p q)
128?> =(`*`a `*`q)
128?> =(`*`a `*`q)
129a
129a
@@ -165,7 +165,7 @@ Fails because not a fixpoint:
165
165
166##### Expands to
166##### Expands to
167
167
168−```
168+```hoon
169~[%$ ~[%$ 'p']]
169~[%$ ~[%$ 'p']]
170```
170```
171
171
@@ -193,14 +193,14 @@ The gates in `q` are composed together using the gate `p` as an intermediate fun
193
193
194`;~(a b c)` expands to
194`;~(a b c)` expands to
195
195
196−```
196+```hoon
197|= arg=*
197|= arg=*
198(a (b arg) c(+6 arg))
198(a (b arg) c(+6 arg))
199```
199```
200
200
201`;~(a b c d)` expands to
201`;~(a b c d)` expands to
202
202
203−```
203+```hoon
204|= arg=*
204|= arg=*
205%+ a (b arg)
205%+ a (b arg)
206=+ arg=arg
206=+ arg=arg
@@ -209,7 +209,7 @@ The gates in `q` are composed together using the gate `p` as an intermediate fun
209
209
210##### Desugaring
210##### Desugaring
211
211
212−```
212+```hoon
213?~ q !!
213?~ q !!
214|-
214|-
215?~ t.q i.q
215?~ t.q i.q
@@ -286,7 +286,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
286
286
287**1-fixed**
287**1-fixed**
288
288
289−```
289+```hoon
290;* p=hoon
290;* p=hoon
291```
291```
292
292
@@ -294,7 +294,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
294
294
295##### Discussion
295##### Discussion
296
296
297−`;*` is a Sail rune. Sail is a part of Hoon used for creating and operating on nouns that represent XML nodes. With the appropriate rendering pipeline, a Sail document can be used to generate a static website. See the [Sail tutorial](@/docs/using/sail-and-udon.md).
297+`;*` is a Sail rune. Sail is a part of Hoon used for creating and operating on nouns that represent XML nodes. With the appropriate rendering pipeline, a Sail document can be used to generate a static website. See the [Sail tutorial](@/docs/arvo/sail-and-udon.md).
298
298
299If you need a complex Hoon expression to produce a `marl`, use the `;*` rune. Often this rune is used with an expression, `p`, that includes one or more `;=` subexpressions.
299If you need a complex Hoon expression to produce a `marl`, use the `;*` rune. Often this rune is used with an expression, `p`, that includes one or more `;=` subexpressions.
300
300
@@ -338,7 +338,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
338
338
339**running**
339**running**
340
340
341−```
341+```hoon
342;= p=hoon q=hoon ... z=hoon ==
342;= p=hoon q=hoon ... z=hoon ==
343```
343```
344
344
@@ -346,7 +346,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
346
346
347##### Discussion
347##### Discussion
348
348
349−`;=` is a Sail rune. Sail is a part of Hoon used for creating and operating on nouns that represent XML nodes. With the appropriate rendering pipeline, a Sail document can be used to generate a static website. See the [Sail tutorial](@/docs/using/sail-and-udon.md).
349+`;=` is a Sail rune. Sail is a part of Hoon used for creating and operating on nouns that represent XML nodes. With the appropriate rendering pipeline, a Sail document can be used to generate a static website. See the [Sail tutorial](@/docs/arvo/sail-and-udon.md).
350
350
351In Sail a single XML node is represented by a `manx`. A single `<p>` node `manx` can be produced in the following way:
351In Sail a single XML node is represented by a `manx`. A single `<p>` node `manx` can be produced in the following way:
352
352
reference/hoon-expressions/rune/sig.md+3−3
@@ -193,7 +193,7 @@ Regular form: **4-fixed**
193
193
194Here's the AES
194Here's the AES
195
195
196−```
196+```hoon
197 ++ aesc :: AES-256
197 ++ aesc :: AES-256
198 ~% %aesc + ~
198 ~% %aesc + ~
199 |%
199 |%
@@ -291,7 +291,7 @@ registered context.
291
291
292##### Expands to
292##### Expands to
293
293
294−```
294+```hoon
295~%(p +7 ~ q)
295~%(p +7 ~ q)
296```
296```
297
297
@@ -302,7 +302,7 @@ Regular: **2-fixed**.
302##### Examples
302##### Examples
303
303
304From the kernel:
304From the kernel:
305−```
305+```hoon
306++ add
306++ add
307 ~/ %add
307 ~/ %add
308 |= [a=@ b=@]
308 |= [a=@ b=@]
reference/hoon-expressions/rune/tis.md+13−13
@@ -52,7 +52,7 @@ Regular: **2-fixed**.
52
52
53##### Expands to
53##### Expands to
54
54
55−```
55+```hoon
56=+(*p q)
56=+(*p q)
57```
57```
58
58
@@ -83,7 +83,7 @@ Speaking more loosely, `=|` usually "declares a variable" which is "uninitialize
83
83
84##### Expands to
84##### Expands to
85
85
86−```
86+```hoon
87=>(%_(. p) q)
87=>(%_(. p) q)
88```
88```
89
89
@@ -147,7 +147,7 @@ With a dojo-defined face:
147
147
148##### Expands to
148##### Expands to
149
149
150−```
150+```hoon
151=>(%_(. p q) r)
151=>(%_(. p q) r)
152```
152```
153
153
@@ -158,7 +158,7 @@ Regular: **3-fixed**.
158##### Discussion
158##### Discussion
159
159
160Technically the `=.` rune doesn't change the subject. It creates
160Technically the `=.` rune doesn't change the subject. It creates
161−a new subject just like the old one except for a changed value at `p`. Note that the mutation uses [`%_` ("cencab")](@/docs/reference/hoon-expressions/rune/cen.md#cencab), so the type at `p` doesn't change. Trying to change the value type results in a `nest-fail`.
161+a new subject just like the old one except for a changed value at `p`. Note that the mutation uses [`%_` ("cencab")](@/docs/hoon/hoon-expressions/rune/cen.md#cencab), so the type at `p` doesn't change. Trying to change the value type results in a `nest-fail`.
162
162
163##### Examples
163##### Examples
164
164
@@ -183,7 +183,7 @@ nest-fail
183
183
184##### Expands to
184##### Expands to
185
185
186−```
186+```hoon
187=>([q .] p)
187=>([q .] p)
188```
188```
189
189
@@ -213,7 +213,7 @@ a leg with the tail.
213
213
214##### Expands to
214##### Expands to
215
215
216−```
216+```hoon
217=/(p -.r =.(q +.r s))
217=/(p -.r =.(q +.r s))
218```
218```
219
219
@@ -252,7 +252,7 @@ random number, so we use `=^`:
252
252
253##### Expands to
253##### Expands to
254
254
255−```
255+```hoon
256=>(q p)
256=>(q p)
257```
257```
258
258
@@ -290,7 +290,7 @@ Irregular: `foo:baz` is `=<(foo baz)`.
290
290
291##### Expands to
291##### Expands to
292
292
293−```
293+```hoon
294=>([p .] q)
294=>([p .] q)
295```
295```
296
296
@@ -312,7 +312,7 @@ Loosely speaking, `=+` is the simplest way of "declaring a variable."
312
312
313##### Expands to
313##### Expands to
314
314
315−```
315+```hoon
316=/(p r q)
316=/(p r q)
317```
317```
318
318
@@ -343,19 +343,19 @@ Regular: **3-fixed**.
343
343
344**if `p` is a name**, (e.g. `a`):
344**if `p` is a name**, (e.g. `a`):
345
345
346−```
346+```hoon
347=+(^=(p q) r)
347=+(^=(p q) r)
348```
348```
349
349
350**if `p` is a name with a type** (e.g., `a=@`):
350**if `p` is a name with a type** (e.g., `a=@`):
351
351
352−```
352+```hoon
353=+(^-(p q) r)
353=+(^-(p q) r)
354```
354```
355
355
356### Desugaring
356### Desugaring
357
357
358−```
358+```hoon
359?@ p
359?@ p
360 =+ p=q
360 =+ p=q
361 r
361 r
@@ -459,7 +459,7 @@ The difference between aliasing and pinning is that pinning changes the subject,
459
459
460##### Expands to
460##### Expands to
461
461
462−```
462+```hoon
463=. p ?:(q r p)
463=. p ?:(q r p)
464s
464s
465```
465```
reference/hoon-expressions/rune/wut.md+16−16
@@ -21,7 +21,7 @@ for expressions which expand to `?:`.
21The test does not have to be a single `?=`; the compiler can
21The test does not have to be a single `?=`; the compiler can
22analyze arbitrary boolean logic ([`?&` ("wutpam")](#wutpam),
22analyze arbitrary boolean logic ([`?&` ("wutpam")](#wutpam),
23[`?|` ("wutbar")](#wutbar), [`?!` ("wutzap")](#wutzap)) with full
23[`?|` ("wutbar")](#wutbar), [`?!` ("wutzap")](#wutzap)) with full
24−short-circuiting. Equality tests ([`.=` ("dottis")](@/docs/reference/hoon-expressions/rune/dot.md#dottis)) are **not**
24+short-circuiting. Equality tests ([`.=` ("dottis")](@/docs/hoon/hoon-expressions/rune/dot.md#dottis)) are **not**
25analyzed.
25analyzed.
26
26
27If the compiler detects that the branch is degenerate (only one
27If the compiler detects that the branch is degenerate (only one
@@ -35,7 +35,7 @@ side is taken), it fails with an error.
35
35
36##### Expands to
36##### Expands to
37
37
38−```
38+```hoon
39?.(p !! q)
39?.(p !! q)
40```
40```
41
41
@@ -75,13 +75,13 @@ nest-fail
75
75
76**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
76**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
77
77
78−```
78+```hoon
79?:(a & ?:(b & ?:(c & ?:(... ?:(z & |)))))
79?:(a & ?:(b & ?:(c & ?:(... ?:(z & |)))))
80```
80```
81
81
82##### Desugaring
82##### Desugaring
83
83
84−```
84+```hoon
85|-
85|-
86?~ p
86?~ p
87 |
87 |
@@ -160,7 +160,7 @@ Note also that all other branching expressions reduce to `?:`.
160
160
161##### Expands to
161##### Expands to
162
162
163−```
163+```hoon
164?:(p r q)
164?:(p r q)
165```
165```
166
166
@@ -199,7 +199,7 @@ As is usual with inverted forms, use `?.` when the yes-case expression is much t
199
199
200**Pseudocode**: `a`, `b`, `c`, ... as elements of `q`:
200**Pseudocode**: `a`, `b`, `c`, ... as elements of `q`:
201
201
202−```
202+```hoon
203?: ?=(p.a p) q.a
203?: ?=(p.a p) q.a
204?: ?=(p.b p) q.b
204?: ?=(p.b p) q.b
205?: ?=(p.c p) q.c
205?: ?=(p.c p) q.c
@@ -209,7 +209,7 @@ As is usual with inverted forms, use `?.` when the yes-case expression is much t
209
209
210##### Desugaring
210##### Desugaring
211
211
212−```
212+```hoon
213|-
213|-
214?. q
214?. q
215 ~|(%mint-lost !!)
215 ~|(%mint-lost !!)
@@ -260,7 +260,7 @@ of the subject is a cell.
260
260
261##### Expands to
261##### Expands to
262
262
263−```
263+```hoon
264?:(?=(^ p) q r)
264?:(?=(^ p) q r)
265```
265```
266
266
@@ -292,7 +292,7 @@ The type of the wing, `p`, must not be known to be either an atom or a cell, or
292
292
293##### Expands to
293##### Expands to
294
294
295−```
295+```hoon
296?:(p !! q)
296?:(p !! q)
297```
297```
298
298
@@ -333,7 +333,7 @@ a union, with a default.
333
333
334**Pseudocode**: `a`, `b`, `c`, ... as elements of `r`:
334**Pseudocode**: `a`, `b`, `c`, ... as elements of `r`:
335
335
336−```
336+```hoon
337?: ?=(p.a p) q.a
337?: ?=(p.a p) q.a
338?: ?=(p.b p) q.b
338?: ?=(p.b p) q.b
339?: ?=(p.c p) q.c
339?: ?=(p.c p) q.c
@@ -343,7 +343,7 @@ q
343
343
344##### Desugaring
344##### Desugaring
345
345
346−```
346+```hoon
347|-
347|-
348?. r
348?. r
349 q
349 q
@@ -389,13 +389,13 @@ If there is a case that is never taken you'll get a `mint-vain` error.
389
389
390**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
390**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
391
391
392−```
392+```hoon
393?.(a | ?.(b | ?.(c | ?.(... ?.(z | &)))))
393?.(a | ?.(b | ?.(c | ?.(... ?.(z | &)))))
394```
394```
395
395
396##### Desugaring
396##### Desugaring
397
397
398−```
398+```hoon
399|-
399|-
400?~ p
400?~ p
401 &
401 &
@@ -426,7 +426,7 @@ Irregular: `&(foo bar baz)` is `?&(foo bar baz)`.
426
426
427##### Expands to
427##### Expands to
428
428
429−```
429+```hoon
430?:(?=($~ p) q r)
430?:(?=($~ p) q r)
431```
431```
432
432
@@ -489,7 +489,7 @@ A common error is `find.$`, meaning `p` is not a type.
489
489
490##### Expands to
490##### Expands to
491
491
492−```
492+```hoon
493?:(?=(@ p) q r)
493?:(?=(@ p) q r)
494```
494```
495
495
@@ -521,7 +521,7 @@ The type of the wing, `p`, must not be known to be either an atom or a cell, or
521
521
522##### Expands to
522##### Expands to
523
523
524−```
524+```hoon
525.=(| p)
525.=(| p)
526```
526```
527
527
reference/hoon-expressions/rune/zap.md+2−2
@@ -47,7 +47,7 @@ The product of `p` unless `p` crashes, in which case a stack trace is given.
47
47
48Regular: **1-fixed**.
48Regular: **1-fixed**.
49
49
50−```
50+```hoon
51!: p=hoon
51!: p=hoon
52```
52```
53
53
@@ -79,7 +79,7 @@ The product of `p`. If `p` crashes, no stack trace entries are given for that co
79
79
80Regular: **1-fixed**.
80Regular: **1-fixed**.
81
81
82−```
82+```hoon
83!. p=hoon
83!. p=hoon
84```
84```
85
85
reference/library/1a.md+13−13
@@ -21,7 +21,7 @@ An atom.
21
21
22#### Source
22#### Source
23
23
24−```
24+```hoon
25 ++ add
25 ++ add
26 ~/ %add
26 ~/ %add
27 |= [a=@ b=@]
27 |= [a=@ b=@]
@@ -72,7 +72,7 @@ An atom.
72
72
73#### Source
73#### Source
74
74
75−```
75+```hoon
76 ++ dec
76 ++ dec
77 ~/ %dec
77 ~/ %dec
78 |= a=@
78 |= a=@
@@ -125,7 +125,7 @@ An atom.
125
125
126#### Source
126#### Source
127
127
128−```
128+```hoon
129 ++ div
129 ++ div
130 ~/ %div
130 ~/ %div
131 |: [a=`@`1 b=`@`1]
131 |: [a=`@`1 b=`@`1]
@@ -180,7 +180,7 @@ A cell of atoms.
180
180
181#### Source
181#### Source
182
182
183−```
183+```hoon
184 ++ dvr
184 ++ dvr
185 ~/ %dvr
185 ~/ %dvr
186 |= [a=@ b=@]
186 |= [a=@ b=@]
@@ -230,7 +230,7 @@ A flag.
230
230
231#### Source
231#### Source
232
232
233−```
233+```hoon
234 ++ gte
234 ++ gte
235 ~/ %gte
235 ~/ %gte
236 |= [a=@ b=@]
236 |= [a=@ b=@]
@@ -270,7 +270,7 @@ A flag.
270
270
271#### Source
271#### Source
272
272
273−```
273+```hoon
274 ++ gth
274 ++ gth
275 ~/ %gth
275 ~/ %gth
276 |= [a=@ b=@]
276 |= [a=@ b=@]
@@ -311,7 +311,7 @@ A flag.
311
311
312#### Source
312#### Source
313
313
314−```
314+```hoon
315 ++ lte
315 ++ lte
316 ~/ %lte
316 ~/ %lte
317 |= [a=@ b=@]
317 |= [a=@ b=@]
@@ -368,7 +368,7 @@ A flag.
368
368
369#### Source
369#### Source
370
370
371−```
371+```hoon
372 ++ lth
372 ++ lth
373 ~/ %lth
373 ~/ %lth
374 |= [a=@ b=@]
374 |= [a=@ b=@]
@@ -426,7 +426,7 @@ An atom.
426
426
427#### Source
427#### Source
428
428
429−```
429+```hoon
430 ++ max
430 ++ max
431 ~/ %max
431 ~/ %max
432 |= [a=@ b=@]
432 |= [a=@ b=@]
@@ -482,7 +482,7 @@ An atom.
482
482
483#### Source
483#### Source
484
484
485−```
485+```hoon
486 ++ min
486 ++ min
487 ~/ %min
487 ~/ %min
488 |= [a=@ b=@]
488 |= [a=@ b=@]
@@ -536,7 +536,7 @@ An atom.
536
536
537#### Source
537#### Source
538
538
539−```
539+```hoon
540 ++ mod
540 ++ mod
541 ~/ %mod
541 ~/ %mod
542 |: [a=`@`1 b=`@`1]
542 |: [a=`@`1 b=`@`1]
@@ -587,7 +587,7 @@ An atom.
587
587
588#### Source
588#### Source
589
589
590−```
590+```hoon
591 ++ mul
591 ++ mul
592 ~/ %mul
592 ~/ %mul
593 |: [a=`@`1 b=`@`1]
593 |: [a=`@`1 b=`@`1]
@@ -638,7 +638,7 @@ An atom.
638
638
639#### Source
639#### Source
640
640
641−```
641+```hoon
642 ++ sub
642 ++ sub
643 ~/ %sub
643 ~/ %sub
644 |= [a=@ b=@]
644 |= [a=@ b=@]
reference/library/1b.md+4−4
@@ -3,7 +3,7 @@ title = "1b: Tree Addressing"
3weight = 2
3weight = 2
4template = "doc.html"
4template = "doc.html"
5+++
5+++
6−Check out the Nock [explanation](@/docs/learn/nock/_index.md) for more
6+Check out the Nock [explanation](@/docs/nock/_index.md) for more
7information on the tree-addressing system.
7information on the tree-addressing system.
8
8
9### `++cap`
9### `++cap`
@@ -25,7 +25,7 @@ A constant atom.
25
25
26#### Source
26#### Source
27
27
28−```
28+```hoon
29 ++ cap
29 ++ cap
30 ~/ %cap
30 ~/ %cap
31 |= a=@
31 |= a=@
@@ -82,7 +82,7 @@ An atom.
82
82
83#### Source
83#### Source
84
84
85−```
85+```hoon
86 ++ mas
86 ++ mas
87 ~/ %mas
87 ~/ %mas
88 |= a=@
88 |= a=@
@@ -184,7 +184,7 @@ An atom.
184
184
185#### Source
185#### Source
186
186
187−```
187+```hoon
188 ++ peg
188 ++ peg
189 ~/ %peg
189 ~/ %peg
190 |= [a=@ b=@]
190 |= [a=@ b=@]
reference/library/1c.md+13−13
@@ -11,7 +11,7 @@ Atom representing block size. A block of size `a` has a bitwidth of `2^a`.
11
11
12#### Source
12#### Source
13
13
14−```
14+```hoon
15 ++ bloq @
15 ++ bloq @
16```
16```
17
17
@@ -62,7 +62,7 @@ A `bloq` of 3 has a bitwidth of 8. (2^3 bits; can represent 256 values.)
62
62
63And so on.
63And so on.
64
64
65−See the [bit arithmetic](@/docs/reference/library/2c.md) section for operations that use `bloq`s.
65+See the [bit arithmetic](@/docs/hoon/library/2c.md) section for operations that use `bloq`s.
66
66
67---
67---
68
68
@@ -103,7 +103,7 @@ product noun. If used dryly as a type, the subject must have a sample type of
103
103
104#### Source
104#### Source
105
105
106−```
106+```hoon
107 ++ gate
107 ++ gate
108 $-(* *)
108 $-(* *)
109```
109```
@@ -142,7 +142,7 @@ homogenous type.
142
142
143#### Source
143#### Source
144
144
145−```
145+```hoon
146 ++ list
146 ++ list
147 |*(a=mold $@($~ (lest a)))
147 |*(a=mold $@($~ (lest a)))
148```
148```
@@ -176,7 +176,7 @@ A mold generator. Puts face of `p` on the passed-in mold.
176
176
177#### Source
177#### Source
178
178
179−```
179+```hoon
180 ++ lone
180 ++ lone
181 |*(a=mold [p=a])
181 |*(a=mold [p=a])
182```
182```
@@ -209,7 +209,7 @@ A mold generator. Produces a tuple of two of the types passed in.
209
209
210#### Source
210#### Source
211
211
212−```
212+```hoon
213 ++ pair
213 ++ pair
214 |*([a=mold b=mold] [p=a q=b])
214 |*([a=mold b=mold] [p=a q=b])
215```
215```
@@ -234,7 +234,7 @@ A mold generator. A `list` without the faces `i` and `t`.
234
234
235#### Source
235#### Source
236
236
237−```
237+```hoon
238 ++ pole
238 ++ pole
239 |*(a=mold $@($~ [a (pole a)]))
239 |*(a=mold $@($~ [a (pole a)]))
240```
240```
@@ -260,7 +260,7 @@ A mold generator. Produces a tuple of four of the types passed in.
260
260
261#### Source
261#### Source
262
262
263−```
263+```hoon
264 ++ qual
264 ++ qual
265 |* [a=mold b=mold c=mold d=mold]
265 |* [a=mold b=mold c=mold d=mold]
266 [p=a q=b r=c s=d]
266 [p=a q=b r=c s=d]
@@ -285,7 +285,7 @@ A mold generator. Produces a tuple of a `list` of `a` and the mold of `b`.
285
285
286#### Source
286#### Source
287
287
288−```
288+```hoon
289 ++ quip
289 ++ quip
290 |*([a=mold b=mold] [(list a) b])
290 |*([a=mold b=mold] [(list a) b])
291```
291```
@@ -314,7 +314,7 @@ A trap is a core with one arm `$`.
314
314
315#### Source
315#### Source
316
316
317−```
317+```hoon
318 ++ trap
318 ++ trap
319 |*(a=mold _|?(*a))
319 |*(a=mold _|?(*a))
320```
320```
@@ -343,7 +343,7 @@ left/right sub `tree` of the same type. Pretty-printed with `{}`.
343
343
344#### Source
344#### Source
345
345
346−```
346+```hoon
347 ++ tree
347 ++ tree
348 |*(a=mold $@($~ [n=a l=(tree a) r=(tree a)]))
348 |*(a=mold $@($~ [n=a l=(tree a) r=(tree a)]))
349```
349```
@@ -365,7 +365,7 @@ A mold generator. A mold of the tuple of the three types passed in.
365
365
366#### Source
366#### Source
367
367
368−```
368+```hoon
369 ++ trel
369 ++ trel
370 |*([a=mold b=mold c=mold] [p=a q=b r=c])
370 |*([a=mold b=mold c=mold] [p=a q=b r=c])
371```
371```
@@ -391,7 +391,7 @@ type that was passed in.
391
391
392#### Source
392#### Source
393
393
394−```
394+```hoon
395 ++ unit
395 ++ unit
396 |*(a=mold $@($~ [$~ u=a]))
396 |*(a=mold $@($~ [$~ u=a]))
397```
397```
reference/library/2a.md+11−11
@@ -22,7 +22,7 @@ A unit.
22
22
23#### Source
23#### Source
24
24
25−```
25+```hoon
26 ++ biff
26 ++ biff
27 |* [a=(unit) b=$-(* (unit))]
27 |* [a=(unit) b=$-(* (unit))]
28 ?~ a ~
28 ?~ a ~
@@ -61,7 +61,7 @@ A unit.
61
61
62#### Source
62#### Source
63
63
64−```
64+```hoon
65 ++ bind
65 ++ bind
66 |* [a=(unit) b=gate]
66 |* [a=(unit) b=gate]
67 ?~ a ~
67 ?~ a ~
@@ -101,7 +101,7 @@ Either the product of `a` or the value inside of unit `b`.
101
101
102#### Source
102#### Source
103
103
104−```
104+```hoon
105 ++ bond
105 ++ bond
106 |* a=(trap)
106 |* a=(trap)
107 |* b=(unit)
107 |* b=(unit)
@@ -143,7 +143,7 @@ A unit of the two initial values.
143
143
144#### Source
144#### Source
145
145
146−```
146+```hoon
147 ++ both
147 ++ both
148 |* [a=(unit) b=(unit)]
148 |* [a=(unit) b=(unit)]
149 ?~ a ~
149 ?~ a ~
@@ -183,7 +183,7 @@ A unit.
183
183
184#### Source
184#### Source
185
185
186−```
186+```hoon
187 ++ clap :: combine
187 ++ clap :: combine
188 |* [a=(unit) b=(unit) c=_|=(^ +<-)]
188 |* [a=(unit) b=(unit) c=_|=(^ +<-)]
189 ?~ a b
189 ?~ a b
@@ -225,7 +225,7 @@ A list.
225
225
226#### Source
226#### Source
227
227
228−```
228+```hoon
229 ++ drop :: enlist
229 ++ drop :: enlist
230 |* a=(unit)
230 |* a=(unit)
231 ?~ a ~
231 ?~ a ~
@@ -264,7 +264,7 @@ Either a noun `b` or the unwrapped value of unit `a`.
264
264
265#### Source
265#### Source
266
266
267−```
267+```hoon
268 ++ fall :: default
268 ++ fall :: default
269 |* [a=(unit) b=*]
269 |* [a=(unit) b=*]
270 ?~(a b u.a)
270 ?~(a b u.a)
@@ -300,7 +300,7 @@ A unit.
300
300
301#### Source
301#### Source
302
302
303−```
303+```hoon
304 ++ lift :: lift gate (fmap)
304 ++ lift :: lift gate (fmap)
305 |* a=gate :: flipped
305 |* a=gate :: flipped
306 |* b=(unit) :: curried
306 |* b=(unit) :: curried
@@ -341,7 +341,7 @@ A unit or crash.
341
341
342#### Source
342#### Source
343
343
344−```
344+```hoon
345 ++ mate :: choose
345 ++ mate :: choose
346 |* [a=(unit) b=(unit)]
346 |* [a=(unit) b=(unit)]
347 ?~ b a
347 ?~ b a
@@ -387,7 +387,7 @@ Either the unwrapped value of `a` (`u.a`), or crash.
387
387
388#### Source
388#### Source
389
389
390−```
390+```hoon
391 ++ need :: demand
391 ++ need :: demand
392 |* a=(unit)
392 |* a=(unit)
393 ?~ a ~|(%need !!)
393 ?~ a ~|(%need !!)
@@ -428,7 +428,7 @@ A unit.
428
428
429#### Source
429#### Source
430
430
431−```
431+```hoon
432 ++ some :: lift (pure)
432 ++ some :: lift (pure)
433 |* a=*
433 |* a=*
434 [~ u=a]
434 [~ u=a]
reference/library/2b.md+30−30
@@ -22,7 +22,7 @@ A `list`.
22
22
23#### Source
23#### Source
24
24
25−```
25+```hoon
26 ++ fand
26 ++ fand
27 ~/ %fand
27 ~/ %fand
28 |= [nedl=(list) hstk=(list)]
28 |= [nedl=(list) hstk=(list)]
@@ -77,7 +77,7 @@ The `unit` of an atom.
77
77
78#### Source
78#### Source
79
79
80−```
80+```hoon
81 ++ find
81 ++ find
82 ~/ %find
82 ~/ %find
83 |= [nedl=(list) hstk=(list)]
83 |= [nedl=(list) hstk=(list)]
@@ -130,7 +130,7 @@ A `list`.
130
130
131#### Source
131#### Source
132
132
133−```
133+```hoon
134 ++ flop
134 ++ flop
135 ~/ %flop
135 ~/ %flop
136 |* a=(list)
136 |* a=(list)
@@ -174,7 +174,7 @@ a `list`.
174
174
175#### Source
175#### Source
176
176
177−```
177+```hoon
178 ++ gulf
178 ++ gulf
179 |= [a=@ b=@]
179 |= [a=@ b=@]
180 ^- (list @)
180 ^- (list @)
@@ -210,7 +210,7 @@ a `list`.
210
210
211#### Source
211#### Source
212
212
213−```
213+```hoon
214 ++ homo
214 ++ homo
215 |* a=(list)
215 |* a=(list)
216 ^+ =< $
216 ^+ =< $
@@ -254,7 +254,7 @@ a `list`.
254
254
255#### Source
255#### Source
256
256
257−```
257+```hoon
258 ++ join
258 ++ join
259 |* [sep=* lit=(list)]
259 |* [sep=* lit=(list)]
260 =. sep `_?>(?=(^ lit) i.lit)`sep
260 =. sep `_?>(?=(^ lit) i.lit)`sep
@@ -293,7 +293,7 @@ an atom.
293
293
294#### Source
294#### Source
295
295
296−```
296+```hoon
297 ++ lent
297 ++ lent
298 ~/ %lent
298 ~/ %lent
299 |= a=(list)
299 |= a=(list)
@@ -334,7 +334,7 @@ A boolean.
334
334
335#### Source
335#### Source
336
336
337−```
337+```hoon
338 ++ levy
338 ++ levy
339 ~/ %levy :: all of
339 ~/ %levy :: all of
340 |* [a=(list) b=$-(* ?)]
340 |* [a=(list) b=$-(* ?)]
@@ -374,7 +374,7 @@ every element of `++list` `a`.
374
374
375#### Source
375#### Source
376
376
377−```
377+```hoon
378 ++ lien
378 ++ lien
379 ~/ %lien
379 ~/ %lien
380 |* [a=(list) b=$-(* ?)]
380 |* [a=(list) b=$-(* ?)]
@@ -414,7 +414,7 @@ A `++list`.
414
414
415#### Source
415#### Source
416
416
417−```
417+```hoon
418 ++ limo :: listify
418 ++ limo :: listify
419 |* a=*
419 |* a=*
420 ^+ =< $
420 ^+ =< $
@@ -452,7 +452,7 @@ A unit.
452
452
453#### Source
453#### Source
454
454
455−```
455+```hoon
456 ++ murn :: maybe transform
456 ++ murn :: maybe transform
457 ~/ %murn
457 ~/ %murn
458 |* [a=(list) b=$-(* (unit))]
458 |* [a=(list) b=$-(* (unit))]
@@ -491,7 +491,7 @@ A `++list`.
491
491
492#### Source
492#### Source
493
493
494−```
494+```hoon
495 ++ oust :: remove
495 ++ oust :: remove
496 ~/ %oust
496 ~/ %oust
497 |* [[a=@ b=@] c=(list)]
497 |* [[a=@ b=@] c=(list)]
@@ -528,7 +528,7 @@ A list.
528
528
529#### Source
529#### Source
530
530
531−```
531+```hoon
532 ++ reap :: replicate
532 ++ reap :: replicate
533 ~/ %reap
533 ~/ %reap
534 |* [a=@ b=*]
534 |* [a=@ b=*]
@@ -575,7 +575,7 @@ The accumulator, which is a noun.
575
575
576#### Source
576#### Source
577
577
578−```
578+```hoon
579 ++ reel
579 ++ reel
580 ~/ %reel
580 ~/ %reel
581 |* [a=(list) b=_|=([* *] +<+)]
581 |* [a=(list) b=_|=([* *] +<+)]
@@ -626,7 +626,7 @@ The accumulator, which is a noun.
626
626
627#### Source
627#### Source
628
628
629−```
629+```hoon
630 ++ roll :: left fold
630 ++ roll :: left fold
631 ~/ %roll
631 ~/ %roll
632 |* [a=(list) b=_|=([* *] +<+)]
632 |* [a=(list) b=_|=([* *] +<+)]
@@ -673,7 +673,7 @@ A list of the same type as `b`.
673
673
674#### Source
674#### Source
675
675
676−```
676+```hoon
677 ++ scag :: prefix
677 ++ scag :: prefix
678 ~/ %scag
678 ~/ %scag
679 |* [a=@ b=(list)]
679 |* [a=@ b=(list)]
@@ -716,7 +716,7 @@ A cell of two lists.
716
716
717#### Source
717#### Source
718
718
719−```
719+```hoon
720 ++ skid :: separate
720 ++ skid :: separate
721 ~/ %skid
721 ~/ %skid
722 |* [a=(list) b=$-(* ?)]
722 |* [a=(list) b=$-(* ?)]
@@ -757,7 +757,7 @@ A flag.
757
757
758#### Source
758#### Source
759
759
760−```
760+```hoon
761 ++ skim :: only
761 ++ skim :: only
762 ~/ %skim
762 ~/ %skim
763 |* [a=(list) b=$-(* ?)]
763 |* [a=(list) b=$-(* ?)]
@@ -796,7 +796,7 @@ A list of the same type as `a`.
796
796
797#### Source
797#### Source
798
798
799−```
799+```hoon
800 ++ skip :: except
800 ++ skip :: except
801 ~/ %skip
801 ~/ %skip
802 |* [a=(list) b=$-(* ?)]
802 |* [a=(list) b=$-(* ?)]
@@ -835,7 +835,7 @@ A list of the same type as `b`.
835
835
836#### Source
836#### Source
837
837
838−```
838+```hoon
839 ++ slag :: suffix
839 ++ slag :: suffix
840 ~/ %slag
840 ~/ %slag
841 |* [a=@ b=(list)]
841 |* [a=@ b=(list)]
@@ -875,7 +875,7 @@ Produces an element of `b`, or crashes if no element exists at that index.
875
875
876#### Source
876#### Source
877
877
878−```
878+```hoon
879 ++ snag :: index
879 ++ snag :: index
880 ~/ %snag
880 ~/ %snag
881 |* [a=@ b=(list)]
881 |* [a=@ b=(list)]
@@ -915,7 +915,7 @@ Produces a list of `b` appended to `a`.
915
915
916#### Source
916#### Source
917
917
918−```
918+```hoon
919 ++ snoc
919 ++ snoc
920 |* [a/(list) b/*]
920 |* [a/(list) b/*]
921 (weld a ^+(a [b]~))
921 (weld a ^+(a [b]~))
@@ -952,7 +952,7 @@ A list
952
952
953#### Source
953#### Source
954
954
955−```
955+```hoon
956 ++ sort !. :: quicksort
956 ++ sort !. :: quicksort
957 ~/ %sort
957 ~/ %sort
958 |* [a=(list) b=$-([* *] ?)]
958 |* [a=(list) b=$-([* *] ?)]
@@ -999,7 +999,7 @@ A list.
999
999
1000#### Source
1000#### Source
1001
1001
1002−```
1002+```hoon
1003 ++ spin
1003 ++ spin
1004 ~/ %spin
1004 ~/ %spin
1005 |* [a=(list) b=* c=_|=(^ [** +<+])]
1005 |* [a=(list) b=* c=_|=(^ [** +<+])]
@@ -1064,7 +1064,7 @@ A list.
1064
1064
1065#### Source
1065#### Source
1066
1066
1067−```
1067+```hoon
1068 ++ spun
1068 ++ spun
1069 ~/ %spun
1069 ~/ %spun
1070 |* [a=(list) b=_|=(^ [** +<+])]
1070 |* [a=(list) b=_|=(^ [** +<+])]
@@ -1107,7 +1107,7 @@ A list of the same type as `c`.
1107
1107
1108#### Source
1108#### Source
1109
1109
1110−```
1110+```hoon
1111 ++ swag
1111 ++ swag
1112 |* [[a=@ b=@] c=(list)]
1112 |* [[a=@ b=@] c=(list)]
1113 (scag +<-> (slag +<-< c))
1113 (scag +<-> (slag +<-< c))
@@ -1144,7 +1144,7 @@ A list.
1144
1144
1145#### Source
1145#### Source
1146
1146
1147−```
1147+```hoon
1148 ++ turn
1148 ++ turn
1149 ~/ %turn
1149 ~/ %turn
1150 |* [a=(list) b=gate]
1150 |* [a=(list) b=gate]
@@ -1181,7 +1181,7 @@ Concatenate two `++list`s `a` and `b`.
1181
1181
1182#### Source
1182#### Source
1183
1183
1184−```
1184+```hoon
1185 ++ weld
1185 ++ weld
1186 ~/ %weld
1186 ~/ %weld
1187 |* [a=(list) b=(list)]
1187 |* [a=(list) b=(list)]
@@ -1222,7 +1222,7 @@ A list.
1222
1222
1223#### Source
1223#### Source
1224
1224
1225−```
1225+```hoon
1226 ++ welp
1226 ++ welp
1227 =| [* *]
1227 =| [* *]
1228 |%
1228 |%
@@ -1267,7 +1267,7 @@ A list.
1267
1267
1268#### Source
1268#### Source
1269
1269
1270−```
1270+```hoon
1271 ++ zing
1271 ++ zing
1272 =| *
1272 =| *
1273 |%
1273 |%
reference/library/2c.md+37−37
@@ -19,7 +19,7 @@ An atom.
19
19
20#### Source
20#### Source
21
21
22−```
22+```hoon
23 ++ bex
23 ++ bex
24 ~/ %bex
24 ~/ %bex
25 |= a=@
25 |= a=@
@@ -52,7 +52,7 @@ value.
52
52
53#### Accepts
53#### Accepts
54
54
55−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
55+`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
56
56
57`b` is a `list` of length-value pairs, `p` and `q`.
57`b` is a `list` of length-value pairs, `p` and `q`.
58
58
@@ -62,7 +62,7 @@ An atom.
62
62
63#### Source
63#### Source
64
64
65−```
65+```hoon
66 ++ can
66 ++ can
67 ~/ %can
67 ~/ %can
68 |= [a=bloq b=(list [p=@ q=@])]
68 |= [a=bloq b=(list [p=@ q=@])]
@@ -109,7 +109,7 @@ atom.
109
109
110#### Accepts
110#### Accepts
111
111
112−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
112+`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
113
113
114`b` is an atom.
114`b` is an atom.
115
115
@@ -121,7 +121,7 @@ An atom.
121
121
122#### Source
122#### Source
123
123
124−```
124+```hoon
125 ++ cat
125 ++ cat
126 ~/ %cat
126 ~/ %cat
127 |= [a=bloq b=@ c=@]
127 |= [a=bloq b=@ c=@]
@@ -172,7 +172,7 @@ Slices `c` blocks of size `a` that are positioned `b` blocks from the end of
172
172
173#### Accepts
173#### Accepts
174
174
175−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
175+`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
176
176
177`b` is an atom.
177`b` is an atom.
178
178
@@ -186,7 +186,7 @@ An atom.
186
186
187#### Source
187#### Source
188
188
189−```
189+```hoon
190 ++ cut
190 ++ cut
191 ~/ %cut
191 ~/ %cut
192 |= [a=bloq [b=@u c=@u] d=@]
192 |= [a=bloq [b=@u c=@u] d=@]
@@ -231,7 +231,7 @@ Produces an atom by taking the last `b` blocks of size `a` from `c`.
231
231
232#### Accepts
232#### Accepts
233
233
234−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
234+`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
235
235
236`b` is an atom.
236`b` is an atom.
237
237
@@ -244,7 +244,7 @@ An atom.
244
244
245#### Source
245#### Source
246
246
247−```
247+```hoon
248 ++ end
248 ++ end
249 ~/ %end
249 ~/ %end
250 |= [a=bloq b=@u c=@]
250 |= [a=bloq b=@u c=@]
@@ -298,7 +298,7 @@ Produces an atom by repeating `c` for `b` blocks of size `a`.
298
298
299#### Accepts
299#### Accepts
300
300
301−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
301+`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
302
302
303`b` is an atom.
303`b` is an atom.
304
304
@@ -310,7 +310,7 @@ An atom.
310
310
311#### Source
311#### Source
312
312
313−```
313+```hoon
314 ++ fil
314 ++ fil
315 |= [a=bloq b=@u c=@]
315 |= [a=bloq b=@u c=@]
316 =+ n=0
316 =+ n=0
@@ -350,7 +350,7 @@ Produces an atom by left-shifting `c` by `b` blocks of size `a`.
350
350
351#### Accepts
351#### Accepts
352
352
353−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
353+`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
354
354
355`b` is an atom.
355`b` is an atom.
356
356
@@ -362,7 +362,7 @@ An atom.
362
362
363#### Source
363#### Source
364
364
365−```
365+```hoon
366 ++ lsh
366 ++ lsh
367 ~/ %lsh
367 ~/ %lsh
368 |= [a=bloq b=@u c=@]
368 |= [a=bloq b=@u c=@]
@@ -401,13 +401,13 @@ Computes the number of blocks of size `a` in `b`, producing an atom.
401
401
402#### Accepts
402#### Accepts
403
403
404−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
404+`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
405
405
406`b` is an atom.
406`b` is an atom.
407
407
408#### Source
408#### Source
409
409
410−```
410+```hoon
411 ++ met
411 ++ met
412 ~/ %met
412 ~/ %met
413 |= [a=bloq b=@]
413 |= [a=bloq b=@]
@@ -447,7 +447,7 @@ Concatenates a list of atoms `b` using block size `a`, producing an atom.
447
447
448#### Accepts
448#### Accepts
449
449
450−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
450+`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
451
451
452`b` is a `list` of atoms.
452`b` is a `list` of atoms.
453
453
@@ -457,7 +457,7 @@ An atom.
457
457
458#### Source
458#### Source
459
459
460−```
460+```hoon
461 ++ rap
461 ++ rap
462 ~/ %rap
462 ~/ %rap
463 |= [a=bloq b=(list @)]
463 |= [a=bloq b=(list @)]
@@ -508,7 +508,7 @@ Produces an atom by assembling a list of atoms `b` using block size `a`.
508
508
509#### Accepts
509#### Accepts
510
510
511−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
511+`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
512
512
513`b` is a list of atoms.
513`b` is a list of atoms.
514
514
@@ -518,7 +518,7 @@ An atom.
518
518
519#### Source
519#### Source
520
520
521−```
521+```hoon
522 ++ rep
522 ++ rep
523 ~/ %rep
523 ~/ %rep
524 |= [a=bloq b=(list @)]
524 |= [a=bloq b=(list @)]
@@ -573,7 +573,7 @@ Produces a list of atoms from the bits of `b` using block size `a`.
573
573
574#### Accepts
574#### Accepts
575
575
576−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
576+`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
577
577
578`b` is an atom.
578`b` is an atom.
579
579
@@ -583,7 +583,7 @@ A list of atoms.
583
583
584#### Source
584#### Source
585
585
586−```
586+```hoon
587 ++ rip
587 ++ rip
588 ~/ %rip
588 ~/ %rip
589 |= [a=bloq b=@]
589 |= [a=bloq b=@]
@@ -633,7 +633,7 @@ Right-shifts `c` by `b` blocks of size `a`, producing an atom.
633
633
634#### Accepts
634#### Accepts
635
635
636−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
636+`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
637
637
638`b` is an atom.
638`b` is an atom.
639
639
@@ -645,7 +645,7 @@ An atom.
645
645
646#### Source
646#### Source
647
647
648−```
648+```hoon
649 ++ rsh
649 ++ rsh
650 ~/ %rsh
650 ~/ %rsh
651 |= [a=bloq b=@u c=@]
651 |= [a=bloq b=@u c=@]
@@ -701,7 +701,7 @@ reversing the block order of `b` using block size `a`.
701
701
702#### Accepts
702#### Accepts
703
703
704−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
704+`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
705
705
706`b` is an atom.
706`b` is an atom.
707
707
@@ -711,7 +711,7 @@ An atom
711
711
712#### Source
712#### Source
713
713
714−```
714+```hoon
715 ++ swp |=([a=bloq b=@] (rep a (flop (rip a b))))
715 ++ swp |=([a=bloq b=@] (rep a (flop (rip a b))))
716```
716```
717
717
@@ -752,7 +752,7 @@ An atom.
752
752
753#### Source
753#### Source
754
754
755−```
755+```hoon
756 ++ xeb
756 ++ xeb
757 ~/ %xeb
757 ~/ %xeb
758 |= a=@
758 |= a=@
@@ -796,7 +796,7 @@ Core that contains arms for `bloq` and modular integer operations.
796
796
797#### Source
797#### Source
798
798
799−```
799+```hoon
800 |_ a=bloq
800 |_ a=bloq
801```
801```
802
802
@@ -820,7 +820,7 @@ A `@s`
820
820
821#### Source
821#### Source
822
822
823−```
823+```hoon
824 ++ dif |=([b=@ c=@] (sit (sub (add out (sit b)) (sit c))))
824 ++ dif |=([b=@ c=@] (sit (sub (add out (sit b)) (sit c))))
825```
825```
826
826
@@ -861,7 +861,7 @@ Inverts the order of the modular field.
861
861
862#### Accepts
862#### Accepts
863
863
864−`b` is a `bloq`. (see [`++bloq`](@/docs/reference/library/1c.md))
864+`b` is a `bloq`. (see [`++bloq`](@/docs/hoon/library/1c.md))
865
865
866#### Produces
866#### Produces
867
867
@@ -869,7 +869,7 @@ An atom.
869
869
870#### Source
870#### Source
871
871
872−```
872+```hoon
873 ++ inv |=(b=@ (sub (dec out) (sit b)))
873 ++ inv |=(b=@ (sub (dec out) (sit b)))
874```
874```
875
875
@@ -904,7 +904,7 @@ Reverses bytes within a block.
904
904
905#### Accepts
905#### Accepts
906
906
907−`b` is a `bloq`. (see [`++bloq`](@/docs/reference/library/1c.md))
907+`b` is a `bloq`. (see [`++bloq`](@/docs/hoon/library/1c.md))
908
908
909#### Produces
909#### Produces
910
910
@@ -912,7 +912,7 @@ An atom.
912
912
913#### Source
913#### Source
914
914
915−```
915+```hoon
916 ++ net |= b=@ ^- @
916 ++ net |= b=@ ^- @
917 => .(b (sit b))
917 => .(b (sit b))
918 ?: (lte a 3)
918 ?: (lte a 3)
@@ -1001,7 +1001,7 @@ An atom.
1001
1001
1002#### Source
1002#### Source
1003
1003
1004−```
1004+```hoon
1005 ++ out (bex (bex a))
1005 ++ out (bex (bex a))
1006```
1006```
1007
1007
@@ -1056,7 +1056,7 @@ An atom.
1056
1056
1057#### Source
1057#### Source
1058
1058
1059−```
1059+```hoon
1060 ++ rol |= [b=bloq c=@ d=@] ^- @
1060 ++ rol |= [b=bloq c=@ d=@] ^- @
1061 =+ e=(sit d)
1061 =+ e=(sit d)
1062 =+ f=(bex (sub a b))
1062 =+ f=(bex (sub a b))
@@ -1106,7 +1106,7 @@ An atom.
1106
1106
1107#### Source
1107#### Source
1108
1108
1109−```
1109+```hoon
1110 ++ ror |= [b=bloq c=@ d=@] ^- @
1110 ++ ror |= [b=bloq c=@ d=@] ^- @
1111 =+ e=(sit d)
1111 =+ e=(sit d)
1112 =+ f=(bex (sub a b))
1112 =+ f=(bex (sub a b))
@@ -1155,7 +1155,7 @@ An atom.
1155
1155
1156#### Source
1156#### Source
1157
1157
1158−```
1158+```hoon
1159 ++ sit |=(b=@ (end a 1 b))
1159 ++ sit |=(b=@ (end a 1 b))
1160```
1160```
1161
1161
@@ -1218,7 +1218,7 @@ An atom.
1218
1218
1219#### Source
1219#### Source
1220
1220
1221−```
1221+```hoon
1222 ++ sum |=([b=@ c=@] (sit (add b c)))
1222 ++ sum |=([b=@ c=@] (sit (add b c)))
1223```
1223```
1224
1224
reference/library/2d.md+6−6
@@ -21,7 +21,7 @@ An atom.
21
21
22#### Source
22#### Source
23
23
24−```
24+```hoon
25 ++ con
25 ++ con
26 ~/ %con
26 ~/ %con
27 |= [a=@ b=@]
27 |= [a=@ b=@]
@@ -116,7 +116,7 @@ An atom.
116
116
117#### Source
117#### Source
118
118
119−```
119+```hoon
120 ++ dis
120 ++ dis
121 ~/ %dis
121 ~/ %dis
122 |= [a=@ b=@]
122 |= [a=@ b=@]
@@ -204,7 +204,7 @@ An atom.
204
204
205#### Source
205#### Source
206
206
207−```
207+```hoon
208 ++ mix
208 ++ mix
209 ~/ %mix
209 ~/ %mix
210 |= [a=@ b=@]
210 |= [a=@ b=@]
@@ -280,7 +280,7 @@ of `c`.
280
280
281#### Accepts
281#### Accepts
282
282
283−`a` is a block size (see [`bloq`](@/docs/reference/library/1c.md)).
283+`a` is a block size (see [`bloq`](@/docs/hoon/library/1c.md)).
284
284
285`b` is an atom.
285`b` is an atom.
286
286
@@ -292,7 +292,7 @@ An atom.
292
292
293#### Source
293#### Source
294
294
295−```
295+```hoon
296 ++ not |= [a=bloq b=@ c=@]
296 ++ not |= [a=bloq b=@ c=@]
297 (mix c (dec (bex (mul b (bex a)))))
297 (mix c (dec (bex (mul b (bex a)))))
298```
298```
@@ -326,7 +326,7 @@ number's `0`s into `1`s, and vice versa.
326
326
327In Hoon, we ask for a little more information to use `not`, because binary
327In Hoon, we ask for a little more information to use `not`, because binary
328numbers have a number of implicit leading zeroes differently depending on on
328numbers have a number of implicit leading zeroes differently depending on on
329−their [block size](@/docs/reference/library/1c.md). Decimal `7`, for example, is `0b111` in binary, and
329+their [block size](@/docs/hoon/library/1c.md). Decimal `7`, for example, is `0b111` in binary, and
330has one implicit zero in the context of a block of size `2`, which has a
330has one implicit zero in the context of a block of size `2`, which has a
331bitwidth of 4. Let's try `not` on `7` with a single block of size `2`.
331bitwidth of 4. Let's try `not` on `7` with a single block of size `2`.
332
332
reference/library/2e.md+6−6
@@ -8,7 +8,7 @@ template = "doc.html"
8FNV scrambler
8FNV scrambler
9
9
10Hashes an atom with the 32-bit FNV non-cryptographic hash algorithm. Multiplies
10Hashes an atom with the 32-bit FNV non-cryptographic hash algorithm. Multiplies
11−`a` by the prime number 16,777,619 and then takes the [block](@/docs/reference/library/2c.md) of size
11+`a` by the prime number 16,777,619 and then takes the [block](@/docs/hoon/library/2c.md) of size
125 off the product's end, producing an atom.
125 off the product's end, producing an atom.
13
13
14#### Accepts
14#### Accepts
@@ -21,7 +21,7 @@ An atom.
21
21
22#### Source
22#### Source
23
23
24−```
24+```hoon
25 ++ fnv |=(a=@ (end 5 1 (mul 16.777.619 a)))
25 ++ fnv |=(a=@ (end 5 1 (mul 16.777.619 a)))
26```
26```
27
27
@@ -57,7 +57,7 @@ An atom.
57
57
58#### Source
58#### Source
59
59
60−```
60+```hoon
61 ++ mug
61 ++ mug
62 ~/ %mug
62 ~/ %mug
63 |= a=*
63 |= a=*
@@ -108,7 +108,7 @@ Standard MurmurHash3
108Implementation of the 32-bit
108Implementation of the 32-bit
109[MurmurHash3](https://en.wikipedia.org/wiki/MurmurHash#Algorithm)
109[MurmurHash3](https://en.wikipedia.org/wiki/MurmurHash#Algorithm)
110non-cryptographic hash algorithm. Takes `a` as the seed, `b` as the key length
110non-cryptographic hash algorithm. Takes `a` as the seed, `b` as the key length
111−in [blocks](@/docs/reference/library/2c.md) of size 3, and `c` as the key, producing an atom.
111+in [blocks](@/docs/hoon/library/2c.md) of size 3, and `c` as the key, producing an atom.
112
112
113#### Accepts
113#### Accepts
114
114
@@ -124,7 +124,7 @@ An atom.
124
124
125#### Source
125#### Source
126
126
127−```
127+```hoon
128 ++ muk
128 ++ muk
129 ~% %muk ..muk ~
129 ~% %muk ..muk ~
130 =+ ~(. fe 5)
130 =+ ~(. fe 5)
@@ -235,7 +235,7 @@ An atom.
235
235
236#### Source
236#### Source
237
237
238−```
238+```hoon
239 ++ mum
239 ++ mum
240 ~/ %mum
240 ~/ %mum
241 |= a=*
241 |= a=*
reference/library/2f.md+10−10
@@ -21,7 +21,7 @@ A flag.
21
21
22#### Source
22#### Source
23
23
24−```
24+```hoon
25 ++ aor
25 ++ aor
26 ~/ %aor
26 ~/ %aor
27 |= [a=* b=*]
27 |= [a=* b=*]
@@ -91,7 +91,7 @@ A flag.
91
91
92#### Source
92#### Source
93
93
94−```
94+```hoon
95 ++ dor
95 ++ dor
96 ~/ %dor
96 ~/ %dor
97 |= [a=* b=*]
97 |= [a=* b=*]
@@ -130,7 +130,7 @@ A flag.
130
130
131#### Discussion
131#### Discussion
132
132
133−If `a` and `b` are both atoms, `dor` is equivalent to [`lte`](@/docs/reference/library/1a.md). If they're
133+If `a` and `b` are both atoms, `dor` is equivalent to [`lte`](@/docs/hoon/library/1a.md). If they're
134cells, `dor` recurses on the heads, and then if the heads are the same it checks
134cells, `dor` recurses on the heads, and then if the heads are the same it checks
135the tails.
135the tails.
136
136
@@ -147,7 +147,7 @@ Computes whether of `(mug a)` and `(mug b)` are in ascending numeric order,
147producing a flag. If the `mug` hashes are equal, `a` and `b` are compared by
147producing a flag. If the `mug` hashes are equal, `a` and `b` are compared by
148`dor` instead.
148`dor` instead.
149
149
150−[`mug`](@/docs/reference/library/2e.md) is the the 31-bit nonzero FNV-1a hash algorithm.
150+[`mug`](@/docs/hoon/library/2e.md) is the the 31-bit nonzero FNV-1a hash algorithm.
151
151
152#### Accepts
152#### Accepts
153
153
@@ -161,7 +161,7 @@ A flag.
161
161
162#### Source
162#### Source
163
163
164−```
164+```hoon
165 ++ gor
165 ++ gor
166 ~/ %gor
166 ~/ %gor
167 |= [a=* b=*]
167 |= [a=* b=*]
@@ -242,7 +242,7 @@ A flag.
242
242
243#### Source
243#### Source
244
244
245−```
245+```hoon
246 ++ hor
246 ++ hor
247 ~/ %hor
247 ~/ %hor
248 |= [a=* b=*]
248 |= [a=* b=*]
@@ -296,7 +296,7 @@ A flag.
296#### Discussion
296#### Discussion
297
297
298Sets (+set, +in) use `hor` for their horizontal order and `vor` for their
298Sets (+set, +in) use `hor` for their horizontal order and `vor` for their
299−vertical order. See [`apt:in`](@/docs/reference/library/2h.md) to see how a set verifies its correctness.
299+vertical order. See [`apt:in`](@/docs/hoon/library/2h.md) to see how a set verifies its correctness.
300`vor` is used to verify.
300`vor` is used to verify.
301
301
302---
302---
@@ -319,7 +319,7 @@ A flag.
319
319
320#### Source
320#### Source
321
321
322−```
322+```hoon
323 ++ lor
323 ++ lor
324 ~/ %lor
324 ~/ %lor
325 |= [a=* b=*]
325 |= [a=* b=*]
@@ -377,7 +377,7 @@ Computes whether the double-hashes `(mug (mug a))` and `(mug (mug b))` are in
377ascending numeric order, producing a flag. If the double-`mug` hashes are
377ascending numeric order, producing a flag. If the double-`mug` hashes are
378equal, `a` and `b` are compared by `dor` instead.
378equal, `a` and `b` are compared by `dor` instead.
379
379
380−[`mug`](@/docs/reference/library/2e.md) is the the 31-bit nonzero FNV-1a hash algorithm.
380+[`mug`](@/docs/hoon/library/2e.md) is the the 31-bit nonzero FNV-1a hash algorithm.
381
381
382
382
383#### Accepts
383#### Accepts
@@ -392,7 +392,7 @@ A flag.
392
392
393#### Source
393#### Source
394
394
395−```
395+```hoon
396 ++ vor
396 ++ vor
397 ~/ %vor
397 ~/ %vor
398 |= [a=* b=*]
398 |= [a=* b=*]
reference/library/2g.md+2−2
@@ -19,7 +19,7 @@ An atom.
19
19
20#### Source
20#### Source
21
21
22−```
22+```hoon
23 ++ pow
23 ++ pow
24 ~/ %pow
24 ~/ %pow
25 |= [a=@ b=@]
25 |= [a=@ b=@]
@@ -64,7 +64,7 @@ A cell of atoms.
64
64
65#### Source
65#### Source
66
66
67−```
67+```hoon
68 ++ sqt
68 ++ sqt
69 ~/ %sqt
69 ~/ %sqt
70 |= a=@ ^- [p=@ q=@]
70 |= a=@ ^- [p=@ q=@]
reference/library/2h.md+19−19
@@ -16,7 +16,7 @@ A `set`.
16
16
17#### Source
17#### Source
18
18
19−```
19+```hoon
20 ++ in
20 ++ in
21 ~/ %in
21 ~/ %in
22 |_ a=(set)
22 |_ a=(set)
@@ -48,7 +48,7 @@ A flag.
48
48
49#### Source
49#### Source
50
50
51−```
51+```hoon
52 +- all
52 +- all
53 ~/ %all
53 ~/ %all
54 |* b=$-(* ?)
54 |* b=$-(* ?)
@@ -90,7 +90,7 @@ A flag.
90
90
91#### Source
91#### Source
92
92
93−```
93+```hoon
94 +- any
94 +- any
95 ~/ %any
95 ~/ %any
96 |* b=$-(* ?)
96 |* b=$-(* ?)
@@ -130,7 +130,7 @@ A flag.
130
130
131#### Source
131#### Source
132
132
133−```
133+```hoon
134 +- apt
134 +- apt
135 =| [l=(unit) r=(unit)]
135 =| [l=(unit) r=(unit)]
136 |- ^- ?
136 |- ^- ?
@@ -163,7 +163,7 @@ A flag.
163
163
164#### Discussion
164#### Discussion
165
165
166−See section [`2f`](@/docs/reference/library/2f.md) for more information on noun ordering.
166+See section [`2f`](@/docs/hoon/library/2f.md) for more information on noun ordering.
167
167
168---
168---
169### `+-bif:in`
169### `+-bif:in`
@@ -184,7 +184,7 @@ A cell of two sets.
184
184
185#### Source
185#### Source
186
186
187−```
187+```hoon
188 +- bif
188 +- bif
189 ~/ %bif
189 ~/ %bif
190 |* b=*
190 |* b=*
@@ -237,7 +237,7 @@ A set.
237
237
238#### Source
238#### Source
239
239
240−```
240+```hoon
241 +- del
241 +- del
242 ~/ %del
242 ~/ %del
243 |* b=*
243 |* b=*
@@ -292,7 +292,7 @@ A set.
292
292
293#### Source
293#### Source
294
294
295−```
295+```hoon
296 +- dif
296 +- dif
297 ~/ %dif
297 ~/ %dif
298 |* b=_a
298 |* b=_a
@@ -347,7 +347,7 @@ The `unit` of an atom.
347
347
348#### Source
348#### Source
349
349
350−```
350+```hoon
351 +- dig
351 +- dig
352 |= b=*
352 |= b=*
353 =+ c=1
353 =+ c=1
@@ -382,7 +382,7 @@ The `unit` of an atom.
382
382
383#### Discussion
383#### Discussion
384
384
385−For more on the tree addressing system, see section [1b](@/docs/reference/library/1b.md).
385+For more on the tree addressing system, see section [1b](@/docs/hoon/library/1b.md).
386
386
387---
387---
388### `+-gas:in`
388### `+-gas:in`
@@ -403,7 +403,7 @@ A `set`.
403
403
404#### Source
404#### Source
405
405
406−```
406+```hoon
407 +- gas
407 +- gas
408 ~/ %gas
408 ~/ %gas
409 |= b=(list _?>(?=(^ a) n.a))
409 |= b=(list _?>(?=(^ a) n.a))
@@ -447,7 +447,7 @@ A flag.
447
447
448#### Source
448#### Source
449
449
450−```
450+```hoon
451 +- has
451 +- has
452 ~/ %has
452 ~/ %has
453 |* b=*
453 |* b=*
@@ -492,7 +492,7 @@ A `set`.
492
492
493#### Source
493#### Source
494
494
495−```
495+```hoon
496 +- int
496 +- int
497 ~/ %int
497 ~/ %int
498 |* b=_a
498 |* b=_a
@@ -543,7 +543,7 @@ A `set`.
543
543
544#### Source
544#### Source
545
545
546−```
546+```hoon
547 +- put
547 +- put
548 ~/ %put
548 ~/ %put
549 |* b=*
549 |* b=*
@@ -596,7 +596,7 @@ A noun.
596
596
597#### Source
597#### Source
598
598
599−```
599+```hoon
600 +- rep :: replace by product
600 +- rep :: replace by product
601 |* b=_|=([* *] +<+)
601 |* b=_|=([* *] +<+)
602 |-
602 |-
@@ -635,7 +635,7 @@ A set.
635
635
636#### Source
636#### Source
637
637
638−```
638+```hoon
639 +- run
639 +- run
640 ~/ %run
640 ~/ %run
641 |* b=gate
641 |* b=gate
@@ -674,7 +674,7 @@ A list.
674
674
675#### Source
675#### Source
676
676
677−```
677+```hoon
678 +- tap
678 +- tap
679 ~/ %tap
679 ~/ %tap
680 |= b=(list _?>(?=(^ a) n.a))
680 |= b=(list _?>(?=(^ a) n.a))
@@ -716,7 +716,7 @@ A set.
716
716
717#### Source
717#### Source
718
718
719−```
719+```hoon
720 +- uni
720 +- uni
721 ~/ %uni
721 ~/ %uni
722 |* b=_a
722 |* b=_a
@@ -774,7 +774,7 @@ An atom.
774
774
775#### Source
775#### Source
776
776
777−```
777+```hoon
778 +- wyt :: size of set
778 +- wyt :: size of set
779 |- ^- @
779 |- ^- @
780 ?~(a 0 +((add $(a l.a) $(a r.a))))
780 ?~(a 0 +((add $(a l.a) $(a r.a))))
reference/library/2i.md+25−25
@@ -16,7 +16,7 @@ contained arms inherit its sample map, `a`.
16
16
17#### Source
17#### Source
18
18
19−```
19+```hoon
20 ++ by
20 ++ by
21 ~/ %by
21 ~/ %by
22 =| a=(tree (pair))
22 =| a=(tree (pair))
@@ -60,7 +60,7 @@ A flag.
60
60
61#### Source
61#### Source
62
62
63−```
63+```hoon
64 +- all
64 +- all
65 ~/ %all
65 ~/ %all
66 |* b=$-(* ?)
66 |* b=$-(* ?)
@@ -105,7 +105,7 @@ A flag.
105
105
106#### Source
106#### Source
107
107
108−```
108+```hoon
109 +- any
109 +- any
110 ~/ %any
110 ~/ %any
111 |* b=$-(* ?)
111 |* b=$-(* ?)
@@ -145,7 +145,7 @@ A flag.
145
145
146#### Source
146#### Source
147
147
148−```
148+```hoon
149 +- apt
149 +- apt
150 =| [l=(unit) r=(unit)]
150 =| [l=(unit) r=(unit)]
151 |- ^- ?
151 |- ^- ?
@@ -175,7 +175,7 @@ A flag.
175
175
176#### Discussion
176#### Discussion
177
177
178−See section [`2f`](@/docs/reference/library/2f.md) for more information on noun ordering.
178+See section [`2f`](@/docs/hoon/library/2f.md) for more information on noun ordering.
179
179
180### `+-bif:by`
180### `+-bif:by`
181
181
@@ -197,7 +197,7 @@ A cell of two maps.
197
197
198#### Source
198#### Source
199
199
200−```
200+```hoon
201 +- bif
201 +- bif
202 ~/ %bif
202 ~/ %bif
203 |* [b=* c=*]
203 |* [b=* c=*]
@@ -244,7 +244,7 @@ A map.
244
244
245#### Source
245#### Source
246
246
247−```
247+```hoon
248 +- def
248 +- def
249 |* b=_a
249 |* b=_a
250 ^- (map _p:node (pair (unit _q:node) (unit _q:node)))
250 ^- (map _p:node (pair (unit _q:node) (unit _q:node)))
@@ -271,7 +271,7 @@ A cell of maps.
271
271
272#### Source
272#### Source
273
273
274−```
274+```hoon
275 +- dep
275 +- dep
276 |* b=_a
276 |* b=_a
277 ^+ [p=a q=a]
277 ^+ [p=a q=a]
@@ -309,7 +309,7 @@ A map.
309
309
310#### Source
310#### Source
311
311
312−```
312+```hoon
313 +- del
313 +- del
314 ~/ %del
314 ~/ %del
315 |* b=*
315 |* b=*
@@ -355,7 +355,7 @@ A unit.
355
355
356#### Source
356#### Source
357
357
358−```
358+```hoon
359 +- dig
359 +- dig
360 |= b=*
360 |= b=*
361 =+ c=1
361 =+ c=1
@@ -394,7 +394,7 @@ A map.
394
394
395#### Source
395#### Source
396
396
397−```
397+```hoon
398 +- gas
398 +- gas
399 ~/ %gas
399 ~/ %gas
400 |* b=(list [p=* q=*])
400 |* b=(list [p=* q=*])
@@ -434,7 +434,7 @@ A unit.
434
434
435#### Source
435#### Source
436
436
437−```
437+```hoon
438 +- get
438 +- get
439 ~/ %get
439 ~/ %get
440 |= b=*
440 |= b=*
@@ -482,7 +482,7 @@ A noun.
482
482
483#### Source
483#### Source
484
484
485−```
485+```hoon
486 +- got
486 +- got
487 |* b=*
487 |* b=*
488 (need (get b))
488 (need (get b))
@@ -521,7 +521,7 @@ A flag.
521
521
522#### Source
522#### Source
523
523
524−```
524+```hoon
525 +- has
525 +- has
526 ~/ %has
526 ~/ %has
527 |* b=*
527 |* b=*
@@ -560,7 +560,7 @@ A map.
560
560
561#### Source
561#### Source
562
562
563−```
563+```hoon
564 +- int
564 +- int
565 ~/ %int
565 ~/ %int
566 |* b=_a
566 |* b=_a
@@ -632,7 +632,7 @@ A map.
632
632
633#### Assert and Add
633#### Assert and Add
634
634
635−```
635+```hoon
636 +- mar
636 +- mar
637 |* [b=_?>(?=(^ a) p.n.a) c=(unit ,_?>(?=(^ a) q.n.a))]
637 |* [b=_?>(?=(^ a) p.n.a) c=(unit ,_?>(?=(^ a) q.n.a))]
638 ?~ c
638 ?~ c
@@ -675,7 +675,7 @@ A map.
675
675
676#### Source
676#### Source
677
677
678−```
678+```hoon
679 +- put
679 +- put
680 ~/ %put
680 ~/ %put
681 |* [b=* c=*]
681 |* [b=* c=*]
@@ -736,7 +736,7 @@ A noun.
736
736
737#### Source
737#### Source
738
738
739−```
739+```hoon
740 +- rep
740 +- rep
741 |* b=_|=([* *] +<+)
741 |* b=_|=([* *] +<+)
742 |-
742 |-
@@ -771,7 +771,7 @@ A cell of nouns.
771
771
772#### Source
772#### Source
773
773
774−```
774+```hoon
775 +- rib
775 +- rib
776 |* [b=* c=gate]
776 |* [b=* c=gate]
777 |- ^+ [b a]
777 |- ^+ [b a]
@@ -811,7 +811,7 @@ A map.
811
811
812#### Source
812#### Source
813
813
814−```
814+```hoon
815 +- run
815 +- run
816 |* b=gate
816 |* b=gate
817 |-
817 |-
@@ -850,7 +850,7 @@ A map.
850
850
851#### Source
851#### Source
852
852
853−```
853+```hoon
854 +- rut
854 +- rut
855 |* b=gate
855 |* b=gate
856 |-
856 |-
@@ -884,7 +884,7 @@ A list.
884
884
885#### Source
885#### Source
886
886
887−```
887+```hoon
888 +- tap
888 +- tap
889 =< $
889 =< $
890 ~/ %tap
890 ~/ %tap
@@ -929,7 +929,7 @@ A map.
929
929
930#### Source
930#### Source
931
931
932−```
932+```hoon
933 +- uni
933 +- uni
934 ~/ %uni
934 ~/ %uni
935 |* b=_a
935 |* b=_a
@@ -990,7 +990,7 @@ A noun.
990
990
991#### Source
991#### Source
992
992
993−```
993+```hoon
994 +- urn
994 +- urn
995 |* b=$-({* *} *)
995 |* b=$-({* *} *)
996 |-
996 |-
@@ -1032,7 +1032,7 @@ An atom.
1032
1032
1033#### Source
1033#### Source
1034
1034
1035−```
1035+```hoon
1036 +- wyt
1036 +- wyt
1037 |- ^- @
1037 |- ^- @
1038 ?~(a 0 +((add $(a l.a) $(a r.a))))
1038 ?~(a 0 +((add $(a l.a) $(a r.a))))
reference/library/2j.md+8−8
@@ -7,7 +7,7 @@ template = "doc.html"
7
7
8Jar engine
8Jar engine
9
9
10−```
10+```hoon
11 |_ a=(jar)
11 |_ a=(jar)
12```
12```
13
13
@@ -26,7 +26,7 @@ A container arm for `++jar` operation arms. A `++jar` is a `++map` of
26
26
27Grab value by key
27Grab value by key
28
28
29−```
29+```hoon
30 +- get :: gets list by key
30 +- get :: gets list by key
31 |* b=*
31 |* b=*
32 =+ c=(~(get by a) b)
32 =+ c=(~(get by a) b)
@@ -67,7 +67,7 @@ Prepend to list
67
67
68#### Source
68#### Source
69
69
70−```
70+```hoon
71 +- add :: adds key-list pair
71 +- add :: adds key-list pair
72 |* [b=* c=*]
72 |* [b=* c=*]
73 =+ d=(get b)
73 =+ d=(get b)
@@ -108,7 +108,7 @@ Prepend to list
108
108
109Jug operations
109Jug operations
110
110
111−```
111+```hoon
112 ++ ju :: jug engine
112 ++ ju :: jug engine
113 |/ a=(jug)
113 |/ a=(jug)
114```
114```
@@ -130,7 +130,7 @@ Remove
130
130
131#### Source
131#### Source
132
132
133−```
133+```hoon
134 +- del :: del key-set pair
134 +- del :: del key-set pair
135 |* [b=* c=*]
135 |* [b=* c=*]
136 ^+ a
136 ^+ a
@@ -168,7 +168,7 @@ removed.
168
168
169Retrieve set
169Retrieve set
170
170
171−```
171+```hoon
172 +- get :: gets set by key
172 +- get :: gets set by key
173 |* b=*
173 |* b=*
174 =+ c=(~(get by a) b)
174 =+ c=(~(get by a) b)
@@ -198,7 +198,7 @@ Produces a set retrieved from jar `a` using key `b`.
198
198
199Check contents
199Check contents
200
200
201−```
201+```hoon
202 +- has :: existence check
202 +- has :: existence check
203 |* [b=* c=*]
203 |* [b=* c=*]
204 ^- ?
204 ^- ?
@@ -237,7 +237,7 @@ with jar `a`. Produces a loobean.
237
237
238Add key-set pair
238Add key-set pair
239
239
240−```
240+```hoon
241 +- put
241 +- put
242 |* {b=* c=*}
242 |* {b=* c=*}
243 ^+ a
243 ^+ a
reference/library/2k.md+10−10
@@ -17,7 +17,7 @@ sample queue.
17
17
18#### Source
18#### Source
19
19
20−```
20+```hoon
21 ++ to
21 ++ to
22 |_ a=(tree)
22 |_ a=(tree)
23```
23```
@@ -46,7 +46,7 @@ A queue.
46
46
47#### Source
47#### Source
48
48
49−```
49+```hoon
50 +- bal
50 +- bal
51 |- ^+ a
51 |- ^+ a
52 ?~ a ~
52 ?~ a ~
@@ -90,7 +90,7 @@ An atom.
90
90
91#### Source
91#### Source
92
92
93−```
93+```hoon
94 +- dep
94 +- dep
95 |- ^- @
95 |- ^- @
96 ?~ a 0
96 ?~ a 0
@@ -138,7 +138,7 @@ A queue.
138
138
139#### Source
139#### Source
140
140
141−```
141+```hoon
142 +- gas
142 +- gas
143 |= b=(list _?>(?=(^ a) n.a))
143 |= b=(list _?>(?=(^ a) n.a))
144 |- ^+ a
144 |- ^+ a
@@ -174,7 +174,7 @@ A cell of the last element in `a` along with the rest of queue `a`.
174
174
175#### Source
175#### Source
176
176
177−```
177+```hoon
178 +- get
178 +- get
179 |- ^+ ?>(?=(^ a) [p=n.a q=*(tree _n.a)])
179 |- ^+ ?>(?=(^ a) [p=n.a q=*(tree _n.a)])
180 ?~ a
180 ?~ a
@@ -216,7 +216,7 @@ A queue.
216
216
217#### Source
217#### Source
218
218
219−```
219+```hoon
220 +- nap
220 +- nap
221 ?> ?=(^ a)
221 ?> ?=(^ a)
222 ?~ l.a r.a
222 ?~ l.a r.a
@@ -263,7 +263,7 @@ A queue.
263
263
264#### Source
264#### Source
265
265
266−```
266+```hoon
267 +- nip
267 +- nip
268 |- ^+ a
268 |- ^+ a
269 ?~ a ~
269 ?~ a ~
@@ -305,7 +305,7 @@ A queue.
305
305
306#### Source
306#### Source
307
307
308−```
308+```hoon
309 +- put
309 +- put
310 |* b=*
310 |* b=*
311 |- ^+ a
311 |- ^+ a
@@ -339,7 +339,7 @@ A list.
339
339
340#### Source
340#### Source
341
341
342−```
342+```hoon
343 +- tap
343 +- tap
344 =| b=(list _?>(?=(^ a) n.a))
344 =| b=(list _?>(?=(^ a) n.a))
345 |- ^+ b
345 |- ^+ b
@@ -376,7 +376,7 @@ A unit.
376
376
377#### Source
377#### Source
378
378
379−```
379+```hoon
380 +- top
380 +- top
381 |- ^- (unit _?>(?=(^ a) n.a))
381 |- ^- (unit _?>(?=(^ a) n.a))
382 ?~ a ~
382 ?~ a ~
reference/library/2l.md+3−3
@@ -19,7 +19,7 @@ A map.
19
19
20#### Source
20#### Source
21
21
22−```
22+```hoon
23:- :~ navhome/'/docs/'
23:- :~ navhome/'/docs/'
24 sort/'14'
24 sort/'14'
25 title/'2k: Jar and Jug Logic'
25 title/'2k: Jar and Jug Logic'
@@ -55,7 +55,7 @@ A map.
55
55
56#### Source
56#### Source
57
57
58−```
58+```hoon
59 ++ molt
59 ++ molt
60 |* a=(list (pair))
60 |* a=(list (pair))
61 (~(gas by `(tree [p=_p.i.-.a q=_q.i.-.a})`~) a)
61 (~(gas by `(tree [p=_p.i.-.a q=_q.i.-.a})`~) a)
@@ -93,7 +93,7 @@ A set.
93
93
94#### Source
94#### Source
95
95
96−```
96+```hoon
97 ++ silt
97 ++ silt
98 |* a=(list)
98 |* a=(list)
99 =+ b=*(tree _?>(?=(^ a) i.a))
99 =+ b=*(tree _?>(?=(^ a) i.a))
reference/library/2m.md+12−12
@@ -19,7 +19,7 @@ A `list`.
19
19
20#### Source
20#### Source
21
21
22−```
22+```hoon
23 ++ ly
23 ++ ly
24 le:nl
24 le:nl
25```
25```
@@ -34,7 +34,7 @@ A `list`.
34 ~['a' 'b' 'c']
34 ~['a' 'b' 'c']
35```
35```
36
36
37−#### Discussion.
37+#### Discussion
38
38
39`ly` is an alias for `le:nl`.
39`ly` is an alias for `le:nl`.
40
40
@@ -55,7 +55,7 @@ A `map`.
55
55
56#### Source
56#### Source
57
57
58−```
58+```hoon
59 ++ my
59 ++ my
60 my:nl
60 my:nl
61```
61```
@@ -67,7 +67,7 @@ A `map`.
67 [n=[p='b' q=2] l={[p='a' q=1]} r={}]
67 [n=[p='b' q=2] l={[p='a' q=1]} r={}]
68```
68```
69
69
70−#### Discussion.
70+#### Discussion
71
71
72`my` is an alias for `my:nl`.
72`my` is an alias for `my:nl`.
73
73
@@ -88,7 +88,7 @@ A `set`.
88
88
89#### Source
89#### Source
90
90
91−```
91+```hoon
92 ++ sy
92 ++ sy
93 si:nl
93 si:nl
94```
94```
@@ -106,7 +106,7 @@ A `set`.
106 [n='b' l={'a' 'c'} r={}]
106 [n='b' l={'a' 'c'} r={}]
107```
107```
108
108
109−#### Discussion.
109+#### Discussion
110
110
111`sy` is an alias for `si:nl`.
111`sy` is an alias for `si:nl`.
112
112
@@ -120,7 +120,7 @@ nouns.
120
120
121#### Source
121#### Source
122
122
123−```
123+```hoon
124 ++ nl
124 ++ nl
125 |%
125 |%
126```
126```
@@ -142,7 +142,7 @@ A list.
142
142
143#### Source
143#### Source
144
144
145−```
145+```hoon
146 ++ le
146 ++ le
147 |* a=(list)
147 |* a=(list)
148 ^+ =< $
148 ^+ =< $
@@ -179,7 +179,7 @@ A map.
179
179
180#### Source
180#### Source
181
181
182−```
182+```hoon
183 ++ my
183 ++ my
184 |* a=(list (pair))
184 |* a=(list (pair))
185 => .(a ^+((le a) a))
185 => .(a ^+((le a) a))
@@ -210,7 +210,7 @@ A set.
210
210
211#### Source
211#### Source
212
212
213−```
213+```hoon
214 ++ si
214 ++ si
215 |* a=(list)
215 |* a=(list)
216 => .(a ^+((le a) a))
216 => .(a ^+((le a) a))
@@ -244,7 +244,7 @@ A noun.
244
244
245#### Sources
245#### Sources
246
246
247−```
247+```hoon
248 ++ snag
248 ++ snag
249 |* [a=@ b=(list)]
249 |* [a=@ b=(list)]
250 ?~ b
250 ?~ b
@@ -285,7 +285,7 @@ A list.
285
285
286#### Source
286#### Source
287
287
288−```
288+```hoon
289 ++ weld
289 ++ weld
290 |* [a=(list) b=(list)]
290 |* [a=(list) b=(list)]
291 => .(a ^+((le a) a), b ^+((le b) b))
291 => .(a ^+((le a) a), b ^+((le b) b))
reference/library/2n.md+12−12
@@ -17,7 +17,7 @@ Build `f` such that `(f x) .= (b (a x))`.
17
17
18#### Source
18#### Source
19
19
20−```
20+```hoon
21 ++ cork |*([a=_|=(* **) b=gate] (corl b a))
21 ++ cork |*([a=_|=(* **) b=gate] (corl b a))
22```
22```
23
23
@@ -50,7 +50,7 @@ Build `f` such that
50
50
51#### Source
51#### Source
52
52
53−```
53+```hoon
54 ++ corl
54 ++ corl
55 |* [a=gate b=_|=(* **)]
55 |* [a=gate b=_|=(* **)]
56 =< +:|.((a (b))) :: span check
56 =< +:|.((a (b))) :: span check
@@ -84,7 +84,7 @@ A gate.
84
84
85#### Source
85#### Source
86
86
87−```
87+```hoon
88 ++ curr
88 ++ curr
89 |* [a=_|=(^ **) c=*}
89 |* [a=_|=(^ **) c=*}
90 |* b=_+<+.a
90 |* b=_+<+.a
@@ -121,7 +121,7 @@ A gate.
121
121
122#### Source
122#### Source
123
123
124−```
124+```hoon
125 ++ cury
125 ++ cury
126 |* [a=_|=(^ **) b=*}
126 |* [a=_|=(^ **) b=*}
127 |* c=_+<+.a
127 |* c=_+<+.a
@@ -149,7 +149,7 @@ not.
149
149
150#### Source
150#### Source
151
151
152−```
152+```hoon
153 ++ hard
153 ++ hard
154 |* han=gate
154 |* han=gate
155 |= fud=* ^- han
155 |= fud=* ^- han
@@ -183,7 +183,7 @@ is not.
183
183
184#### Source
184#### Source
185
185
186−```
186+```hoon
187 ++ soft
187 ++ soft
188 |* han=gate
188 |* han=gate
189 |= fud=* ^- (unit han)
189 |= fud=* ^- (unit han)
@@ -228,7 +228,7 @@ An atom.
228
228
229#### Source
229#### Source
230
230
231−```
231+```hoon
232 ++ head |*(^ ,:+<-)
232 ++ head |*(^ ,:+<-)
233```
233```
234
234
@@ -262,7 +262,7 @@ A noun.
262
262
263#### Source
263#### Source
264
264
265−```
265+```hoon
266 ++ same |*(* +<)
266 ++ same |*(* +<)
267```
267```
268
268
@@ -297,7 +297,7 @@ A `tang`.
297
297
298#### Source
298#### Source
299
299
300−```
300+```hoon
301 ++ slog
301 ++ slog
302 =| pri=@
302 =| pri=@
303 |= a=tang ^+ same
303 |= a=tang ^+ same
@@ -334,7 +334,7 @@ A crash.
334
334
335#### Source
335#### Source
336
336
337−```
337+```hoon
338 ++ mean
338 ++ mean
339 |= a=tang
339 |= a=tang
340 ^+ !!
340 ^+ !!
@@ -367,7 +367,7 @@ A noun.
367
367
368#### Source
368#### Source
369
369
370−```
370+```hoon
371 ++ tail |*(^ ,:+<+)
371 ++ tail |*(^ ,:+<+)
372```
372```
373
373
@@ -403,7 +403,7 @@ A flag.
403
403
404#### Source
404#### Source
405
405
406−```
406+```hoon
407 ++ test |=(^ =(+<- +<+))
407 ++ test |=(^ =(+<- +<+))
408```
408```
409
409
reference/library/2o.md+10−10
@@ -9,7 +9,7 @@ Mold generator. A `jar` is a `map` of `list`.
9
9
10#### Source
10#### Source
11
11
12−```
12+```hoon
13 ++ jar |*([a=mold b=mold] (map a (list b)))
13 ++ jar |*([a=mold b=mold] (map a (list b)))
14```
14```
15
15
@@ -37,7 +37,7 @@ Mold generator. A `jar` is a `map` of `list`.
37
37
38#### Discussion
38#### Discussion
39
39
40−See also: [`ja`](@/docs/reference/library/2j.md), [`by`](@/docs/reference/library/2i.md), [`map`](@/docs/reference/library/2i.md), [`list`](@/docs/reference/library/2b.md)
40+See also: [`ja`](@/docs/hoon/library/2j.md), [`by`](@/docs/hoon/library/2i.md), [`map`](@/docs/hoon/library/2i.md), [`list`](@/docs/hoon/library/2b.md)
41
41
42---
42---
43### `++jug`
43### `++jug`
@@ -46,7 +46,7 @@ Mold generator. A `jug` is a `map` of `set`.
46
46
47#### Source
47#### Source
48
48
49−```
49+```hoon
50 ++ jug |*([a=mold b=mold] (map a (set b)))
50 ++ jug |*([a=mold b=mold] (map a (set b)))
51```
51```
52
52
@@ -77,7 +77,7 @@ Mold generator. A `jug` is a `map` of `set`.
77
77
78#### Discussion
78#### Discussion
79
79
80−See also: [`ja`](@/docs/reference/library/2j.md), [`by`](@/docs/reference/library/2i.md), [`set`](@/docs/reference/library/2h.md)
80+See also: [`ja`](@/docs/hoon/library/2j.md), [`by`](@/docs/hoon/library/2i.md), [`set`](@/docs/hoon/library/2h.md)
81
81
82---
82---
83### `++map`
83### `++map`
@@ -90,7 +90,7 @@ key-value pairs.
90
90
91#### Source
91#### Source
92
92
93−```
93+```hoon
94 ++ map |* [a=mold b=mold]
94 ++ map |* [a=mold b=mold]
95 %+ cork (tree (pair a b))
95 %+ cork (tree (pair a b))
96 |= c=(tree (pair a b)) ^+ c
96 |= c=(tree (pair a b)) ^+ c
@@ -110,7 +110,7 @@ key-value pairs.
110
110
111#### Discussion
111#### Discussion
112
112
113−See also: [`by`](@/docs/reference/library/2i.md)
113+See also: [`by`](@/docs/hoon/library/2i.md)
114
114
115---
115---
116### `++qeu`
116### `++qeu`
@@ -122,7 +122,7 @@ items.
122
122
123#### Source
123#### Source
124
124
125−```
125+```hoon
126 ++ qeu |*(a=mold (tree a))
126 ++ qeu |*(a=mold (tree a))
127```
127```
128
128
@@ -147,7 +147,7 @@ items.
147
147
148#### Discussion
148#### Discussion
149
149
150−See also: [`qeu`](@/docs/reference/library/2k.md)
150+See also: [`qeu`](@/docs/hoon/library/2k.md)
151
151
152---
152---
153### `++set`
153### `++set`
@@ -159,7 +159,7 @@ items.
159
159
160#### Source
160#### Source
161
161
162−```
162+```hoon
163 ++ set |* a=mold
163 ++ set |* a=mold
164 %+ cork (tree a)
164 %+ cork (tree a)
165 |= b=(tree a) ^+ b
165 |= b=(tree a) ^+ b
@@ -181,6 +181,6 @@ items.
181
181
182#### Discussion
182#### Discussion
183
183
184−See also: [`in`](@/docs/reference/library/2h.md)
184+See also: [`in`](@/docs/hoon/library/2h.md)
185
185
186---
186---
reference/library/2p.md+4−4
@@ -19,7 +19,7 @@ A noun.
19
19
20#### Source
20#### Source
21
21
22−```
22+```hoon
23 ++ cue
23 ++ cue
24 ~/ %cue
24 ~/ %cue
25 |= a=@
25 |= a=@
@@ -74,7 +74,7 @@ An atom.
74
74
75#### Source
75#### Source
76
76
77−```
77+```hoon
78 ++ jam
78 ++ jam
79 ~/ %jam
79 ~/ %jam
80 |= a=*
80 |= a=*
@@ -139,7 +139,7 @@ A cell of two atoms.
139
139
140#### Source
140#### Source
141
141
142−```
142+```hoon
143 ++ mat
143 ++ mat
144 ~/ %mat
144 ~/ %mat
145 |= a=@
145 |= a=@
@@ -203,7 +203,7 @@ A cell of two atoms.
203
203
204#### Source
204#### Source
205
205
206−```
206+```hoon
207 ++ rub
207 ++ rub
208 ~/ %rub
208 ~/ %rub
209 |= [a=@ b=@]
209 |= [a=@ b=@]
reference/library/2q.md+13−13
@@ -13,7 +13,7 @@ consume `tape`s, which are lists of `char`.
13
13
14#### Source
14#### Source
15
15
16−```
16+```hoon
17 ++ char @tD
17 ++ char @tD
18```
18```
19
19
@@ -37,7 +37,7 @@ atom of UTF-8 text.
37
37
38#### Source
38#### Source
39
39
40−```
40+```hoon
41 ++ cord @t
41 ++ cord @t
42```
42```
43
43
@@ -65,7 +65,7 @@ atom of UTF-8 text.
65Aura `@t` designates a Unicode atom, little-endian: the first character
65Aura `@t` designates a Unicode atom, little-endian: the first character
66in the text is the least-significant byte.
66in the text is the least-significant byte.
67
67
68−[`trip`](@/docs/reference/library/4b.md) converts from `cord` to `tape`, and [`crip`](@/docs/reference/library/4b.md) converts
68+[`trip`](@/docs/hoon/library/4b.md) converts from `cord` to `tape`, and [`crip`](@/docs/hoon/library/4b.md) converts
69from `tape` to `cord`.
69from `tape` to `cord`.
70
70
71
71
@@ -80,7 +80,7 @@ which is a day atom and a time.
80
80
81#### Source
81#### Source
82
82
83−```
83+```hoon
84 ++ date [[a=? y=@ud] m=@ud t=tarp]
84 ++ date [[a=? y=@ud] m=@ud t=tarp]
85```
85```
86
86
@@ -100,7 +100,7 @@ which is a day atom and a time.
100
100
101#### Discussion
101#### Discussion
102
102
103−See also: [`year`](@/docs/reference/library/3c.md), [`yore`](@/docs/reference/library/3c.md)
103+See also: [`year`](@/docs/hoon/library/3c.md), [`yore`](@/docs/hoon/library/3c.md)
104
104
105---
105---
106### `++knot`
106### `++knot`
@@ -111,7 +111,7 @@ An atom type that only permits ASCII characters.
111
111
112#### Source
112#### Source
113
113
114−```
114+```hoon
115
115
116 ++ knot @ta
116 ++ knot @ta
117```
117```
@@ -136,7 +136,7 @@ traces.
136
136
137#### Source
137#### Source
138
138
139−```
139+```hoon
140 ++ tang (list tank)
140 ++ tang (list tank)
141```
141```
142
142
@@ -172,7 +172,7 @@ without back-steps at new lines.
172
172
173#### Source
173#### Source
174
174
175−```
175+```hoon
176 ++ tank $% [$leaf p=tape]
176 ++ tank $% [$leaf p=tape]
177 $: $palm
177 $: $palm
178 p=[p=tape q=tape r=tape s=tape]
178 p=[p=tape q=tape r=tape s=tape]
@@ -226,7 +226,7 @@ One of Hoon's two string types, the other being `++cord`. A tape is a list of
226
226
227#### Source
227#### Source
228
228
229−```
229+```hoon
230 ++ tape (list @tD)
230 ++ tape (list @tD)
231```
231```
232
232
@@ -259,7 +259,7 @@ for precision.
259
259
260#### Source
260#### Source
261
261
262−```
262+```hoon
263 ++ tarp [d=@ud h=@ud m=@ud s=@ud f=(list @ux)]
263 ++ tarp [d=@ud h=@ud m=@ud s=@ud f=(list @ux)]
264```
264```
265
265
@@ -294,7 +294,7 @@ special syntax, `$`.
294
294
295#### Source
295#### Source
296
296
297−```
297+```hoon
298 ++ term @tas
298 ++ term @tas
299```
299```
300
300
@@ -325,7 +325,7 @@ A list of `cord`s. A `wain` is used instead of a single `cord` with `\n`.
325
325
326#### Source
326#### Source
327
327
328−```
328+```hoon
329 ++ wain (list cord)
329 ++ wain (list cord)
330```
330```
331
331
@@ -348,7 +348,7 @@ A list of `tape`s. `wall` is used instead of a single `tape` with `\n`.
348
348
349#### Source
349#### Source
350
350
351−```
351+```hoon
352 ++ wall (list tape)
352 ++ wall (list tape)
353```
353```
354#### Examples
354#### Examples
reference/library/3a.md+22−22
@@ -27,7 +27,7 @@ of `a` and `b`. Also produces `u` and `v` such that `au + bv = GCD(a, b)`.
27
27
28#### Source
28#### Source
29
29
30−```
30+```hoon
31 ++ egcd
31 ++ egcd
32 |= [a=@ b=@]
32 |= [a=@ b=@]
33 =+ si
33 =+ si
@@ -61,7 +61,7 @@ Container core for modular arithmetic functions.
61
61
62#### Source
62#### Source
63
63
64−```
64+```hoon
65 ++ fo
65 ++ fo
66 ^?
66 ^?
67 |_ a=@
67 |_ a=@
@@ -88,7 +88,7 @@ An atom.
88
88
89#### Source
89#### Source
90
90
91−```
91+```hoon
92 ++ dif
92 ++ dif
93 |= [b=@ c=@]
93 |= [b=@ c=@]
94 (sit (sub (add a b) (sit c)))
94 (sit (sub (add a b) (sit c)))
@@ -125,7 +125,7 @@ An atom.
125
125
126#### Source
126#### Source
127
127
128−```
128+```hoon
129 ++ exp
129 ++ exp
130 |= [b=@ c=@]
130 |= [b=@ c=@]
131 ?: =(0 b)
131 ?: =(0 b)
@@ -178,7 +178,7 @@ An atom.
178
178
179#### Source
179#### Source
180
180
181−```
181+```hoon
182 ++ fra
182 ++ fra
183 |= [b=@ c=@]
183 |= [b=@ c=@]
184 (pro b (inv c))
184 (pro b (inv c))
@@ -220,7 +220,7 @@ An atom.
220
220
221#### Source
221#### Source
222
222
223−```
223+```hoon
224 ++ inv
224 ++ inv
225 |= b=@
225 |= b=@
226 =+ c=(dul:si u:(egcd b a) a)
226 =+ c=(dul:si u:(egcd b a) a)
@@ -267,7 +267,7 @@ An atom.
267
267
268#### Source
268#### Source
269
269
270−```
270+```hoon
271 ++ pro
271 ++ pro
272 |= [b=@ c=@]
272 |= [b=@ c=@]
273 (sit (mul b c))
273 (sit (mul b c))
@@ -302,7 +302,7 @@ An atom.
302
302
303#### Source
303#### Source
304
304
305−```
305+```hoon
306 ++ sit
306 ++ sit
307 |= b=@
307 |= b=@
308 (mod b a)
308 (mod b a)
@@ -336,7 +336,7 @@ An atom.
336
336
337#### Source
337#### Source
338
338
339−```
339+```hoon
340 ++ sum
340 ++ sum
341 |= [b=@ c=@]
341 |= [b=@ c=@]
342 (sit (add b c))
342 (sit (add b c))
@@ -362,7 +362,7 @@ Container core for signed integer functions.
362
362
363#### Source
363#### Source
364
364
365−```
365+```hoon
366 ++ si
366 ++ si
367 ^?
367 ^?
368 |%
368 |%
@@ -407,7 +407,7 @@ An atom.
407
407
408### Source
408### Source
409
409
410−```
410+```hoon
411 ++ abs |=(a=@s (add (end 0 1 a) (rsh 0 1 a)))
411 ++ abs |=(a=@s (add (end 0 1 a) (rsh 0 1 a)))
412```
412```
413
413
@@ -440,7 +440,7 @@ A signed integer.
440
440
441#### Source
441#### Source
442
442
443−```
443+```hoon
444 ++ dif |= [a=@s b=@s]
444 ++ dif |= [a=@s b=@s]
445 (sum a (new !(syn b) (abs b)))
445 (sum a (new !(syn b) (abs b)))
446```
446```
@@ -474,7 +474,7 @@ An atom.
474
474
475#### Source
475#### Source
476
476
477−```
477+```hoon
478 ++ dul |= [a=@s b=@]
478 ++ dul |= [a=@s b=@]
479 =+(c=(old a) ?:(-.c (mod +.c b) (sub b +.c)))
479 =+(c=(old a) ?:(-.c (mod +.c b) (sub b +.c)))
480```
480```
@@ -513,7 +513,7 @@ A signed atom.
513
513
514#### Source
514#### Source
515
515
516−```
516+```hoon
517 ++ fra |= [a=@s b=@s]
517 ++ fra |= [a=@s b=@s]
518 (new =(0 (mix (syn a) (syn b))) (div (abs a) (abs b)))
518 (new =(0 (mix (syn a) (syn b))) (div (abs a) (abs b)))
519```
519```
@@ -552,7 +552,7 @@ A signed integer.
552
552
553#### Source
553#### Source
554
554
555−```
555+```hoon
556 ++ new |= [a=? b=@]
556 ++ new |= [a=? b=@]
557 `@s`?:(a (mul 2 b) ?:(=(0 b) 0 +((mul 2 (dec b)))))
557 `@s`?:(a (mul 2 b) ?:(=(0 b) 0 +((mul 2 (dec b)))))
558```
558```
@@ -591,7 +591,7 @@ A cell composed of a `term` and an atom.
591
591
592#### Source
592#### Source
593
593
594−```
594+```hoon
595 ++ old |=(a=@s [(syn a) (abs a)])
595 ++ old |=(a=@s [(syn a) (abs a)])
596```
596```
597
597
@@ -620,7 +620,7 @@ Produces a signed integer by multiplying `a` and `b`.
620
620
621#### Source
621#### Source
622
622
623−```
623+```hoon
624 ++ pro |= [a=@s b=@s]
624 ++ pro |= [a=@s b=@s]
625 (new =(0 (mix (syn a) (syn b))) (mul (abs a) (abs b)))
625 (new =(0 (mix (syn a) (syn b))) (mul (abs a) (abs b)))
626```
626```
@@ -654,7 +654,7 @@ A signed integer.
654
654
655#### Source
655#### Source
656
656
657−```
657+```hoon
658 ++ rem |=([a=@s b=@s] (dif a (pro b (fra a b))))
658 ++ rem |=([a=@s b=@s] (dif a (pro b (fra a b))))
659```
659```
660
660
@@ -694,7 +694,7 @@ A signed integer.
694
694
695#### Source
695#### Source
696
696
697−```
697+```hoon
698 ++ sum |= [a=@s b=@s]
698 ++ sum |= [a=@s b=@s]
699 =+ [c=(old a) d=(old b)]
699 =+ [c=(old a) d=(old b)]
700 ?: -.c
700 ?: -.c
@@ -737,7 +737,7 @@ An atom.
737
737
738#### Source
738#### Source
739
739
740−```
740+```hoon
741 ++ sun |=(a=@u (mul 2 a))
741 ++ sun |=(a=@u (mul 2 a))
742```
742```
743
743
@@ -781,7 +781,7 @@ An `term`.
781
781
782#### Source
782#### Source
783
783
784−```
784+```hoon
785 ++ syn |=(a=@s =(0 (end 0 1 a)))
785 ++ syn |=(a=@s =(0 (end 0 1 a)))
786```
786```
787
787
@@ -816,7 +816,7 @@ A signed integer.
816
816
817#### Source
817#### Source
818
818
819−```
819+```hoon
820 ++ cmp |= [a=@s b=@s]
820 ++ cmp |= [a=@s b=@s]
821 ^- @s
821 ^- @s
822 ?: =(a b)
822 ?: =(a b)
reference/library/3b.md+180−180
@@ -16,7 +16,7 @@ exponent, a signed decimal; and `a` to the significand, an unsigned integer.
16
16
17#### Source
17#### Source
18
18
19−```
19+```hoon
20 ++ fn
20 ++ fn
21 $% [$f s=? e=@s a=@u]
21 $% [$f s=? e=@s a=@u]
22 [$i s=?]
22 [$i s=?]
@@ -56,7 +56,7 @@ Valid values are a float (`$d`), an infinity (`$i`), or a not-a-number (`$n`).
56`s` refers to sign, the `flag`s `&` or `|`; `e` to exponent, a signed decimal;
56`s` refers to sign, the `flag`s `&` or `|`; `e` to exponent, a signed decimal;
57and `a` to the significand, an unsigned integer.
57and `a` to the significand, an unsigned integer.
58
58
59−```
59+```hoon
60 ++ dn
60 ++ dn
61 $% [$d s=? e=@s a=@u]
61 $% [$d s=? e=@s a=@u]
62 [$i s=?]
62 [$i s=?]
@@ -90,7 +90,7 @@ not-a-number (`$n`).
90
90
91#### Source
91#### Source
92
92
93−```
93+```hoon
94 $% [$d a=? b=[c=@ [d=@ e=@] f=? i=@]]
94 $% [$d a=? b=[c=@ [d=@ e=@] f=? i=@]]
95 [$i a=?]
95 [$i a=?]
96 [$n ~]
96 [$n ~]
@@ -123,7 +123,7 @@ Container arm for floating-point arithmetic functions.
123
123
124#### Source
124#### Source
125
125
126−```
126+```hoon
127 ++ fl
127 ++ fl
128 =+ ^- [[p=@u v=@s w=@u] r=$?($n $u $d $z $a) d=$?($d $f $i)]
128 =+ ^- [[p=@u v=@s w=@u] r=$?($n $u $d $z $a) d=$?($d $f $i)]
129 [[113 -16.494 32.765] %n %d]
129 [[113 -16.494 32.765] %n %d]
@@ -151,7 +151,7 @@ An `fn`.
151
151
152#### Source
152#### Source
153
153
154−```
154+```hoon
155 ++ rou
155 ++ rou
156 |= [a=[e=@s a=@u]] ^- fn (rau a &)
156 |= [a=[e=@s a=@u]] ^- fn (rau a &)
157```
157```
@@ -194,7 +194,7 @@ An `fn`.
194
194
195#### Source
195#### Source
196
196
197−```
197+```hoon
198 ++ rau
198 ++ rau
199 |= [a=[e=@s a=@u] t=?] ^- fn
199 |= [a=[e=@s a=@u] t=?] ^- fn
200 ?- r
200 ?- r
@@ -241,7 +241,7 @@ An `fn`.
241
241
242#### Source
242#### Source
243
243
244−```
244+```hoon
245 ++ add
245 ++ add
246 |= [a=[e=@s a=@u] b=[e=@s a=@u] e=?] ^- fn
246 |= [a=[e=@s a=@u] b=[e=@s a=@u] e=?] ^- fn
247 =+ q=(dif:si e.a e.b)
247 =+ q=(dif:si e.a e.b)
@@ -293,7 +293,7 @@ An `fn`.
293
293
294#### Source
294#### Source
295
295
296−```
296+```hoon
297 ++ sub
297 ++ sub
298 |= [a=[e=@s a=@u] b=[e=@s a=@u] e=?] ^- fn
298 |= [a=[e=@s a=@u] b=[e=@s a=@u] e=?] ^- fn
299 =+ q=(dif:si e.a e.b)
299 =+ q=(dif:si e.a e.b)
@@ -347,7 +347,7 @@ An `fn`.
347
347
348#### Source
348#### Source
349
349
350−```
350+```hoon
351 ++ mul
351 ++ mul
352 |= [a=[e=@s a=@u] b=[e=@s a=@u]] ^- fn
352 |= [a=[e=@s a=@u] b=[e=@s a=@u]] ^- fn
353 (rou (sum:si e.a e.b) (^mul a.a a.b))
353 (rou (sum:si e.a e.b) (^mul a.a a.b))
@@ -380,7 +380,7 @@ An `fn`.
380
380
381#### Source
381#### Source
382
382
383−```
383+```hoon
384 ++ div
384 ++ div
385 |= [a=[e=@s a=@u] b=[e=@s a=@u]] ^- fn
385 |= [a=[e=@s a=@u] b=[e=@s a=@u]] ^- fn
386 =+ [ma=(met 0 a.a) mb=(met 0 a.b)]
386 =+ [ma=(met 0 a.a) mb=(met 0 a.b)]
@@ -415,7 +415,7 @@ An `fn`.
415
415
416#### Source
416#### Source
417
417
418−```
418+```hoon
419 ++ sqt
419 ++ sqt
420 |= [a=[e=@s a=@u]] ^- fn
420 |= [a=[e=@s a=@u]] ^- fn
421 =. a
421 =. a
@@ -454,7 +454,7 @@ An `flag`.
454
454
455#### Source
455#### Source
456
456
457−```
457+```hoon
458 ++ lth
458 ++ lth
459 |= [a=[e=@s a=@u] b=[e=@s a=@u]] ^- ?
459 |= [a=[e=@s a=@u] b=[e=@s a=@u]] ^- ?
460 ?: =(e.a e.b) (^lth a.a a.b)
460 ?: =(e.a e.b) (^lth a.a a.b)
@@ -494,7 +494,7 @@ A `flag`.
494
494
495#### Source
495#### Source
496
496
497−```
497+```hoon
498 ++ equ
498 ++ equ
499 |= [a=[e=@s a=@u] b=[e=@s a=@u]] ^- ?
499 |= [a=[e=@s a=@u] b=[e=@s a=@u]] ^- ?
500 ?. =((ibl a) (ibl b)) |
500 ?. =((ibl a) (ibl b)) |
@@ -531,7 +531,7 @@ A signed integer.
531
531
532#### Source
532#### Source
533
533
534−```
534+```hoon
535 ++ ibl
535 ++ ibl
536 |= [a=[e=@s a=@u]] ^- @s
536 |= [a=[e=@s a=@u]] ^- @s
537 (sum:si (sun:si (dec (met 0 a.a))) e.a)
537 (sum:si (sun:si (dec (met 0 a.a))) e.a)
@@ -563,7 +563,7 @@ A cell of a signed integer and an unsigned integer.
563
563
564#### Source
564#### Source
565
565
566−```
566+```hoon
567 ++ uni
567 ++ uni
568 |= [a=[e=@s a=@u]]
568 |= [a=[e=@s a=@u]]
569 |- ?: =((end 0 1 a.a) 1) a
569 |- ?: =((end 0 1 a.a) 1) a
@@ -597,7 +597,7 @@ A cell of a signed integer and an unsigned integer.
597
597
598#### Sources
598#### Sources
599
599
600−```
600+```hoon
601 ++ xpd
601 ++ xpd
602 |= [a=[e=@s a=@u]]
602 |= [a=[e=@s a=@u]]
603 =+ ma=(met 0 a.a)
603 =+ ma=(met 0 a.a)
@@ -654,7 +654,7 @@ An `fn`.
654
654
655#### Source
655#### Source
656
656
657−```
657+```hoon
658 ::
658 ::
659 :: central rounding mechanism
659 :: central rounding mechanism
660 :: can perform: floor, ceiling, smaller, larger,
660 :: can perform: floor, ceiling, smaller, larger,
@@ -746,7 +746,7 @@ A cell of a signed integer and an unsigned integer.
746
746
747#### Source
747#### Source
748
748
749−```
749+```hoon
750 ++ drg
750 ++ drg
751 ~/ %drg
751 ~/ %drg
752 |= [a=[e=@s a=@u]] ^- [@s @u]
752 |= [a=[e=@s a=@u]] ^- [@s @u]
@@ -829,7 +829,7 @@ An `fn`.
829
829
830#### Source
830#### Source
831
831
832−```
832+```hoon
833 ++ toj
833 ++ toj
834 |= [a=[e=@s a=@u]] ^- fn
834 |= [a=[e=@s a=@u]] ^- fn
835 ?. =((cmp:si e.a --0) -1) [%f & a]
835 ?. =((cmp:si e.a --0) -1) [%f & a]
@@ -871,7 +871,7 @@ A cell of a signed integer and an unsigned integer.
871
871
872#### Source
872#### Source
873
873
874−```
874+```hoon
875 ++ ned
875 ++ ned
876 |= [a=fn] ^- [$f s=? e=@s a=@u]
876 |= [a=fn] ^- [$f s=? e=@s a=@u]
877 ?: ?=([$f *] a) a
877 ?: ?=([$f *] a) a
@@ -915,7 +915,7 @@ An `fn`.
915
915
916#### Source
916#### Source
917
917
918−```
918+```hoon
919 ++ shf
919 ++ shf
920 |= [a=fn b=@s]
920 |= [a=fn b=@s]
921 ?: |(?=([$n *] a) ?=([$i *] a)) a
921 ?: |(?=([$n *] a) ?=([$i *] a)) a
@@ -952,7 +952,7 @@ An `fn`.
952
952
953#### Source
953#### Source
954
954
955−```
955+```hoon
956 ++ fli
956 ++ fli
957 |= [a=fn] ^- fn
957 |= [a=fn] ^- fn
958 ?-(-.a $f a(s !s.a), $i a(s !s.a), $n a)
958 ?-(-.a $f a(s !s.a), $i a(s !s.a), $n a)
@@ -980,7 +980,7 @@ Switches the rounding mode of `r:fl`.
980
980
981#### Source
981#### Source
982
982
983−```
983+```hoon
984 ++ swr ?+(r r $d %u, $u %d)
984 ++ swr ?+(r r $d %u, $u %d)
985```
985```
986
986
@@ -1008,7 +1008,7 @@ Otherwise, a crash is produced.
1008
1008
1009#### Source
1009#### Source
1010
1010
1011−```
1011+```hoon
1012 ++ prc ?>((gth p 1) p)
1012 ++ prc ?>((gth p 1) p)
1013```
1013```
1014
1014
@@ -1044,7 +1044,7 @@ The default value of `d` is `%d`.
1044
1044
1045#### Source
1045#### Source
1046
1046
1047−```
1047+```hoon
1048 ++ den d
1048 ++ den d
1049```
1049```
1050
1050
@@ -1069,7 +1069,7 @@ Produces `v:fl`, the minimum exponent. The default minimum exponent is -16.494.
1069
1069
1070#### Source
1070#### Source
1071
1071
1072−```
1072+```hoon
1073 ++ emn v
1073 ++ emn v
1074```
1074```
1075
1075
@@ -1089,7 +1089,7 @@ Returns the maximum exponent of `fl`. The default maximum exponent is --16.271.
1089
1089
1090#### Source
1090#### Source
1091
1091
1092−```
1092+```hoon
1093 ++ emx (sum:si emn (sun:si w))
1093 ++ emx (sum:si emn (sun:si w))
1094```
1094```
1095
1095
@@ -1112,7 +1112,7 @@ Produces the smallest possible denormalized float.
1112
1112
1113#### Source
1113#### Source
1114
1114
1115−```
1115+```hoon
1116 ++ spd [e=emn a=1]
1116 ++ spd [e=emn a=1]
1117```
1117```
1118
1118
@@ -1132,7 +1132,7 @@ Produces the smallest representable normal float.
1132
1132
1133#### Source
1133#### Source
1134
1134
1135−```
1135+```hoon
1136 ++ spn [e=emn a=(bex (dec prc))]
1136 ++ spn [e=emn a=(bex (dec prc))]
1137```
1137```
1138
1138
@@ -1152,7 +1152,7 @@ Produces the largest representable normal float.
1152
1152
1153#### Source
1153#### Source
1154
1154
1155−```
1155+```hoon
1156 ++ lfn [e=emx a=(fil 0 prc 1)]
1156 ++ lfn [e=emx a=(fil 0 prc 1)]
1157```
1157```
1158
1158
@@ -1172,7 +1172,7 @@ Produces the sum of `emx:fl` plus `prc:fl`.
1172
1172
1173#### Source
1173#### Source
1174
1174
1175−```
1175+```hoon
1176 ++ lfe (sum:si emx (sun:si prc)) :: 2^lfe is > than all
1176 ++ lfe (sum:si emx (sun:si prc)) :: 2^lfe is > than all
1177```
1177```
1178
1178
@@ -1192,7 +1192,7 @@ Produces zero represented as a float.
1192
1192
1193#### Source
1193#### Source
1194
1194
1195−```
1195+```hoon
1196 ++ zer [e=--0 a=0]
1196 ++ zer [e=--0 a=0]
1197 --
1197 --
1198 |%
1198 |%
@@ -1222,7 +1222,7 @@ An `fn`.
1222
1222
1223#### Source
1223#### Source
1224
1224
1225−```
1225+```hoon
1226 ++ rou
1226 ++ rou
1227 |= [a=fn] ^- fn
1227 |= [a=fn] ^- fn
1228 ?. ?=([$f *] a) a
1228 ?. ?=([$f *] a) a
@@ -1265,7 +1265,7 @@ An `fn`.
1265
1265
1266#### Source
1266#### Source
1267
1267
1268−```
1268+```hoon
1269 ++ syn
1269 ++ syn
1270 |= [a=fn] ^- ?
1270 |= [a=fn] ^- ?
1271 ?-(-.a $f s.a, $i s.a, $n &)
1271 ?-(-.a $f s.a, $i s.a, $n &)
@@ -1298,7 +1298,7 @@ An `fn`.
1298
1298
1299#### Sources
1299#### Sources
1300
1300
1301−```
1301+```hoon
1302 ++ abs
1302 ++ abs
1303 |= [a=fn] ^- fn
1303 |= [a=fn] ^- fn
1304 ?: ?=([$f *] a) [%f & e.a a.a]
1304 ?: ?=([$f *] a) [%f & e.a a.a]
@@ -1334,7 +1334,7 @@ An `fn`.
1334
1334
1335#### Source
1335#### Source
1336
1336
1337−```
1337+```hoon
1338 ++ add
1338 ++ add
1339 |= [a=fn b=fn] ^- fn
1339 |= [a=fn b=fn] ^- fn
1340 ?: |(?=([$n *] a) ?=([$n *] b)) [%n ~]
1340 ?: |(?=([$n *] a) ?=([$n *] b)) [%n ~]
@@ -1382,7 +1382,7 @@ An `fn`.
1382
1382
1383#### Source
1383#### Source
1384
1384
1385−```
1385+```hoon
1386 ++ ead
1386 ++ ead
1387 |= [a=fn b=fn] ^- fn
1387 |= [a=fn b=fn] ^- fn
1388 ?: |(?=([$n *] a) ?=([$n *] b)) [%n ~]
1388 ?: |(?=([$n *] a) ?=([$n *] b)) [%n ~]
@@ -1431,7 +1431,7 @@ An `fn`.
1431
1431
1432#### Source
1432#### Source
1433
1433
1434−```
1434+```hoon
1435 ++ sub
1435 ++ sub
1436 |= [a=fn b=fn] ^- fn (add a (fli b))
1436 |= [a=fn b=fn] ^- fn (add a (fli b))
1437```
1437```
@@ -1462,7 +1462,7 @@ An `fn`.
1462
1462
1463#### Source
1463#### Source
1464
1464
1465−```
1465+```hoon
1466 ++ mul
1466 ++ mul
1467 |= [a=fn b=fn] ^- fn
1467 |= [a=fn b=fn] ^- fn
1468 ?: |(?=([$n *] a) ?=([$n *] b)) [%n ~]
1468 ?: |(?=([$n *] a) ?=([$n *] b)) [%n ~]
@@ -1529,7 +1529,7 @@ An `fn`.
1529
1529
1530#### Divide
1530#### Divide
1531
1531
1532−```
1532+```hoon
1533 ++ div
1533 ++ div
1534 |= [a=fn b=fn] ^- fn
1534 |= [a=fn b=fn] ^- fn
1535 ?: |(?=([$n *] a) ?=([$n *] b)) [%n ~]
1535 ?: |(?=([$n *] a) ?=([$n *] b)) [%n ~]
@@ -1564,7 +1564,7 @@ An `fn`.
1564
1564
1565#### Source
1565#### Source
1566
1566
1567−```
1567+```hoon
1568 ++ fma
1568 ++ fma
1569 |= [a=fn b=fn c=fn] ^- fn
1569 |= [a=fn b=fn c=fn] ^- fn
1570 (add (emu a b) c)
1570 (add (emu a b) c)
@@ -1594,7 +1594,7 @@ An `fn`.
1594
1594
1595#### Source
1595#### Source
1596
1596
1597−```
1597+```hoon
1598 ++ sqt
1598 ++ sqt
1599 |= [a=fn] ^- fn
1599 |= [a=fn] ^- fn
1600 ?: ?=([$n *] a) [%n ~]
1600 ?: ?=([$n *] a) [%n ~]
@@ -1627,7 +1627,7 @@ An `fn`.
1627
1627
1628#### Source
1628#### Source
1629
1629
1630−```
1630+```hoon
1631 ++ inv
1631 ++ inv
1632 |= [a=fn] ^- fn
1632 |= [a=fn] ^- fn
1633 (div [%f & --0 1] a)
1633 (div [%f & --0 1] a)
@@ -1669,7 +1669,7 @@ An `fn`.
1669
1669
1670#### Source
1670#### Source
1671
1671
1672−```
1672+```hoon
1673 ++ sun
1673 ++ sun
1674 |= [a=@u] ^- fn
1674 |= [a=@u] ^- fn
1675 (rou [%f & --0 a])
1675 (rou [%f & --0 a])
@@ -1705,7 +1705,7 @@ An `fn`.
1705
1705
1706#### Source
1706#### Source
1707
1707
1708−```
1708+```hoon
1709 ++ san
1709 ++ san
1710 |= [a=@s] ^- fn
1710 |= [a=@s] ^- fn
1711 =+ b=(old:si a)
1711 =+ b=(old:si a)
@@ -1742,7 +1742,7 @@ A `unit` of `flag`.
1742
1742
1743#### Source
1743#### Source
1744
1744
1745−```
1745+```hoon
1746 ++ lth
1746 ++ lth
1747 |= [a=fn b=fn] ^- (unit ?)
1747 |= [a=fn b=fn] ^- (unit ?)
1748 ?: |(?=([$n *] a) ?=([$n *] b)) ~ :- ~
1748 ?: |(?=([$n *] a) ?=([$n *] b)) ~ :- ~
@@ -1788,7 +1788,7 @@ A `unit` of `flag`.
1788
1788
1789#### Source
1789#### Source
1790
1790
1791−```
1791+```hoon
1792 ++ lte
1792 ++ lte
1793 |= [a=fn b=fn] ^- (unit ?)
1793 |= [a=fn b=fn] ^- (unit ?)
1794 %+ bind (lth b a) |= a=? !a
1794 %+ bind (lth b a) |= a=? !a
@@ -1833,7 +1833,7 @@ An `unit` of `flag`.
1833
1833
1834#### Source
1834#### Source
1835
1835
1836−```
1836+```hoon
1837 ++ equ
1837 ++ equ
1838 |= [a=fn b=fn] ^- (unit ?)
1838 |= [a=fn b=fn] ^- (unit ?)
1839 ?: |(?=([$n *] a) ?=([$n *] b)) ~ :- ~
1839 ?: |(?=([$n *] a) ?=([$n *] b)) ~ :- ~
@@ -1875,7 +1875,7 @@ An `unit` of `flag`.
1875
1875
1876#### Source
1876#### Source
1877
1877
1878−```
1878+```hoon
1879 ++ gte
1879 ++ gte
1880 |= [a=fn b=fn] ^- (unit ?) (lte b a)
1880 |= [a=fn b=fn] ^- (unit ?) (lte b a)
1881```
1881```
@@ -1913,7 +1913,7 @@ An `unit` of `flag`.
1913
1913
1914#### Source
1914#### Source
1915
1915
1916−```
1916+```hoon
1917 ++ gth
1917 ++ gth
1918 |= [a=fn b=fn] ^- (unit ?) (lth b a)
1918 |= [a=fn b=fn] ^- (unit ?) (lth b a)
1919```
1919```
@@ -1946,7 +1946,7 @@ A `dn`.
1946
1946
1947#### Source
1947#### Source
1948
1948
1949−```
1949+```hoon
1950 ++ drg
1950 ++ drg
1951 |= [a=fn] ^- dn
1951 |= [a=fn] ^- dn
1952 ?: ?=([$n *] a) [%n ~]
1952 ?: ?=([$n *] a) [%n ~]
@@ -1979,7 +1979,7 @@ An `fn`.
1979
1979
1980#### Source
1980#### Source
1981
1981
1982−```
1982+```hoon
1983 ++ grd
1983 ++ grd
1984 |= [a=dn] ^- fn
1984 |= [a=dn] ^- fn
1985 ?: ?=([$n *] a) [%n ~]
1985 ?: ?=([$n *] a) [%n ~]
@@ -2018,7 +2018,7 @@ A `unit` of @s.
2018
2018
2019#### Source
2019#### Source
2020
2020
2021−```
2021+```hoon
2022 ++ toi
2022 ++ toi
2023 |= [a=fn] ^- (unit @s)
2023 |= [a=fn] ^- (unit @s)
2024 =+ b=(toj a)
2024 =+ b=(toj a)
@@ -2051,7 +2051,7 @@ A `unit` of @s.
2051
2051
2052#### Source
2052#### Source
2053
2053
2054−```
2054+```hoon
2055 ++ toj
2055 ++ toj
2056 |= [a=fn] ^- fn
2056 |= [a=fn] ^- fn
2057 ?. ?=([$f *] a) a
2057 ?. ?=([$f *] a) a
@@ -2092,7 +2092,7 @@ Container core for IEEE-754 formatting operations.
2092
2092
2093#### Source
2093#### Source
2094
2094
2095−```
2095+```hoon
2096 ++ ff
2096 ++ ff
2097 |_ [[w=@u p=@u b=@s] r=$?($n $u $d $z $a)]
2097 |_ [[w=@u p=@u b=@s] r=$?($n $u $d $z $a)]
2098```
2098```
@@ -2122,7 +2122,7 @@ Produces the sign bit of `++ff`.
2122
2122
2123#### Source
2123#### Source
2124
2124
2125−```
2125+```hoon
2126 ++ sb (bex (^add w p))
2126 ++ sb (bex (^add w p))
2127```
2127```
2128
2128
@@ -2142,7 +2142,7 @@ Produces the minimum possible exponent of `ff`.
2142
2142
2143#### Source
2143#### Source
2144
2144
2145−```
2145+```hoon
2146 ++ me (dif:si (dif:si --1 b) (sun:si p))
2146 ++ me (dif:si (dif:si --1 b) (sun:si p))
2147```
2147```
2148
2148
@@ -2163,7 +2163,7 @@ configuration of the `ff` core.
2163
2163
2164#### Source
2164#### Source
2165
2165
2166−```
2166+```hoon
2167 ++ pa
2167 ++ pa
2168 %*(. fl p +(p), v me, w (^sub (bex w) 3), d %d, r r)
2168 %*(. fl p +(p), v me, w (^sub (bex w) 3), d %d, r r)
2169```
2169```
@@ -2202,7 +2202,7 @@ A `unit` of @s.
2202
2202
2203#### Source
2203#### Source
2204
2204
2205−```
2205+```hoon
2206 ++ sea
2206 ++ sea
2207 |= [a=@r] ^- fn
2207 |= [a=@r] ^- fn
2208 =+ [f=(cut 0 [0 p] a) e=(cut 0 [p w] a)]
2208 =+ [f=(cut 0 [0 p] a) e=(cut 0 [p w] a)]
@@ -2240,7 +2240,7 @@ A `@r`.
2240
2240
2241#### Source
2241#### Source
2242
2242
2243−```
2243+```hoon
2244 ++ bit |= [a=fn] (bif (rou:pa a))
2244 ++ bit |= [a=fn] (bif (rou:pa a))
2245```
2245```
2246
2246
@@ -2268,7 +2268,7 @@ A `flag`.
2268
2268
2269#### Source
2269#### Source
2270
2270
2271−```
2271+```hoon
2272 ++ bif
2272 ++ bif
2273 |= [a=fn] ^- @r
2273 |= [a=fn] ^- @r
2274 ?: ?=([$i *] a)
2274 ?: ?=([$i *] a)
@@ -2310,7 +2310,7 @@ A `flag`.
2310
2310
2311#### Source
2311#### Source
2312
2312
2313−```
2313+```hoon
2314 ++ sig
2314 ++ sig
2315 |= [a=@r] ^- ?
2315 |= [a=@r] ^- ?
2316 =(0 (cut 0 [(^add p w) 1] a))
2316 =(0 (cut 0 [(^add p w) 1] a))
@@ -2340,7 +2340,7 @@ A signed integer.
2340
2340
2341#### Source
2341#### Source
2342
2342
2343−```
2343+```hoon
2344 ++ exp
2344 ++ exp
2345 |= [a=@r] ^- @s
2345 |= [a=@r] ^- @s
2346 (dif:si (sun:si (cut 0 [p w] a)) b)
2346 (dif:si (sun:si (cut 0 [p w] a)) b)
@@ -2372,7 +2372,7 @@ A `@r`, an IEEE float.
2372
2372
2373#### Source
2373#### Source
2374
2374
2375−```
2375+```hoon
2376 ++ add
2376 ++ add
2377 |= [a=@r b=@r]
2377 |= [a=@r b=@r]
2378 (bif (add:pa (sea a) (sea b)))
2378 (bif (add:pa (sea a) (sea b)))
@@ -2404,7 +2404,7 @@ A `@r`, an IEEE float.
2404
2404
2405#### Source
2405#### Source
2406
2406
2407−```
2407+```hoon
2408 ++ sub
2408 ++ sub
2409 |= [a=@r b=@r]
2409 |= [a=@r b=@r]
2410 (bif (sub:pa (sea a) (sea b)))
2410 (bif (sub:pa (sea a) (sea b)))
@@ -2436,7 +2436,7 @@ A `@r`, an IEEE float.
2436
2436
2437#### Multiply
2437#### Multiply
2438
2438
2439−```
2439+```hoon
2440 ++ mul
2440 ++ mul
2441 |= [a=@r b=@r]
2441 |= [a=@r b=@r]
2442 (bif (mul:pa (sea a) (sea b)))
2442 (bif (mul:pa (sea a) (sea b)))
@@ -2468,7 +2468,7 @@ A `@r`, an IEEE float.
2468
2468
2469#### Source
2469#### Source
2470
2470
2471−```
2471+```hoon
2472 ++ div
2472 ++ div
2473 |= [a=@r b=@r]
2473 |= [a=@r b=@r]
2474 (bif (div:pa (sea a) (sea b)))
2474 (bif (div:pa (sea a) (sea b)))
@@ -2503,7 +2503,7 @@ A `@r`, an IEEE float.
2503
2503
2504#### Source
2504#### Source
2505
2505
2506−```
2506+```hoon
2507 ++ fma
2507 ++ fma
2508 |= [a=@r b=@r c=@r]
2508 |= [a=@r b=@r c=@r]
2509 (bif (fma:pa (sea a) (sea b) (sea c)))
2509 (bif (fma:pa (sea a) (sea b) (sea c)))
@@ -2533,7 +2533,7 @@ A `@r`, an IEEE float.
2533
2533
2534#### Source
2534#### Source
2535
2535
2536−```
2536+```hoon
2537 ++ sqt
2537 ++ sqt
2538 |= [a=@r]
2538 |= [a=@r]
2539 (bif (sqt:pa (sea a)))
2539 (bif (sqt:pa (sea a)))
@@ -2565,7 +2565,7 @@ A `flag`.
2565
2565
2566#### Source
2566#### Source
2567
2567
2568−```
2568+```hoon
2569 ++ lth
2569 ++ lth
2570 |= [a=@r b=@r] (fall (lth:pa (sea a) (sea b)) |)
2570 |= [a=@r b=@r] (fall (lth:pa (sea a) (sea b)) |)
2571```
2571```
@@ -2599,7 +2599,7 @@ A `flag`.
2599
2599
2600#### Source
2600#### Source
2601
2601
2602−```
2602+```hoon
2603 ++ lte
2603 ++ lte
2604 |= [a=@r b=@r] (fall (lte:pa (sea a) (sea b)) |)
2604 |= [a=@r b=@r] (fall (lte:pa (sea a) (sea b)) |)
2605```
2605```
@@ -2633,7 +2633,7 @@ A `flag`.
2633
2633
2634#### Source
2634#### Source
2635
2635
2636−```
2636+```hoon
2637 ++ equ
2637 ++ equ
2638 |= [a=@r b=@r] (fall (equ:pa (sea a) (sea b)) |)
2638 |= [a=@r b=@r] (fall (equ:pa (sea a) (sea b)) |)
2639```
2639```
@@ -2667,7 +2667,7 @@ A `flag`.
2667
2667
2668#### Source
2668#### Source
2669
2669
2670−```
2670+```hoon
2671 ++ gte
2671 ++ gte
2672 |= [a=@r b=@r] (fall (gte:pa (sea a) (sea b)) |)
2672 |= [a=@r b=@r] (fall (gte:pa (sea a) (sea b)) |)
2673```
2673```
@@ -2701,7 +2701,7 @@ A `flag`.
2701
2701
2702#### Source
2702#### Source
2703
2703
2704−```
2704+```hoon
2705 ++ gth
2705 ++ gth
2706 |= [a=@r b=@r] (fall (gth:pa (sea a) (sea b)) |)
2706 |= [a=@r b=@r] (fall (gth:pa (sea a) (sea b)) |)
2707```
2707```
@@ -2733,7 +2733,7 @@ A `@r`, an IEEE float.
2733
2733
2734#### Source
2734#### Source
2735
2735
2736−```
2736+```hoon
2737 ++ sun
2737 ++ sun
2738 |= [a=@u] (bit [%f & --0 a])
2738 |= [a=@u] (bit [%f & --0 a])
2739```
2739```
@@ -2762,7 +2762,7 @@ A `@r`, an IEEE float.
2762
2762
2763#### Source
2763#### Source
2764
2764
2765−```
2765+```hoon
2766 ++ san
2766 ++ san
2767 |= [a=@s] (bit [%f (syn:si a) --0 (abs:si a)])
2767 |= [a=@s] (bit [%f (syn:si a) --0 (abs:si a)])
2768```
2768```
@@ -2791,7 +2791,7 @@ A `flag` of `@s`.
2791
2791
2792#### Source
2792#### Source
2793
2793
2794−```
2794+```hoon
2795 ++ toi
2795 ++ toi
2796 |= [a=@r] (toi:pa (sea a))
2796 |= [a=@r] (toi:pa (sea a))
2797```
2797```
@@ -2820,7 +2820,7 @@ A `dn`.
2820
2820
2821#### Source
2821#### Source
2822
2822
2823−```
2823+```hoon
2824 ++ drg
2824 ++ drg
2825 |= [a=@r] (drg:pa (sea a))
2825 |= [a=@r] (drg:pa (sea a))
2826```
2826```
@@ -2852,7 +2852,7 @@ A `@r`, an IEEE float.
2852
2852
2853#### Source
2853#### Source
2854
2854
2855−```
2855+```hoon
2856 ++ grd
2856 ++ grd
2857 |= [a=dn] (bif (grd:pa a))
2857 |= [a=dn] (bif (grd:pa a))
2858 --
2858 --
@@ -2882,7 +2882,7 @@ A `dn`.
2882
2882
2883#### Source
2883#### Source
2884
2884
2885−```
2885+```hoon
2886 ++ rlyd |= a=@rd ^- dn (drg:rd a)
2886 ++ rlyd |= a=@rd ^- dn (drg:rd a)
2887```
2887```
2888
2888
@@ -2910,7 +2910,7 @@ A `dn`.
2910
2910
2911#### Source
2911#### Source
2912
2912
2913−```
2913+```hoon
2914 ++ rlys |= a=@rs ^- dn (drg:rs a)
2914 ++ rlys |= a=@rs ^- dn (drg:rs a)
2915```
2915```
2916
2916
@@ -2938,7 +2938,7 @@ A `dn`.
2938
2938
2939#### Source
2939#### Source
2940
2940
2941−```
2941+```hoon
2942 ++ rlyh |= a=@rh ^- dn (drg:rh a)
2942 ++ rlyh |= a=@rh ^- dn (drg:rh a)
2943```
2943```
2944
2944
@@ -2966,7 +2966,7 @@ A `dn`.
2966
2966
2967#### Source
2967#### Source
2968
2968
2969−```
2969+```hoon
2970 ++ rlyq |= a=@rq ^- dn (drg:rq a)
2970 ++ rlyq |= a=@rq ^- dn (drg:rq a)
2971```
2971```
2972
2972
@@ -2994,7 +2994,7 @@ A a `@rd`, a double-precision float.
2994
2994
2995#### Source
2995#### Source
2996
2996
2997−```
2997+```hoon
2998 ++ ryld |= a=dn ^- @rd (grd:rd a)
2998 ++ ryld |= a=dn ^- @rd (grd:rd a)
2999```
2999```
3000
3000
@@ -3022,7 +3022,7 @@ A a `@rs`, a single-precision float.
3022
3022
3023#### Source
3023#### Source
3024
3024
3025−```
3025+```hoon
3026 ++ ryls |= a=dn ^- @rs (grd:rs a)
3026 ++ ryls |= a=dn ^- @rs (grd:rs a)
3027```
3027```
3028
3028
@@ -3053,7 +3053,7 @@ A a `@rh`, a half-precision float.
3053
3053
3054#### Source
3054#### Source
3055
3055
3056−```
3056+```hoon
3057 ++ rylh |= a=dn ^- @rh (grd:rh a)
3057 ++ rylh |= a=dn ^- @rh (grd:rh a)
3058```
3058```
3059
3059
@@ -3087,7 +3087,7 @@ A a `@rq`, a quad-precision float.
3087
3087
3088#### Source
3088#### Source
3089
3089
3090−```
3090+```hoon
3091 ++ rylq |= a=dn ^- @rq (grd:rq a)
3091 ++ rylq |= a=dn ^- @rq (grd:rq a)
3092```
3092```
3093
3093
@@ -3110,7 +3110,7 @@ down (`$d`), and round to zero (`$z`).
3110
3110
3111#### Source
3111#### Source
3112
3112
3113−```
3113+```hoon
3114 ++ rd
3114 ++ rd
3115 ^?
3115 ^?
3116 ~% %rd +> ~
3116 ~% %rd +> ~
@@ -3127,7 +3127,7 @@ configuration of the `rd` core.
3127
3127
3128#### Source
3128#### Source
3129
3129
3130−```
3130+```hoon
3131 ++ ma
3131 ++ ma
3132 %*(. ff w 11, p 52, b --1.023, r r)
3132 %*(. ff w 11, p 52, b --1.023, r r)
3133```
3133```
@@ -3148,7 +3148,7 @@ configuration of the `rd` core.
3148
3148
3149Converts `a` from a double-precision binary float to `fn`.
3149Converts `a` from a double-precision binary float to `fn`.
3150
3150
3151−```
3151+```hoon
3152 ++ sea :: @rd to fn
3152 ++ sea :: @rd to fn
3153 |= [a=@rd] (sea:ma a)
3153 |= [a=@rd] (sea:ma a)
3154```
3154```
@@ -3177,7 +3177,7 @@ A `@rd`, a double-precision float.
3177
3177
3178#### Source
3178#### Source
3179
3179
3180−```
3180+```hoon
3181 ++ bit
3181 ++ bit
3182 |= [a=fn] ^- @rd (bit:ma a)
3182 |= [a=fn] ^- @rd (bit:ma a)
3183```
3183```
@@ -3208,7 +3208,7 @@ A `@rd`.
3208
3208
3209#### Source
3209#### Source
3210
3210
3211−```
3211+```hoon
3212 ++ add ~/ %add
3212 ++ add ~/ %add
3213 |= [a=@rd b=@rd] ^- @rd
3213 |= [a=@rd b=@rd] ^- @rd
3214 ~_ leaf+"rd-fail"
3214 ~_ leaf+"rd-fail"
@@ -3241,7 +3241,7 @@ A `@rd`.
3241
3241
3242#### Source
3242#### Source
3243
3243
3244−```
3244+```hoon
3245 ++ sub ~/ %sub
3245 ++ sub ~/ %sub
3246 |= [a=@rd b=@rd] ^- @rd
3246 |= [a=@rd b=@rd] ^- @rd
3247 ~_ leaf+"rd-fail"
3247 ~_ leaf+"rd-fail"
@@ -3274,7 +3274,7 @@ A `@rd`.
3274
3274
3275#### Source
3275#### Source
3276
3276
3277−```
3277+```hoon
3278 ++ mul ~/ %mul
3278 ++ mul ~/ %mul
3279 |= [a=@rd b=@rd] ^- @rd
3279 |= [a=@rd b=@rd] ^- @rd
3280 ~_ leaf+"rd-fail"
3280 ~_ leaf+"rd-fail"
@@ -3307,7 +3307,7 @@ A `@rd`.
3307
3307
3308#### Source
3308#### Source
3309
3309
3310−```
3310+```hoon
3311 ++ div ~/ %div
3311 ++ div ~/ %div
3312 |= [a=@rd b=@rd] ^- @rd
3312 |= [a=@rd b=@rd] ^- @rd
3313 ~_ leaf+"rd-fail"
3313 ~_ leaf+"rd-fail"
@@ -3346,7 +3346,7 @@ A `@rd`.
3346
3346
3347#### Source
3347#### Source
3348
3348
3349−```
3349+```hoon
3350 ++ fma ~/ %fma
3350 ++ fma ~/ %fma
3351 |= [a=@rd b=@rd c=@rd] ^- @rd
3351 |= [a=@rd b=@rd c=@rd] ^- @rd
3352 ~_ leaf+"rd-fail"
3352 ~_ leaf+"rd-fail"
@@ -3377,7 +3377,7 @@ A `@rd`.
3377
3377
3378#### Source
3378#### Source
3379
3379
3380−```
3380+```hoon
3381 ++ sqt ~/ %sqt
3381 ++ sqt ~/ %sqt
3382 |= [a=@rd] ^- @rd ~_ leaf+"rd-fail"
3382 |= [a=@rd] ^- @rd ~_ leaf+"rd-fail"
3383 (sqt:ma a)
3383 (sqt:ma a)
@@ -3409,7 +3409,7 @@ A `@rd`.
3409
3409
3410#### Source
3410#### Source
3411
3411
3412−```
3412+```hoon
3413 ++ lth ~/ %lth
3413 ++ lth ~/ %lth
3414 |= [a=@rd b=@rd]
3414 |= [a=@rd b=@rd]
3415 ~_ leaf+"rd-fail"
3415 ~_ leaf+"rd-fail"
@@ -3448,7 +3448,7 @@ A `@rd`.
3448
3448
3449#### Source
3449#### Source
3450
3450
3451−```
3451+```hoon
3452 ++ lte ~/ %lte :: less-equals
3452 ++ lte ~/ %lte :: less-equals
3453 |= [a=@rd b=@rd]
3453 |= [a=@rd b=@rd]
3454 ~_ leaf+"rd-fail"
3454 ~_ leaf+"rd-fail"
@@ -3487,7 +3487,7 @@ A `@rd`.
3487
3487
3488#### Source
3488#### Source
3489
3489
3490−```
3490+```hoon
3491 ++ equ ~/ %equ
3491 ++ equ ~/ %equ
3492 |= [a=@rd b=@rd]
3492 |= [a=@rd b=@rd]
3493 ~_ leaf+"rd-fail"
3493 ~_ leaf+"rd-fail"
@@ -3526,7 +3526,7 @@ A `@rd`.
3526
3526
3527#### Source
3527#### Source
3528
3528
3529−```
3529+```hoon
3530 ++ gte ~/ %gte
3530 ++ gte ~/ %gte
3531 |= [a=@rd b=@rd]
3531 |= [a=@rd b=@rd]
3532 ~_ leaf+"rd-fail"
3532 ~_ leaf+"rd-fail"
@@ -3565,7 +3565,7 @@ A `@rd`.
3565
3565
3566#### Source
3566#### Source
3567
3567
3568−```
3568+```hoon
3569 ++ gth ~/ %gth
3569 ++ gth ~/ %gth
3570 |= [a=@rd b=@rd]
3570 |= [a=@rd b=@rd]
3571 ~_ leaf+"rd-fail"
3571 ~_ leaf+"rd-fail"
@@ -3602,7 +3602,7 @@ A `@rd`.
3602
3602
3603#### Source
3603#### Source
3604
3604
3605−```
3605+```hoon
3606 ++ sun |= [a=@u] ^- @rd (sun:ma a)
3606 ++ sun |= [a=@u] ^- @rd (sun:ma a)
3607```
3607```
3608
3608
@@ -3630,7 +3630,7 @@ A `@rd`.
3630
3630
3631#### Source
3631#### Source
3632
3632
3633−```
3633+```hoon
3634 ++ san |= [a=@s] ^- @rd (san:ma a)
3634 ++ san |= [a=@s] ^- @rd (san:ma a)
3635```
3635```
3636
3636
@@ -3658,7 +3658,7 @@ A `flag`.
3658
3658
3659#### Source
3659#### Source
3660
3660
3661−```
3661+```hoon
3662 ++ sig |= [a=@rd] ^- ? (sig:ma a)
3662 ++ sig |= [a=@rd] ^- ? (sig:ma a)
3663```
3663```
3664
3664
@@ -3686,7 +3686,7 @@ A `@s`.
3686
3686
3687#### Source
3687#### Source
3688
3688
3689−```
3689+```hoon
3690 ++ exp |= [a=@rd] ^- @s (exp:ma a) :: get exponent
3690 ++ exp |= [a=@rd] ^- @s (exp:ma a) :: get exponent
3691```
3691```
3692
3692
@@ -3714,7 +3714,7 @@ A `unit` of `@s`.
3714
3714
3715#### Source
3715#### Source
3716
3716
3717−```
3717+```hoon
3718 ++ toi |= [a=@rd] ^- (unit @s) (toi:ma a)
3718 ++ toi |= [a=@rd] ^- (unit @s) (toi:ma a)
3719```
3719```
3720
3720
@@ -3743,7 +3743,7 @@ A `dn`.
3743
3743
3744#### Source
3744#### Source
3745
3745
3746−```
3746+```hoon
3747 ++ drg |= [a=@rd] ^- dn (drg:ma a)
3747 ++ drg |= [a=@rd] ^- dn (drg:ma a)
3748```
3748```
3749
3749
@@ -3771,7 +3771,7 @@ A `@rd`.
3771
3771
3772#### Source
3772#### Source
3773
3773
3774−```
3774+```hoon
3775 ++ grd |= [a=dn] ^- @rd (grd:ma a) :: decimal float to @rd
3775 ++ grd |= [a=dn] ^- @rd (grd:ma a) :: decimal float to @rd
3776 --
3776 --
3777```
3777```
@@ -3795,7 +3795,7 @@ down (`$d`), and round to zero (`$z`).
3795
3795
3796#### Source
3796#### Source
3797
3797
3798−```
3798+```hoon
3799 ++ rs
3799 ++ rs
3800 ~% %rs +> ~
3800 ~% %rs +> ~
3801 ^?
3801 ^?
@@ -3812,7 +3812,7 @@ configuration of the `rs` core.
3812
3812
3813#### Source
3813#### Source
3814
3814
3815−```
3815+```hoon
3816 ++ ma
3816 ++ ma
3817 %*(. ff w 8, p 23, b --127, r r)
3817 %*(. ff w 8, p 23, b --127, r r)
3818```
3818```
@@ -3843,7 +3843,7 @@ An `fn`.
3843
3843
3844#### Source
3844#### Source
3845
3845
3846−```
3846+```hoon
3847 ++ sea
3847 ++ sea
3848 |= [a=@rs] (sea:ma a)
3848 |= [a=@rs] (sea:ma a)
3849```
3849```
@@ -3872,7 +3872,7 @@ A `@rs`, a single-precision float.
3872
3872
3873#### Source
3873#### Source
3874
3874
3875−```
3875+```hoon
3876 ++ bit
3876 ++ bit
3877 |= [a=fn] ^- @rs (bit:ma a)
3877 |= [a=fn] ^- @rs (bit:ma a)
3878```
3878```
@@ -3903,7 +3903,7 @@ A `@rs`.
3903
3903
3904#### Source
3904#### Source
3905
3905
3906−```
3906+```hoon
3907 ++ add ~/ %add
3907 ++ add ~/ %add
3908 |= [a=@rs b=@rs] ^- @rs
3908 |= [a=@rs b=@rs] ^- @rs
3909 ~_ leaf+"rs-fail"
3909 ~_ leaf+"rs-fail"
@@ -3926,7 +3926,7 @@ Subtracts `a` from `b`.
3926
3926
3927#### Source
3927#### Source
3928
3928
3929−```
3929+```hoon
3930 ++ sub ~/ %sub
3930 ++ sub ~/ %sub
3931 |= [a=@rs b=@rs] ^- @rs
3931 |= [a=@rs b=@rs] ^- @rs
3932 ~_ leaf+"rs-fail"
3932 ~_ leaf+"rs-fail"
@@ -3959,7 +3959,7 @@ A `@rs`.
3959
3959
3960#### Source
3960#### Source
3961
3961
3962−```
3962+```hoon
3963 ++ mul ~/ %mul
3963 ++ mul ~/ %mul
3964 |= [a=@rs b=@rs] ^- @rs
3964 |= [a=@rs b=@rs] ^- @rs
3965 ~_ leaf+"rs-fail"
3965 ~_ leaf+"rs-fail"
@@ -3992,7 +3992,7 @@ A `@rs`.
3992
3992
3993#### Source
3993#### Source
3994
3994
3995−```
3995+```hoon
3996 ++ div ~/ %div
3996 ++ div ~/ %div
3997 |= [a=@rs b=@rs] ^- @rs
3997 |= [a=@rs b=@rs] ^- @rs
3998 ~_ leaf+"rs-fail"
3998 ~_ leaf+"rs-fail"
@@ -4028,7 +4028,7 @@ A `@rs`.
4028
4028
4029#### Source
4029#### Source
4030
4030
4031−```
4031+```hoon
4032 ++ fma ~/ %fma
4032 ++ fma ~/ %fma
4033 |= [a=@rs b=@rs c=@rs] ^- @rs
4033 |= [a=@rs b=@rs c=@rs] ^- @rs
4034 ~_ leaf+"rs-fail"
4034 ~_ leaf+"rs-fail"
@@ -4059,7 +4059,7 @@ A `@rs`.
4059
4059
4060#### Source
4060#### Source
4061
4061
4062−```
4062+```hoon
4063 ++ sqt ~/ %sqt
4063 ++ sqt ~/ %sqt
4064 |= [a=@rs] ^- @rs
4064 |= [a=@rs] ^- @rs
4065 ~_ leaf+"rs-fail"
4065 ~_ leaf+"rs-fail"
@@ -4092,7 +4092,7 @@ A `@rs`.
4092
4092
4093#### Source
4093#### Source
4094
4094
4095−```
4095+```hoon
4096 ++ lth ~/ %lth
4096 ++ lth ~/ %lth
4097 |= [a=@rs b=@rs]
4097 |= [a=@rs b=@rs]
4098 ~_ leaf+"rs-fail"
4098 ~_ leaf+"rs-fail"
@@ -4128,7 +4128,7 @@ A `@rs`.
4128
4128
4129#### Source
4129#### Source
4130
4130
4131−```
4131+```hoon
4132 ++ lte ~/ %lte
4132 ++ lte ~/ %lte
4133 |= [a=@rs b=@rs]
4133 |= [a=@rs b=@rs]
4134 ~_ leaf+"rs-fail"
4134 ~_ leaf+"rs-fail"
@@ -4164,7 +4164,7 @@ A `@rs`.
4164
4164
4165#### Source
4165#### Source
4166
4166
4167−```
4167+```hoon
4168 ++ equ ~/ %equ
4168 ++ equ ~/ %equ
4169 |= [a=@rs b=@rs]
4169 |= [a=@rs b=@rs]
4170 ~_ leaf+"rs-fail"
4170 ~_ leaf+"rs-fail"
@@ -4200,7 +4200,7 @@ A `@rs`.
4200
4200
4201#### Source
4201#### Source
4202
4202
4203−```
4203+```hoon
4204 ++ gte ~/ %gte
4204 ++ gte ~/ %gte
4205 |= [a=@rs b=@rs]
4205 |= [a=@rs b=@rs]
4206 ~_ leaf+"rs-fail"
4206 ~_ leaf+"rs-fail"
@@ -4236,7 +4236,7 @@ A `@rs`.
4236
4236
4237#### Source
4237#### Source
4238
4238
4239−```
4239+```hoon
4240 ++ gth ~/ %gth
4240 ++ gth ~/ %gth
4241 |= [a=@rs b=@rs]
4241 |= [a=@rs b=@rs]
4242 ~_ leaf+"rs-fail"
4242 ~_ leaf+"rs-fail"
@@ -4273,7 +4273,7 @@ A `@rs`.
4273
4273
4274#### Source
4274#### Source
4275
4275
4276−```
4276+```hoon
4277 ++ sun |= [a=@u] ^- @rs (sun:ma a)
4277 ++ sun |= [a=@u] ^- @rs (sun:ma a)
4278```
4278```
4279
4279
@@ -4301,7 +4301,7 @@ A `@rs`.
4301
4301
4302#### Source
4302#### Source
4303
4303
4304−```
4304+```hoon
4305 ++ san |= [a=@s] ^- @rs (san:ma a)
4305 ++ san |= [a=@s] ^- @rs (san:ma a)
4306```
4306```
4307
4307
@@ -4328,7 +4328,7 @@ A `flag`.
4328
4328
4329#### Source
4329#### Source
4330
4330
4331−```
4331+```hoon
4332 ++ sig |= [a=@rs] ^- ? (sig:ma a)
4332 ++ sig |= [a=@rs] ^- ? (sig:ma a)
4333```
4333```
4334
4334
@@ -4359,7 +4359,7 @@ A signed integer.
4359
4359
4360#### Source
4360#### Source
4361
4361
4362−```
4362+```hoon
4363 ++ exp |= [a=@rs] ^- @s (exp:ma a)
4363 ++ exp |= [a=@rs] ^- @s (exp:ma a)
4364```
4364```
4365
4365
@@ -4387,7 +4387,7 @@ A `unit` of `@s`.
4387
4387
4388#### Source
4388#### Source
4389
4389
4390−```
4390+```hoon
4391 ++ toi |= [a=@rs] ^- (unit @s) (toi:ma a)
4391 ++ toi |= [a=@rs] ^- (unit @s) (toi:ma a)
4392```
4392```
4393
4393
@@ -4416,7 +4416,7 @@ A `dn`.
4416
4416
4417#### Source
4417#### Source
4418
4418
4419−```
4419+```hoon
4420 ++ drg |= [a=@rs] ^- dn (drg:ma a)
4420 ++ drg |= [a=@rs] ^- dn (drg:ma a)
4421```
4421```
4422
4422
@@ -4444,7 +4444,7 @@ A `@rs`.
4444
4444
4445#### Source
4445#### Source
4446
4446
4447−```
4447+```hoon
4448 ++ grd |= [a=dn] ^- @rs (grd:ma a)
4448 ++ grd |= [a=dn] ^- @rs (grd:ma a)
4449 --
4449 --
4450```
4450```
@@ -4468,7 +4468,7 @@ down (`$d`), and round to zero (`$z`).
4468
4468
4469#### Source
4469#### Source
4470
4470
4471−```
4471+```hoon
4472 ++ rq
4472 ++ rq
4473 ~% %rq +> ~
4473 ~% %rq +> ~
4474 ^?
4474 ^?
@@ -4484,7 +4484,7 @@ configuration of the `rq` core.
4484
4484
4485#### Source
4485#### Source
4486
4486
4487−```
4487+```hoon
4488 ++ ma
4488 ++ ma
4489 %*(. ff w 15, p 112, b --16.383, r r)
4489 %*(. ff w 15, p 112, b --16.383, r r)
4490```
4490```
@@ -4506,7 +4506,7 @@ An `fn`.
4506
4506
4507#### Source
4507#### Source
4508
4508
4509−```
4509+```hoon
4510 ++ sea
4510 ++ sea
4511 |= [a=@rq] (sea:ma a)
4511 |= [a=@rq] (sea:ma a)
4512```
4512```
@@ -4535,7 +4535,7 @@ A `@rq`, a quad-precision float.
4535
4535
4536#### Source
4536#### Source
4537
4537
4538−```
4538+```hoon
4539 ++ bit
4539 ++ bit
4540 |= [a=n] ^- @rq (bit:ma a)
4540 |= [a=n] ^- @rq (bit:ma a)
4541```
4541```
@@ -4566,7 +4566,7 @@ A `@rq`.
4566
4566
4567#### Source
4567#### Source
4568
4568
4569−```
4569+```hoon
4570 ++ add ~/ %add
4570 ++ add ~/ %add
4571 |= [a=@rq b=@rq] ^- @rq
4571 |= [a=@rq b=@rq] ^- @rq
4572 ~_ leaf+"rq-fail"
4572 ~_ leaf+"rq-fail"
@@ -4599,7 +4599,7 @@ A `@rq`.
4599
4599
4600#### Source
4600#### Source
4601
4601
4602−```
4602+```hoon
4603 ++ sub ~/ %sub
4603 ++ sub ~/ %sub
4604 |= [a=@rq b=@rq] ^- @rq
4604 |= [a=@rq b=@rq] ^- @rq
4605 ~_ leaf+"rq-fail"
4605 ~_ leaf+"rq-fail"
@@ -4635,7 +4635,7 @@ A `@rq`.
4635
4635
4636#### Source
4636#### Source
4637
4637
4638−```
4638+```hoon
4639 ++ mul ~/ %mul
4639 ++ mul ~/ %mul
4640 |= [a=@rq b=@rq] ^- @rq
4640 |= [a=@rq b=@rq] ^- @rq
4641 ~_ leaf+"rq-fail"
4641 ~_ leaf+"rq-fail"
@@ -4668,14 +4668,14 @@ A `@rq`.
4668
4668
4669#### Source
4669#### Source
4670
4670
4671−```
4671+```hoon
4672 ++ div ~/ %div
4672 ++ div ~/ %div
4673 |= [a=@rq b=@rq] ^- @rq
4673 |= [a=@rq b=@rq] ^- @rq
4674 ~_ leaf+"rq-fail"
4674 ~_ leaf+"rq-fail"
4675 (div:ma a b)
4675 (div:ma a b)
4676```
4676```
4677
4677
4678−#### examples
4678+#### Examples
4679
4679
4680```
4680```
4681 > (div:rq .~~~1.821e5 .~~~1.05102e3)
4681 > (div:rq .~~~1.821e5 .~~~1.05102e3)
@@ -4704,7 +4704,7 @@ A `@rq`.
4704
4704
4705#### Source
4705#### Source
4706
4706
4707−```
4707+```hoon
4708 ++ fma ~/ %fma
4708 ++ fma ~/ %fma
4709 |= [a=@rq b=@rq c=@rq] ^- @rq
4709 |= [a=@rq b=@rq c=@rq] ^- @rq
4710 ~_ leaf+"rq-fail"
4710 ~_ leaf+"rq-fail"
@@ -4735,14 +4735,14 @@ A `@rq`.
4735
4735
4736#### Source
4736#### Source
4737
4737
4738−```
4738+```hoon
4739 ++ sqt ~/ %sqt
4739 ++ sqt ~/ %sqt
4740 |= [a=@rq] ^- @rq
4740 |= [a=@rq] ^- @rq
4741 ~_ leaf+"rq-fail"
4741 ~_ leaf+"rq-fail"
4742 (sqt:ma a)
4742 (sqt:ma a)
4743```
4743```
4744
4744
4745−#### Source
4745+#### Examples
4746
4746
4747```
4747```
4748 > (sqt:rq .~~~6.2044e7)
4748 > (sqt:rq .~~~6.2044e7)
@@ -4768,7 +4768,7 @@ A `@rq`.
4768
4768
4769#### Source
4769#### Source
4770
4770
4771−```
4771+```hoon
4772 ++ lth ~/ %lth
4772 ++ lth ~/ %lth
4773 |= [a=@rq b=@rq]
4773 |= [a=@rq b=@rq]
4774 ~_ leaf+"rq-fail"
4774 ~_ leaf+"rq-fail"
@@ -4805,7 +4805,7 @@ A `@rq`.
4805
4805
4806#### Source
4806#### Source
4807
4807
4808−```
4808+```hoon
4809 ++ lte ~/ %lte
4809 ++ lte ~/ %lte
4810 |= [a=@rq b=@rq]
4810 |= [a=@rq b=@rq]
4811 ~_ leaf+"rq-fail"
4811 ~_ leaf+"rq-fail"
@@ -4844,7 +4844,7 @@ A `@rq`.
4844
4844
4845#### Source
4845#### Source
4846
4846
4847−```
4847+```hoon
4848 ++ equ ~/ %equ
4848 ++ equ ~/ %equ
4849 |= [a=@rq b=@rq]
4849 |= [a=@rq b=@rq]
4850 ~_ leaf+"rq-fail"
4850 ~_ leaf+"rq-fail"
@@ -4880,7 +4880,7 @@ A `@rq`.
4880
4880
4881#### Source
4881#### Source
4882
4882
4883−```
4883+```hoon
4884 ++ gte ~/ %gte
4884 ++ gte ~/ %gte
4885 |= [a=@rq b=@rq]
4885 |= [a=@rq b=@rq]
4886 ~_ leaf+"rq-fail"
4886 ~_ leaf+"rq-fail"
@@ -4917,7 +4917,7 @@ A `@rq`.
4917
4917
4918#### Source
4918#### Source
4919
4919
4920−```
4920+```hoon
4921 ++ gth ~/ %gth
4921 ++ gth ~/ %gth
4922 |= [a=@rq b=@rq]
4922 |= [a=@rq b=@rq]
4923 ~_ leaf+"rq-fail"
4923 ~_ leaf+"rq-fail"
@@ -4954,7 +4954,7 @@ A `@rq`, a quad-precision float.
4954
4954
4955#### Source
4955#### Source
4956
4956
4957−```
4957+```hoon
4958 ++ sun |= [a=@u] ^- @rq (sun:ma a)
4958 ++ sun |= [a=@u] ^- @rq (sun:ma a)
4959```
4959```
4960
4960
@@ -4982,7 +4982,7 @@ A `@rq`, a quad-precision float.
4982
4982
4983#### Source
4983#### Source
4984
4984
4985−```
4985+```hoon
4986 ++ san |= [a=@s] ^- @rq (san:ma a)
4986 ++ san |= [a=@s] ^- @rq (san:ma a)
4987```
4987```
4988
4988
@@ -5010,7 +5010,7 @@ A `flag`.
5010
5010
5011#### Source
5011#### Source
5012
5012
5013−```
5013+```hoon
5014 ++ sig |= [a=@rq] ^- ? (sig:ma a)
5014 ++ sig |= [a=@rq] ^- ? (sig:ma a)
5015```
5015```
5016
5016
@@ -5038,7 +5038,7 @@ A `@s`, a signed integer.
5038
5038
5039#### Source
5039#### Source
5040
5040
5041−```
5041+```hoon
5042 ++ exp |= [a=@rq] ^- @s (exp:ma a)
5042 ++ exp |= [a=@rq] ^- @s (exp:ma a)
5043```
5043```
5044
5044
@@ -5066,7 +5066,7 @@ A `unit` of `@s`.
5066
5066
5067#### Source
5067#### Source
5068
5068
5069−```
5069+```hoon
5070 ++ toi |= [a=@rq] ^- (unit @s) (toi:ma a)
5070 ++ toi |= [a=@rq] ^- (unit @s) (toi:ma a)
5071```
5071```
5072
5072
@@ -5098,7 +5098,7 @@ A `dn`.
5098
5098
5099#### Source
5099#### Source
5100
5100
5101−```
5101+```hoon
5102 ++ drg |= [a=@rq] ^- dn (drg:ma a) :: @rq to decimal float
5102 ++ drg |= [a=@rq] ^- dn (drg:ma a) :: @rq to decimal float
5103```
5103```
5104
5104
@@ -5131,7 +5131,7 @@ A `@rq`, a quad-precision float.
5131
5131
5132#### Source
5132#### Source
5133
5133
5134−```
5134+```hoon
5135 ++ grd |= [a=dn] ^- @rq (grd:ma a)
5135 ++ grd |= [a=dn] ^- @rq (grd:ma a)
5136 --
5136 --
5137```
5137```
@@ -5155,7 +5155,7 @@ down (`$d`), and round to zero (`$z`).
5155
5155
5156#### Source
5156#### Source
5157
5157
5158−```
5158+```hoon
5159 ++ rh
5159 ++ rh
5160 ~% %rh +> ~
5160 ~% %rh +> ~
5161 ^?
5161 ^?
@@ -5172,7 +5172,7 @@ configuration of the `rh` core.
5172
5172
5173#### Source
5173#### Source
5174
5174
5175−```
5175+```hoon
5176 ++ ma
5176 ++ ma
5177 %*(. ff w 5, p 10, b --15, r r)
5177 %*(. ff w 5, p 10, b --15, r r)
5178```
5178```
@@ -5194,7 +5194,7 @@ An `fn`.
5194
5194
5195#### Source
5195#### Source
5196
5196
5197−```
5197+```hoon
5198 ++ sea
5198 ++ sea
5199 |= [a=@rh] (sea:ma a)
5199 |= [a=@rh] (sea:ma a)
5200```
5200```
@@ -5223,7 +5223,7 @@ A `@rh`, a half-precision float.
5223
5223
5224#### Source
5224#### Source
5225
5225
5226−```
5226+```hoon
5227 ++ bit
5227 ++ bit
5228 |= [a=fn] ^- @rh (bit:ma a)
5228 |= [a=fn] ^- @rh (bit:ma a)
5229```
5229```
@@ -5252,7 +5252,7 @@ A `@rh`.
5252
5252
5253#### Source
5253#### Source
5254
5254
5255−```
5255+```hoon
5256 ++ add ~/ %add
5256 ++ add ~/ %add
5257 |= [a=@rh b=@rh] ^- @rh
5257 |= [a=@rh b=@rh] ^- @rh
5258 ~_ leaf+"rh-fail"
5258 ~_ leaf+"rh-fail"
@@ -5285,7 +5285,7 @@ A `@rh`.
5285
5285
5286#### Source
5286#### Source
5287
5287
5288−```
5288+```hoon
5289 ++ sub ~/ %sub
5289 ++ sub ~/ %sub
5290 |= [a=@rh b=@rh] ^- @rh
5290 |= [a=@rh b=@rh] ^- @rh
5291 ~_ leaf+"rh-fail"
5291 ~_ leaf+"rh-fail"
@@ -5321,7 +5321,7 @@ A `@rh`.
5321
5321
5322#### Source
5322#### Source
5323
5323
5324−```
5324+```hoon
5325 ++ mul ~/ %mul
5325 ++ mul ~/ %mul
5326 |= [a=@rh b=@rh] ^- @rh
5326 |= [a=@rh b=@rh] ^- @rh
5327 ~_ leaf+"rh-fail"
5327 ~_ leaf+"rh-fail"
@@ -5354,7 +5354,7 @@ A `@rh`.
5354
5354
5355#### Source
5355#### Source
5356
5356
5357−```
5357+```hoon
5358 ++ div ~/ %div
5358 ++ div ~/ %div
5359 |= [a=@rh b=@rh] ^- @rh
5359 |= [a=@rh b=@rh] ^- @rh
5360 ~_ leaf+"rh-fail"
5360 ~_ leaf+"rh-fail"
@@ -5390,7 +5390,7 @@ A `@rh`.
5390
5390
5391#### Source
5391#### Source
5392
5392
5393−```
5393+```hoon
5394 ++ fma ~/ %fma
5394 ++ fma ~/ %fma
5395 |= [a=@rh b=@rh c=@rh] ^- @rh
5395 |= [a=@rh b=@rh c=@rh] ^- @rh
5396 ~_ leaf+"rh-fail"
5396 ~_ leaf+"rh-fail"
@@ -5421,7 +5421,7 @@ A `@rh`.
5421
5421
5422#### Source
5422#### Source
5423
5423
5424−```
5424+```hoon
5425 ++ sqt ~/ %sqt
5425 ++ sqt ~/ %sqt
5426 |= [a=@rh] ^- @rh
5426 |= [a=@rh] ^- @rh
5427 ~_ leaf+"rh-fail"
5427 ~_ leaf+"rh-fail"
@@ -5430,7 +5430,7 @@ A `@rh`.
5430
5430
5431#### Source
5431#### Source
5432
5432
5433−```
5433+```hoon
5434 > (sqt:rh .~~6.24e4)
5434 > (sqt:rh .~~6.24e4)
5435 .~~2.498e2
5435 .~~2.498e2
5436```
5436```
@@ -5454,7 +5454,7 @@ A `@rh`.
5454
5454
5455#### Source
5455#### Source
5456
5456
5457−```
5457+```hoon
5458 ++ lth ~/ %lth
5458 ++ lth ~/ %lth
5459 |= [a=@rh b=@rh]
5459 |= [a=@rh b=@rh]
5460 ~_ leaf+"rh-fail"
5460 ~_ leaf+"rh-fail"
@@ -5490,7 +5490,7 @@ A `@rh`.
5490
5490
5491#### Source
5491#### Source
5492
5492
5493−```
5493+```hoon
5494 ++ lte ~/ %lte
5494 ++ lte ~/ %lte
5495 |= [a=@rh b=@rh]
5495 |= [a=@rh b=@rh]
5496 ~_ leaf+"rh-fail"
5496 ~_ leaf+"rh-fail"
@@ -5529,7 +5529,7 @@ A `@rh`.
5529
5529
5530#### Source
5530#### Source
5531
5531
5532−```
5532+```hoon
5533 ++ equ ~/ %equ
5533 ++ equ ~/ %equ
5534 |= [a=@rh b=@rh]
5534 |= [a=@rh b=@rh]
5535 ~_ leaf+"rh-fail"
5535 ~_ leaf+"rh-fail"
@@ -5565,7 +5565,7 @@ A `@rh`.
5565
5565
5566#### Source
5566#### Source
5567
5567
5568−```
5568+```hoon
5569 ++ gte ~/ %gte
5569 ++ gte ~/ %gte
5570 |= [a=@rh b=@rh]
5570 |= [a=@rh b=@rh]
5571 ~_ leaf+"rh-fail"
5571 ~_ leaf+"rh-fail"
@@ -5602,7 +5602,7 @@ A `@rh`.
5602
5602
5603#### Source
5603#### Source
5604
5604
5605−```
5605+```hoon
5606 ++ gth ~/ %gth
5606 ++ gth ~/ %gth
5607 |= [a=@rh b=@rh]
5607 |= [a=@rh b=@rh]
5608 ~_ leaf+"rh-fail"
5608 ~_ leaf+"rh-fail"
@@ -5640,7 +5640,7 @@ A `@rs`, a single-precision float.
5640
5640
5641#### Source
5641#### Source
5642
5642
5643−```
5643+```hoon
5644 ++ tos |= {a/@rh} (bit:rs (sea a))
5644 ++ tos |= {a/@rh} (bit:rs (sea a))
5645```
5645```
5646
5646
@@ -5668,7 +5668,7 @@ A `@rh`, a half-precision float.
5668
5668
5669#### Source
5669#### Source
5670
5670
5671−```
5671+```hoon
5672 ++ fos |= {a/@rs} (bit (sea:rs a))
5672 ++ fos |= {a/@rs} (bit (sea:rs a))
5673```
5673```
5674
5674
@@ -5696,7 +5696,7 @@ A `@rh`, a half-precision float.
5696
5696
5697#### Source
5697#### Source
5698
5698
5699−```
5699+```hoon
5700 ++ sun |= [a=@u] ^- @rh (sun:ma a)
5700 ++ sun |= [a=@u] ^- @rh (sun:ma a)
5701```
5701```
5702
5702
@@ -5724,7 +5724,7 @@ A `@rh`, a half-precision float.
5724
5724
5725#### Source
5725#### Source
5726
5726
5727−```
5727+```hoon
5728 ++ san |= [a=@s] ^- @rh (san:ma a)
5728 ++ san |= [a=@s] ^- @rh (san:ma a)
5729```
5729```
5730
5730
@@ -5752,7 +5752,7 @@ A `flag`.
5752
5752
5753#### Source
5753#### Source
5754
5754
5755−```
5755+```hoon
5756 ++ sig |= [a=@rh] ^- ? (sig:ma a)
5756 ++ sig |= [a=@rh] ^- ? (sig:ma a)
5757```
5757```
5758
5758
@@ -5780,7 +5780,7 @@ A `@s`, a signed integer.
5780
5780
5781#### Source
5781#### Source
5782
5782
5783−```
5783+```hoon
5784 ++ exp |= [a=@rh] ^- @s (exp:ma a)
5784 ++ exp |= [a=@rh] ^- @s (exp:ma a)
5785```
5785```
5786
5786
@@ -5808,7 +5808,7 @@ A `unit` of `@s`.
5808
5808
5809#### Source
5809#### Source
5810
5810
5811−```
5811+```hoon
5812 ++ toi |= [a=@rh] ^- (unit @s) (toi:ma a)
5812 ++ toi |= [a=@rh] ^- (unit @s) (toi:ma a)
5813```
5813```
5814
5814
@@ -5840,7 +5840,7 @@ A `dn`.
5840
5840
5841#### Source
5841#### Source
5842
5842
5843−```
5843+```hoon
5844 ++ drg |= [a=@rh] ^- dn (drg:ma a)
5844 ++ drg |= [a=@rh] ^- dn (drg:ma a)
5845```
5845```
5846
5846
@@ -5873,7 +5873,7 @@ A `@rh`, a a half-precision float.
5873
5873
5874#### Source
5874#### Source
5875
5875
5876−```
5876+```hoon
5877 ++ grd |= [a=dn] ^- @rh (grd:ma a)
5877 ++ grd |= [a=dn] ^- @rh (grd:ma a)
5878 --
5878 --
5879```
5879```
reference/library/3c.md+18−18
@@ -20,7 +20,7 @@ A cell of unsigned decimals.
20
20
21#### Source
21#### Source
22
22
23−```
23+```hoon
24 ++ yall
24 ++ yall
25 |= day=@ud
25 |= day=@ud
26 ^- [y=@ud m=@ud d=@ud]
26 ^- [y=@ud m=@ud d=@ud]
@@ -82,7 +82,7 @@ An unsigned decimal.
82
82
83#### Source
83#### Source
84
84
85−```
85+```hoon
86 ++ yawn
86 ++ yawn
87 |= [yer=@ud mot=@ud day=@ud]
87 |= [yer=@ud mot=@ud day=@ud]
88 ^- @ud
88 ^- @ud
@@ -140,7 +140,7 @@ A `@d`.
140
140
141#### Source
141#### Source
142
142
143−```
143+```hoon
144 ++ year
144 ++ year
145 |= det=date
145 |= det=date
146 ^- @da
146 ^- @da
@@ -176,7 +176,7 @@ A `tarp`.
176
176
177#### Source
177#### Source
178
178
179−```
179+```hoon
180 ++ yell
180 ++ yell
181 |= now=@d
181 |= now=@d
182 ^- tarp
182 ^- tarp
@@ -227,7 +227,7 @@ A flag.
227
227
228#### Source
228#### Source
229
229
230−```
230+```hoon
231 ++ yelp
231 ++ yelp
232 |= yer=@ud ^- ?
232 |= yer=@ud ^- ?
233 &(=(0 (mod yer 4)) |(!=(0 (mod yer 100)) =(0 (mod yer 400))))
233 &(=(0 (mod yer 4)) |(!=(0 (mod yer 100)) =(0 (mod yer 400))))
@@ -266,7 +266,7 @@ A `date`.
266
266
267#### Source
267#### Source
268
268
269−```
269+```hoon
270 ++ yore
270 ++ yore
271 |= now=@da
271 |= now=@da
272 ^- date
272 ^- date
@@ -303,7 +303,7 @@ A time atom, `@d`.
303
303
304#### Source
304#### Source
305
305
306−```
306+```hoon
307 ++ yule :: time atom
307 ++ yule :: time atom
308 |= rip=tarp
308 |= rip=tarp
309 ^- @d
309 ^- @d
@@ -356,7 +356,7 @@ Core whose arms contain constants for interacting with earth time.
356
356
357#### Source
357#### Source
358
358
359−```
359+```hoon
360 ++ yo
360 ++ yo
361```
361```
362
362
@@ -375,7 +375,7 @@ An atom.
375
375
376#### Source
376#### Source
377
377
378−```
378+```hoon
379 |% ++ cet 36.524
379 |% ++ cet 36.524
380```
380```
381
381
@@ -405,7 +405,7 @@ An atom.
405
405
406#### Source
406#### Source
407
407
408−```
408+```hoon
409 ++ day 86.400
409 ++ day 86.400
410```
410```
411
411
@@ -434,7 +434,7 @@ An atom.
434
434
435#### Source
435#### Source
436
436
437−```
437+```hoon
438 ++ era 146.097
438 ++ era 146.097
439```
439```
440
440
@@ -470,7 +470,7 @@ An atom.
470
470
471#### Source
471#### Source
472
472
473−```
473+```hoon
474 ++ hor 3.600
474 ++ hor 3.600
475```
475```
476
476
@@ -498,7 +498,7 @@ An atom.
498
498
499#### Source
499#### Source
500
500
501−```
501+```hoon
502 ++ jes 106.751.991.084.417
502 ++ jes 106.751.991.084.417
503```
503```
504
504
@@ -526,7 +526,7 @@ An atom.
526
526
527#### Source
527#### Source
528
528
529−```
529+```hoon
530 ++ mit 60
530 ++ mit 60
531```
531```
532
532
@@ -552,7 +552,7 @@ A `list` of `@ud`
552
552
553#### Source
553#### Source
554
554
555−```
555+```hoon
556 ++ moh `(list @ud)`[31 28 31 30 31 30 31 31 30 31 30 31 ~]
556 ++ moh `(list @ud)`[31 28 31 30 31 30 31 31 30 31 30 31 ~]
557```
557```
558
558
@@ -581,7 +581,7 @@ A `list` of `@ud`.
581
581
582#### Source
582#### Source
583
583
584−```
584+```hoon
585 ++ moy `(list @ud)`[31 29 31 30 31 30 31 31 30 31 30 31 ~]
585 ++ moy `(list @ud)`[31 29 31 30 31 30 31 31 30 31 30 31 ~]
586```
586```
587
587
@@ -609,7 +609,7 @@ An atom.
609
609
610#### Source
610#### Source
611
611
612−```
612+```hoon
613 ++ qad 126.144.001
613 ++ qad 126.144.001
614```
614```
615
615
@@ -634,7 +634,7 @@ An atom.
634
634
635#### Source
635#### Source
636
636
637−```
637+```hoon
638 ++ yer 31.536.000
638 ++ yer 31.536.000
639```
639```
640
640
reference/library/3d.md+17−17
@@ -20,7 +20,7 @@ An atom.
20
20
21#### Source
21#### Source
22
22
23−```
23+```hoon
24 ++ shad |=(ruz=@ (shax (shax ruz)))
24 ++ shad |=(ruz=@ (shax (shax ruz)))
25```
25```
26
26
@@ -37,7 +37,7 @@ An atom.
37
37
38Half SHA-256
38Half SHA-256
39
39
40−Produces a 128-bit atom by performing the [bitwise XOR](@/docs/reference/library/2d.md) on the
40+Produces a 128-bit atom by performing the [bitwise XOR](@/docs/hoon/library/2d.md) on the
41first and last halves of the 256-bit salted hash `shas`.
41first and last halves of the 256-bit salted hash `shas`.
42
42
43#### Accepts
43#### Accepts
@@ -48,7 +48,7 @@ first and last halves of the 256-bit salted hash `shas`.
48
48
49#### Source
49#### Source
50
50
51−```
51+```hoon
52 ++ shaf :: half sha-256
52 ++ shaf :: half sha-256
53 |= [sal=@ ruz=@]
53 |= [sal=@ ruz=@]
54 =+ haz=(shas sal ruz)
54 =+ haz=(shas sal ruz)
@@ -87,7 +87,7 @@ An atom.
87
87
88#### Source
88#### Source
89
89
90−```
90+```hoon
91 ++ shal
91 ++ shal
92 ~/ %shal
92 ~/ %shal
93 |= [len=@ ruz=@] ^- @
93 |= [len=@ ruz=@] ^- @
@@ -242,7 +242,7 @@ An atom.
242
242
243#### Source
243#### Source
244
244
245−```
245+```hoon
246 ++ sham
246 ++ sham
247 |= yux=* ^- @uvH ^- @
247 |= yux=* ^- @uvH ^- @
248 ?@ yux
248 ?@ yux
@@ -278,7 +278,7 @@ An atom.
278
278
279#### Source
279#### Source
280
280
281−```
281+```hoon
282 ++ shan
282 ++ shan
283 |= ruz=@
283 |= ruz=@
284 =+ [few==>(fe .(a 5)) wac=|=([a=@ b=@] (cut 5 [a 1] b))]
284 =+ [few==>(fe .(a 5)) wac=|=([a=@ b=@] (cut 5 [a 1] b))]
@@ -362,7 +362,7 @@ SHA-1 is a deprecated function; it is not considered secure.
362
362
363Salted hash
363Salted hash
364
364
365−Produces an atom by using SHA-256 plus a salt input. The [bitwise XOR](@/docs/reference/library/2d.md)
365+Produces an atom by using SHA-256 plus a salt input. The [bitwise XOR](@/docs/hoon/library/2d.md)
366is performed on `sal` and the product of `ruz` hashed with SHA-256. The product
366is performed on `sal` and the product of `ruz` hashed with SHA-256. The product
367of that logical operation is then itself hashed with SHA-256.
367of that logical operation is then itself hashed with SHA-256.
368
368
@@ -374,7 +374,7 @@ of that logical operation is then itself hashed with SHA-256.
374
374
375#### Source
375#### Source
376
376
377−```
377+```hoon
378 ++ shas
378 ++ shas
379 |= [sal=@ ruz=@]
379 |= [sal=@ ruz=@]
380 (shax (mix sal (shax ruz)))
380 (shax (mix sal (shax ruz)))
@@ -411,7 +411,7 @@ An atom.
411
411
412#### Source
412#### Source
413
413
414−```
414+```hoon
415 ++ shaw
415 ++ shaw
416 |= [sal=@ len=@ ruz=@]
416 |= [sal=@ len=@ ruz=@]
417 (~(raw og (shas sal (mix len ruz))) len)
417 (~(raw og (shas sal (mix len ruz))) len)
@@ -436,7 +436,7 @@ Produces an atom by hashing an atom `ruz` with SHA-256.
436
436
437#### Sources
437#### Sources
438
438
439−```
439+```hoon
440 ++ shax
440 ++ shax
441 ~/ %shax
441 ~/ %shax
442 |= ruz=@ ^- @
442 |= ruz=@ ^- @
@@ -468,7 +468,7 @@ the byte-length of the theoretical buffer represented by the atom.
468
468
469#### Source
469#### Source
470
470
471−```
471+```hoon
472 ++ shay
472 ++ shay
473 ~/ %shay
473 ~/ %shay
474 |= [len=@u ruz=@] ^- @
474 |= [len=@u ruz=@] ^- @
@@ -593,7 +593,7 @@ An atom.
593
593
594#### Source
594#### Source
595
595
596−```
596+```hoon
597 ++ shaz
597 ++ shaz
598 |= ruz=@ ^- @
598 |= ruz=@ ^- @
599 (shal [(met 3 ruz) ruz])
599 (shal [(met 3 ruz) ruz])
@@ -625,7 +625,7 @@ A core.
625
625
626#### Source
626#### Source
627
627
628−```
628+```hoon
629 ++ og
629 ++ og
630 ~/ %og
630 ~/ %og
631 |_ a=@
631 |_ a=@
@@ -662,7 +662,7 @@ An atom.
662
662
663#### Source
663#### Source
664
664
665−```
665+```hoon
666 ++ rad
666 ++ rad
667 |= b=@ ^- @
667 |= b=@ ^- @
668 =+ c=(raw (met 0 b))
668 =+ c=(raw (met 0 b))
@@ -704,7 +704,7 @@ A cell.
704
704
705#### Source
705#### Source
706
706
707−```
707+```hoon
708 ++ rads
708 ++ rads
709 |= b=@
709 |= b=@
710 =+ r=(rad b)
710 =+ r=(rad b)
@@ -747,7 +747,7 @@ An atom.
747
747
748#### Source
748#### Source
749
749
750−```
750+```hoon
751 ++ raw
751 ++ raw
752 ~/ %raw
752 ~/ %raw
753 |= b=@ ^- @
753 |= b=@ ^- @
@@ -790,7 +790,7 @@ parent core with `(raw b)`.
790
790
791#### Source
791#### Source
792
792
793−```
793+```hoon
794 ++ raws
794 ++ raws
795 |= b=@
795 |= b=@
796 =+ r=(raw b)
796 =+ r=(raw b)
reference/library/3f.md+20−20
@@ -12,7 +12,7 @@ Used in the `@p` phonetic base.
12
12
13#### Source
13#### Source
14
14
15−```
15+```hoon
16 ++ un
16 ++ un
17 |%
17 |%
18```
18```
@@ -36,7 +36,7 @@ An atom.
36
36
37#### Source
37#### Source
38
38
39−```
39+```hoon
40 ++ wren
40 ++ wren
41 |= pyn=@ ^- @
41 |= pyn=@ ^- @
42 =+ len=(met 3 pyn)
42 =+ len=(met 3 pyn)
@@ -88,7 +88,7 @@ An atom.
88
88
89#### Source
89#### Source
90
90
91−```
91+```hoon
92 ++ wred
92 ++ wred
93 |= cry=@ ^- @
93 |= cry=@ ^- @
94 =+ len=(met 3 cry)
94 =+ len=(met 3 cry)
@@ -141,7 +141,7 @@ An atom.
141
141
142#### Source
142#### Source
143
143
144−```
144+```hoon
145 ++ xafo |=([a=@ b=@] +((mod (add (dec b) a) 255)))
145 ++ xafo |=([a=@ b=@] +((mod (add (dec b) a) 255)))
146```
146```
147
147
@@ -178,7 +178,7 @@ An atom.
178
178
179#### Source
179#### Source
180
180
181−```
181+```hoon
182 ++ xaro |=([a=@ b=@] +((mod (add (dec b) (sub 255 (mod a 255))) 255)))
182 ++ xaro |=([a=@ b=@] +((mod (add (dec b) (sub 255 (mod a 255))) 255)))
183```
183```
184
184
@@ -213,7 +213,7 @@ An atom.
213
213
214#### Source
214#### Source
215
215
216−```
216+```hoon
217 ++ zaft
217 ++ zaft
218 |= a=@D
218 |= a=@D
219 =+ ^= b
219 =+ ^= b
@@ -265,7 +265,7 @@ An atom.
265
265
266#### Source
266#### Source
267
267
268−```
268+```hoon
269 ++ zart :: reverse 255-sbox
269 ++ zart :: reverse 255-sbox
270 |= a=@D
270 |= a=@D
271 =+ ^= b
271 =+ ^= b
@@ -315,7 +315,7 @@ An atom.
315
315
316#### Source
316#### Source
317
317
318−```
318+```hoon
319 ++ zyft :: forward 256-sbox
319 ++ zyft :: forward 256-sbox
320 |= a=@D
320 |= a=@D
321 =+ ^= b
321 =+ ^= b
@@ -368,7 +368,7 @@ An atom.
368
368
369#### Source
369#### Source
370
370
371−```
371+```hoon
372 ++ zyrt :: reverse 256-sbox
372 ++ zyrt :: reverse 256-sbox
373 |= a=@D
373 |= a=@D
374 =+ ^= b
374 =+ ^= b
@@ -407,7 +407,7 @@ An atom.
407
407
408Reversible scrambling, v2
408Reversible scrambling, v2
409
409
410−```
410+```hoon
411 ++ ob
411 ++ ob
412 |%
412 |%
413```
413```
@@ -434,7 +434,7 @@ An atom.
434
434
435#### Source
435#### Source
436
436
437−```
437+```hoon
438 ++ feen
438 ++ feen
439 |= pyn=@ ^- @
439 |= pyn=@ ^- @
440 ?: &((gte pyn 0x1.0000) (lte pyn 0xffff.ffff))
440 ?: &((gte pyn 0x1.0000) (lte pyn 0xffff.ffff))
@@ -484,7 +484,7 @@ An atom.
484
484
485#### Source
485#### Source
486
486
487−```
487+```hoon
488 ++ fend
488 ++ fend
489 |= cry=@ ^- @
489 |= cry=@ ^- @
490 ?: &((gte cry 0x1.0000) (lte cry 0xffff.ffff))
490 ?: &((gte cry 0x1.0000) (lte cry 0xffff.ffff))
@@ -537,7 +537,7 @@ An atom.
537
537
538#### Source
538#### Source
539
539
540−```
540+```hoon
541 ++ fice :: adapted from
541 ++ fice :: adapted from
542 |= nor=@ :: black and rogaway
542 |= nor=@ :: black and rogaway
543 ^- @ :: "ciphers with
543 ^- @ :: "ciphers with
@@ -580,7 +580,7 @@ An atom.
580
580
581#### Source
581#### Source
582
582
583−```
583+```hoon
584 ++ teil :: reverse ++fice
584 ++ teil :: reverse ++fice
585 |= vip=@
585 |= vip=@
586 ^- @
586 ^- @
@@ -609,7 +609,7 @@ An atom.
609
609
610Reverse Feistel-like cipher
610Reverse Feistel-like cipher
611
611
612−A single round of the Feistel-like cipher `fice`. AES ([`aesc`](@/docs/reference/library/3f.md)) is
612+A single round of the Feistel-like cipher `fice`. AES ([`aesc`](@/docs/hoon/library/3f.md)) is
613used as the round function. The inverse of `rund`.
613used as the round function. The inverse of `rund`.
614
614
615#### Accepts
615#### Accepts
@@ -626,7 +626,7 @@ A cell of two atoms.
626
626
627#### Source
627#### Source
628
628
629−```
629+```hoon
630 ++ rynd
630 ++ rynd
631 |= [n=@ l=@ r=@]
631 |= [n=@ l=@ r=@]
632 ^- [@ @]
632 ^- [@ @]
@@ -651,7 +651,7 @@ A cell of two atoms.
651
651
652Reverse single Feistel-like
652Reverse single Feistel-like
653
653
654−A single round of the Feistel-like reverse cipher `teil`. AES ([`aesc`](@/docs/reference/library/3f.md))
654+A single round of the Feistel-like reverse cipher `teil`. AES ([`aesc`](@/docs/hoon/library/3f.md))
655is used as the round function. The inverse of `rynd`.
655is used as the round function. The inverse of `rynd`.
656
656
657#### Accepts
657#### Accepts
@@ -668,7 +668,7 @@ A cell of two atoms.
668
668
669#### Source
669#### Source
670
670
671−```
671+```hoon
672 ++ rund
672 ++ rund
673 |= [n=@ l=@ r=@]
673 |= [n=@ l=@ r=@]
674 ^- [@ @]
674 ^- [@ @]
@@ -693,7 +693,7 @@ A cell of two atoms.
693
693
694Key list
694Key list
695
695
696−Produces a list of arbitrary hexademical keys for use with [`aesc`](@/docs/reference/library/3f.md).
696+Produces a list of arbitrary hexademical keys for use with [`aesc`](@/docs/hoon/library/3f.md).
697
697
698#### Produces
698#### Produces
699
699
@@ -701,7 +701,7 @@ A list of atoms of aura `@ux` (hexadecimal).
701
701
702#### Source
702#### Source
703
703
704−```
704+```hoon
705 ++ raku
705 ++ raku
706 ^- (list @ux)
706 ^- (list @ux)
707 :~ 0xb76d.5eed
707 :~ 0xb76d.5eed
reference/library/3g.md+17−17
@@ -13,7 +13,7 @@ and printed using `++so` and `++co` cores.
13
13
14#### Source
14#### Source
15
15
16−```
16+```hoon
17 ++ coin $% [$$ p=dime]
17 ++ coin $% [$$ p=dime]
18 [$blob p=*]
18 [$blob p=*]
19 [$many p=(list coin)]
19 [$many p=(list coin)]
@@ -51,14 +51,14 @@ and printed using `++so` and `++co` cores.
51
51
52Aura-atom pair
52Aura-atom pair
53
53
54−Used in `++coin`. Convenience methods [`++scot`](@/docs/reference/library/4m.md) and
54+Used in `++coin`. Convenience methods [`++scot`](@/docs/hoon/library/4m.md) and
55−[`++scow`](@/docs/reference/library/4m.md) print dimes as `++cord` and `++tape`, respectively.
55+[`++scow`](@/docs/hoon/library/4m.md) print dimes as `++cord` and `++tape`, respectively.
56−[`++slat`](@/docs/reference/library/4m.md), [`++slav`](@/docs/reference/library/4m.md), and [`++slaw`](@/docs/reference/library/4m.md) are used
56+[`++slat`](@/docs/hoon/library/4m.md), [`++slav`](@/docs/hoon/library/4m.md), and [`++slaw`](@/docs/hoon/library/4m.md) are used
57to parse atoms of specific auras.
57to parse atoms of specific auras.
58
58
59#### Source
59#### Source
60
60
61−```
61+```hoon
62 ++ dime [p=@ta q=@]
62 ++ dime [p=@ta q=@]
63```
63```
64
64
@@ -78,7 +78,7 @@ Optional result `p` and parsing continuation `q`.
78
78
79#### Source
79#### Source
80
80
81−```
81+```hoon
82 ++ hair [p=@ud q=@ud]
82 ++ hair [p=@ud q=@ud]
83```
83```
84
84
@@ -94,7 +94,7 @@ Optional result `p` and parsing continuation `q`.
94
94
95#### Discussion
95#### Discussion
96
96
97−See also: [Section 2e](@/docs/reference/library/2e.md), `++rule`
97+See also: [Section 2e](@/docs/hoon/library/2e.md), `++rule`
98
98
99
99
100---
100---
@@ -106,7 +106,7 @@ A pair of two `@ud` used in parsing indicating line and column number.
106
106
107#### Source
107#### Source
108
108
109−```
109+```hoon
110 ++ hair [p=@ud q=@ud]
110 ++ hair [p=@ud q=@ud]
111```
111```
112
112
@@ -135,7 +135,7 @@ Generates an `++edge` with a parsed result set to a specific type.
135
135
136#### Source
136#### Source
137
137
138−```
138+```hoon
139 ++ like |* a=gate
139 ++ like |* a=gate
140 |= b=_`*`[(hair) ~]
140 |= b=_`*`[(hair) ~]
141 :- p=(hair -.b)
141 :- p=(hair -.b)
@@ -169,7 +169,7 @@ Indicates parsing position `p`, and remaining text to be parsed `q`.
169
169
170#### Source
170#### Source
171
171
172−```
172+```hoon
173 ++ nail [p=hair q=tape]
173 ++ nail [p=hair q=tape]
174```
174```
175
175
@@ -189,7 +189,7 @@ A list of `++knot`s. `++knot` is another name for `@ta`.
189
189
190#### Source
190#### Source
191
191
192−```
192+```hoon
193 ++ path (list knot)
193 ++ path (list knot)
194```
194```
195
195
@@ -214,7 +214,7 @@ stack traces.
214
214
215#### Source
215#### Source
216
216
217−```
217+```hoon
218 ++ pint [p=[p=@ q=@] q=[p=@ q=@]]
218 ++ pint [p=[p=@ q=@] q=[p=@ q=@]]
219```
219```
220
220
@@ -239,7 +239,7 @@ An empty parsing rule, but used to check that parsing rules match this with `_`.
239
239
240#### Source
240#### Source
241
241
242−```
242+```hoon
243 ++ rule _|=(nail *edge)
243 ++ rule _|=(nail *edge)
244```
244```
245
245
@@ -259,7 +259,7 @@ The stack trace that is printed after crashing.
259
259
260#### Source
260#### Source
261
261
262−```
262+```hoon
263 ++ spot [p=path q=pint]
263 ++ spot [p=path q=pint]
264```
264```
265
265
@@ -282,7 +282,7 @@ or failure with an error report (`%2`).
282
282
283#### Source
283#### Source
284
284
285−```
285+```hoon
286 ++ tone $% [$0 p=*] :: success
286 ++ tone $% [$0 p=*] :: success
287 [$1 p=(list)] :: blocks
287 [$1 p=(list)] :: blocks
288 [$2 p=(list [@ta *])] :: error report
288 [$2 p=(list [@ta *])] :: error report
@@ -330,7 +330,7 @@ or failure with a stack trace (`%2`).
330
330
331#### Source
331#### Source
332
332
333−```
333+```hoon
334 ++ toon $% [$0 p=*] :: success
334 ++ toon $% [$0 p=*] :: success
335 [$1 p=(list)] :: blocks
335 [$1 p=(list)] :: blocks
336 [$2 p=(list tank)] :: stack trace
336 [$2 p=(list tank)] :: stack trace
@@ -356,7 +356,7 @@ Pull result out of a `++edge`, or crash if there's no result.
356
356
357#### Source
357#### Source
358
358
359−```
359+```hoon
360 ++ wonk |*(veq=edge ?~(q.veq !! p.u.q.veq))
360 ++ wonk |*(veq=edge ?~(q.veq !! p.u.q.veq))
361```
361```
362
362
reference/library/4a.md+5−5
@@ -13,7 +13,7 @@ contained arms.
13
13
14#### Source
14#### Source
15
15
16−```
16+```hoon
17 ~/ %po
17 ~/ %po
18 =+ :- ^= sis :: prefix syllables
18 =+ :- ^= sis :: prefix syllables
19 'dozmarbinwansamlitsighidfidlissogdirwacsabwissib\
19 'dozmarbinwansamlitsighidfidlissogdirwacsabwissib\
@@ -69,7 +69,7 @@ A `unit`.
69
69
70#### Source
70#### Source
71
71
72−```
72+```hoon
73 ++ ind ~/ %ind
73 ++ ind ~/ %ind
74 |= a=@tas
74 |= a=@tas
75 =+ b=0
75 =+ b=0
@@ -107,7 +107,7 @@ A `unit` of an atom.
107
107
108#### Source
108#### Source
109
109
110−```
110+```hoon
111 ++ ins ~/ %ins
111 ++ ins ~/ %ins
112 |= a=@tas
112 |= a=@tas
113 =+ b=0
113 =+ b=0
@@ -148,7 +148,7 @@ An atom.
148
148
149#### Source
149#### Source
150
150
151−```
151+```hoon
152 ++ tod ~/ %tod
152 ++ tod ~/ %tod
153 |=(a=@ ?>((lth a 256) (cut 3 [(mul 3 a) 3] dex)))
153 |=(a=@ ?>((lth a 256) (cut 3 [(mul 3 a) 3] dex)))
154```
154```
@@ -192,7 +192,7 @@ An atom.
192
192
193#### Source
193#### Source
194
194
195−```
195+```hoon
196 ++ tos ~/ %tos
196 ++ tos ~/ %tos
197 |=(a=@ ?>((lth a 256) (cut 3 [(mul 3 a) 3] sis)))
197 |=(a=@ ?>((lth a 256) (cut 3 [(mul 3 a) 3] sis)))
198```
198```
reference/library/4b.md+32−32
@@ -5,7 +5,7 @@ template = "doc.html"
5+++
5+++
6### `++at`
6### `++at`
7
7
8−```
8+```hoon
9 ++ at
9 ++ at
10 |_ a=@
10 |_ a=@
11```
11```
@@ -16,7 +16,7 @@ XX document
16
16
17### `++r:at`
17### `++r:at`
18
18
19−```
19+```hoon
20 ++ r
20 ++ r
21 ?: ?& (gte (met 3 a) 2)
21 ?: ?& (gte (met 3 a) 2)
22 |-
22 |-
@@ -38,7 +38,7 @@ XX document
38
38
39### `++rf:at`
39### `++rf:at`
40
40
41−```
41+```hoon
42 ++ rf `tape`[?-(a $& '&', $| '|', * !!) ~]
42 ++ rf `tape`[?-(a $& '&', $| '|', * !!) ~]
43```
43```
44
44
@@ -47,7 +47,7 @@ XX document
47
47
48### `++rn:at`
48### `++rn:at`
49
49
50−```
50+```hoon
51 ++ rn `tape`[?>(=(0 a) '~') ~]
51 ++ rn `tape`[?>(=(0 a) '~') ~]
52```
52```
53
53
@@ -55,7 +55,7 @@ XX document
55
55
56### `++rt:at`
56### `++rt:at`
57
57
58−```
58+```hoon
59 ++ rt `tape`['\'' (weld (mesc (trip a)) `tape`['\'' ~])]
59 ++ rt `tape`['\'' (weld (mesc (trip a)) `tape`['\'' ~])]
60```
60```
61
61
@@ -63,7 +63,7 @@ XX document
63
63
64### `++rta:at`
64### `++rta:at`
65
65
66−```
66+```hoon
67 ++ rta rt
67 ++ rta rt
68```
68```
69
69
@@ -71,7 +71,7 @@ XX document
71
71
72### `++rtam:at`
72### `++rtam:at`
73
73
74−```
74+```hoon
75 ++ rtam `tape`['%' (trip a)]
75 ++ rtam `tape`['%' (trip a)]
76```
76```
77
77
@@ -79,7 +79,7 @@ XX document
79
79
80### `++rub:at`
80### `++rub:at`
81
81
82−```
82+```hoon
83 ++ rub `tape`['0' 'b' (rum 2 ~ |=(b/@ (add '0' b)))]
83 ++ rub `tape`['0' 'b' (rum 2 ~ |=(b/@ (add '0' b)))]
84```
84```
85
85
@@ -87,7 +87,7 @@ XX document
87
87
88### `++rud:at`
88### `++rud:at`
89
89
90−```
90+```hoon
91 ++ rud (rum 10 ~ |=(b/@ (add '0' b)))
91 ++ rud (rum 10 ~ |=(b/@ (add '0' b)))
92```
92```
93
93
@@ -95,7 +95,7 @@ XX document
95
95
96### `++rum:at`
96### `++rum:at`
97
97
98−```
98+```hoon
99 ++ rum
99 ++ rum
100 |= {b/@ c/tape d/$-(@ @)}
100 |= {b/@ c/tape d/$-(@ @)}
101 ^- tape
101 ^- tape
@@ -118,7 +118,7 @@ XX document
118
118
119### `++rup:at`
119### `++rup:at`
120
120
121−```
121+```hoon
122 ++ rup
122 ++ rup
123 =+ b=(met 3 a)
123 =+ b=(met 3 a)
124 ^- tape
124 ^- tape
@@ -147,7 +147,7 @@ XX document
147
147
148### `++ruv:at`
148### `++ruv:at`
149
149
150−```
150+```hoon
151 ++ ruv
151 ++ ruv
152 ^- tape
152 ^- tape
153 :+ '0'
153 :+ '0'
@@ -168,7 +168,7 @@ XX document
168
168
169### `++rux:at`
169### `++rux:at`
170
170
171−```
171+```hoon
172 ++ rux `tape`['0' 'x' (rum 16 ~ |=(b/@ (add b ?:((lth b 10) 48 87))))]
172 ++ rux `tape`['0' 'x' (rum 16 ~ |=(b/@ (add b ?:((lth b 10) 48 87))))]
173 --
173 --
174 :::::::::::::::::::::::::::::::::::::::::::::::::::::: ::
174 :::::::::::::::::::::::::::::::::::::::::::::::::::::: ::
@@ -198,7 +198,7 @@ A `++tape`.
198
198
199#### Source
199#### Source
200
200
201−```
201+```hoon
202 ++ cass :: lowercase
202 ++ cass :: lowercase
203 |= vib/tape
203 |= vib/tape
204 ^- tape
204 ^- tape
@@ -235,7 +235,7 @@ A `++cord`.
235
235
236#### Source
236#### Source
237
237
238−```
238+```hoon
239 ++ crip |=(a=tape `@t`(rap 3 a)) :: tape to cord
239 ++ crip |=(a=tape `@t`(rap 3 a)) :: tape to cord
240```
240```
241
241
@@ -270,7 +270,7 @@ A `++tape`.
270
270
271#### Source
271#### Source
272
272
273−```
273+```hoon
274 ++ cuss :: uppercase
274 ++ cuss :: uppercase
275 |= vib/tape
275 |= vib/tape
276 ^- tape
276 ^- tape
@@ -307,7 +307,7 @@ A `++tape`.
307
307
308#### Source
308#### Source
309
309
310−```
310+```hoon
311 ++ mesc :: ctrl code escape
311 ++ mesc :: ctrl code escape
312 |= vib/tape
312 |= vib/tape
313 ^- tape
313 ^- tape
@@ -351,7 +351,7 @@ A `++tape`.
351
351
352#### Source
352#### Source
353
353
354−```
354+```hoon
355 ++ runt :: prepend repeatedly
355 ++ runt :: prepend repeatedly
356 |= [[a/@ b/@] c/tape]
356 |= [[a/@ b/@] c/tape]
357 ^- tape
357 ^- tape
@@ -390,7 +390,7 @@ A `(unit @)`.
390
390
391#### Source
391#### Source
392
392
393−```
393+```hoon
394 ++ sand :: atom sanity
394 ++ sand :: atom sanity
395 |= a/@ta
395 |= a/@ta
396 |= b/@ ^- (unit @)
396 |= b/@ ^- (unit @)
@@ -427,7 +427,7 @@ A boolean.
427
427
428#### Source
428#### Source
429
429
430−```
430+```hoon
431 ++ sane :: atom sanity
431 ++ sane :: atom sanity
432 |= a/@ta
432 |= a/@ta
433 |= b/@ ^- ?
433 |= b/@ ^- ?
@@ -494,7 +494,7 @@ An atom.
494
494
495#### Source
495#### Source
496
496
497−```
497+```hoon
498 |= a/@t ^- @
498 |= a/@t ^- @
499 =+ b=(end 3 1 a)
499 =+ b=(end 3 1 a)
500 ~| %bad-utf8
500 ~| %bad-utf8
@@ -533,7 +533,7 @@ A cell of `++tape`s, `p` and `q`.
533
533
534#### Source
534#### Source
535
535
536−```
536+```hoon
537 ++ trim :: 31-bit nonzero
537 ++ trim :: 31-bit nonzero
538 |= key/@
538 |= key/@
539 =+ syd=0xcafe.babe
539 =+ syd=0xcafe.babe
@@ -572,7 +572,7 @@ A `++tape`.
572
572
573#### Source
573#### Source
574
574
575−```
575+```hoon
576 ++ trip :: cord to tape
576 ++ trip :: cord to tape
577 ~/ %trip
577 ~/ %trip
578 |= a/@ ^- tape
578 |= a/@ ^- tape
@@ -611,7 +611,7 @@ A `++list` of codepoints `@c`.
611
611
612#### Source
612#### Source
613
613
614−```
614+```hoon
615 ++ tuba :: utf8 to utf32 tape
615 ++ tuba :: utf8 to utf32 tape
616 |= a/tape
616 |= a/tape
617 ^- (list @c)
617 ^- (list @c)
@@ -646,7 +646,7 @@ A `++tape`.
646
646
647#### Source
647#### Source
648
648
649−```
649+```hoon
650 ++ tufa :: utf32 to utf8 tape
650 ++ tufa :: utf32 to utf8 tape
651 |= a=(list @c)
651 |= a=(list @c)
652 ^- tape
652 ^- tape
@@ -657,7 +657,7 @@ A `++tape`.
657
657
658#### Examples
658#### Examples
659
659
660−```
660+```hoon
661 > (tufa ~[~-~44f. ~-. ~-~442. ~-~443. ~-~442.])
661 > (tufa ~[~-~44f. ~-. ~-~442. ~-~443. ~-~442.])
662 "я тут"
662 "я тут"
663 > (tufa ((list @c) ~[%a %b 0xb1 %c]))
663 > (tufa ((list @c) ~[%a %b 0xb1 %c]))
@@ -683,7 +683,7 @@ A `++cord`.
683
683
684#### Source
684#### Source
685
685
686−```
686+```hoon
687 ++ tuft :: utf32 to utf8 text
687 ++ tuft :: utf32 to utf8 text
688 |= a/@c
688 |= a/@c
689 ^- @t
689 ^- @t
@@ -741,7 +741,7 @@ A `@c`, UTF-32 codepoint.
741
741
742#### Source
742#### Source
743
743
744−```
744+```hoon
745 ++ turf :: utf8 to utf32
745 ++ turf :: utf8 to utf32
746 |= a/@t
746 |= a/@t
747 ^- @c
747 ^- @c
@@ -798,7 +798,7 @@ A `++span` (`@ta`).
798
798
799#### Source
799#### Source
800
800
801−```
801+```hoon
802 ++ wack :: coin format
802 ++ wack :: coin format
803 |= a/@ta
803 |= a/@ta
804 ^- @ta
804 ^- @ta
@@ -846,7 +846,7 @@ A `++span` `@ta`.
846
846
847#### Source
847#### Source
848
848
849−```
849+```hoon
850 ++ wick :: knot format
850 ++ wick :: knot format
851 |= a/@
851 |= a/@
852 ^- (unit @ta)
852 ^- (unit @ta)
@@ -894,7 +894,7 @@ A `++cord`.
894
894
895#### Source
895#### Source
896
896
897−```
897+```hoon
898 ++ woad :: cord format
898 ++ woad :: cord format
899 |= a/@ta
899 |= a/@ta
900 ^- @t
900 ^- @t
@@ -955,7 +955,7 @@ A `++span` (`@ta`).
955
955
956#### Source
956#### Source
957
957
958−```
958+```hoon
959 ++ wood :: cord format
959 ++ wood :: cord format
960 |= a/@t
960 |= a/@t
961 ^- @ta
961 ^- @ta
reference/library/4c.md+8−8
@@ -15,7 +15,7 @@ Pretty-printing engine that accepts a `++tank` sample and contains arms that per
15
15
16#### Produces
16#### Produces
17
17
18−```
18+```hoon
19 ++ re
19 ++ re
20 |_ tac/tank
20 |_ tac/tank
21```
21```
@@ -44,7 +44,7 @@ A `++tape`.
44
44
45#### Source
45#### Source
46
46
47−```
47+```hoon
48 ++ ram
48 ++ ram
49 ^- tape
49 ^- tape
50 ?- -.tac
50 ?- -.tac
@@ -89,7 +89,7 @@ A `++wall` (`++list` of `++tapes`).
89
89
90#### Source
90#### Source
91
91
92−```
92+```hoon
93 ++ win
93 ++ win
94 |= {tab/@ edg/@}
94 |= {tab/@ edg/@}
95 =+ lug=`wall`~
95 =+ lug=`wall`~
@@ -191,7 +191,7 @@ A `++wall` (list of `++tape`s).
191
191
192#### Source
192#### Source
193
193
194−```
194+```hoon
195 ++ rig
195 ++ rig
196 |= hom/tape
196 |= hom/tape
197 ^- wall
197 ^- wall
@@ -229,7 +229,7 @@ Render `++tape`. Internal to `++win`.
229
229
230#### Produces
230#### Produces
231
231
232−```
232+```hoon
233 ++ wig
233 ++ wig
234 |= hom/tape
234 |= hom/tape
235 ^- wall
235 ^- wall
@@ -252,7 +252,7 @@ Render `++tape`. Internal to `++win`.
252---
252---
253### `++show`
253### `++show`
254
254
255−```
255+```hoon
256 ++ show :: XX deprecated, use span
256 ++ show :: XX deprecated, use span
257 |= vem/*
257 |= vem/*
258 |^ ^- tank
258 |^ ^- tank
@@ -315,7 +315,7 @@ XX document
315
315
316### `++shep`
316### `++shep`
317
317
318−```
318+```hoon
319 ++ shep
319 ++ shep
320 |= {fom/@ gar/*}
320 |= {fom/@ gar/*}
321 ^- tank
321 ^- tank
@@ -339,7 +339,7 @@ XX document
339
339
340### `++shop`
340### `++shop`
341
341
342−```
342+```hoon
343 ++ shop
343 ++ shop
344 |= {aug/* vel/$-(a/@ tape)}
344 |= {aug/* vel/$-(a/@ tape)}
345 ^- tank
345 ^- tank
reference/library/4d.md+2−2
@@ -22,7 +22,7 @@ A `hair`.
22
22
23#### Source
23#### Source
24
24
25−```
25+```hoon
26 ++ last |= [zyc=hair naz=hair]
26 ++ last |= [zyc=hair naz=hair]
27 ^- hair
27 ^- hair
28 ?: =(p.zyc p.naz)
28 ?: =(p.zyc p.naz)
@@ -66,7 +66,7 @@ A hair.
66
66
67#### Source
67#### Source
68
68
69−```
69+```hoon
70 ++ lust |= [weq=char naz=hair]
70 ++ lust |= [weq=char naz=hair]
71 ^- hair
71 ^- hair
72 ?:(=(`@`10 weq) [+(p.naz) 1] [p.naz +(q.naz)])
72 ?:(=(`@`10 weq) [+(p.naz) 1] [p.naz +(q.naz)])
reference/library/4e.md+10−10
@@ -27,7 +27,7 @@ A `++rule`.
27
27
28#### Source
28#### Source
29
29
30−```
30+```hoon
31 ++ bend :: conditional comp
31 ++ bend :: conditional comp
32 ~/ %bend
32 ~/ %bend
33 |* raq/_|*({a/* b/*} [~ u=[a b]])
33 |* raq/_|*({a/* b/*} [~ u=[a b]])
@@ -94,7 +94,7 @@ A `++rule`.
94
94
95#### Source
95#### Source
96
96
97−```
97+```hoon
98 ++ comp
98 ++ comp
99 ~/ %comp
99 ~/ %comp
100 |* raq/_|*({a/* b/*} [a b]) :: arbitrary compose
100 |* raq/_|*({a/* b/*} [a b]) :: arbitrary compose
@@ -139,7 +139,7 @@ An `++edge`.
139
139
140#### Source
140#### Source
141
141
142−```
142+```hoon
143 ++ fail |=(tub/nail [p=p.tub q=~]) :: never parse
143 ++ fail |=(tub/nail [p=p.tub q=~]) :: never parse
144```
144```
145
145
@@ -177,7 +177,7 @@ result.
177
177
178#### Source
178#### Source
179
179
180−```
180+```hoon
181 ++ glue :: add rule
181 ++ glue :: add rule
182 ~/ %glue
182 ~/ %glue
183 |* bus/rule
183 |* bus/rule
@@ -223,7 +223,7 @@ connect `vex` with the following `++rule`.
223
223
224#### Source
224#### Source
225
225
226−```
226+```hoon
227 ++ less :: no first and second
227 ++ less :: no first and second
228 |* {vex/edge sab/rule}
228 |* {vex/edge sab/rule}
229 ?~ q.vex
229 ?~ q.vex
@@ -267,7 +267,7 @@ ignoring the result of the first and producing the result of the second.
267
267
268#### Source
268#### Source
269
269
270−```
270+```hoon
271 ++ pfix :: discard first rule
271 ++ pfix :: discard first rule
272 ~/ %pfix
272 ~/ %pfix
273 (comp |*({a/* b/*} b))
273 (comp |*({a/* b/*} b))
@@ -305,7 +305,7 @@ more detailed explanation.
305
305
306#### Source
306#### Source
307
307
308−```
308+```hoon
309 ++ plug :: first then second
309 ++ plug :: first then second
310 ~/ %plug
310 ~/ %plug
311 |* {vex/edge sab/rule}
311 |* {vex/edge sab/rule}
@@ -353,7 +353,7 @@ following rule `sab`. See also: the monad applicator ;\~
353
353
354#### Source
354#### Source
355
355
356−```
356+```hoon
357 ++ pose :: first or second
357 ++ pose :: first or second
358 ~/ %pose
358 ~/ %pose
359 |* {vex/edge sab/rule}
359 |* {vex/edge sab/rule}
@@ -402,7 +402,7 @@ result of the first and discarding the result of the second.
402
402
403#### Source
403#### Source
404
404
405−```
405+```hoon
406 ++ sfix :: discard second rule
406 ++ sfix :: discard second rule
407 ~/ %sfix
407 ~/ %sfix
408 (comp |*({a/* b/*} a))
408 (comp |*({a/* b/*} a))
@@ -439,7 +439,7 @@ connect `vex` with the following `++rule`.
439
439
440#### Source
440#### Source
441
441
442−```
442+```hoon
443 ++ simu :: first and second
443 ++ simu :: first and second
444 |* {vex/edge sab/rule}
444 |* {vex/edge sab/rule}
445 ?~ q.vex
445 ?~ q.vex
reference/library/4f.md+26−26
@@ -20,7 +20,7 @@ A `++rule`.
20
20
21#### Source
21#### Source
22
22
23−```
23+```hoon
24 ++ bass
24 ++ bass
25 |* {wuc/@ tyd/rule}
25 |* {wuc/@ tyd/rule}
26 %+ cook
26 %+ cook
@@ -64,7 +64,7 @@ A `++rule`.
64
64
65#### Source
65#### Source
66
66
67−```
67+```hoon
68 ++ boss
68 ++ boss
69 |* {wuc/@ tyd/rule}
69 |* {wuc/@ tyd/rule}
70 %+ cook
70 %+ cook
@@ -109,7 +109,7 @@ An `++edge`.
109
109
110#### Source
110#### Source
111
111
112−```
112+```hoon
113 ++ cold :: replace w+ constant
113 ++ cold :: replace w+ constant
114 ~/ %cold
114 ~/ %cold
115 |* {cus/* sef/rule}
115 |* {cus/* sef/rule}
@@ -152,7 +152,7 @@ An `++rule`.
152
152
153#### Source
153#### Source
154
154
155−```
155+```hoon
156 ++ cook :: apply gate
156 ++ cook :: apply gate
157 ~/ %cook
157 ~/ %cook
158 |* {poq/gate sef/rule}
158 |* {poq/gate sef/rule}
@@ -200,7 +200,7 @@ A `++rule`.
200
200
201#### Source
201#### Source
202
202
203−```
203+```hoon
204 ++ easy :: always parse
204 ++ easy :: always parse
205 ~/ %easy
205 ~/ %easy
206 |* huf=*
206 |* huf=*
@@ -243,7 +243,7 @@ A `++rule`.
243
243
244#### Source
244#### Source
245
245
246−```
246+```hoon
247 ++ full :: parse to end
247 ++ full :: parse to end
248 |* sef=_rule
248 |* sef=_rule
249 |= tub=nail
249 |= tub=nail
@@ -285,7 +285,7 @@ A `++rule`.
285
285
286#### Source
286#### Source
287
287
288−```
288+```hoon
289 ++ funk :: add to tape first
289 ++ funk :: add to tape first
290 |* {pre/tape sef/rule}
290 |* {pre/tape sef/rule}
291 |= tub/nail
291 |= tub/nail
@@ -324,7 +324,7 @@ A `++rule`.
324
324
325#### Source
325#### Source
326
326
327−```
327+```hoon
328 ++ here :: place-based apply
328 ++ here :: place-based apply
329 ~/ %here
329 ~/ %here
330 |* {hez/_|=({a/pint b/*} [a b]) sef/rule}
330 |* {hez/_|=({a/pint b/*} [a b]) sef/rule}
@@ -371,7 +371,7 @@ A `++rule`.
371
371
372#### Source
372#### Source
373
373
374−```
374+```hoon
375 ++ ifix
375 ++ ifix
376 |* {fel/{rule rule} hof/rule}
376 |* {fel/{rule rule} hof/rule}
377 ~! +<
377 ~! +<
@@ -409,7 +409,7 @@ An `++edge`.
409
409
410#### Source
410#### Source
411
411
412−```
412+```hoon
413 ++ jest :: match a cord
413 ++ jest :: match a cord
414 |= daf/@t
414 |= daf/@t
415 |= tub/nail
415 |= tub/nail
@@ -462,7 +462,7 @@ A `++rule`.
462
462
463#### Source
463#### Source
464
464
465−```
465+```hoon
466 ++ just :: XX redundant, jest
466 ++ just :: XX redundant, jest
467 ~/ %just :: match a char
467 ~/ %just :: match a char
468 |= daf/char
468 |= daf/char
@@ -516,7 +516,7 @@ A `++rule`.
516
516
517#### Source
517#### Source
518
518
519−```
519+```hoon
520 ++ knee :: callbacks
520 ++ knee :: callbacks
521 |* {gar/* sef/_|.(*rule)}
521 |* {gar/* sef/_|.(*rule)}
522 |= tub/nail
522 |= tub/nail
@@ -570,7 +570,7 @@ A `++rule`.
570
570
571#### Source
571#### Source
572
572
573−```
573+```hoon
574 ++ mask :: match char in set
574 ++ mask :: match char in set
575 ~/ %mask
575 ~/ %mask
576 |= bud/(list char)
576 |= bud/(list char)
@@ -620,7 +620,7 @@ A `++rule`.
620
620
621#### Source
621#### Source
622
622
623−```
623+```hoon
624 ++ more
624 ++ more
625 |* {bus/rule fel/rule}
625 |* {bus/rule fel/rule}
626 ;~(pose (most bus fel) (easy ~))
626 ;~(pose (most bus fel) (easy ~))
@@ -660,7 +660,7 @@ A `++rule`.
660
660
661#### Source
661#### Source
662
662
663−```
663+```hoon
664 ++ most
664 ++ most
665 |* {bus/rule fel/rule}
665 |* {bus/rule fel/rule}
666 ;~(plug fel (star ;~(pfix bus fel)))
666 ;~(plug fel (star ;~(pfix bus fel)))
@@ -699,7 +699,7 @@ An `++edge`.
699
699
700#### Source
700#### Source
701
701
702−```
702+```hoon
703 ++ next :: consume a char
703 ++ next :: consume a char
704 |= tub/nail
704 |= tub/nail
705 ^- (like char)
705 ^- (like char)
@@ -739,7 +739,7 @@ A `++rule`.
739
739
740#### Source
740#### Source
741
741
742−```
742+```hoon
743 ++ plus |*(fel/rule ;~(plug fel (star fel)))
743 ++ plus |*(fel/rule ;~(plug fel (star fel)))
744```
744```
745
745
@@ -778,7 +778,7 @@ A `++rule`.
778
778
779#### Source
779#### Source
780
780
781−```
781+```hoon
782 ++ sear :: conditional cook
782 ++ sear :: conditional cook
783 |* {pyq/$-(* (unit)) sef/rule}
783 |* {pyq/$-(* (unit)) sef/rule}
784 |= tub/nail
784 |= tub/nail
@@ -822,7 +822,7 @@ A `++rule`.
822
822
823#### Source
823#### Source
824
824
825−```
825+```hoon
826 ++ shim :: match char in range
826 ++ shim :: match char in range
827 ~/ %shim
827 ~/ %shim
828 |= {les/@ mos/@}
828 |= {les/@ mos/@}
@@ -871,7 +871,7 @@ A `++rule`.
871
871
872#### Source
872#### Source
873
873
874−```
874+```hoon
875 ++ slug
875 ++ slug
876 |* raq/_|*({a/* b/*} [a b])
876 |* raq/_|*({a/* b/*} [a b])
877 |* {bus/rule fel/rule}
877 |* {bus/rule fel/rule}
@@ -909,7 +909,7 @@ A `++rule`.
909
909
910#### Source
910#### Source
911
911
912−```
912+```hoon
913 ++ stag :: add a label
913 ++ stag :: add a label
914 ~/ %stag
914 ~/ %stag
915 |* {gob/* sef/rule}
915 |* {gob/* sef/rule}
@@ -949,7 +949,7 @@ Parser modifier: parse `++list` of matches.
949
949
950#### Produces
950#### Produces
951
951
952−```
952+```hoon
953 ++ star :: 0 or more times
953 ++ star :: 0 or more times
954 |* fel/rule
954 |* fel/rule
955 (stir `(list _(wonk *fel))`~ |*({a/* b/*} [a b]) fel)
955 (stir `(list _(wonk *fel))`~ |*({a/* b/*} [a b]) fel)
@@ -996,7 +996,7 @@ Add faces `[p q]` to range-parser pairs in a list.
996
996
997#### Source
997#### Source
998
998
999−```
999+```hoon
1000 ++ stet
1000 ++ stet
1001 |* leh/(list {?(@ {@ @}) rule})
1001 |* leh/(list {?(@ {@ @}) rule})
1002 |-
1002 |-
@@ -1035,7 +1035,7 @@ Add faces `[p q]` to range-parser pairs in a list.
1035
1035
1036Switch by first
1036Switch by first
1037
1037
1038−```
1038+```hoon
1039 ++ stew :: switch by first char
1039 ++ stew :: switch by first char
1040 ~/ %stew
1040 ~/ %stew
1041 |* leh/(list {p/?(@ {@ @}) q/rule}) :: char+range keys
1041 |* leh/(list {p/?(@ {@ @}) q/rule}) :: char+range keys
@@ -1111,7 +1111,7 @@ A rule.
1111
1111
1112#### Source
1112#### Source
1113
1113
1114−```
1114+```hoon
1115 ++ stir
1115 ++ stir
1116 ~/ %stir
1116 ~/ %stir
1117 |* {rud/* raq/_=>(~ |*({a/* b/*} [a b])) fel/rule}
1117 |* {rud/* raq/_=>(~ |*({a/* b/*} [a b])) fel/rule}
@@ -1156,7 +1156,7 @@ A `++rule`.
1156
1156
1157#### Source
1157#### Source
1158
1158
1159−```
1159+```hoon
1160 ++ stun :: parse several times
1160 ++ stun :: parse several times
1161 |* {lig/{@ @} fel/rule}
1161 |* {lig/{@ @} fel/rule}
1162 |= tub/nail
1162 |= tub/nail
reference/library/4g.md+4−4
@@ -22,7 +22,7 @@ The value of the parse result, or crash.
22
22
23#### Source
23#### Source
24
24
25−```
25+```hoon
26 ++ rash |*({naf/@ sab/rule} (scan (trip naf) sab)) ::
26 ++ rash |*({naf/@ sab/rule} (scan (trip naf) sab)) ::
27```
27```
28
28
@@ -67,7 +67,7 @@ The value of the parse result, or null.
67
67
68#### Source
68#### Source
69
69
70−```
70+```hoon
71 ++ rush |*({naf/@ sab/rule} (rust (trip naf) sab))
71 ++ rush |*({naf/@ sab/rule} (rust (trip naf) sab))
72```
72```
73
73
@@ -111,7 +111,7 @@ A `(unit ,@t)`
111
111
112#### Source
112#### Source
113
113
114−```
114+```hoon
115 ++ rust |* {los/tape sab/rule}
115 ++ rust |* {los/tape sab/rule}
116 =+ vex=((full sab) [[1 1] los])
116 =+ vex=((full sab) [[1 1] los])
117 ?~(q.vex ~ [~ u=p.u.q.vex])
117 ?~(q.vex ~ [~ u=p.u.q.vex])
@@ -151,7 +151,7 @@ Either a `++tape` or a crash.
151
151
152#### Source
152#### Source
153
153
154−```
154+```hoon
155 ++ scan |* {los/tape sab/rule}
155 ++ scan |* {los/tape sab/rule}
156 =+ vex=((full sab) [[1 1] los])
156 =+ vex=((full sab) [[1 1] los])
157 ?~ q.vex
157 ?~ q.vex
reference/library/4h.md+34−34
@@ -11,7 +11,7 @@ Parses ASCII character 32, space.
11
11
12#### Source
12#### Source
13
13
14−```
14+```hoon
15 ++ ace (just ' ')
15 ++ ace (just ' ')
16```
16```
17
17
@@ -42,7 +42,7 @@ Parses ASCII character 124, the vertical bar.
42
42
43#### Source
43#### Source
44
44
45−```
45+```hoon
46 ++ bar (just '|')
46 ++ bar (just '|')
47```
47```
48
48
@@ -69,12 +69,12 @@ Parses ASCII character 124, the vertical bar.
69Parse backslash
69Parse backslash
70
70
71Parses ASCII character 92, the backslash. Note the extra `\` in the calling of
71Parses ASCII character 92, the backslash. Note the extra `\` in the calling of
72−`bas` with [`++just`](@/docs/reference/library/4f.md) is to escape the escape
72+`bas` with [`++just`](@/docs/hoon/library/4f.md) is to escape the escape
73character, `\`.
73character, `\`.
74
74
75#### Source
75#### Source
76
76
77−```
77+```hoon
78 ++ bas (just '\\')
78 ++ bas (just '\\')
79```
79```
80
80
@@ -107,7 +107,7 @@ Parses ASCII character 36, the dollar sign.
107
107
108#### Source
108#### Source
109
109
110−```
110+```hoon
111 ++ buc (just '$')
111 ++ buc (just '$')
112```
112```
113
113
@@ -137,7 +137,7 @@ Parses ASCII character 95, the underscore.
137
137
138#### Source
138#### Source
139
139
140−```
140+```hoon
141 ++ cab (just '_')
141 ++ cab (just '_')
142```
142```
143
143
@@ -167,7 +167,7 @@ Parses ASCII character 37, the percent sign.
167
167
168#### Source
168#### Source
169
169
170−```
170+```hoon
171 ++ cen (just '%')
171 ++ cen (just '%')
172```
172```
173
173
@@ -197,7 +197,7 @@ Parses ASCII character 58, the colon
197
197
198#### Source
198#### Source
199
199
200−```
200+```hoon
201 ++ col (just ':')
201 ++ col (just ':')
202```
202```
203
203
@@ -226,7 +226,7 @@ Parses ASCII character 44, the comma.
226
226
227#### Source
227#### Source
228
228
229−```
229+```hoon
230 ++ com (just ',')
230 ++ com (just ',')
231```
231```
232
232
@@ -256,7 +256,7 @@ Parses ASCII character 34, the double quote.
256
256
257#### Source
257#### Source
258
258
259−```
259+```hoon
260 ++ doq (just '"')
260 ++ doq (just '"')
261```
261```
262
262
@@ -291,7 +291,7 @@ Parses ASCII character 46, the period.
291
291
292#### Source
292#### Source
293
293
294−```
294+```hoon
295 ++ dot (just '.')
295 ++ dot (just '.')
296```
296```
297
297
@@ -321,7 +321,7 @@ Parses ASCII character 47, the forward slash.
321
321
322#### Source
322#### Source
323
323
324−```
324+```hoon
325 ++ fas (just '/')
325 ++ fas (just '/')
326```
326```
327
327
@@ -348,7 +348,7 @@ Parses ASCII character 60, the less-than sign.
348
348
349#### Source
349#### Source
350
350
351−```
351+```hoon
352 ++ gal (just '<')
352 ++ gal (just '<')
353```
353```
354
354
@@ -378,7 +378,7 @@ Parses ASCII character 62, the greater-than sign.
378
378
379#### Source
379#### Source
380
380
381−```
381+```hoon
382 ++ gar (just '>')
382 ++ gar (just '>')
383```
383```
384
384
@@ -408,7 +408,7 @@ Parses ASCII character 35, the number sign.
408
408
409#### Source
409#### Source
410
410
411−```
411+```hoon
412 ++ hax (just '#')
412 ++ hax (just '#')
413```
413```
414
414
@@ -435,7 +435,7 @@ Parses ASCII character 45, the hyphen.
435
435
436#### Source
436#### Source
437
437
438−```
438+```hoon
439 ++ hep (just '-')
439 ++ hep (just '-')
440```
440```
441
441
@@ -464,7 +464,7 @@ interpolation. To parse either of them, they must be escaped.
464
464
465#### Source
465#### Source
466
466
467−```
467+```hoon
468 ++ kel (just '{')
468 ++ kel (just '{')
469```
469```
470
470
@@ -493,7 +493,7 @@ interpolation. To parse either of them, they must be escaped.
493
493
494#### Source
494#### Source
495
495
496−```
496+```hoon
497 ++ ker (just '}')
497 ++ ker (just '}')
498```
498```
499
499
@@ -520,7 +520,7 @@ Parses ASCII character 94, the caret.
520
520
521#### Source
521#### Source
522
522
523−```
523+```hoon
524 ++ ket (just '^')
524 ++ ket (just '^')
525```
525```
526
526
@@ -546,7 +546,7 @@ Parses ASCII character 43, the plus sign.
546
546
547#### Source
547#### Source
548
548
549−```
549+```hoon
550 ++ lus (just '+')
550 ++ lus (just '+')
551```
551```
552
552
@@ -576,7 +576,7 @@ Parses ASCII character 38, the ampersand.
576
576
577#### Source
577#### Source
578
578
579−```
579+```hoon
580 ++ pam (just '&')
580 ++ pam (just '&')
581```
581```
582
582
@@ -606,7 +606,7 @@ Parses ASCII character 64, the "at" sign.
606
606
607#### Source
607#### Source
608
608
609−```
609+```hoon
610 ++ pat (just '@')
610 ++ pat (just '@')
611```
611```
612
612
@@ -636,7 +636,7 @@ Parses ASCII character 40, the left parenthesis.
636
636
637#### Source
637#### Source
638
638
639−```
639+```hoon
640 ++ pel (just '(')
640 ++ pel (just '(')
641```
641```
642
642
@@ -663,7 +663,7 @@ Parses ASCII character 41, the right parenthesis.
663
663
664#### Source
664#### Source
665
665
666−```
666+```hoon
667 ++ per (just ')')
667 ++ per (just ')')
668```
668```
669
669
@@ -690,7 +690,7 @@ Parses ASCII character 91, the left square bracket.
690
690
691#### Source
691#### Source
692
692
693−```
693+```hoon
694 ++ sel (just '[')
694 ++ sel (just '[')
695```
695```
696
696
@@ -717,7 +717,7 @@ Parses ASCII character 59, the semicolon.
717
717
718#### Source
718#### Source
719
719
720−```
720+```hoon
721 ++ sem (just ';')
721 ++ sem (just ';')
722```
722```
723
723
@@ -744,7 +744,7 @@ Parses ASCII character 93, the right square bracket.
744
744
745#### Source
745#### Source
746
746
747−```
747+```hoon
748 ++ ser (just ']')
748 ++ ser (just ']')
749```
749```
750
750
@@ -771,7 +771,7 @@ Parses ASCII character 126, the tilde.
771
771
772#### Source
772#### Source
773
773
774−```
774+```hoon
775 ++ sig (just '~')
775 ++ sig (just '~')
776```
776```
777
777
@@ -799,7 +799,7 @@ Parses ASCII character 39, soq. Note the extra '' is to escape the first
799
799
800#### Source
800#### Source
801
801
802−```
802+```hoon
803 ++ soq (just '\'')
803 ++ soq (just '\'')
804```
804```
805
805
@@ -826,7 +826,7 @@ Parses ASCII character 42, the asterisk.
826
826
827#### Source
827#### Source
828
828
829−```
829+```hoon
830 ++ tar (just '*')
830 ++ tar (just '*')
831```
831```
832
832
@@ -857,7 +857,7 @@ accent").
857
857
858#### Source
858#### Source
859
859
860−```
860+```hoon
861 ++ tec (just '`') :: backTiCk
861 ++ tec (just '`') :: backTiCk
862```
862```
863
863
@@ -887,7 +887,7 @@ Parses ASCII character 61, the equals sign.
887
887
888#### Source
888#### Source
889
889
890−```
890+```hoon
891 ++ tis (just '=')
891 ++ tis (just '=')
892```
892```
893
893
@@ -913,7 +913,7 @@ Parses ASCII character 63, the question mark.
913
913
914#### Source
914#### Source
915
915
916−```
916+```hoon
917 ++ wut (just '?')
917 ++ wut (just '?')
918```
918```
919
919
@@ -940,7 +940,7 @@ Parses ASCII character 33, the exclamation point zap.
940
940
941#### Source
941#### Source
942
942
943−```
943+```hoon
944 ++ zap (just '!')
944 ++ zap (just '!')
945```
945```
946
946
reference/library/4i.md+37−37
@@ -11,7 +11,7 @@ Parse alphabetic characters, both upper and lowercase.
11
11
12#### Source
12#### Source
13
13
14−```
14+```hoon
15 ++ alf ;~(pose low hig) :: alphabetic
15 ++ alf ;~(pose low hig) :: alphabetic
16```
16```
17
17
@@ -38,7 +38,7 @@ Parse alphanumeric characters - both alphabetic characters and numbers.
38
38
39#### Source
39#### Source
40
40
41−```
41+```hoon
42 ++ aln ;~(pose low hig nud) :: alphanumeric
42 ++ aln ;~(pose low hig nud) :: alphanumeric
43```
43```
44
44
@@ -65,7 +65,7 @@ Parse alphanumeric strings and hep, "-".
65
65
66#### Source
66#### Source
67
67
68−```
68+```hoon
69 ++ alp ;~(pose low hig nud hep) :: alphanumeric and -
69 ++ alp ;~(pose low hig nud hep) :: alphanumeric and -
70```
70```
71
71
@@ -93,7 +93,7 @@ Parse the hep and lus axis syntax.
93
93
94#### Source
94#### Source
95
95
96−```
96+```hoon
97 ++ bet ;~(pose (cold 2 hep) (cold 3 lus)) :: axis syntax - +
97 ++ bet ;~(pose (cold 2 hep) (cold 3 lus)) :: axis syntax - +
98```
98```
99
99
@@ -117,7 +117,7 @@ Parse a tape of binary (0s and 1s) and produce its atomic representation.
117
117
118#### Source
118#### Source
119
119
120−```
120+```hoon
121 ++ bin (bass 2 (most gon but)) :: binary to atom
121 ++ bin (bass 2 (most gon but)) :: binary to atom
122```
122```
123
123
@@ -147,7 +147,7 @@ Parse a single binary digit.
147
147
148#### Source
148#### Source
149
149
150−```
150+```hoon
151 ++ but (cook |=(a=@ (sub a '0')) (shim '0' '1')) :: binary digit
151 ++ but (cook |=(a=@ (sub a '0')) (shim '0' '1')) :: binary digit
152```
152```
153
153
@@ -176,7 +176,7 @@ Parse a single octal digit.
176
176
177#### Source
177#### Source
178
178
179−```
179+```hoon
180 ++ cit (cook |=(a=@ (sub a '0')) (shim '0' '7')) :: octal digit
180 ++ cit (cook |=(a=@ (sub a '0')) (shim '0' '7')) :: octal digit
181```
181```
182
182
@@ -205,7 +205,7 @@ Parse a decimal number to an atom.
205
205
206#### Source
206#### Source
207
207
208−```
208+```hoon
209 ++ dem (bass 10 (most gon dit)) :: decimal to atom
209 ++ dem (bass 10 (most gon dit)) :: decimal to atom
210```
210```
211
211
@@ -232,7 +232,7 @@ Parse a single decimal digit.
232
232
233#### Source
233#### Source
234
234
235−```
235+```hoon
236 ++ dit (cook |=(a=@ (sub a '0')) (shim '0' '9')) :: decimal digit
236 ++ dit (cook |=(a=@ (sub a '0')) (shim '0' '9')) :: decimal digit
237```
237```
238
238
@@ -257,7 +257,7 @@ Dot followed by an optional gap, used with numbers.
257
257
258#### Source
258#### Source
259
259
260−```
260+```hoon
261 ++ dog ;~(plug dot gay) ::
261 ++ dog ;~(plug dot gay) ::
262```
262```
263
263
@@ -282,7 +282,7 @@ Phonetic base phrase separator
282
282
283#### Source
283#### Source
284
284
285−```
285+```hoon
286 ++ doh ;~(plug ;~(plug hep hep) gay) ::
286 ++ doh ;~(plug ;~(plug hep hep) gay) ::
287```
287```
288
288
@@ -310,7 +310,7 @@ Parse phep, `--`, to null, `~`.
310
310
311#### Source
311#### Source
312
312
313−```
313+```hoon
314 ++ dun (cold ~ ;~(plug hep hep)) :: -- (phep) to ~
314 ++ dun (cold ~ ;~(plug hep hep)) :: -- (phep) to ~
315```
315```
316
316
@@ -334,7 +334,7 @@ Parse stet, `==`, to null `~`.
334
334
335#### Source
335#### Source
336
336
337−```
337+```hoon
338 ++ duz (cold ~ ;~(plug tis tis)) :: == (stet) to ~
338 ++ duz (cold ~ ;~(plug tis tis)) :: == (stet) to ~
339```
339```
340
340
@@ -358,7 +358,7 @@ Whitespace component, either newline or space.
358
358
359#### Source
359#### Source
360
360
361−```
361+```hoon
362 ++ gah (mask [`@`10 ' ' ~]) :: newline or ace
362 ++ gah (mask [`@`10 ' ' ~]) :: newline or ace
363```
363```
364
364
@@ -395,7 +395,7 @@ Separates tall runes
395
395
396#### Source
396#### Source
397
397
398−```
398+```hoon
399 ++ gap (cold ~ ;~(plug gaq (star ;~(pose vul gah)))) :: plural whitespace
399 ++ gap (cold ~ ;~(plug gaq (star ;~(pose vul gah)))) :: plural whitespace
400```
400```
401
401
@@ -409,7 +409,7 @@ Two spaces, a newline, or comment.
409
409
410#### Source
410#### Source
411
411
412−```
412+```hoon
413 ++ gaq ;~ pose :: end of line
413 ++ gaq ;~ pose :: end of line
414 (just `@`10)
414 (just `@`10)
415 ;~(plug gah ;~(pose gah vul))
415 ;~(plug gah ;~(pose gah vul))
@@ -428,7 +428,7 @@ Terran whitespace.
428
428
429#### Source
429#### Source
430
430
431−```
431+```hoon
432 ++ gaw (cold ~ (star ;~(pose vul gah))) :: classic white
432 ++ gaw (cold ~ (star ;~(pose vul gah))) :: classic white
433```
433```
434
434
@@ -442,7 +442,7 @@ Optional gap.
442
442
443#### Source
443#### Source
444
444
445−```
445+```hoon
446 ++ gay ;~(pose gap (easy ~)) ::
446 ++ gay ;~(pose gap (easy ~)) ::
447```
447```
448
448
@@ -455,7 +455,7 @@ Parse long numbers - Numbers which wrap around the shell with the line
455
455
456#### Source
456#### Source
457
457
458−```
458+```hoon
459 ++ gon ;~(pose ;~(plug bas gay fas) (easy ~)) :: long numbers \ /
459 ++ gon ;~(pose ;~(plug bas gay fas) (easy ~)) :: long numbers \ /
460```
460```
461
461
@@ -479,7 +479,7 @@ Parse the axis gal and gar axis syntax.
479
479
480#### Source
480#### Source
481
481
482−```
482+```hoon
483 ++ gul ;~(pose (cold 2 gal) (cold 3 gar)) :: axis syntax < >
483 ++ gul ;~(pose (cold 2 gal) (cold 3 gar)) :: axis syntax < >
484```
484```
485
485
@@ -503,7 +503,7 @@ Parse any hexadecimal number to an atom.
503
503
504#### Source
504#### Source
505
505
506−```
506+```hoon
507 ++ hex (bass 16 (most gon hit)) :: hex to atom
507 ++ hex (bass 16 (most gon hit)) :: hex to atom
508```
508```
509
509
@@ -535,7 +535,7 @@ Parse a single uppercase letter.
535
535
536#### Source
536#### Source
537
537
538−```
538+```hoon
539 ++ hig (shim 'A' 'Z') :: uppercase
539 ++ hig (shim 'A' 'Z') :: uppercase
540```
540```
541
541
@@ -565,7 +565,7 @@ Parse a single hexadecimal digit.
565
565
566#### Source
566#### Source
567
567
568−```
568+```hoon
569 ++ hit ;~ pose :: hex digits
569 ++ hit ;~ pose :: hex digits
570 dit
570 dit
571 (cook |=(a=char (sub a 87)) (shim 'a' 'f'))
571 (cook |=(a=char (sub a 87)) (shim 'a' 'f'))
@@ -604,7 +604,7 @@ A `++rule`.
604
604
605#### Source
605#### Source
606
606
607−```
607+```hoon
608 ++ inde |* sef/rule :: indentation block
608 ++ inde |* sef/rule :: indentation block
609 |= nail ^+ (sef)
609 |= nail ^+ (sef)
610 =+ [har tap]=[p q]:+<
610 =+ [har tap]=[p q]:+<
@@ -654,7 +654,7 @@ Parse a single lowercase letter.
654
654
655#### Source
655#### Source
656
656
657−```
657+```hoon
658 ++ low (shim 'a' 'z') :: lowercase
658 ++ low (shim 'a' 'z') :: lowercase
659```
659```
660
660
@@ -681,7 +681,7 @@ Parse a hexbyte.
681
681
682#### Source
682#### Source
683
683
684−```
684+```hoon
685 ++ mes %+ cook :: hexbyte
685 ++ mes %+ cook :: hexbyte
686 |=({a/@ b/@} (add (mul 16 a) b))
686 |=({a/@ b/@} (add (mul 16 a) b))
687 ;~(plug hit hit)
687 ;~(plug hit hit)
@@ -708,7 +708,7 @@ Parse Letters and `-`.
708
708
709#### Source
709#### Source
710
710
711−```
711+```hoon
712 ++ nix (boss 256 (star ;~(pose aln cab))) ::
712 ++ nix (boss 256 (star ;~(pose aln cab))) ::
713```
713```
714
714
@@ -733,7 +733,7 @@ Parse a numeric character - A number.
733
733
734#### Source
734#### Source
735
735
736−```
736+```hoon
737 ++ nud (shim '0' '9') :: numeric
737 ++ nud (shim '0' '9') :: numeric
738```
738```
739
739
@@ -759,7 +759,7 @@ Parse any printable character.
759
759
760#### Source
760#### Source
761
761
762−```
762+```hoon
763 ++ prn ;~(less (just `@`127) (shim 32 256))
763 ++ prn ;~(less (just `@`127) (shim 32 256))
764```
764```
765
765
@@ -785,7 +785,7 @@ Parse an individual character to its cord atom representation.
785
785
786#### Source
786#### Source
787
787
788−```
788+```hoon
789 ++ qit ;~ pose :: chars in a cord
789 ++ qit ;~ pose :: chars in a cord
790 ;~(less bas soq prn)
790 ;~(less bas soq prn)
791 ;~(pfix bas ;~(pose bas soq mes)) :: escape chars
791 ;~(pfix bas ;~(pose bas soq mes)) :: escape chars
@@ -823,7 +823,7 @@ Parse an individual character to its cord atom representation.
823
823
824#### Source
824#### Source
825
825
826−```
826+```hoon
827 ++ qit ;~ pose :: chars in a cord
827 ++ qit ;~ pose :: chars in a cord
828 ;~(less bas soq prn)
828 ;~(less bas soq prn)
829 ;~(pfix bas ;~(pose bas soq mes)) :: escape chars
829 ;~(pfix bas ;~(pose bas soq mes)) :: escape chars
@@ -863,7 +863,7 @@ quote (aka triple-soq) cord, between which must be in an indented block.
863
863
864#### Source
864#### Source
865
865
866−```
866+```hoon
867 ++ qut ;~ pose :: cord
867 ++ qut ;~ pose :: cord
868 ;~ less soqs
868 ;~ less soqs
869 (ifix [soq soq] (boss 256 (more gon qit)))
869 (ifix [soq soq] (boss 256 (more gon qit)))
@@ -903,7 +903,7 @@ Parse a triple-single quote, used for multiline strings.
903
903
904#### Source
904#### Source
905
905
906−```
906+```hoon
907 ++ soz ;~(plug soq soq soq) :: delimiting '''
907 ++ soz ;~(plug soq soq soq) :: delimiting '''
908```
908```
909
909
@@ -927,7 +927,7 @@ A term: a letter(lowercase), followed by letters, numbers, or `-`.
927
927
928#### Source
928#### Source
929
929
930−```
930+```hoon
931 ++ sym
931 ++ sym
932 %+ cook
932 %+ cook
933 |=(a=tape (rap 3 ^-((list ,@) a)))
933 |=(a=tape (rap 3 ^-((list ,@) a)))
@@ -956,7 +956,7 @@ Axis syntax parser
956
956
957#### Source
957#### Source
958
958
959−```
959+```hoon
960 ++ ven ;~ (comp |=({a/@ b/@} (peg a b))) :: +>- axis syntax
960 ++ ven ;~ (comp |=({a/@ b/@} (peg a b))) :: +>- axis syntax
961 bet
961 bet
962 =+ hom=`?`|
962 =+ hom=`?`|
@@ -997,7 +997,7 @@ Parse a standard base64 digit.
997
997
998#### Source
998#### Source
999
999
1000−```
1000+```hoon
1001 ++ vit :: base64 digit
1001 ++ vit :: base64 digit
1002 ;~ pose
1002 ;~ pose
1003 (cook |=(a/@ (sub a 65)) (shim 'A' 'Z'))
1003 (cook |=(a/@ (sub a 65)) (shim 'A' 'Z'))
@@ -1028,7 +1028,7 @@ Comments to null
1028
1028
1029#### Source
1029#### Source
1030
1030
1031−```
1031+```hoon
1032 ++ vul %+ cold ~ :: comments
1032 ++ vul %+ cold ~ :: comments
1033 ;~ plug col col
1033 ;~ plug col col
1034 (star prn)
1034 (star prn)
reference/library/4j.md+56−56
@@ -11,7 +11,7 @@ A core containing numeric parser primitives.
11
11
12#### Source
12#### Source
13
13
14−```
14+```hoon
15 ++ ab
15 ++ ab
16 |%
16 |%
17```
17```
@@ -41,7 +41,7 @@ A an atom. XX
41
41
42#### Source
42#### Source
43
43
44−```
44+```hoon
45 ++ bix (bass 16 (stun [2 2] six))
45 ++ bix (bass 16 (stun [2 2] six))
46```
46```
47
47
@@ -75,7 +75,7 @@ An atom.
75
75
76#### Source
76#### Source
77
77
78−```
78+```hoon
79 ++ hif (boss 256 ;~(plug tip tiq (easy ~)))
79 ++ hif (boss 256 ;~(plug tip tiq (easy ~)))
80```
80```
81
81
@@ -107,7 +107,7 @@ An atom. XX
107
107
108#### Source
108#### Source
109
109
110−```
110+```hoon
111 ++ huf %+ cook
111 ++ huf %+ cook
112 |=([a/@ b/@] (wred:un ~(zug mu ~(zag mu [a b]))))
112 |=([a/@ b/@] (wred:un ~(zug mu ~(zag mu [a b]))))
113 ;~(plug hif ;~(pfix hep hif))
113 ;~(plug hif ;~(pfix hep hif))
@@ -143,7 +143,7 @@ An atom. XX
143
143
144#### Source
144#### Source
145
145
146−```
146+```hoon
147 ++ hyf (bass 0x1.0000.0000 ;~(plug huf ;~(pfix hep huf) (easy ~)))
147 ++ hyf (bass 0x1.0000.0000 ;~(plug huf ;~(pfix hep huf) (easy ~)))
148```
148```
149
149
@@ -174,7 +174,7 @@ An atom.
174
174
175#### Source
175#### Source
176
176
177−```
177+```hoon
178 ++ pev (bass 32 ;~(plug sev (stun [0 4] siv)))
178 ++ pev (bass 32 ;~(plug sev (stun [0 4] siv)))
179```
179```
180
180
@@ -210,7 +210,7 @@ Up to five @uw (base 64) digits.
210
210
211#### Source
211#### Source
212
212
213−```
213+```hoon
214 ++ pew (bass 64 ;~(plug sew (stun [0 4] siw)))
214 ++ pew (bass 64 ;~(plug sew (stun [0 4] siw)))
215```
215```
216
216
@@ -245,7 +245,7 @@ Parsing `++rule`. Parses exactly five base-32 digits.
245
245
246#### Source
246#### Source
247
247
248−```
248+```hoon
249 ++ piv (bass 32 (stun [5 5] siv))
249 ++ piv (bass 32 (stun [5 5] siv))
250```
250```
251
251
@@ -273,7 +273,7 @@ Parsing `++rule`. Parses exactly five base-64 digits.
273
273
274#### Source
274#### Source
275
275
276−```
276+```hoon
277 ++ piw (bass 64 (stun [5 5] siw))
277 ++ piw (bass 64 (stun [5 5] siw))
278```
278```
279
279
@@ -303,7 +303,7 @@ a leading zero.
303
303
304#### Source
304#### Source
305
305
306−```
306+```hoon
307 ++ qeb (bass 2 ;~(plug seb (stun [0 3] sib)))
307 ++ qeb (bass 2 ;~(plug seb (stun [0 3] sib)))
308```
308```
309
309
@@ -339,7 +339,7 @@ without a leading zero.
339
339
340#### Source
340#### Source
341
341
342−```
342+```hoon
343 ++ qex (bass 16 ;~(plug sex (stun [0 3] hit)))
343 ++ qex (bass 16 ;~(plug sex (stun [0 3] hit)))
344```
344```
345
345
@@ -372,7 +372,7 @@ Parsing `++rule`. Parses exactly four binary digits.
372
372
373#### Source
373#### Source
374
374
375−```
375+```hoon
376 ++ qib (bass 2 (stun [4 4] sib))
376 ++ qib (bass 2 (stun [4 4] sib))
377```
377```
378
378
@@ -402,7 +402,7 @@ Parsing `++rule`. Parses exactly four hexadecimal digits.
402
402
403#### Source
403#### Source
404
404
405−```
405+```hoon
406 ++ qix (bass 16 (stun [4 4] six))
406 ++ qix (bass 16 (stun [4 4] six))
407```
407```
408
408
@@ -432,7 +432,7 @@ Parsing `++rule`. Parses the number 1.
432
432
433#### Source
433#### Source
434
434
435−```
435+```hoon
436 ++ seb (cold 1 (just '1'))
436 ++ seb (cold 1 (just '1'))
437```
437```
438
438
@@ -463,7 +463,7 @@ Parsing `++rule`. Parses a nonzero decimal digit.
463
463
464#### Source
464#### Source
465
465
466−```
466+```hoon
467 ++ sed (cook |=(a/@ (sub a '0')) (shim '1' '9'))
467 ++ sed (cook |=(a/@ (sub a '0')) (shim '1' '9'))
468```
468```
469
469
@@ -491,7 +491,7 @@ Parsing `++rule`. Parses a nonzero base-32 digit
491
491
492#### Source
492#### Source
493
493
494−```
494+```hoon
495 ++ sev ;~(pose sed sov)
495 ++ sev ;~(pose sed sov)
496```
496```
497
497
@@ -519,7 +519,7 @@ Parsing `++rule`. Parses a nonzero base-64 digit
519
519
520#### Source
520#### Source
521
521
522−```
522+```hoon
523 ++ sew ;~(pose sed sow)
523 ++ sew ;~(pose sed sow)
524```
524```
525
525
@@ -547,7 +547,7 @@ Parsing `++rule`. Parses a nonzero hexadecimal digit.
547
547
548#### Source
548#### Source
549
549
550−```
550+```hoon
551 ++ sex ;~(pose sed sox)
551 ++ sex ;~(pose sed sox)
552```
552```
553
553
@@ -575,7 +575,7 @@ Parsing `++rule`. Parses a binary digit.
575
575
576#### Source
576#### Source
577
577
578−```
578+```hoon
579 ++ sib (cook |=(a/@ (sub a '0')) (shim '0' '1'))
579 ++ sib (cook |=(a/@ (sub a '0')) (shim '0' '1'))
580```
580```
581
581
@@ -602,7 +602,7 @@ Parsing `++rule`. Parses a decimal digit.
602
602
603#### Source
603#### Source
604
604
605−```
605+```hoon
606 ++ sid (cook |=(a/@ (sub a '0')) (shim '0' '9'))
606 ++ sid (cook |=(a/@ (sub a '0')) (shim '0' '9'))
607```
607```
608
608
@@ -627,7 +627,7 @@ Parsing `++rule`. Parses a base-32 digit.
627
627
628#### Source
628#### Source
629
629
630−```
630+```hoon
631 ++ siv ;~(pose sid sov)
631 ++ siv ;~(pose sid sov)
632```
632```
633
633
@@ -652,7 +652,7 @@ Parsing `++rule`. Parses a base-64 digit.
652
652
653#### Source
653#### Source
654
654
655−```
655+```hoon
656 ++ siw ;~(pose sid sow)
656 ++ siw ;~(pose sid sow)
657```
657```
658
658
@@ -677,7 +677,7 @@ Parsing `++rule`. Parses a hexadecimal digit.
677
677
678#### Source
678#### Source
679
679
680−```
680+```hoon
681 ++ six ;~(pose sid sox)
681 ++ six ;~(pose sid sox)
682```
682```
683
683
@@ -702,7 +702,7 @@ Parsing `++rule`. Parses a base-32 letter.
702
702
703#### Source
703#### Source
704
704
705−```
705+```hoon
706 ++ sov (cook |=(a/@ (sub a 87)) (shim 'a' 'v'))
706 ++ sov (cook |=(a/@ (sub a 87)) (shim 'a' 'v'))
707```
707```
708
708
@@ -726,7 +726,7 @@ Parsing `++rule`. Parses a base-64 letter/symbol.
726
726
727#### Source
727#### Source
728
728
729−```
729+```hoon
730 ++ sow ;~ pose
730 ++ sow ;~ pose
731 (cook |=(a/@ (sub a 87)) (shim 'a' 'z'))
731 (cook |=(a/@ (sub a 87)) (shim 'a' 'z'))
732 (cook |=(a/@ (sub a 29)) (shim 'A' 'Z'))
732 (cook |=(a/@ (sub a 29)) (shim 'A' 'Z'))
@@ -756,7 +756,7 @@ Parsing `++rule`. Parses a hexadecimal letter.
756
756
757#### Source
757#### Source
758
758
759−```
759+```hoon
760 ++ sox (cook |=(a/@ (sub a 87)) (shim 'a' 'f'))
760 ++ sox (cook |=(a/@ (sub a 87)) (shim 'a' 'f'))
761```
761```
762
762
@@ -782,7 +782,7 @@ leading zero.
782
782
783#### Source
783#### Source
784
784
785−```
785+```hoon
786 ++ ted (bass 10 ;~(plug sed (stun [0 2] sid)))
786 ++ ted (bass 10 ;~(plug sed (stun [0 2] sid)))
787```
787```
788
788
@@ -815,7 +815,7 @@ syllable.
815
815
816#### Source
816#### Source
817
817
818−```
818+```hoon
819 ++ tip (sear |=(a/@ (ins:po a)) til)
819 ++ tip (sear |=(a/@ (ins:po a)) til)
820```
820```
821
821
@@ -844,7 +844,7 @@ syllable.
844
844
845#### Source
845#### Source
846
846
847−```
847+```hoon
848 ++ tiq (sear |=(a/@ (ind:po a)) til)
848 ++ tiq (sear |=(a/@ (ind:po a)) til)
849
849
850```
850```
@@ -871,7 +871,7 @@ Parsing `++rule`. Parses exactly three decimal digits.
871
871
872#### Source
872#### Source
873
873
874−```
874+```hoon
875 ++ tid (bass 10 (stun [3 3] sid))
875 ++ tid (bass 10 (stun [3 3] sid))
876```
876```
877
877
@@ -899,7 +899,7 @@ Parsing `++rule`. Parses exactly three lowercase letters.
899
899
900#### Source
900#### Source
901
901
902−```
902+```hoon
903 ++ til (boss 256 (stun [3 3] low))
903 ++ til (boss 256 (stun [3 3] low))
904```
904```
905
905
@@ -929,7 +929,7 @@ Parsing rule. Parses characters from an atom of the span odor `@ta`.
929
929
930#### Source
930#### Source
931
931
932−```
932+```hoon
933 ++ urs %+ cook
933 ++ urs %+ cook
934 |=(a/tape (rap 3 ^-((list @) a)))
934 |=(a/tape (rap 3 ^-((list @) a)))
935 (star ;~(pose nud low hep dot sig cab))
935 (star ;~(pose nud low hep dot sig cab))
@@ -959,7 +959,7 @@ for cab, `_`.
959
959
960#### Source
960#### Source
961
961
962−```
962+```hoon
963 ++ urt %+ cook
963 ++ urt %+ cook
964 |=(a/tape (rap 3 ^-((list @) a)))
964 |=(a/tape (rap 3 ^-((list @) a)))
965 (star ;~(pose nud low hep dot sig))
965 (star ;~(pose nud low hep dot sig))
@@ -987,7 +987,7 @@ byte.
987
987
988#### Source
988#### Source
989
989
990−```
990+```hoon
991 ++ voy ;~(pfix bas ;~(pose bas soq bix))
991 ++ voy ;~(pfix bas ;~(pose bas soq bix))
992```
992```
993
993
@@ -1014,7 +1014,7 @@ A core containing top-level atom parsers.
1014
1014
1015#### Source
1015#### Source
1016
1016
1017−```
1017+```hoon
1018 ++ ag
1018 ++ ag
1019 |%
1019 |%
1020```
1020```
@@ -1042,7 +1042,7 @@ Parser modifier. Parses 0 or the sample rule `fel`.
1042
1042
1043#### Source
1043#### Source
1044
1044
1045−```
1045+```hoon
1046 ++ ape |*(fel/rule ;~(pose (cold 0 (just '0')) fel))
1046 ++ ape |*(fel/rule ;~(pose (cold 0 (just '0')) fel))
1047```
1047```
1048
1048
@@ -1067,7 +1067,7 @@ Parsing rule. Parses a binary number without a leading zero.
1067
1067
1068#### Source
1068#### Source
1069
1069
1070−```
1070+```hoon
1071 ++ bay (ape (bass 16 ;~(plug qeb:ab (star ;~(pfix dog qib:ab)))))
1071 ++ bay (ape (bass 16 ;~(plug qeb:ab (star ;~(pfix dog qib:ab)))))
1072```
1072```
1073
1073
@@ -1092,7 +1092,7 @@ Parsing rule. Parses a `@is`, an IPv6 address.
1092
1092
1093#### Source
1093#### Source
1094
1094
1095−```
1095+```hoon
1096 ++ bip =+ tod=(ape qex:ab)
1096 ++ bip =+ tod=(ape qex:ab)
1097 (bass 0x1.0000 ;~(plug tod (stun [7 7] ;~(pfix dog tod))))
1097 (bass 0x1.0000 ;~(plug tod (stun [7 7] ;~(pfix dog tod))))
1098```
1098```
@@ -1120,7 +1120,7 @@ Parsing rule. Parses a decimal number that includes dot separators.
1120
1120
1121#### Source
1121#### Source
1122
1122
1123−```
1123+```hoon
1124 ++ dem (ape (bass 1.000 ;~(plug ted:ab (star ;~(pfix dog tid:ab)))))
1124 ++ dem (ape (bass 1.000 ;~(plug ted:ab (star ;~(pfix dog tid:ab)))))
1125```
1125```
1126
1126
@@ -1147,7 +1147,7 @@ Parsing rule. Parses a decimal number without a leading zero.
1147
1147
1148#### Source
1148#### Source
1149
1149
1150−```
1150+```hoon
1151 ++ dim (ape (bass 10 ;~(plug sed:ab (star sid:ab))))
1151 ++ dim (ape (bass 10 ;~(plug sed:ab (star sid:ab))))
1152```
1152```
1153
1153
@@ -1175,7 +1175,7 @@ Parsing rule. Parses a decmial number with leading zeroes.
1175
1175
1176#### Source
1176#### Source
1177
1177
1178−```
1178+```hoon
1179 ++ dum (bass 10 (plus sid:ab))
1179 ++ dum (bass 10 (plus sid:ab))
1180```
1180```
1181
1181
@@ -1204,7 +1204,7 @@ Parsing rule. Parses an atom of odor `@p`, the phonetic base.
1204
1204
1205#### Source
1205#### Source
1206
1206
1207−```
1207+```hoon
1208 ++ fed ;~ pose
1208 ++ fed ;~ pose
1209 (bass 0x1.0000.0000.0000.0000 (most doh hyf:ab))
1209 (bass 0x1.0000.0000.0000.0000 (most doh hyf:ab))
1210 huf:ab
1210 huf:ab
@@ -1246,7 +1246,7 @@ Parsing rule. Parses a hexadecimal number
1246
1246
1247#### Source
1247#### Source
1248
1248
1249−```
1249+```hoon
1250 ++ hex (ape (bass 0x1.0000 ;~(plug qex:ab (star ;~(pfix dog qix:ab)))))
1250 ++ hex (ape (bass 0x1.0000 ;~(plug qex:ab (star ;~(pfix dog qix:ab)))))
1251```
1251```
1252
1252
@@ -1277,7 +1277,7 @@ Parsing rule. Parses an IPv4 address.
1277
1277
1278#### Source
1278#### Source
1279
1279
1280−```
1280+```hoon
1281 ++ lip =+ tod=(ape ted:ab)
1281 ++ lip =+ tod=(ape ted:ab)
1282 (bass 256 ;~(plug tod (stun [3 3] ;~(pfix dog tod))))
1282 (bass 256 ;~(plug tod (stun [3 3] ;~(pfix dog tod))))
1283```
1283```
@@ -1307,7 +1307,7 @@ Parsing rule. Parses a Base-32 number with dot separators.
1307
1307
1308#### Source
1308#### Source
1309
1309
1310−```
1310+```hoon
1311 ++ viz (ape (bass 0x200.0000 ;~(plug pev:ab (star ;~(pfix dog piv:ab)))))
1311 ++ viz (ape (bass 0x200.0000 ;~(plug pev:ab (star ;~(pfix dog piv:ab)))))
1312```
1312```
1313
1313
@@ -1332,7 +1332,7 @@ Parsing rule. Parses a raw base-32 string.
1332
1332
1333#### Source
1333#### Source
1334
1334
1335−```
1335+```hoon
1336 ++ vum (bass 32 (plus siv:ab))
1336 ++ vum (bass 32 (plus siv:ab))
1337```
1337```
1338
1338
@@ -1357,7 +1357,7 @@ Parsing rule. Parses a base-64 number.
1357
1357
1358#### Source
1358#### Source
1359
1359
1360−```
1360+```hoon
1361 ++ wiz (ape (bass 0x4000.0000 ;~(plug pew:ab (star ;~(pfix dog piw:ab)))))
1361 ++ wiz (ape (bass 0x4000.0000 ;~(plug pew:ab (star ;~(pfix dog piw:ab)))))
1362 --
1362 --
1363 ::
1363 ::
@@ -1389,7 +1389,7 @@ relationship between a destroyer and its cruiser.
1389
1389
1390#### Source
1390#### Source
1391
1391
1392−```
1392+```hoon
1393 ++ mu
1393 ++ mu
1394 |_ [top/@ bot/@]
1394 |_ [top/@ bot/@]
1395```
1395```
@@ -1421,7 +1421,7 @@ destroyer.
1421
1421
1422#### Source
1422#### Source
1423
1423
1424−```
1424+```hoon
1425 ++ zag [p=(end 4 1 (add top bot)) q=bot]
1425 ++ zag [p=(end 4 1 (add top bot)) q=bot]
1426```
1426```
1427
1427
@@ -1453,7 +1453,7 @@ destroyer.
1453
1453
1454#### Source
1454#### Source
1455
1455
1456−```
1456+```hoon
1457 ++ zig [p=(end 4 1 (add top (sub 0x1.0000 bot))) q=bot]
1457 ++ zig [p=(end 4 1 (add top (sub 0x1.0000 bot))) q=bot]
1458```
1458```
1459
1459
@@ -1483,7 +1483,7 @@ destroyer name.
1483
1483
1484#### Source
1484#### Source
1485
1485
1486−```
1486+```hoon
1487 ++ zug (mix (lsh 4 1 top) bot)
1487 ++ zug (mix (lsh 4 1 top) bot)
1488```
1488```
1489
1489
@@ -1511,7 +1511,7 @@ A door containing arms that render digits at bases 10, 16, 32, and
1511
1511
1512#### Source
1512#### Source
1513
1513
1514−```
1514+```hoon
1515 ++ ne
1515 ++ ne
1516 |_ tig/@
1516 |_ tig/@
1517```
1517```
@@ -1539,7 +1539,7 @@ Renders a decimal digit as an atom of an ACII byte value.
1539
1539
1540#### Source
1540#### Source
1541
1541
1542−```
1542+```hoon
1543 ++ d (add tig '0')
1543 ++ d (add tig '0')
1544```
1544```
1545
1545
@@ -1567,7 +1567,7 @@ Renders a hexadecimal digit as an atom of an ASCII byte value.
1567
1567
1568#### Source
1568#### Source
1569
1569
1570−```
1570+```hoon
1571 ++ x ?:((gte tig 10) (add tig 87) d)
1571 ++ x ?:((gte tig 10) (add tig 87) d)
1572```
1572```
1573
1573
@@ -1595,7 +1595,7 @@ Renders a base-32 digit as an atom of an ASCII byte value.
1595
1595
1596#### Source
1596#### Source
1597
1597
1598−```
1598+```hoon
1599 ++ v ?:((gte tig 10) (add tig 87) d)
1599 ++ v ?:((gte tig 10) (add tig 87) d)
1600```
1600```
1601
1601
@@ -1626,7 +1626,7 @@ Renders a base-64 digit as an atom of an ASCII byte value.
1626
1626
1627#### Source
1627#### Source
1628
1628
1629−```
1629+```hoon
1630 ++ w ?:(=(tig 63) '~' ?:(=(tig 62) '-' ?:((gte tig 36) (add tig 29) x)))
1630 ++ w ?:(=(tig 63) '~' ?:(=(tig 62) '-' ?:((gte tig 36) (add tig 29) x)))
1631 --
1631 --
1632 ::
1632 ::
reference/library/4k.md+4−4
@@ -17,7 +17,7 @@ A door that contains arms that operate on the sample coin `lot`.
17
17
18#### Source
18#### Source
19
19
20−```
20+```hoon
21 ++ co !.
21 ++ co !.
22 ~% %co ..co ~
22 ~% %co ..co ~
23 =< |_ lot/coin
23 =< |_ lot/coin
@@ -51,7 +51,7 @@ Renders a coin `lot` as a tape prepended to the sample tape `rom`.
51
51
52#### Source
52#### Source
53
53
54−```
54+```hoon
55 ++ rear |=(rom/tape =>(.(rex rom) rend))
55 ++ rear |=(rom/tape =>(.(rex rom) rend))
56```
56```
57
57
@@ -78,7 +78,7 @@ Renders a coin `lot` as a span.
78
78
79#### Source
79#### Source
80
80
81−```
81+```hoon
82 ++ rent `@ta`(rap 3 rend)
82 ++ rent `@ta`(rap 3 rend)
83```
83```
84
84
@@ -107,7 +107,7 @@ Renders a coin `lot` as a tape.
107
107
108#### Source
108#### Source
109
109
110−```
110+```hoon
111 ++ rend
111 ++ rend
112 ^- tape
112 ^- tape
113 ?: ?=($blob -.lot)
113 ?: ?=($blob -.lot)
reference/library/4l.md+11−11
@@ -15,7 +15,7 @@ Core containing arms that parse `++coin`.
15
15
16#### Source
16#### Source
17
17
18−```
18+```hoon
19 ++ so
19 ++ so
20 |%
20 |%
21```
21```
@@ -42,7 +42,7 @@ producing a `++dime`.
42
42
43#### Source
43#### Source
44
44
45−```
45+```hoon
46 ++ bisk
46 ++ bisk
47 ;~ pose
47 ;~ pose
48 ;~ pfix (just '0')
48 ;~ pfix (just '0')
@@ -83,7 +83,7 @@ and `@t`, producing a `++dime`.
83
83
84#### Source
84#### Source
85
85
86−```
86+```hoon
87 ++ crub
87 ++ crub
88 ~+
88 ~+
89 ;~ pose
89 ;~ pose
@@ -274,7 +274,7 @@ corresponding `++coin` parser.
274
274
275#### Source
275#### Source
276
276
277−```
277+```hoon
278 ++ nuck
278 ++ nuck
279 ~/ %nuck |= a/nail %. a
279 ~/ %nuck |= a/nail %. a
280 %+ knee *coin |. ~+
280 %+ knee *coin |. ~+
@@ -330,7 +330,7 @@ formatting).
330
330
331#### Source
331#### Source
332
332
333−```
333+```hoon
334 ++ nusk
334 ++ nusk
335 (sear |=(a/@ta (rush (wick a) nuck)) urt:ab)
335 (sear |=(a/@ta (rush (wick a) nuck)) urt:ab)
336```
336```
@@ -363,7 +363,7 @@ prefixes.
363
363
364#### Source
364#### Source
365
365
366−```
366+```hoon
367 ++ perd
367 ++ perd
368 ;~ pose
368 ;~ pose
369 (stag ~ zust)
369 (stag ~ zust)
@@ -398,7 +398,7 @@ Parsing rule. Parses a number into a `++dime` float.
398
398
399#### Source
399#### Source
400
400
401−```
401+```hoon
402 ++ royl
402 ++ royl
403 ~+
403 ~+
404 =+ ^= moo
404 =+ ^= moo
@@ -463,7 +463,7 @@ XX still not fully functional
463
463
464Intermediate parsed float convereter
464Intermediate parsed float convereter
465
465
466−```
466+```hoon
467 ++ royl-cell
467 ++ royl-cell
468 |= rn
468 |= rn
469 ^- dn
469 ^- dn
@@ -488,7 +488,7 @@ Parsing rule. Parses a signed number into a `++dime`.
488
488
489#### Source
489#### Source
490
490
491−```
491+```hoon
492 ++ tash
492 ++ tash
493 ~+
493 ~+
494 =+ ^= neg
494 =+ ^= neg
@@ -531,7 +531,7 @@ Parsing rule. Parses coins after a leading sig, `~`.
531
531
532#### Source
532#### Source
533
533
534−```
534+```hoon
535 ++ twid
535 ++ twid
536 ;~ pose
536 ;~ pose
537 (cook |=(a/@ [%blob (cue a)]) ;~(pfix (just '0') vum:ag))
537 (cook |=(a/@ [%blob (cue a)]) ;~(pfix (just '0') vum:ag))
@@ -570,7 +570,7 @@ Parsing rule. Parses an atom of either `@if` (IP address), `@f`
570
570
571#### Source
571#### Source
572
572
573−```
573+```hoon
574 ++ zust
574 ++ zust
575 ;~ pose
575 ;~ pose
576 (stag %is bip:ag)
576 (stag %is bip:ag)
reference/library/4m.md+10−10
@@ -19,7 +19,7 @@ A `cord`.
19
19
20#### Source
20#### Source
21
21
22−```
22+```hoon
23 ++ scot |=(mol/dime ~(rent co %$ mol))
23 ++ scot |=(mol/dime ~(rent co %$ mol))
24```
24```
25
25
@@ -62,7 +62,7 @@ A `tape`.
62
62
63#### Source
63#### Source
64
64
65−```
65+```hoon
66 ++ scow |=(mol/dime ~(rend co %$ mol))
66 ++ scow |=(mol/dime ~(rend co %$ mol))
67```
67```
68#### Examples
68#### Examples
@@ -99,7 +99,7 @@ A `gate`.
99
99
100#### Source
100#### Source
101
101
102−```
102+```hoon
103 ++ slat |=(mod/@tas |=(txt/@ta (slaw mod txt)))
103 ++ slat |=(mod/@tas |=(txt/@ta (slaw mod txt)))
104```
104```
105
105
@@ -137,7 +137,7 @@ The atom of a `(unit @)` from `++slaw`, or crash.
137
137
138#### Source
138#### Source
139
139
140−```
140+```hoon
141 ++ slav |=([mod/@tas txt/@ta] (need (slaw mod txt)))
141 ++ slav |=([mod/@tas txt/@ta] (need (slaw mod txt)))
142```
142```
143
143
@@ -181,7 +181,7 @@ A `(unit @)`.
181
181
182#### Source
182#### Source
183
183
184−```
184+```hoon
185 ++ slaw
185 ++ slaw
186 ~/ %slaw
186 ~/ %slaw
187 |= {mod/@tas txt/@ta}
187 |= {mod/@tas txt/@ta}
@@ -229,7 +229,7 @@ A `(unit coin)`.
229
229
230#### Source
230#### Source
231
231
232−```
232+```hoon
233 ++ slay
233 ++ slay
234 |= txt/@ta ^- (unit coin)
234 |= txt/@ta ^- (unit coin)
235 =+ ^= vex
235 =+ ^= vex
@@ -290,7 +290,7 @@ A `tank`.
290
290
291#### Source
291#### Source
292
292
293−```
293+```hoon
294 ++ smyt :: pretty print path
294 ++ smyt :: pretty print path
295 |= bon/path ^- tank
295 |= bon/path ^- tank
296 :+ %rose [['/' ~] ['/' ~] ~]
296 :+ %rose [['/' ~] ['/' ~] ~]
@@ -335,7 +335,7 @@ A `cord`.
335
335
336#### Source
336#### Source
337
337
338−```
338+```hoon
339 ++ spat |=(pax/path (crip (spud pax))) :: path to cord
339 ++ spat |=(pax/path (crip (spud pax))) :: path to cord
340```
340```
341
341
@@ -368,7 +368,7 @@ A `tape`.
368
368
369#### Source
369#### Source
370
370
371−```
371+```hoon
372 ++ spud |=(pax/path ~(ram re (smyt pax))) :: path to tape
372 ++ spud |=(pax/path ~(ram re (smyt pax))) :: path to tape
373```
373```
374
374
@@ -402,7 +402,7 @@ A `path`, or crash.
402
402
403#### Source
403#### Source
404
404
405−```
405+```hoon
406 ++ stab :: parse cord to path
406 ++ stab :: parse cord to path
407 =+ fel=;~(pfix fas (more fas urs:ab))
407 =+ fel=;~(pfix fas (more fas urs:ab))
408 |=(zep/@t `path`(rash zep fel))
408 |=(zep/@t `path`(rash zep fel))
reference/library/4n.md+7−7
@@ -23,7 +23,7 @@ The `++unit` of a noun.
23
23
24#### Source
24#### Source
25
25
26−```
26+```hoon
27 ++ mack
27 ++ mack
28 |= {sub/* fol/*}
28 |= {sub/* fol/*}
29 ^- (unit)
29 ^- (unit)
@@ -72,7 +72,7 @@ A `++tone`.
72
72
73#### Source
73#### Source
74
74
75−```
75+```hoon
76 ++ mink
76 ++ mink
77 ~/ %mink
77 ~/ %mink
78 |= {{sub/* fol/*} gul/$-({* *} (unit (unit)))}
78 |= {{sub/* fol/*} gul/$-({* *} (unit (unit)))}
@@ -196,7 +196,7 @@ The `++unit` of a noun.
196
196
197#### Source
197#### Source
198
198
199−```
199+```hoon
200 ++ mock
200 ++ mock
201 |= {{sub/* fol/*} gul/$-({* *} (unit (unit)))}
201 |= {{sub/* fol/*} gul/$-({* *} (unit (unit)))}
202 (mook (mink [sub fol] gul))
202 (mook (mink [sub fol] gul))
@@ -245,7 +245,7 @@ A `++toon`.
245
245
246#### Source
246#### Source
247
247
248−```
248+```hoon
249 ++ mong
249 ++ mong
250 |= {{gat/* sam/*} gul/$-({* *} (unit (unit)))}
250 |= {{gat/* sam/*} gul/$-({* *} (unit (unit)))}
251 ^- toon
251 ^- toon
@@ -297,7 +297,7 @@ A `++toon`.
297
297
298#### Source
298#### Source
299
299
300−```
300+```hoon
301 ++ mook
301 ++ mook
302 |= ton/tone
302 |= ton/tone
303 ^- toon
303 ^- toon
@@ -369,7 +369,7 @@ XX
369
369
370#### Source
370#### Source
371
371
372−```
372+```hoon
373 ++ mule :: typed virtual
373 ++ mule :: typed virtual
374 ~/ %mule
374 ~/ %mule
375 |* taq/_|.(**)
375 |* taq/_|.(**)
@@ -422,7 +422,7 @@ Either a noun or a `++list` of `++tank`.
422
422
423#### Source
423#### Source
424
424
425−```
425+```hoon
426 ++ mute :: untyped virtual
426 ++ mute :: untyped virtual
427 |= taq/_^?(|.(**))
427 |= taq/_^?(|.(**))
428 ^- (each * (list tank))
428 ^- (each * (list tank))
reference/library/4o.md+30−30
@@ -9,7 +9,7 @@ Biblical names in hoon are primarily aliases for the compiler.
9
9
10#### Source
10#### Source
11
11
12−```
12+```hoon
13 ++ abel typo :: original sin: type
13 ++ abel typo :: original sin: type
14```
14```
15
15
@@ -32,7 +32,7 @@ commonly used in urbit.
32
32
33#### Source
33#### Source
34
34
35−```
35+```hoon
36 ++ aura ,@ta :: atom format
36 ++ aura ,@ta :: atom format
37```
37```
38
38
@@ -56,7 +56,7 @@ right and `0` left.
56
56
57#### Source
57#### Source
58
58
59−```
59+```hoon
60 ++ axis ,@ :: tree address
60 ++ axis ,@ :: tree address
61```
61```
62
62
@@ -84,7 +84,7 @@ boolean or null labelled with an odor.
84
84
85#### Source
85#### Source
86
86
87−```
87+```hoon
88 ++ base ?([%atom p=odor] %noun %cell %bean %null) :: axils, @ * ^ ? ~
88 ++ base ?([%atom p=odor] %noun %cell %bean %null) :: axils, @ * ^ ? ~
89```
89```
90
90
@@ -113,7 +113,7 @@ Boolean
113
113
114#### Source
114#### Source
115
115
116−```
116+```hoon
117 ++ bean ,? :: 0=&=yes, 1=|=no
117 ++ bean ,? :: 0=&=yes, 1=|=no
118```
118```
119
119
@@ -140,7 +140,7 @@ Used to build tapes internally.
140
140
141#### Source
141#### Source
142
142
143−```
143+```hoon
144 ++ beer $|(@ [~ p=hoon]) :: simple embed
144 ++ beer $|(@ [~ p=hoon]) :: simple embed
145```
145```
146
146
@@ -163,7 +163,7 @@ Used internally.
163
163
164#### Source
164#### Source
165
165
166−```
166+```hoon
167 ++ beet $| @ :: advanced embed
167 ++ beet $| @ :: advanced embed
168 $% [%a p=hoon] :: take tape
168 $% [%a p=hoon] :: take tape
169 [%b p=hoon] :: take manx
169 [%b p=hoon] :: take manx
@@ -185,7 +185,7 @@ and `"{major}.{minor}"` version number.
185
185
186#### Source
186#### Source
187
187
188−```
188+```hoon
189 ++ chum $? lef=term :: jet name
189 ++ chum $? lef=term :: jet name
190 [std=term kel=@] :: kelvin version
190 [std=term kel=@] :: kelvin version
191 [ven=term pro=term kel=@] :: vendor and product
191 [ven=term pro=term kel=@] :: vendor and product
@@ -217,7 +217,7 @@ intermediate step within Section 2fB. Converted by `++core` to %core type.
217
217
218#### Source
218#### Source
219
219
220−```
220+```hoon
221 ++ coil $: p=?(%gold %iron %lead %zinc) :: core type
221 ++ coil $: p=?(%gold %iron %lead %zinc) :: core type
222 q=type ::
222 q=type ::
223 r=[p=?(~ ^) q=(map term foot)] ::
223 r=[p=?(~ ^) q=(map term foot)] ::
@@ -234,7 +234,7 @@ Cases of arms by variance model.
234
234
235#### Source
235#### Source
236
236
237−```
237+```hoon
238 ++ foot $% [%ash p=hoon] :: dry arm, geometric
238 ++ foot $% [%ash p=hoon] :: dry arm, geometric
239 [%elm p=hoon] :: wet arm, generic
239 [%elm p=hoon] :: wet arm, generic
240 [%oak ~] :: XX not used
240 [%oak ~] :: XX not used
@@ -264,7 +264,7 @@ See also: `++ap`, `++ut`
264
264
265### `++limb`
265### `++limb`
266
266
267−```
267+```hoon
268 ++ limb $|(term $%([%& p=axis] [%| p=@ud q=term])) ::
268 ++ limb $|(term $%([%& p=axis] [%| p=@ud q=term])) ::
269```
269```
270
270
@@ -274,7 +274,7 @@ Reference into subject by name/axis
274
274
275See also: section 2fC-2fD
275See also: section 2fC-2fD
276
276
277−```
277+```hoon
278 > (ream '^^$')
278 > (ream '^^$')
279 [%cnzz p=~[[%.n p=2 q=%$]]]
279 [%cnzz p=~[[%.n p=2 q=%$]]]
280 > (limb &2:(ream '^^$'))
280 > (limb &2:(ream '^^$'))
@@ -291,7 +291,7 @@ XX move to `++ut`
291
291
292#### Source
292#### Source
293
293
294−```
294+```hoon
295 ++ line ,[p=[%leaf p=odor q=@] q=tile] :: %kelp case
295 ++ line ,[p=[%leaf p=odor q=@] q=tile] :: %kelp case
296```
296```
297
297
@@ -318,7 +318,7 @@ XX move to `++ut`
318
318
319### `++metl`
319### `++metl`
320
320
321−```
321+```hoon
322 ++ metl ?(%gold %iron %zinc %lead) :: core variance
322 ++ metl ?(%gold %iron %zinc %lead) :: core variance
323```
323```
324
324
@@ -337,7 +337,7 @@ Virtual machine. See Nock.
337
337
338#### Source
338#### Source
339
339
340−```
340+```hoon
341 ++ nock $& [p=nock q=nock] :: autocons
341 ++ nock $& [p=nock q=nock] :: autocons
342 [%3 p=nock] :: cell test
342 [%3 p=nock] :: cell test
343 [%4 p=nock] :: increment
343 [%4 p=nock] :: increment
@@ -365,7 +365,7 @@ Virtual machine. See Nock.
365
365
366### `++noun`
366### `++noun`
367
367
368−```
368+```hoon
369 ++ noun ,* :: any noun
369 ++ noun ,* :: any noun
370```
370```
371
371
@@ -381,7 +381,7 @@ Used nowhere XX
381
381
382### `++null`
382### `++null`
383
383
384−```
384+```hoon
385 ++ null ,~ :: null, nil, etc
385 ++ null ,~ :: null, nil, etc
386```
386```
387
387
@@ -404,7 +404,7 @@ Type and location of core-shaped thing? XX Compiler Internals
404
404
405#### Source
405#### Source
406
406
407−```
407+```hoon
408 ++ port $: p=axis ::
408 ++ port $: p=axis ::
409 $= q ::
409 $= q ::
410 $% [%& p=type] ::
410 $% [%& p=type] ::
@@ -434,7 +434,7 @@ besides numbers and lowercase letters are permitted.
434
434
435#### Source
435#### Source
436
436
437−```
437+```hoon
438 ++ span ,@ta :: text-atom (ASCII)
438 ++ span ,@ta :: text-atom (ASCII)
439```
439```
440
440
@@ -466,7 +466,7 @@ XX move to `++ut`
466
466
467#### Source
467#### Source
468
468
469−```
469+```hoon
470 ++ tiki :: test case
470 ++ tiki :: test case
471```
471```
472
472
@@ -509,7 +509,7 @@ XX move to `++ut` and rune doc (for \^= examples)
509
509
510#### Source
510#### Source
511
511
512−```
512+```hoon
513 ++ toga :: face control
513 ++ toga :: face control
514 [2 p=toga q=toga] :: cell toga
514 [2 p=toga q=toga] :: cell toga
515 == ::
515 == ::
@@ -550,7 +550,7 @@ Similar to `++toon`, but stack trace is not yet rendered.
550
550
551#### Source
551#### Source
552
552
553−```
553+```hoon
554 ++ tone $% [%0 p=*] :: success
554 ++ tone $% [%0 p=*] :: success
555```
555```
556
556
@@ -599,7 +599,7 @@ An XML template tree.
599
599
600#### Source
600#### Source
601
601
602−```
602+```hoon
603 ++ tuna :: tagflow
603 ++ tuna :: tagflow
604 [%d p=hoon] :: dynamic list
604 [%d p=hoon] :: dynamic list
605 [%e p=hoon q=(list tuna)] :: element
605 [%e p=hoon q=(list tuna)] :: element
@@ -628,7 +628,7 @@ a `++tusk`.
628
628
629#### Source
629#### Source
630
630
631−```
631+```hoon
632 ++ tusk (list hoon) ::
632 ++ tusk (list hoon) ::
633```
633```
634
634
@@ -667,7 +667,7 @@ a `++tyke`, where the `=` are inferred from your current path.
667
667
668#### Source
668#### Source
669
669
670−```
670+```hoon
671 ++ tyke (list (unit hoon)) ::
671 ++ tyke (list (unit hoon)) ::
672```
672```
673
673
@@ -692,7 +692,7 @@ context when upating.
692
692
693#### Source
693#### Source
694
694
695−```
695+```hoon
696 ++ typo type :: old type
696 ++ typo type :: old type
697```
697```
698
698
@@ -712,7 +712,7 @@ Associative list of `++term` `++hoon`, used in jet hint processing.
712
712
713#### Source
713#### Source
714
714
715−```
715+```hoon
716 ++ tyre (list ,[p=term q=hoon]) ::
716 ++ tyre (list ,[p=term q=hoon]) ::
717```
717```
718
718
@@ -726,7 +726,7 @@ with.
726
726
727#### Source
727#### Source
728
728
729−```
729+```hoon
730 ++ vase ,[p=type q=*] :: type-value pair
730 ++ vase ,[p=type q=*] :: type-value pair
731```
731```
732
732
@@ -748,7 +748,7 @@ Used to convert from previously-typed data during reboot.
748
748
749#### Source
749#### Source
750
750
751−```
751+```hoon
752 ++ vise ,[p=typo q=*] :: old vase
752 ++ vise ,[p=typo q=*] :: old vase
753```
753```
754
754
@@ -762,7 +762,7 @@ See also: `++typo`, `++seer`
762
762
763### `++wing`
763### `++wing`
764
764
765−```
765+```hoon
766 ++ wing (list limb) ::
766 ++ wing (list limb) ::
767```
767```
768
768
reference/library/5f.md+9−9
@@ -12,7 +12,7 @@ An XML name (tag name or attribute name) with an optional namespace. Parsed by
12
12
13#### Source
13#### Source
14
14
15−```
15+```hoon
16 ++ mane $@(@tas [@tas @tas]) :: XML name/space
16 ++ mane $@(@tas [@tas @tas]) :: XML name/space
17```
17```
18
18
@@ -40,7 +40,7 @@ Parsed by `++apex` within `++apex:de-xml:html` in `zuse.hoon`, rendered by `++ap
40
40
41#### Source
41#### Source
42
42
43−```
43+```hoon
44 ++ manx {g/marx c/marl} :: XML node
44 ++ manx {g/marx c/marl} :: XML node
45```
45```
46
46
@@ -59,7 +59,7 @@ A list of `++manx`.
59
59
60#### Source
60#### Source
61
61
62−```
62+```hoon
63 ++ marl (list manx) :: XML node list
63 ++ marl (list manx) :: XML node list
64```
64```
65
65
@@ -76,7 +76,7 @@ Implicitly produced by `++chrd` within `++chrd:de-xml:html`
76
76
77#### Source
77#### Source
78
78
79−```
79+```hoon
80 ++ mars {t/{n/$$ a/{i/{n/$$ v/tape} t/$~}} c/$~} :: XML cdata
80 ++ mars {t/{n/$$ a/{i/{n/$$ v/tape} t/$~}} c/$~} :: XML cdata
81```
81```
82
82
@@ -96,7 +96,7 @@ Parsed by `++attr:de-xml:html` in `zuse.hoon`, rendered by `++attr:en-xml:html`
96
96
97#### Source
97#### Source
98
98
99−```
99+```hoon
100 ++ mart (list {n/mane v/tape}) :: XML attributes
100 ++ mart (list {n/mane v/tape}) :: XML attributes
101```
101```
102
102
@@ -113,7 +113,7 @@ A `++marx` is a pair of a tag name, `++mane` and a list of attributes,
113
113
114#### Source
114#### Source
115
115
116−```
116+```hoon
117 ++ marx {n/mane a/mart} :: XML tag
117 ++ marx {n/mane a/mart} :: XML tag
118```
118```
119
119
@@ -130,7 +130,7 @@ Used primarily in crypto.
130
130
131#### Source
131#### Source
132
132
133−```
133+```hoon
134 ++ pass @ :: public key
134 ++ pass @ :: public key
135```
135```
136
136
@@ -144,7 +144,7 @@ Used primarily in crypto.
144
144
145#### Source
145#### Source
146
146
147−```
147+```hoon
148 ++ ring @ :: private key
148 ++ ring @ :: private key
149```
149```
150
150
@@ -158,7 +158,7 @@ The `@da` odor designates an absolute date atom.
158
158
159#### Source
159#### Source
160
160
161−```
161+```hoon
162 ++ time @da :: galactic time
162 ++ time @da :: galactic time
163```
163```
164
164
reference/library/table-of-contents.mdnew file+1729
@@ -0,0 +1,1729 @@
1++++
2+title = "Table of Contents"
3+weight = 0
4+template = "doc.html"
5++++
6+
7+Can be navigated [alphabetically](#alphabetical) or [by section](#by-section).
8+
9+## Alphabetical
10+
11+### a
12+
13+<a class="tooltip" href='/docs/hoon/library/4j/#ab' title="Primitive parser engine"><code>++ab</code></a>
14+<a class="tooltip" href='/docs/hoon/library/3b/#abs-fl' title="Absolute value"><code>++abs:fl</code></a>
15+<a class="tooltip" href='/docs/hoon/library/3a/#abs-si' title="Absolute value (signed integer)"><code>++abs:si</code></a>
16+<a class="tooltip" href='/docs/hoon/library/4o/#abel' title="Compiler alias"><code>++abel</code></a>
17+<a class="tooltip" href='/docs/hoon/library/4h/#ace' title="Parse space"><code>++ace</code></a>
18+<a class="tooltip" href='/docs/hoon/library/1a/#add' title="Add"><code>++add</code></a>
19+<a class="tooltip" href='/docs/hoon/library/3b/#add-ff' title="Add (floating point)"><code>++add:ff</code></a>
20+<a class="tooltip" href='/docs/hoon/library/3b/#add-fl' title="Add (with exact/rounded flag)"><code>++add:fl</code></a>
21+<a class="tooltip" href='/docs/hoon/library/2j/#add-ja' title="Prepend to list"><code>+-add:ja</code></a>
22+<a class="tooltip" href='/docs/hoon/library/3b/#add-rd' title="Add (double-precision float)"><code>++add:rd</code></a>
23+<a class="tooltip" href='/docs/hoon/library/3b/#add-rh' title="Add (half-precision float)"><code>++add:rh</code></a>
24+<a class="tooltip" href='/docs/hoon/library/3b/#add-rs' title="Add (single-precision float)"><code>++add:rs</code></a>
25+<a class="tooltip" href='/docs/hoon/library/3b/#add-rq' title="Add (quad-precision float)"><code>++add:rq</code></a>
26+<a class="tooltip" href='/docs/hoon/library/4j/#ag' title="Top-level atom parser engine"><code>++ag</code></a>
27+<a class="tooltip" href='/docs/hoon/library/4i/#alf' title="Parse alphabetic characters"><code>++alf</code></a>
28+<a class="tooltip" href='/docs/hoon/library/2i/#all-by' title="Logical AND (map and wet gate)"><code>+-all:by</code></a>
29+<a class="tooltip" href='/docs/hoon/library/2h/#all-in' title="Logical AND (set and wet gate)"><code>+-all:in</code></a>
30+<a class="tooltip" href='/docs/hoon/library/4i/#aln' title="Parse alphanumeric characters"><code>++aln</code></a>
31+<a class="tooltip" href='/docs/hoon/library/4i/#alp' title="Parse alphanumeric characters and -"><code>++alp</code></a>
32+<a class="tooltip" href='/docs/hoon/library/2i/#any-by' title="Logical OR (map and wet gate)"><code>+-any:by</code></a>
33+<a class="tooltip" href='/docs/hoon/library/2h/#any-in' title="Logical OR (set and gate)"><code>+-any:in</code></a>
34+<a class="tooltip" href='/docs/hoon/library/2f/#aor' title="Alphabetical order"><code>++aor</code></a>
35+<a class="tooltip" href='/docs/hoon/library/4j/#ape-ag' title="Parse 0 or rule"><code>++ape:ag</code></a>
36+<a class="tooltip" href='/docs/hoon/library/2i/#apt-by' title="Check correctness (map)"><code>+-apt:by</code></a>
37+<a class="tooltip" href='/docs/hoon/library/2h/#apt-in' title="Check correctness (set)"><code>+-apt:in</code></a>
38+<a class="tooltip" href='/docs/hoon/library/4b/#at' title="(Undocumented)"><code>++at</code></a>
39+<a class="tooltip" href='/docs/hoon/library/4o/#aura' title="'Type' of atom"><code>++aura</code></a>
40+<a class="tooltip" href='/docs/hoon/library/4o/#axis' title="Nock axis"><code>++axis</code></a>
41+
42+### b
43+
44+<a class="tooltip" href='/docs/hoon/library/2k/#bal-to' title="Balance queue"><code>+-bal:to</code></a>
45+<a class="tooltip" href='/docs/hoon/library/4h/#bar' title="Parse | (bar)"><code>++bar</code></a>
46+<a class="tooltip" href='/docs/hoon/library/4h/#bas' title="Parse \ (bas)"><code>++bas</code></a>
47+<a class="tooltip" href='/docs/hoon/library/4o/#base' title="Base type"><code>++base</code></a>
48+<a class="tooltip" href='/docs/hoon/library/4f/#bass' title="Parser modifier (LSB-ordered ++list as atom of ++base)"><code>++bass</code></a>
49+<a class="tooltip" href='/docs/hoon/library/4j/#bay-ag' title="Parses binary number"><code>++bay:ag</code></a>
50+<a class="tooltip" href='/docs/hoon/library/4o/#bean' title="Boolean"><code>++bean</code></a>
51+<a class="tooltip" href='/docs/hoon/library/4o/#beer' title="Tape builder"><code>++beer</code></a>
52+<a class="tooltip" href='/docs/hoon/library/4o/#beet' title="XML interpolation cases"><code>++beet</code></a>
53+<a class="tooltip" href='/docs/hoon/library/4e/#bend' title="Conditional composer"><code>++bend</code></a>
54+<a class="tooltip" href='/docs/hoon/library/4i/#bet' title="Parse hep and lus axis syntax"><code>++bet</code></a>
55+<a class="tooltip" href='/docs/hoon/library/2c/#bex' title="Binary exponent"><code>++bex</code></a>
56+<a class="tooltip" href='/docs/hoon/library/3b/#bif-ff' title="Converts from fn to @r"><code>++bif:ff</code></a>
57+<a class="tooltip" href='/docs/hoon/library/2i/#bif-by' title="Bifurcate map"><code>+-bif:by</code></a>
58+<a class="tooltip" href='/docs/hoon/library/2h/#bif-in' title="Bifurcate set"><code>+-bif:in</code></a>
59+<a class="tooltip" href='/docs/hoon/library/2a/#biff' title="Unit as argument"><code>++biff</code></a>
60+<a class="tooltip" href='/docs/hoon/library/4i/#bin' title="Binary to atom"><code>++bin</code></a>
61+<a class="tooltip" href='/docs/hoon/library/2a/#bind' title="Non-unit function to unit, producing unit"><code>++bind</code></a>
62+<a class="tooltip" href='/docs/hoon/library/4j/#bip-ag' title="Parse IPv6"><code>++bip:ag</code></a>
63+<a class="tooltip" href='/docs/hoon/library/3b/#bit-ff' title="fn to @r with rounding"><code>++bit:ff</code></a>
64+<a class="tooltip" href='/docs/hoon/library/3b/#bit-rd' title="fn to double-precision binary float"><code>++bit:rd</code></a>
65+<a class="tooltip" href='/docs/hoon/library/3b/#bit-rh' title="fn to half-precision float"><code>++bit:rh</code></a>
66+<a class="tooltip" href='/docs/hoon/library/3b/#bit-rs' title="fn to single-precision float"><code>++bit:rs</code></a>
67+<a class="tooltip" href='/docs/hoon/library/3b/#bit-rq' title="fn to quad-precision float"><code>++bit:rq</code></a>
68+<a class="tooltip" href='/docs/hoon/library/4j/#bix-ab' title="Parse hex pair"><code>++bix:ab</code></a>
69+<a class="tooltip" href='/docs/hoon/library/4l/#bisk-so' title="Parse odor-atom pair"><code>++bisk:so</code></a>
70+<a class="tooltip" href='/docs/hoon/library/1c/#bloq' title="Blocksize"><code>++bloq</code></a>
71+<a class="tooltip" href='/docs/hoon/library/2a/#bond' title="Replace null"><code>++bond</code></a>
72+<a class="tooltip" href='/docs/hoon/library/4f/#boss' title="Parser modifier: LSB"><code>++boss</code></a>
73+<a class="tooltip" href='/docs/hoon/library/2a/#both' title="Group unit values into pair"><code>++both</code></a>
74+<a class="tooltip" href='/docs/hoon/library/4h/#buc' title="Parse $ (buc)"><code>++buc</code></a>
75+<a class="tooltip" href='/docs/hoon/library/4i/#but' title="Parse binary digit"><code>++but</code></a>
76+
77+### c
78+
79+<a class="tooltip" href='/docs/hoon/library/4h/#cab' title="Parse _ (cab)"><code>++cab</code></a>
80+<a class="tooltip" href='/docs/hoon/library/2c/#can' title="Assemble"><code>++can</code></a>
81+<a class="tooltip" href='/docs/hoon/library/1b/#cap' title="Tree head"><code>++cap</code></a>
82+<a class="tooltip" href='/docs/hoon/library/4b/#cass' title="To lowercase"><code>++cass</code></a>
83+<a class="tooltip" href='/docs/hoon/library/2c/#cat' title="Concatenate"><code>++cat</code></a>
84+<a class="tooltip" href='/docs/hoon/library/4h/#cen' title="Parse % (cen)"><code>++cen</code></a>
85+<a class="tooltip" href='/docs/hoon/library/3c/#cet-yo' title="Days in a century"><code>++cet:yo</code></a>
86+<a class="tooltip" href='/docs/hoon/library/2q/#char' title="Character"><code>++char</code></a>
87+<a class="tooltip" href='/docs/hoon/library/4o/#chum' title="Jet hint information"><code>++chum</code></a>
88+<a class="tooltip" href='/docs/hoon/library/4i/#cit' title="Octal digit"><code>++cit</code></a>
89+<a class="tooltip" href='/docs/hoon/library/2a/#clap' title="Apply function to two units"><code>++clap</code></a>
90+<a class="tooltip" href='/docs/hoon/library/3a/#cmp-si' title="Compare (signed integer)"><code>++cmp:si</code></a>
91+<a class="tooltip" href='/docs/hoon/library/4k/#co' title="Literal rendering engine"><code>++co</code></a>
92+<a class="tooltip" href='/docs/hoon/library/4o/#coil' title="Tuple of core information"><code>++coil</code></a>
93+<a class="tooltip" href='/docs/hoon/library/3g/#coin' title="Noun-literal syntax cases"><code>++coin</code></a>
94+<a class="tooltip" href='/docs/hoon/library/4h/#col' title="Parse : (col)"><code>++col</code></a>
95+<a class="tooltip" href='/docs/hoon/library/4f/#cold' title="Replace with constant"><code>++cold</code></a>
96+<a class="tooltip" href='/docs/hoon/library/4h/#com' title="Parse , (com)"><code>++com</code></a>
97+<a class="tooltip" href='/docs/hoon/library/4e/#comp' title="Arbitrary compose"><code>++comp</code></a>
98+<a class="tooltip" href='/docs/hoon/library/2d/#con' title="Binary OR"><code>++con</code></a>
99+<a class="tooltip" href='/docs/hoon/library/4f/#cook' title="Apply gate"><code>++cook</code></a>
100+<a class="tooltip" href='/docs/hoon/library/2q/#cord' title="UTF-8 text"><code>++cord</code></a>
101+<a class="tooltip" href='/docs/hoon/library/2n/#cork' title="Compose forward"><code>++cork</code></a>
102+<a class="tooltip" href='/docs/hoon/library/2n/#corl' title="Compose backward"><code>++corl</code></a>
103+<a class="tooltip" href='/docs/hoon/library/4b/#crip' title="Tape to cord"><code>++crip</code></a>
104+<a class="tooltip" href='/docs/hoon/library/4l/#crub-so' title="Parse @da, @dr, @p, @t"><code>++crub:so</code></a>
105+<a class="tooltip" href='/docs/hoon/library/2p/#cue' title="Unpack atom to noun"><code>++cue</code></a>
106+<a class="tooltip" href='/docs/hoon/library/2n/#curr' title="Right-curry a gate"><code>++curr</code></a>
107+<a class="tooltip" href='/docs/hoon/library/2n/#cury' title="Curry left a gate"><code>++cury</code></a>
108+<a class="tooltip" href='/docs/hoon/library/4b/#cuss' title="To uppercase"><code>++cuss</code></a>
109+<a class="tooltip" href='/docs/hoon/library/2c/#cut' title="Slice"><code>++cut</code></a>
110+
111+### d
112+
113+<a class="tooltip" href='/docs/hoon/library/4j/#d-ne' title="Render decimal"><code>++d:ne</code></a>
114+<a class="tooltip" href='/docs/hoon/library/2q/#date' title="Point in time"><code>++date</code></a>
115+<a class="tooltip" href='/docs/hoon/library/3c/#day-yo' title="Seconds in day"><code>++day:yo</code></a>
116+<a class="tooltip" href='/docs/hoon/library/1a/#dec' title="Decrement"><code>++dec</code></a>
117+<a class="tooltip" href='/docs/hoon/library/2i/#def-by' title="Difference (map)"><code>+-def:by</code></a>
118+<a class="tooltip" href='/docs/hoon/library/2i/#del-by' title="Delete (map)"><code>+-del:by</code></a>
119+<a class="tooltip" href='/docs/hoon/library/2h/#del-in' title="Delete (set)"><code>+-del:in</code></a>
120+<a class="tooltip" href='/docs/hoon/library/2j/#del-ju' title="Delete (jug)"><code>+-del:ju</code></a>
121+<a class="tooltip" href='/docs/hoon/library/4i/#dem' title="Decimal to atom"><code>++dem</code></a>
122+<a class="tooltip" href='/docs/hoon/library/4j/#dem-ag' title="Parse decmal with dots"><code>++dem:ag</code></a>
123+<a class="tooltip" href='/docs/hoon/library/3b/#den-fl' title="Denormalizes (floating point)"><code>++den:fl</code></a>
124+<a class="tooltip" href='/docs/hoon/library/2i/#dep-by' title="Difference as patch (map)"><code>+-dep:by</code></a>
125+<a class="tooltip" href='/docs/hoon/library/2k/#dep-to' title="Maximum depth (queue)"><code>+-dep:to</code></a>
126+<a class="tooltip" href='/docs/hoon/library/2c/#dif-fe' title="Difference between atoms (modular basis)"><code>++dif:fe</code></a>
127+<a class="tooltip" href='/docs/hoon/library/3a/#dif-fo' title='Subtraction (modular base)'><code>++dif:fo</code></a>
128+<a class="tooltip" href='/docs/hoon/library/2h/#dif-in' title='Difference (set)'><code>+-dif:in</code></a>
129+<a class="tooltip" href='/docs/hoon/library/3a/#dif-si' title="Subtraction (signed integer)"><code>++dif:si</code></a>
130+<a class="tooltip" href='/docs/hoon/library/2i/#dig-by' title="Address of key (map)"><code>+-dig:by</code></a>
131+<a class="tooltip" href='/docs/hoon/library/2h/#dig-in' title="Address of a in set"><code>+-dig:in</code></a>
132+<a class="tooltip" href='/docs/hoon/library/4j/#dim-ag' title="Parse decimal number"><code>++dim:ag</code></a>
133+<a class="tooltip" href='/docs/hoon/library/3g/#dime' title="Aura-atom pair"><code>++dime</code></a>
134+<a class="tooltip" href='/docs/hoon/library/4c/#din-re' title="(Undocumented)"><code>++din:re</code></a>
135+<a class="tooltip" href='/docs/hoon/library/2d/#dis' title="Binary AND (atoms)"><code>++dis</code></a>
136+<a class="tooltip" href='/docs/hoon/library/4i/#dit' title="Decimal digit"><code>++dit</code></a>
137+<a class="tooltip" href='/docs/hoon/library/1a/#div' title="Divide"><code>++div</code></a>
138+<a class="tooltip" href='/docs/hoon/library/3b/#div-ff' title="Divide (IEEE float)"><code>++div:ff</code></a>
139+<a class="tooltip" href='/docs/hoon/library/3b/#div-fl' title="Divide (signed and unsigned integer cell)"><code>++div:fl</code></a>
140+<a class="tooltip" href='/docs/hoon/library/3b/#div-rd' title="Double precision float"><code>++div:rd</code></a>
141+<a class="tooltip" href='/docs/hoon/library/3b/#div-rh' title="Divide (half-precision float)"><code>++div:rh</code></a>
142+<a class="tooltip" href='/docs/hoon/library/3b/#div-rs' title="Divide (single-precision float)"><code>++div:rs</code></a>
143+<a class="tooltip" href='/docs/hoon/library/3b/#div-rq' title="Divide (quad-precision float)"><code>++div:rq</code></a>
144+<a class="tooltip" href='/docs/hoon/library/4i/#dog' title="Optional gap"><code>++dog</code></a>
145+<a class="tooltip" href='/docs/hoon/library/4i/#doh' title="@p separator"><code>++doh</code></a>
146+<a class="tooltip" href='/docs/hoon/library/4h/#doq' title="Parse double quote"><code>++doq</code></a>
147+<a class="tooltip" href='/docs/hoon/library/2f/#dor' title="Numeric order"><code>++dor</code></a>
148+<a class="tooltip" href='/docs/hoon/library/4h/#dot' title="Parse period"><code>++dot</code></a>
149+<a class="tooltip" href='/docs/hoon/library/3b/#drg-ff' title="@r to decimal float"><code>++drg:ff</code></a>
150+<a class="tooltip" href='/docs/hoon/library/3b/#drg-fl' title="Get printable decimal (signed and unsigned integer cell)"><code>++drg:fl</code></a>
151+<a class="tooltip" href='/docs/hoon/library/3b/#drg-rd' title="@rd to decimal float"><code>++drg:rd</code></a>
152+<a class="tooltip" href='/docs/hoon/library/3b/#drg-rh' title="@rh to decimal float"><code>++drg:rh</code></a>
153+<a class="tooltip" href='/docs/hoon/library/3b/#drg-rs' title="@rs to decimal float"><code>++drg:rs</code></a>
154+<a class="tooltip" href='/docs/hoon/library/3b/#drg-rq' title="@rq to decimal float"><code>++drg:rq</code></a>
155+<a class="tooltip" href='/docs/hoon/library/2a/#drop' title="Unit to list"><code>++drop</code></a>
156+<a class="tooltip" href='/docs/hoon/library/3a/#dul-si' title="Modulus (signed integer)"><code>++dul:si</code></a>
157+<a class="tooltip" href='/docs/hoon/library/4j/#dum-ag' title="Parse decimal with leading zero"><code>++dum:ag</code></a>
158+<a class="tooltip" href='/docs/hoon/library/4i/#dun' title="-- to ~"><code>++dun</code></a>
159+<a class="tooltip" href='/docs/hoon/library/4i/#duz' title="== to ~"><code>++duz</code></a>
160+<a class="tooltip" href='/docs/hoon/library/1a/#dvr' title="Divide (with remainder)"><code>++dvr</code></a>
161+
162+### e
163+
164+<a class="tooltip" href='/docs/hoon/library/3b/#ead-fl' title="Exact add"><code>++ead:fl</code></a>
165+<a class="tooltip" href='/docs/hoon/library/1c/#each' title="Mold of fork between two types"><code>++each</code></a>
166+<a class="tooltip" href='/docs/hoon/library/4f/#easy' title="Always parse"><code>++easy</code></a>
167+<a class="tooltip" href='/docs/hoon/library/3g/#edge' title="Parsing location metadata"><code>++edge</code></a>
168+<a class="tooltip" href='/docs/hoon/library/3a/#egcd' title="Extended Euclidean algorithm"><code>++egcd</code></a>
169+<a class="tooltip" href='/docs/hoon/library/3b/#emn-fl' title="Minimum exponent"><code>++emn:fl</code></a>
170+<a class="tooltip" href='/docs/hoon/library/3b/#emu-fl' title="Exact multiply"><code>++emu:fl</code></a>
171+<a class="tooltip" href='/docs/hoon/library/3b/#emx-fl' title="Maximum exponent"><code>++emx:fl</code></a>
172+<a class="tooltip" href='/docs/hoon/library/2c/#end' title="Tail"><code>++end</code></a>
173+<a class="tooltip" href='/docs/hoon/library/3b/#equ-ff' title="Equals (IEEE float)"><code>++equ:ff</code></a>
174+<a class="tooltip" href='/docs/hoon/library/3b/#equ-fl' title="Equals (signed and unsigned integer cell)"><code>++equ:fl</code></a>
175+<a class="tooltip" href='/docs/hoon/library/3b/#equ-rd' title="Equals (double-precision float)"><code>++equ:rd</code></a>
176+<a class="tooltip" href='/docs/hoon/library/3b/#equ-rh' title="Equals (half-precision float)"><code>++equ:rh</code></a>
177+<a class="tooltip" href='/docs/hoon/library/3b/#equ-rs' title="Equals (single-precision float)"><code>++equ:rs</code></a>
178+<a class="tooltip" href='/docs/hoon/library/3b/#equ-rq' title="Equals (quad-precision float)"><code>++equ:rq</code></a>
179+<a class="tooltip" href='/docs/hoon/library/3c/#era-yo' title="Leap-year period"><code>++era:yo</code></a>
180+<a class="tooltip" href='/docs/hoon/library/3b/#exp-ff' title="Get exponent (IEEE float)"><code>++exp:ff</code></a>
181+<a class="tooltip" href='/docs/hoon/library/3a/#exp-fo' title="Exponent (modular base)"><code>++exp:fo</code></a>
182+<a class="tooltip" href='/docs/hoon/library/3b/#exp-rd' title="Exponent (@rd)"><code>++exp:rd</code></a>
183+<a class="tooltip" href='/docs/hoon/library/3b/#exp-rh' title="Exponent (half-precision float)"><code>++exp:rh</code></a>
184+<a class="tooltip" href='/docs/hoon/library/3b/#exp-rs' title="Exponent (@rs)"><code>++exp:rs</code></a>
185+<a class="tooltip" href='/docs/hoon/library/3b/#exp-rq' title="Exponent (quad-precision float)"><code>++exp:rq</code></a>
186+
187+### f
188+
189+<a class="tooltip" href='/docs/hoon/library/4e/#fail' title="Never parse"><code>++fail</code></a>
190+<a class="tooltip" href='/docs/hoon/library/2a/#fall' title="Give unit a default value"><code>++fall</code></a>
191+<a class="tooltip" href='/docs/hoon/library/2b/#fand' title="All indices in list"><code>++fand</code></a>
192+<a class="tooltip" href='/docs/hoon/library/4h/#fas' title="Parse / (fas)"><code>++fas</code></a>
193+<a class="tooltip" href='/docs/hoon/library/2c/#fe' title="Modulo bloq"><code>++fe</code></a>
194+<a class="tooltip" href='/docs/hoon/library/4j/#fed-ag' title="Parse @p"><code>++fed:ag</code></a>
195+<a class="tooltip" href='/docs/hoon/library/3f/#feen-ob' title="Conceal structure v2"><code>++feen:ob</code></a>
196+<a class="tooltip" href='/docs/hoon/library/3f/#fend-ob' title="Restore structure v2"><code>++fend:ob</code></a>
197+<a class="tooltip" href='/docs/hoon/library/3f/#fice-ob' title="Feistel-like cipher"><code>++fice:ob</code></a>
198+<a class="tooltip" href='/docs/hoon/library/2c/#fil' title="Fill bloqstream"><code>++fil</code></a>
199+<a class="tooltip" href='/docs/hoon/library/2b/#find' title="First index in list"><code>++find</code></a>
200+<a class="tooltip" href='/docs/hoon/library/4c/#fit-re' title="Fit on one line test"><code>++fit:re</code></a>
201+<a class="tooltip" href='/docs/hoon/library/3b/#fli-fl' title="Flip sign"><code>++fli:fl</code></a>
202+<a class="tooltip" href='/docs/hoon/library/2b/#flop' title="Reverse list"><code>++flop</code></a>
203+<a class="tooltip" href='/docs/hoon/library/3b/#fma-ff' title="Fused multiply-add (IEEE float)"><code>++fma:ff</code></a>
204+<a class="tooltip" href='/docs/hoon/library/3b/#fma-fl' title="Fused multiply-add"><code>++fma:fl</code></a>
205+<a class="tooltip" href='/docs/hoon/library/3b/#fma-rd' title="Fused multiply-add (@rd)"><code>++fma:rd</code></a>
206+<a class="tooltip" href='/docs/hoon/library/3b/#fma-rh' title="Fused multiply-add (half-precision float)"><code>++fma:rh</code></a>
207+<a class="tooltip" href='/docs/hoon/library/3b/#fma-rs' title="Fused multiply-add (single-precision float)"><code>++fma:rs</code></a>
208+<a class="tooltip" href='/docs/hoon/library/3b/#fma-rq' title="Fused multiply-add (quad-precision float)"><code>++fma:rq</code></a>
209+<a class="tooltip" href='/docs/hoon/library/2e/#fnv' title="FNV scrambler"><code>++fnv</code></a>
210+<a class="tooltip" href='/docs/hoon/library/3a/#fo' title="Modulo prime"><code>++fo</code></a>
211+<a class="tooltip" href='/docs/hoon/library/4o/#foot' title="Cases of arms by variance model"><code>++foot</code></a>
212+<a class="tooltip" href='/docs/hoon/library/3b/#fos-rh' title="@rs to @rh"><code>++fos:rh</code></a>
213+<a class="tooltip" href='/docs/hoon/library/3a/#fra-fo' title="Divide (modular base)"><code>++fra:fo</code></a>
214+<a class="tooltip" href='/docs/hoon/library/3a/#fra-si' title="Divide (signed integer)"><code>++fra:si</code></a>
215+<a class="tooltip" href='/docs/hoon/library/4f/#full' title="Parse to end"><code>++full</code></a>
216+<a class="tooltip" href='/docs/hoon/library/4f/#funk' title="Add to tape"><code>++funk</code></a>
217+
218+### g
219+
220+<a class="tooltip" href='/docs/hoon/library/4i/#gah' title="New line or ''"><code>++gah</code></a>
221+<a class="tooltip" href='/docs/hoon/library/4h/#gal' title="Parse < (gal)"><code>++gal</code></a>
222+<a class="tooltip" href='/docs/hoon/library/4i/#gap' title="Plural whitespace"><code>++gap</code></a>
223+<a class="tooltip" href='/docs/hoon/library/4i/#gaq' title="End of line"><code>++gaq</code></a>
224+<a class="tooltip" href='/docs/hoon/library/4h/#gar' title="Parse > (gar)"><code>++gar</code></a>
225+<a class="tooltip" href='/docs/hoon/library/2i/#gas-by' title="Concatenate (map)"><code>+-gas:by</code></a>
226+<a class="tooltip" href='/docs/hoon/library/2h/#gas-in' title="Concatenate (set)"><code>+-gas:in</code></a>
227+<a class="tooltip" href='/docs/hoon/library/2k/#gas-to' title="Push list into queue"><code>+-gas:to</code></a>
228+<a class="tooltip" href='/docs/hoon/library/1c/#gate' title="Function"><code>++gate</code></a>
229+<a class="tooltip" href='/docs/hoon/library/4i/#gaw' title="Classic whitespace"><code>++gaw</code></a>
230+<a class="tooltip" href='/docs/hoon/library/4i/#gay' title="Optional gap"><code>++gay</code></a>
231+<a class="tooltip" href='/docs/hoon/library/2i/#get-by' title="Grab unit value"><code>+-get:by</code></a>
232+<a class="tooltip" href='/docs/hoon/library/2j/#get-ja' title="Grab value by key"><code>+-get:ja</code></a>
233+<a class="tooltip" href='/docs/hoon/library/2j/#get-ju' title="Retrieve set"><code>+-get:ju</code></a>
234+<a class="tooltip" href='/docs/hoon/library/2k/#get-to' title="Head-tail pair"><code>+-get:to</code></a>
235+<a class="tooltip" href='/docs/hoon/library/4e/#glue' title="Skip delimiter"><code>++glue</code></a>
236+<a class="tooltip" href='/docs/hoon/library/4i/#gon' title="Parse long numbers"><code>++gon</code></a>
237+<a class="tooltip" href='/docs/hoon/library/2f/#gor' title="Hash order"><code>++gor</code></a>
238+<a class="tooltip" href='/docs/hoon/library/2i/#got-by' title="Assert for value (map)"><code>+-got:by</code></a>
239+<a class="tooltip" href='/docs/hoon/library/3b/#grd-ff' title="Decimal float to @r"><code>++grd:ff</code></a>
240+<a class="tooltip" href='/docs/hoon/library/3b/#grd-fl' title="Decimal to float"><code>++grd:fl</code></a>
241+<a class="tooltip" href='/docs/hoon/library/3b/#grd-rd' title="Decimal float to @rd"><code>++grd:rd</code></a>
242+<a class="tooltip" href='/docs/hoon/library/3b/#grd-rh' title="Decimal float to @rh"><code>++grd:rh</code></a>
243+<a class="tooltip" href='/docs/hoon/library/3b/#grd-rs' title="Decimal float to @rs"><code>++grd:rs</code></a>
244+<a class="tooltip" href='/docs/hoon/library/3b/#grd-rq' title="Decimal float to @rq"><code>++grd:rq</code></a>
245+<a class="tooltip" href='/docs/hoon/library/1a/#gte' title="Greater than / equal"><code>++gte</code></a>
246+<a class="tooltip" href='/docs/hoon/library/3b/#gte-ff' title="Greater than / equal (IEEE float)"><code>++gte:ff</code></a>
247+<a class="tooltip" href='/docs/hoon/library/3b/#gte-fl' title="Greater than / equal (producing flag)"><code>++gte:fl</code></a>
248+<a class="tooltip" href='/docs/hoon/library/3b/#gte-rd' title="Greater than / equal (double-precision float)"><code>++gte:rd</code></a>
249+<a class="tooltip" href='/docs/hoon/library/3b/#gte-rh' title="Greater than / equal (half-precision float)"><code>++gte:rh</code></a>
250+<a class="tooltip" href='/docs/hoon/library/3b/#gte-rs' title="Greater than / equal (single-precision float)"><code>++gte:rs</code></a>
251+<a class="tooltip" href='/docs/hoon/library/3b/#gte-rq' title="Greater than / equal (quad-precision float)"><code>++gte:rq</code></a>
252+<a class="tooltip" href='/docs/hoon/library/1a/#gth' title="Greater than"><code>++gth</code></a>
253+<a class="tooltip" href='/docs/hoon/library/3b/#gth-ff' title="Greater than (IEEE float)"><code>++gth:ff</code></a>
254+<a class="tooltip" href='/docs/hoon/library/3b/#gth-fl' title="Greater than (producing flag)"><code>++gth:fl</code></a>
255+<a class="tooltip" href='/docs/hoon/library/3b/#gth-rd' title="Greater than (double-precision float)"><code>++gth:rd</code></a>
256+<a class="tooltip" href='/docs/hoon/library/3b/#gth-rh' title="Greater than (half-precision float)"><code>++gth:rh</code></a>
257+<a class="tooltip" href='/docs/hoon/library/3b/#gth-rs' title="Greater than (single-precision float)"><code>++gth:rs</code></a>
258+<a class="tooltip" href='/docs/hoon/library/3b/#gth-rq' title="Greater than (quad-precision float)"><code>++gth:rq</code></a>
259+<a class="tooltip" href='/docs/hoon/library/4i/#gul' title="Axis syntax < or >"><code>++gul</code></a>
260+<a class="tooltip" href='/docs/hoon/library/2b/#gulf' title="List from range"><code>++gulf</code></a>
261+
262+### h
263+
264+<a class="tooltip" href='/docs/hoon/library/3g/#hair' title="Parsing line and column"><code>++hair</code></a>
265+<a class="tooltip" href='/docs/hoon/library/2n/#hard' title="Force remold"><code>++hard</code></a>
266+<a class="tooltip" href='/docs/hoon/library/2i/#has-by' title="Key existence check (map)"><code>+-has:by</code></a>
267+<a class="tooltip" href='/docs/hoon/library/2h/#has-in' title="Key existence check (set)"><code>+-has:in</code></a>
268+<a class="tooltip" href='/docs/hoon/library/2j/#has-ju' title="Check contents (jug)"><code>+-has:ju</code></a>
269+<a class="tooltip" href='/docs/hoon/library/4h/#hax' title="Parse # (hax)"><code>++hax</code></a>
270+<a class="tooltip" href='/docs/hoon/library/2n/#head' title="Get head of cell"><code>++head</code></a>
271+<a class="tooltip" href='/docs/hoon/library/4f/#here' title="Place-based apply"><code>++here</code></a>
272+<a class="tooltip" href='/docs/hoon/library/4h/#hep' title="Parse - (hep)"><code>++hep</code></a>
273+<a class="tooltip" href='/docs/hoon/library/4i/#hex' title="Hexadecimal to atom"><code>++hex</code></a>
274+<a class="tooltip" href='/docs/hoon/library/4j/#hex-ag' title="Parse hexadecimal number"><code>++hex:ag</code></a>
275+<a class="tooltip" href='/docs/hoon/library/4j/#hif-ab' title="Parse phonetic pair"><code>++hif:ab</code></a>
276+<a class="tooltip" href='/docs/hoon/library/4i/#hig' title="Parse single uppercase letter"><code>++hig</code></a>
277+<a class="tooltip" href='/docs/hoon/library/4i/#hit' title="Parse single hexadecimal digit"><code>++hit</code></a>
278+<a class="tooltip" href='/docs/hoon/library/2b/#homo' title="Homogenize list"><code>++homo</code></a>
279+<a class="tooltip" href='/docs/hoon/library/2f/#hor' title="Horizontal hash order"><code>++hor</code></a>
280+<a class="tooltip" href='/docs/hoon/library/3c/#hor-yo' title="Seconds in hour"><code>++hor:yo</code></a>
281+<a class="tooltip" href='/docs/hoon/library/4j/#huf-ab' title="Parse two phonetic pairs"><code>++huf:ab</code></a>
282+<a class="tooltip" href='/docs/hoon/library/4j/#hyf-ab' title="Parse 8 phonetic bytes"><code>++hyf:ab</code></a>
283+
284+### i
285+
286+<a class="tooltip" href='/docs/hoon/library/3b/#ibl-fl' title="Integer binary logarithm"><code>++ibl:fl</code></a>
287+<a class="tooltip" href='/docs/hoon/library/4f/#ifix' title="Infix"><code>++ifix</code></a>
288+<a class="tooltip" href='/docs/hoon/library/4a/#ind-po' title="Parse suffix"><code>++ind:po</code></a>
289+<a class="tooltip" href='/docs/hoon/library/4a/#ins-po' title="Parse prefix"><code>++ins:po</code></a>
290+<a class="tooltip" href='/docs/hoon/library/2i/#int-by' title="Intersection (map)"><code>+-int:by</code></a>
291+<a class="tooltip" href='/docs/hoon/library/2h/#int-in' title="Intersection (set)"><code>+-int:in</code></a>
292+<a class="tooltip" href='/docs/hoon/library/2c/#inv-fe' title="Inverse order of modular field"><code>++inv:fe</code></a>
293+<a class="tooltip" href='/docs/hoon/library/3b/#inv-fl' title="Inverse"><code>++inv:fl</code></a>
294+<a class="tooltip" href='/docs/hoon/library/3a/#inv-fo' title="Inverse (signed modulus)"><code>++inv:fo</code></a>
295+<a class="tooltip" href='/docs/hoon/library/4i/#iny' title="Indentation block"><code>++iny</code></a>
296+
297+### j
298+
299+<a class="tooltip" href='/docs/hoon/library/2j/#ja' title="Jar engine"><code>++ja</code></a>
300+<a class="tooltip" href='/docs/hoon/library/2p/#jam' title="Pack noun to atom"><code>++jam</code></a>
301+<a class="tooltip" href='/docs/hoon/library/2o/#jar' title="Mold generator (jar)"><code>++jar</code></a>
302+<a class="tooltip" href='/docs/hoon/library/3c/#jes-yo' title="Maximum 64-bit timestamp"><code>++jes:yo</code></a>
303+<a class="tooltip" href='/docs/hoon/library/4f/#jest' title="Match a cord"><code>++jest</code></a>
304+<a class="tooltip" href='/docs/hoon/library/2b/#join' title="Add separator between list elements"><code>++join</code></a>
305+<a class="tooltip" href='/docs/hoon/library/2j/#ju' title="Jug operations"><code>++ju</code></a>
306+<a class="tooltip" href='/docs/hoon/library/2o/#jug' title="Mold generator (jug)"><code>++jug</code></a>
307+<a class="tooltip" href='/docs/hoon/library/4f/#just' title="Match a single character"><code>++just</code></a>
308+
309+### k
310+
311+<a class="tooltip" href='/docs/hoon/library/4h/#kel' title="Parse { (kel)"><code>++kel</code></a>
312+<a class="tooltip" href='/docs/hoon/library/4h/#ker' title="Parse } (ker)"><code>++ker</code></a>
313+<a class="tooltip" href='/docs/hoon/library/4h/#ket' title="Parse ^ (ket)"><code>++ket</code></a>
314+<a class="tooltip" href='/docs/hoon/library/4f/#knee' title="Recursive parsers"><code>++knee</code></a>
315+<a class="tooltip" href='/docs/hoon/library/2q/#knot' title="Atom type of ASCII characters"><code>++knot</code></a>
316+
317+### l
318+
319+<a class="tooltip" href='/docs/hoon/library/4d/#last' title="Further trace"><code>++last</code></a>
320+<a class="tooltip" href='/docs/hoon/library/2m/#le-nl' title="Construct list from null-terminated noun"><code>++le:nl</code></a>
321+<a class="tooltip" href='/docs/hoon/library/2b/#lent' title="List length"><code>++lent</code></a>
322+<a class="tooltip" href='/docs/hoon/library/2b/#levy' title="Logical AND on list"><code>++levy</code></a>
323+<a class="tooltip" href='/docs/hoon/library/3b/#lfe-fl' title="Maximum"><code>++lfe:fl</code></a>
324+<a class="tooltip" href='/docs/hoon/library/3b/#lfn-fl' title="Largest normal float"><code>++lfn:fl</code></a>
325+<a class="tooltip" href='/docs/hoon/library/2b/#lien' title="Logical OR on list"><code>++lien</code></a>
326+<a class="tooltip" href='/docs/hoon/library/2a/#lift' title="Curried bind"><code>++lift</code></a>
327+<a class="tooltip" href='/docs/hoon/library/3g/#like' title="Generic edge"><code>++like</code></a>
328+<a class="tooltip" href='/docs/hoon/library/4o/#limb' title="Reference into subject by name/axis"><code>++limb</code></a>
329+<a class="tooltip" href='/docs/hoon/library/2b/#limo' title="Construct list from null-terminated tuple"><code>++limo</code></a>
330+<a class="tooltip" href='/docs/hoon/library/4o/#line' title="(Undocumented)"><code>++line</code></a>
331+<a class="tooltip" href='/docs/hoon/library/4j/#lip-ag' title="Parse IPv4 address"><code>++lip:ag</code></a>
332+<a class="tooltip" href='/docs/hoon/library/1c/#list' title="Mold constructor (list)"><code>++list</code></a>
333+<a class="tooltip" href='/docs/hoon/library/1c/#lone' title="Mold generator (face on mold)"><code>++lone</code></a>
334+<a class="tooltip" href='/docs/hoon/library/2f/#lor' title="Leg order"><code>++lor</code></a>
335+<a class="tooltip" href='/docs/hoon/library/4i/#low' title="Parse lowercase letter"><code>++low</code></a>
336+<a class="tooltip" href='/docs/hoon/library/2c/#lsh' title="Left-shift"><code>++lsh</code></a>
337+<a class="tooltip" href='/docs/hoon/library/1a/#lte' title="Less than / equal (atom)"><code>++lte</code></a>
338+<a class="tooltip" href='/docs/hoon/library/3b/#lte-ff' title="Less than / equal (IEEE float)"><code>++lte:ff</code></a>
339+<a class="tooltip" href='/docs/hoon/library/3b/#lte-fl' title="Less than / equal (producing flag)"><code>++lte:fl</code></a>
340+<a class="tooltip" href='/docs/hoon/library/3b/#lte-rd' title="Less than / equal (double-precision float)"><code>++lte:rd</code></a>
341+<a class="tooltip" href='/docs/hoon/library/3b/#lte-rh' title="Less than / equal (half-precision float)"><code>++lte:rh</code></a>
342+<a class="tooltip" href='/docs/hoon/library/3b/#lte-rs' title="Less than / equal (single-precision float)"><code>++lte:rs</code></a>
343+<a class="tooltip" href='/docs/hoon/library/3b/#lte-rq' title="Less than / equal (quad-precision float)"><code>++lte:rq</code></a>
344+<a class="tooltip" href='/docs/hoon/library/1a/#lth' title="Less than (atom)"><code>++lth</code></a>
345+<a class="tooltip" href='/docs/hoon/library/3b/#lth-ff' title="Less than (IEEE float)"><code>++lth:ff</code></a>
346+<a class="tooltip" href='/docs/hoon/library/3b/#lth-fl' title="Less than (signed and unsigned integer cell)"><code>++lth:fl</code></a>
347+<a class="tooltip" href='/docs/hoon/library/3b/#lth-rd' title="Less than (double-precision float)"><code>++lth:rd</code></a>
348+<a class="tooltip" href='/docs/hoon/library/3b/#lth-rh' title="Less than (half-precision float)"><code>++lth:rh</code></a>
349+<a class="tooltip" href='/docs/hoon/library/3b/#lth-rs' title="Less than (single-precision float)"><code>++lth:rs</code></a>
350+<a class="tooltip" href='/docs/hoon/library/3b/#lth-rq' title="Less than (quad-precision float)"><code>++lth:rq</code></a>
351+<a class="tooltip" href='/docs/hoon/library/3b/#lug-fl' title="Central rounding mechanism"><code>++lug:fl</code></a>
352+<a class="tooltip" href='/docs/hoon/library/4h/#lus' title="Parse + (lus)"><code>++lus</code></a>
353+<a class="tooltip" href='/docs/hoon/library/4d/#lust' title="Detect new line"><code>++lust</code></a>
354+<a class="tooltip" href='/docs/hoon/library/4e/#less' title="Parse unless"><code>++less</code></a>
355+<a class="tooltip" href='/docs/hoon/library/2m/#ly' title="List from raw noun"><code>++ly</code></a>
356+
357+### m
358+
359+<a class="tooltip" href='/docs/hoon/library/3b/#ma-rd' title="Initialize ff (rd core)"><code>++ma:rd</code></a>
360+<a class="tooltip" href='/docs/hoon/library/3b/#ma-rh' title="Initialize ff (rh core)"><code>++ma:rh</code></a>
361+<a class="tooltip" href='/docs/hoon/library/3b/#ma-rs' title="Initialize ff (rs core)"><code>++ma:rs</code></a>
362+<a class="tooltip" href='/docs/hoon/library/3b/#ma-rq' title="Initialize ff (rq core)"><code>++ma:rq</code></a>
363+<a class="tooltip" href='/docs/hoon/library/4n/#mack' title="Nock subject to unit"><code>++mack</code></a>
364+<a class="tooltip" href='/docs/hoon/library/2l/#malt' title="Map from list"><code>++malt</code></a>
365+<a class="tooltip" href='/docs/hoon/library/2o/#map' title="Mold generator (map)"><code>++map</code></a>
366+<a class="tooltip" href='/docs/hoon/library/2i/#mar-by' title="Assert and add (map)"><code>+-mar:by</code></a>
367+<a class="tooltip" href='/docs/hoon/library/1b/#mas' title="Address within head/tail"><code>++mas</code></a>
368+<a class="tooltip" href='/docs/hoon/library/4f/#mask' title="Match character"><code>++mask</code></a>
369+<a class="tooltip" href='/docs/hoon/library/2p/#mat' title="Length-encode"><code>++mat</code></a>
370+<a class="tooltip" href='/docs/hoon/library/2a/#mate' title="Choose"><code>++mate</code></a>
371+<a class="tooltip" href='/docs/hoon/library/1a/#max' title="Maximum"><code>++max</code></a>
372+<a class="tooltip" href='/docs/hoon/library/3b/#me-ff' title="Minimum exponent of ff"><code>++me:ff</code></a>
373+<a class="tooltip" href='/docs/hoon/library/2n/#mean' title="Crash and printf"><code>++mean</code></a>
374+<a class="tooltip" href='/docs/hoon/library/4i/#mes' title="Parse hexabyte"><code>++mes</code></a>
375+<a class="tooltip" href='/docs/hoon/library/4b/#mesc' title="Escape special characters"><code>++mesc</code></a>
376+<a class="tooltip" href='/docs/hoon/library/2c/#met' title="Measure"><code>++met</code></a>
377+<a class="tooltip" href='/docs/hoon/library/4o/#metl' title="(Undocumented)"><code>++metl</code></a>
378+<a class="tooltip" href='/docs/hoon/library/1a/#min' title="Minimum (atom)"><code>++min</code></a>
379+<a class="tooltip" href='/docs/hoon/library/4n/#mink' title="Mock (virtual Nock) interpreter"><code>++mink</code></a>
380+<a class="tooltip" href='/docs/hoon/library/3c/#mit-yo' title="Seconds in minute"><code>++mit:yo</code></a>
381+<a class="tooltip" href='/docs/hoon/library/2d/#mix' title="Binary XOR (atom)"><code>++mix</code></a>
382+<a class="tooltip" href='/docs/hoon/library/4n/#mock' title="Compute formula on subject with hint"><code>++mock</code></a>
383+<a class="tooltip" href='/docs/hoon/library/1a/#mod' title="Modulus (atom)"><code>++mod</code></a>
384+<a class="tooltip" href='/docs/hoon/library/3c/#moh-yo' title="Days in month"><code>++moh:yo</code></a>
385+<a class="tooltip" href='/docs/hoon/library/2l/#molt' title="Map from pair list"><code>++molt</code></a>
386+<a class="tooltip" href='/docs/hoon/library/4n/#mong' title="Slam gate with sample"><code>++mong</code></a>
387+<a class="tooltip" href='/docs/hoon/library/4n/#mook' title="Intelligently render crash annotation"><code>++mook</code></a>
388+<a class="tooltip" href='/docs/hoon/library/4f/#more' title="Parse list with delimiter"><code>++more</code></a>
389+<a class="tooltip" href='/docs/hoon/library/4f/#most' title="Parse list of at least one match"><code>++most</code></a>
390+<a class="tooltip" href='/docs/hoon/library/3c/#moy-yo' title="Days in months of leap-year"><code>++moy:yo</code></a>
391+<a class="tooltip" href='/docs/hoon/library/4j/#mu' title="Core used to scramble 16-bit atoms"><code>++mu</code></a>
392+<a class="tooltip" href='/docs/hoon/library/2e/#mug' title="FNV-1a scrambler"><code>++mug</code></a>
393+<a class="tooltip" href='/docs/hoon/library/2e/#muk' title="Standard MurmurHash3"><code>++muk</code></a>
394+<a class="tooltip" href='/docs/hoon/library/1a/#mul' title="Multiply (atom)"><code>++mul</code></a>
395+<a class="tooltip" href='/docs/hoon/library/3b/#mul-ff' title="Multiply (IEEE float)"><code>++mul:ff</code></a>
396+<a class="tooltip" href='/docs/hoon/library/3b/#mul-fl' title="Multiply (signed and unsigned integer cell)"><code>++mul:fl</code></a>
397+<a class="tooltip" href='/docs/hoon/library/3b/#mul-rd' title="Multiply (double-precision float)"><code>++mul:rd</code></a>
398+<a class="tooltip" href='/docs/hoon/library/3b/#mul-rh' title="Multiply (quad-precision float)"><code>++mul:rh</code></a>
399+<a class="tooltip" href='/docs/hoon/library/3b/#mul-rs' title="Multiply (single-precision float)"><code>++mul:rs</code></a>
400+<a class="tooltip" href='/docs/hoon/library/3b/#mul-rq' title="Multiply (quad-precision float)"><code>++mul:rq</code></a>
401+<a class="tooltip" href='/docs/hoon/library/4n/#mule' title="Typed virtual"><code>++mule</code></a>
402+<a class="tooltip" href='/docs/hoon/library/4n/#mute' title="Untyped virtual"><code>++mute</code></a>
403+<a class="tooltip" href='/docs/hoon/library/2e/#mum' title="31-bit MurmurHash3 scrambler"><code>++mum</code></a>
404+<a class="tooltip" href='/docs/hoon/library/2b/#murn' title="Maybe transform"><code>++murn</code></a>
405+<a class="tooltip" href='/docs/hoon/library/2m/#my' title="Map from raw noun"><code>++my</code></a>
406+<a class="tooltip" href='/docs/hoon/library/2m/#my-nl' title="Construct map from null-terminated noun"><code>++my:nl</code></a>
407+
408+### n
409+
410+<a class="tooltip" href='/docs/hoon/library/3g/#nail' title="Location, remainder of parsed text"><code>++nail</code></a>
411+<a class="tooltip" href='/docs/hoon/library/2k/#nap-to' title="Remove head of queue"><code>+-nap:to</code></a>
412+<a class="tooltip" href='/docs/hoon/library/4j/#ne' title="Digit rendering engine"><code>++ne</code></a>
413+<a class="tooltip" href='/docs/hoon/library/3b/#ned-fl' title="Require float"><code>++ned:fl</code></a>
414+<a class="tooltip" href='/docs/hoon/library/2a/#need' title="Unwrap unit"><code>++need</code></a>
415+<a class="tooltip" href='/docs/hoon/library/2c/#net-fe' title="Flip endianness"><code>++net:fe</code></a>
416+<a class="tooltip" href='/docs/hoon/library/3a/#new-si' title="Atom to @s"><code>++new:si</code></a>
417+<a class="tooltip" href='/docs/hoon/library/4f/#next' title="Consume character"><code>++next</code></a>
418+<a class="tooltip" href='/docs/hoon/library/2k/#nip-to' title="Remove root of queue"><code>+-nip:to</code></a>
419+<a class="tooltip" href='/docs/hoon/library/4i/#nix' title="Parse letters and -"><code>++nix</code></a>
420+<a class="tooltip" href='/docs/hoon/library/2m/#nl' title="Noun to container operations"><code>++nl</code></a>
421+<a class="tooltip" href='/docs/hoon/library/4o/#nock' title="Virtual machine (see Nock)"><code>++nock</code></a>
422+<a class="tooltip" href='/docs/hoon/library/2d/#not' title="Binary NOT (atom)"><code>++not</code></a>
423+<a class="tooltip" href='/docs/hoon/library/4o/#noun' title="(Undocumented)"><code>++noun</code></a>
424+<a class="tooltip" href='/docs/hoon/library/4l/#nuck-so' title="Top-level coin parser"><code>++nuck:so</code></a>
425+<a class="tooltip" href='/docs/hoon/library/4i/#nud' title="Parse numeric character"><code>++nud</code></a>
426+<a class="tooltip" href='/docs/hoon/library/4o/#null' title="(Undocumented)"><code>++null</code></a>
427+<a class="tooltip" href='/docs/hoon/library/4l/#nusk-so' title="Parse coin literal with escapes"><code>++nusk:so</code></a>
428+
429+### o
430+
431+<a class="tooltip" href='/docs/hoon/library/3f/#ob' title="Reversible scrambling v2"><code>++ob</code></a>
432+<a class="tooltip" href='/docs/hoon/library/3d/#og' title="Container arm for SHA-256 powered RNG"><code>++og</code></a>
433+<a class="tooltip" href='/docs/hoon/library/3a/#old-si' title="Sign and absolute value"><code>++old:si</code></a>
434+<a class="tooltip" href='/docs/hoon/library/2b/#oust' title="Remove from list"><code>++oust</code></a>
435+<a class="tooltip" href='/docs/hoon/library/2c/#out-fe' title="Maximum integer value"><code>++out:fe</code></a>
436+
437+### p
438+
439+<a class="tooltip" href='/docs/hoon/library/3b/#pa-ff' title="Initialize fl from ff core"><code>++pa:ff</code></a>
440+<a class="tooltip" href='/docs/hoon/library/1c/#pair' title="Mold of pair of types"><code>++pair</code></a>
441+<a class="tooltip" href='/docs/hoon/library/4h/#pam' title="Parse & (pam)"><code>++pam</code></a>
442+<a class="tooltip" href='/docs/hoon/library/4h/#pat' title="Parse @ (pat)"><code>++pat</code></a>
443+<a class="tooltip" href='/docs/hoon/library/3g/#path' title="Filesystem path"><code>++path</code></a>
444+<a class="tooltip" href='/docs/hoon/library/1b/#peg' title="Address within address"><code>++peg</code></a>
445+<a class="tooltip" href='/docs/hoon/library/4h/#pel' title="Parse ( (pel)"><code>++pel</code></a>
446+<a class="tooltip" href='/docs/hoon/library/4h/#per' title="Parse ) (per)"><code>++per</code></a>
447+<a class="tooltip" href='/docs/hoon/library/4l/#perd-so' title="Parses dime/tiple without standard prefixes"><code>++perd:so</code></a>
448+<a class="tooltip" href='/docs/hoon/library/4j/#pev-ab' title="Parse <=5 in base 32"><code>++pev:ab</code></a>
449+<a class="tooltip" href='/docs/hoon/library/4j/#pew-ab' title="Parse <= 5 in base 64"><code>++pew:ab</code></a>
450+<a class="tooltip" href='/docs/hoon/library/4e/#pfix' title="Discard first rule"><code>++pfix</code></a>
451+<a class="tooltip" href='/docs/hoon/library/3g/#pint' title="Parsing range"><code>++pint</code></a>
452+<a class="tooltip" href='/docs/hoon/library/4j/#piv-ab' title="Parse 5 digits in base 32"><code>++piv:ab</code></a>
453+<a class="tooltip" href='/docs/hoon/library/4j/#piw-ab' title="Parse 5 digits in base 64"><code>++piw:ab</code></a>
454+<a class="tooltip" href='/docs/hoon/library/4e/#plug' title="Parse to tuple"><code>++plug</code></a>
455+<a class="tooltip" href='/docs/hoon/library/4f/#plus' title="List of at least one match"><code>++plus</code></a>
456+<a class="tooltip" href='/docs/hoon/library/4a/#po' title="Phonetic base"><code>++po</code></a>
457+<a class="tooltip" href='/docs/hoon/library/1c/#pole' title="Mold generator of faceless list"><code>++pole</code></a>
458+<a class="tooltip" href='/docs/hoon/library/4o/#port' title="(Undocumented)"><code>++port</code></a>
459+<a class="tooltip" href='/docs/hoon/library/4e/#pose' title="Parse options"><code>++pose</code></a>
460+<a class="tooltip" href='/docs/hoon/library/2g/#pow' title="Computes a to the power of b"><code>++pow</code></a>
461+<a class="tooltip" href='/docs/hoon/library/3b/#prc-fl' title="Force precision of 2 or greater (floating point)"><code>++prc:fl</code></a>
462+<a class="tooltip" href='/docs/hoon/library/4i/#prn' title="Parse any printable character"><code>++prn</code></a>
463+<a class="tooltip" href='/docs/hoon/library/3a/#pro-fo' title="Multiplies b and c modulo a"><code>++pro:fo</code></a>
464+<a class="tooltip" href='/docs/hoon/library/3a/#pro-si' title="Multiply to signed integer"><code>++pro:si</code></a>
465+<a class="tooltip" href='/docs/hoon/library/2i/#put-by' title="Add key-value pair (map)"><code>+-put:by</code></a>
466+<a class="tooltip" href='/docs/hoon/library/2h/#put-in' title="Put b in a (set)"><code>+-put:in</code></a>
467+<a class="tooltip" href='/docs/hoon/library/2j/#put-ju' title="Add key-set pair (jar)"><code>+-put:ju</code></a>
468+<a class="tooltip" href='/docs/hoon/library/2k/#put-to' title="Insert into queue"><code>+-put:to</code></a>
469+
470+### q
471+
472+<a class="tooltip" href='/docs/hoon/library/3c/#qad-yo' title="Seconds in 4 years"><code>++qad:yo</code></a>
473+<a class="tooltip" href='/docs/hoon/library/4j/#qeb-ab' title="Parse <=4 binary digits"><code>++qeb:ab</code></a>
474+<a class="tooltip" href='/docs/hoon/library/2o/#qeu' title="Mold generator (queue)"><code>++qeu</code></a>
475+<a class="tooltip" href='/docs/hoon/library/4j/#qex-ab' title="Parse <=4 hexadecimal digits"><code>++qex:ab</code></a>
476+<a class="tooltip" href='/docs/hoon/library/4j/#qib-ab' title="Parse 4 binary digits"><code>++qib:ab</code></a>
477+<a class="tooltip" href='/docs/hoon/library/4i/#qit' title="Parse character to cord atom"><code>++qit</code></a>
478+<a class="tooltip" href='/docs/hoon/library/4j/#qix-ab' title="Parse 4 hexadecimal digits"><code>++qix:ab</code></a>
479+<a class="tooltip" href='/docs/hoon/library/1c/#quip' title="Mold generator (tuple of list and type)"><code>++quip</code></a>
480+<a class="tooltip" href='/docs/hoon/library/4i/#qut' title="Parse cord"><code>++qut</code></a>
481+
482+### r
483+
484+<a class="tooltip" href='/docs/hoon/library/4b/#r-at' title="(Undocumented)"><code>++r:at</code></a>
485+<a class="tooltip" href='/docs/hoon/library/3d/#rad-og' title="Random in range"><code>++rad:og</code></a>
486+<a class="tooltip" href='/docs/hoon/library/3d/#rads-og' title="Random continuation"><code>++rads:og</code></a>
487+<a class="tooltip" href='/docs/hoon/library/3f/#raku-ob' title="Key list"><code>++raku:ob</code></a>
488+<a class="tooltip" href='/docs/hoon/library/4c/#ram-re' title="Flatten tank to tape"><code>++ram:re</code></a>
489+<a class="tooltip" href='/docs/hoon/library/2c/#rap' title="Assemble non-zero"><code>++rap</code></a>
490+<a class="tooltip" href='/docs/hoon/library/4g/#rash' title="Parse or crash"><code>++rash</code></a>
491+<a class="tooltip" href='/docs/hoon/library/3b/#rau-fl' title="Various roundings (floating point)"><code>++rau:fl</code></a>
492+<a class="tooltip" href='/docs/hoon/library/3d/#raw-og' title="Random bits"><code>++raw:og</code></a>
493+<a class="tooltip" href='/docs/hoon/library/3d/#raws-og' title="Random bits continuation"><code>++raws:og</code></a>
494+<a class="tooltip" href='/docs/hoon/library/4c/#re' title="Pretty-printing engine (tank)"><code>++re</code></a>
495+<a class="tooltip" href='/docs/hoon/library/4k/#rear-co' title="Prepend and render atom as tape"><code>++rear:co</code></a>
496+<a class="tooltip" href='/docs/hoon/library/2b/#reap' title="Replicate (list)"><code>++reap</code></a>
497+<a class="tooltip" href='/docs/hoon/library/2b/#reel' title="Right fold (list)"><code>++reel</code></a>
498+<a class="tooltip" href='/docs/hoon/library/3a/#rem-si' title="Remainder (signed integer)"><code>++rem:si</code></a>
499+<a class="tooltip" href='/docs/hoon/library/4k/#rend-co' title="Render coin lot as tape"><code>++rend:co</code></a>
500+<a class="tooltip" href='/docs/hoon/library/4k/#rent-co' title="Render coin lot as span"><code>++rent:co</code></a>
501+<a class="tooltip" href='/docs/hoon/library/2c/#rep' title="Assemble single"><code>++rep</code></a>
502+<a class="tooltip" href='/docs/hoon/library/2i/#rep-by' title="Replace by product (map)"><code>+-rep:by</code></a>
503+<a class="tooltip" href='/docs/hoon/library/2h/#rep-in' title="Accumulate elements (set)"><code>+-rep:in</code></a>
504+<a class="tooltip" href='/docs/hoon/library/4b/#rf-at' title="(Undocumented)"><code>++rf:at</code></a>
505+<a class="tooltip" href='/docs/hoon/library/2i/#rib-by' title="Replace values with accumulator (map)"><code>+-rib:by</code></a>
506+<a class="tooltip" href='/docs/hoon/library/4c/#rig-re' title="Wrap tape in / (tank)"><code>++rig:re</code></a>
507+<a class="tooltip" href='/docs/hoon/library/2c/#rip' title="Disassemble"><code>++rip</code></a>
508+<a class="tooltip" href='/docs/hoon/library/4b/#rn-at' title="(Undocumented)"><code>++rn:at</code></a>
509+<a class="tooltip" href='/docs/hoon/library/2c/#rol-fe' title="Roll left"><code>++rol:fe</code></a>
510+<a class="tooltip" href='/docs/hoon/library/2b/#roll' title="Left fold (list)"><code>++roll</code></a>
511+<code>++rood</code>
512+<a class="tooltip" href='/docs/hoon/library/2c/#ror-fe' title="Roll right"><code>++ror:fe</code></a>
513+<a class="tooltip" href='/docs/hoon/library/3b/#rou-fl' title="Round to nearest float with 113-bit significand"><code>++rou:fl</code></a>
514+<a class="tooltip" href='/docs/hoon/library/4l/#royl-so' title="Parse dime float"><code>++royl:so</code></a>
515+<a class="tooltip" href='/docs/hoon/library/4l/#royl-cell-so' title="(Undocumented)"><code>++royl-cell:so</code></a>
516+<a class="tooltip" href='/docs/hoon/library/2c/#rsh' title="Right-shift"><code>++rsh</code></a>
517+<a class="tooltip" href='/docs/hoon/library/4b/#rt-at' title="(Undocumented)"><code>++rt:at</code></a>
518+<a class="tooltip" href='/docs/hoon/library/4b/#rta-at' title="(Undocumented)"><code>++rta:at</code></a>
519+<a class="tooltip" href='/docs/hoon/library/4b/#rtam-at' title="(Undocumented)"><code>++rtam:at</code></a>
520+<a class="tooltip" href='/docs/hoon/library/2p/#rub' title="Length-decode"><code>++rub</code></a>
521+<a class="tooltip" href='/docs/hoon/library/4b/#rub-at' title="(Undocumented)"><code>++rub:at</code></a>
522+<a class="tooltip" href='/docs/hoon/library/4b/#rud-at' title="(Undocumented)"><code>++rud:at</code></a>
523+<a class="tooltip" href='/docs/hoon/library/3g/#rule' title="Parsing rule (match this with _)"><code>++rule</code></a>
524+<a class="tooltip" href='/docs/hoon/library/4b/#rum-at' title="(Undocumented)"><code>++rum:at</code></a>
525+<a class="tooltip" href='/docs/hoon/library/2i/#run-by' title="Transform values (map)"><code>+-run:by</code></a>
526+<a class="tooltip" href='/docs/hoon/library/2h/#run-in' title="Apply gate to set"><code>+-run:in</code></a>
527+<a class="tooltip" href='/docs/hoon/library/3f/#rund-ob' title="Reverse single Feistel-like"><code>++rund:ob</code></a>
528+<a class="tooltip" href='/docs/hoon/library/4b/#runt' title="Prepend n times"><code>++runt</code></a>
529+<a class="tooltip" href='/docs/hoon/library/4b/#rup-at' title="(Undocumented)"><code>++rup:at</code></a>
530+<a class="tooltip" href='/docs/hoon/library/4g/#rush' title="Parse or null"><code>++rush</code></a>
531+<a class="tooltip" href='/docs/hoon/library/4g/#rust' title="Parse tape or null"><code>++rust</code></a>
532+<a class="tooltip" href='/docs/hoon/library/2i/#rut-by' title="Transform nodes (map)"><code>+-rut:by</code></a>
533+<a class="tooltip" href='/docs/hoon/library/4b/#ruv-at' title="(Undocumented)"><code>++ruv:at</code></a>
534+<a class="tooltip" href='/docs/hoon/library/4b/#rux-at' title="(Undocumented)"><code>++rux:at</code></a>
535+<a class="tooltip" href='/docs/hoon/library/3f/#rynd-ob' title="Reverse Feistel-like cipher"><code>++rynd:ob</code></a>
536+
537+### s
538+
539+<a class="tooltip" href='/docs/hoon/library/2n/#same' title="Identity (produces same value)"><code>++same</code></a>
540+<a class="tooltip" href='/docs/hoon/library/3b/#san-ff' title="Signed integer to @r"><code>++san:ff</code></a>
541+<a class="tooltip" href='/docs/hoon/library/3b/#san-fl' title="Signed integer to float"><code>++san:fl</code></a>
542+<a class="tooltip" href='/docs/hoon/library/3b/#san-rd' title="Unsigned integer to @rd"><code>++san:rd</code></a>
543+<a class="tooltip" href='/docs/hoon/library/3b/#san-rh' title="Signed integer to @rh"><code>++san:rh</code></a>
544+<a class="tooltip" href='/docs/hoon/library/3b/#san-rs' title="Signed integer to @rs"><code>++san:rs</code></a>
545+<a class="tooltip" href='/docs/hoon/library/3b/#san-rq' title="Signed integer to @rq"><code>++san:rq</code></a>
546+<a class="tooltip" href='/docs/hoon/library/4b/#sand' title="Soft-cast by odor"><code>++sand</code></a>
547+<a class="tooltip" href='/docs/hoon/library/4b/#sane' title="Check odor validity"><code>++sane</code></a>
548+<a class="tooltip" href='/docs/hoon/library/3b/#sb-ff' title="Sign bit"><code>++sb:ff</code></a>
549+<a class="tooltip" href='/docs/hoon/library/2b/#scag' title="Prefix (produce front of list)"><code>++scag</code></a>
550+<a class="tooltip" href='/docs/hoon/library/4g/#scan' title="Parse tape or crash"><code>++scan</code></a>
551+<a class="tooltip" href='/docs/hoon/library/4m/#scot' title="Render dime as cord"><code>++scot</code></a>
552+<a class="tooltip" href='/docs/hoon/library/4m/#scow' title="Render dime as tape"><code>++scow</code></a>
553+<a class="tooltip" href='/docs/hoon/library/3b/#sea-ff' title="Convert from IEEE float to fn"><code>++sea:ff</code></a>
554+<a class="tooltip" href='/docs/hoon/library/3b/#sea-rd' title="Convert from double-precision binary float to fn"><code>++sea:rd</code></a>
555+<a class="tooltip" href='/docs/hoon/library/3b/#sea-rh' title="Convert from half-precision float to fn"><code>++sea:rh</code></a>
556+<a class="tooltip" href='/docs/hoon/library/3b/#sea-rs' title="Convert from single-precision float to fn"><code>++sea:rs</code></a>
557+<a class="tooltip" href='/docs/hoon/library/3b/#sea-rq' title="Convert from quad-precision float to fn"><code>++sea:rq</code></a>
558+<a class="tooltip" href='/docs/hoon/library/4f/#sear' title="Conditional ++cook"><code>++sear</code></a>
559+<a class="tooltip" href='/docs/hoon/library/4j/#seb-ab' title="Parse 1"><code>++seb:ab</code></a>
560+<a class="tooltip" href='/docs/hoon/library/4j/#sed-ab' title="Parse non-zero decimal digit"><code>++sed:ab</code></a>
561+<a class="tooltip" href='/docs/hoon/library/4h/#sel' title="Parse [ (sel)"><code>++sel</code></a>
562+<a class="tooltip" href='/docs/hoon/library/4h/#sem' title="Parse ; (sem)"><code>++sem</code></a>
563+<a class="tooltip" href='/docs/hoon/library/4h/#ser' title="Parse ] (ser)"><code>++ser</code></a>
564+<a class="tooltip" href='/docs/hoon/library/2o/#set' title="Mold generator (set)"><code>++set</code></a>
565+<a class="tooltip" href='/docs/hoon/library/4j/#sev-ab' title="Parse non-zero base 32 digit"><code>++sev:ab</code></a>
566+<a class="tooltip" href='/docs/hoon/library/4j/#sew-ab' title="Parse non-zero base 64 digit"><code>++sew:ab</code></a>
567+<a class="tooltip" href='/docs/hoon/library/4j/#sex-ab' title="Parse nonzero hexadecimal digit"><code>++sex:ab</code></a>
568+<a class="tooltip" href='/docs/hoon/library/4e/#sfix' title="Discard second rule"><code>++sfix</code></a>
569+<a class="tooltip" href='/docs/hoon/library/3d/#shad' title="Double SHA-256"><code>++shad</code></a>
570+<a class="tooltip" href='/docs/hoon/library/3d/#shaf' title="Half SHA-256"><code>++shaf</code></a>
571+<a class="tooltip" href='/docs/hoon/library/3d/#shal' title="SHA-512 with length"><code>++shal</code></a>
572+<a class="tooltip" href='/docs/hoon/library/3d/#sham' title="128-bit noun hash"><code>++sham</code></a>
573+<a class="tooltip" href='/docs/hoon/library/3d/#shan' title="SHA-1"><code>++shan</code></a>
574+<a class="tooltip" href='/docs/hoon/library/3d/#shas' title="Salted hash"><code>++shas</code></a>
575+<a class="tooltip" href='/docs/hoon/library/3d/#shaw' title="Hash to nbits"><code>++shaw</code></a>
576+<a class="tooltip" href='/docs/hoon/library/3d/#shax' title="SHA-256"><code>++shax</code></a>
577+<a class="tooltip" href='/docs/hoon/library/3d/#shay' title="SHA-256 with length"><code>++shay</code></a>
578+<a class="tooltip" href='/docs/hoon/library/3d/#shaz' title="SHA-512"><code>++shaz</code></a>
579+<a class="tooltip" href='/docs/hoon/library/4c/#shep' title="(Undocumented)"><code>++shep</code></a>
580+<a class="tooltip" href='/docs/hoon/library/3b/#shf-fl' title="Shift power"><code>++shf:fl</code></a>
581+<a class="tooltip" href='/docs/hoon/library/4f/#shim' title="Match character within range"><code>++shim</code></a>
582+<a class="tooltip" href='/docs/hoon/library/4c/#shop' title="(Undocumented)"><code>++shop</code></a>
583+<a class="tooltip" href='/docs/hoon/library/4c/#show' title="(Undocumented)"><code>++show</code></a>
584+<a class="tooltip" href='/docs/hoon/library/3a/#si' title="Signed integer"><code>++si</code></a>
585+<a class="tooltip" href='/docs/hoon/library/2m/#si-nl' title="Construct set from null-terminated noun"><code>++si:nl</code></a>
586+<a class="tooltip" href='/docs/hoon/library/4j/#sib-ab' title="Parse binary digit"><code>++sib:ab</code></a>
587+<a class="tooltip" href='/docs/hoon/library/4j/#sid-ab' title="Parse decimal digit"><code>++sid:ab</code></a>
588+<a class="tooltip" href='/docs/hoon/library/4h/#sig' title="Parse ~ (sig)"><code>++sig</code></a>
589+<a class="tooltip" href='/docs/hoon/library/3b/#sig-ff' title="Produce sign of IEEE float"><code>++sig:ff</code></a>
590+<a class="tooltip" href='/docs/hoon/library/3b/#sig-rd' title="Produce sign of @rd"><code>++sig:rd</code></a>
591+<a class="tooltip" href='/docs/hoon/library/3b/#sig-rh' title="Produce sign of half-precision float"><code>++sig:rh</code></a>
592+<a class="tooltip" href='/docs/hoon/library/3b/#sig-rs' title="Produce sign of @rs"><code>++sig:rs</code></a>
593+<a class="tooltip" href='/docs/hoon/library/3b/#sig-rq' title="Produce sign of quad-precision float"><code>++sig:rq</code></a>
594+<a class="tooltip" href='/docs/hoon/library/2l/#silt' title="Produce set from list"><code>++silt</code></a>
595+<a class="tooltip" href='/docs/hoon/library/4e/#simu' title="First and second"><code>++simu</code></a>
596+<a class="tooltip" href='/docs/hoon/library/2c/#sit-fe' title="Enforce modulo"><code>++sit:fe</code></a>
597+<a class="tooltip" href='/docs/hoon/library/3a/#sit-fo' title="Produce remainder of b modulo a"><code>++sit:fo</code></a>
598+<a class="tooltip" href='/docs/hoon/library/4j/#siv-ab' title="Parse a base 32 digit"><code>++siv:ab</code></a>
599+<a class="tooltip" href='/docs/hoon/library/4j/#siw-ab' title="Parse a base 64 digit"><code>++siw:ab</code></a>
600+<a class="tooltip" href='/docs/hoon/library/4j/#six-ab' title="Parse a hexadecimal digit"><code>++six:ab</code></a>
601+<a class="tooltip" href='/docs/hoon/library/2b/#skid' title="Separate list into two lists from slammed elments"><code>++skid</code></a>
602+<a class="tooltip" href='/docs/hoon/library/2b/#skim' title="Produce list of elements from boolean gate"><code>++skim</code></a>
603+<a class="tooltip" href='/docs/hoon/library/2b/#skip' title="Produce list of elements failing boolean gate"><code>++skip</code></a>
604+<a class="tooltip" href='/docs/hoon/library/2b/#slag' title="Produce all elements from index in list"><code>++slag</code></a>
605+<a class="tooltip" href='/docs/hoon/library/4m/#slat' title="Curried slaw"><code>++slat</code></a>
606+<a class="tooltip" href='/docs/hoon/library/4m/#slav' title="Demand: parse cord with input odor"><code>++slav</code></a>
607+<a class="tooltip" href='/docs/hoon/library/4m/#slaw' title="Parse cord to input odor"><code>++slaw</code></a>
608+<a class="tooltip" href='/docs/hoon/library/4m/#slay' title="Parse cord to coin"><code>++slay</code></a>
609+<a class="tooltip" href='/docs/hoon/library/2n/#slog' title="Deify printf"><code>++slog</code></a>
610+<a class="tooltip" href='/docs/hoon/library/4f/#slug' title="Use gate to parse delimited list"><code>++slug</code></a>
611+<a class="tooltip" href='/docs/hoon/library/4m/#smyt' title="Render path as tank"><code>++smyt</code></a>
612+<a class="tooltip" href='/docs/hoon/library/2b/#snag' title="Produce element at specific index (list)"><code>++snag</code></a>
613+<a class="tooltip" href='/docs/hoon/library/2m/#snag-nl' title="Produce element from list at specific null-terminated noun"><code>++snag:nl</code></a>
614+<a class="tooltip" href='/docs/hoon/library/2b/#snoc' title="Append noun to list"><code>++snoc</code></a>
615+<a class="tooltip" href='/docs/hoon/library/4l/#so' title="Coin parser engine"><code>++so</code></a>
616+<a class="tooltip" href='/docs/hoon/library/2n/#soft' title="Maybe remold"><code>++soft</code></a>
617+<a class="tooltip" href='/docs/hoon/library/2a/#some' title="Wrap value in unit"><code>++some</code></a>
618+<a class="tooltip" href='/docs/hoon/library/4h/#soq' title="Parse ' (soq)"><code>++soq</code></a>
619+<a class="tooltip" href='/docs/hoon/library/2b/#sort' title="Quicksort (list)"><code>++sort</code></a>
620+<a class="tooltip" href='/docs/hoon/library/4j/#sov-ab' title="Parse base 32 letter"><code>++sov:ab</code></a>
621+<a class="tooltip" href='/docs/hoon/library/4j/#sow-ab' title="Parse base 64 letter/symbol"><code>++sow:ab</code></a>
622+<a class="tooltip" href='/docs/hoon/library/4j/#sox-ab' title="Parse hexadecimal letter"><code>++sox:ab</code></a>
623+<a class="tooltip" href='/docs/hoon/library/4i/#soz' title="Parse triple single-quote"><code>++soz</code></a>
624+<a class="tooltip" href='/docs/hoon/library/4o/#span' title="ASCII atom"><code>++span</code></a>
625+<a class="tooltip" href='/docs/hoon/library/4m/#spat' title="Render path as cord"><code>++spat</code></a>
626+<a class="tooltip" href='/docs/hoon/library/3b/#spd-fl' title="Produce smallest denormalized float"><code>++spd:fl</code></a>
627+<a class="tooltip" href='/docs/hoon/library/2b/#spin' title="Gate to list (with state)"><code>++spin</code></a>
628+<a class="tooltip" href='/docs/hoon/library/3b/#spn-fl' title="Produce smallest normal float"><code>++spn:fl</code></a>
629+<a class="tooltip" href='/docs/hoon/library/3g/#spot' title="Stack trace line"><code>++spot</code></a>
630+<a class="tooltip" href='/docs/hoon/library/4m/#spud' title="Render path as tape"><code>++spud</code></a>
631+<a class="tooltip" href='/docs/hoon/library/2b/#spun' title="Gate to list (with state)"><code>++spun</code></a>
632+<a class="tooltip" href='/docs/hoon/library/2g/#sqt' title="Compute square root with remainder"><code>++sqt</code></a>
633+<a class="tooltip" href='/docs/hoon/library/3b/#sqt-ff' title="Produce square root of IEEE float"><code>++sqt:ff</code></a>
634+<a class="tooltip" href='/docs/hoon/library/3b/#sqt-fl' title="Produce square root from signed and unsigned integer cell"><code>++sqt:fl</code></a>
635+<a class="tooltip" href='/docs/hoon/library/3b/#sqt-rd' title="Produce square root of double-precision float"><code>++sqt:rd</code></a>
636+<a class="tooltip" href='/docs/hoon/library/3b/#sqt-rh' title="Produce square root of half-precision float"><code>++sqt:rh</code></a>
637+<a class="tooltip" href='/docs/hoon/library/3b/#sqt-rs' title="Produce square root of single-precision float"><code>++sqt:rs</code></a>
638+<a class="tooltip" href='/docs/hoon/library/3b/#sqt-rq' title="Produce square root of quad-precision float"><code>++sqt:rq</code></a>
639+<a class="tooltip" href='/docs/hoon/library/4m/#stab' title="Parse cord to path"><code>++stab</code></a>
640+<a class="tooltip" href='/docs/hoon/library/4f/#stag' title="Add label"><code>++stag</code></a>
641+<a class="tooltip" href='/docs/hoon/library/4f/#star' title="Produce list of matches"><code>++star</code></a>
642+<a class="tooltip" href='/docs/hoon/library/4f/#stet' title="Add faces to range-parser pairs in list"><code>++stet</code></a>
643+<a class="tooltip" href='/docs/hoon/library/4f/#stew' title="Switch by first"><code>++stew</code></a>
644+<a class="tooltip" href='/docs/hoon/library/4f/#stir' title="Parse repeatedly"><code>++stir</code></a>
645+<a class="tooltip" href='/docs/hoon/library/4f/#stun' title="Parse several times"><code>++stun</code></a>
646+<a class="tooltip" href='/docs/hoon/library/1a/#sub' title="Subtract"><code>++sub</code></a>
647+<a class="tooltip" href='/docs/hoon/library/3b/#sub-ff' title="Subtract from IEEE float"><code>++sub:ff</code></a>
648+<a class="tooltip" href='/docs/hoon/library/3b/#sub-fl' title="Subtract from signed and unsigned integer cells"><code>++sub:fl</code></a>
649+<a class="tooltip" href='/docs/hoon/library/3b/#sub-rd' title="Subtract from double-precision float"><code>++sub:rd</code></a>
650+<a class="tooltip" href='/docs/hoon/library/3b/#sub-rh' title="Subtract from half-precision float"><code>++sub:rh</code></a>
651+<a class="tooltip" href='/docs/hoon/library/3b/#sub-rs' title="Subtract from single-precision float"><code>++sub:rs</code></a>
652+<a class="tooltip" href='/docs/hoon/library/3b/#sub-rq' title="Subtract from quad-precision float"><code>++sub:rq</code></a>
653+<a class="tooltip" href='/docs/hoon/library/2c/#sum-fe' title="Sum two numbers in modular field"><code>++sum:fe</code></a>
654+<a class="tooltip" href='/docs/hoon/library/3a/#sum-fo' title="Modular sum"><code>++sum:fo</code></a>
655+<a class="tooltip" href='/docs/hoon/library/3a/#sum-si' title="Addition (signed integer)"><code>++sum:si</code></a>
656+<a class="tooltip" href='/docs/hoon/library/3b/#sun-ff' title="Unsigned integer to IEEE float"><code>++sun:ff</code></a>
657+<a class="tooltip" href='/docs/hoon/library/3b/#sun-fl' title="Unsigned integer to float"><code>++sun:fl</code></a>
658+<a class="tooltip" href='/docs/hoon/library/3b/#sun-rd' title="Unsigned integer to double-precision float"><code>++sun:rd</code></a>
659+<a class="tooltip" href='/docs/hoon/library/3b/#sun-rh' title="Unsigned integer to half-precision float"><code>++sun:rh</code></a>
660+<a class="tooltip" href='/docs/hoon/library/3b/#sun-rs' title="Unsigned integer to single-precision float"><code>++sun:rs</code></a>
661+<a class="tooltip" href='/docs/hoon/library/3b/#sun-rq' title="Unsigned integer to quad-precision float"><code>++sun:rq</code></a>
662+<a class="tooltip" href='/docs/hoon/library/3a/#sun-si' title="@u to @s"><code>++sun:si</code></a>
663+<a class="tooltip" href='/docs/hoon/library/2b/#swag' title="Infix (list)"><code>++swag</code></a>
664+<a class="tooltip" href='/docs/hoon/library/2c/#swp' title="Reverse block order"><code>++swp</code></a>
665+<a class="tooltip" href='/docs/hoon/library/3b/#swr-fl' title="Switch rounding mode of floating point"><code>++swr:fl</code></a>
666+<a class="tooltip" href='/docs/hoon/library/2m/#sy' title="Produce set from null-terminated noun"><code>++sy</code></a>
667+<a class="tooltip" href='/docs/hoon/library/4i/#sym' title="Term"><code>++sym</code></a>
668+<a class="tooltip" href='/docs/hoon/library/3b/#syn-fl' title="Get sign"><code>++syn:fl</code></a>
669+<a class="tooltip" href='/docs/hoon/library/3a/#syn-si' title="Sign test"><code>++syn:si</code></a>
670+
671+### t
672+
673+<a class="tooltip" href='/docs/hoon/library/2n/#tail' title="Get tail of cell"><code>++tail</code></a>
674+<a class="tooltip" href='/docs/hoon/library/2k/#tap-to' title="Queue to list"><code>+-tap:to</code></a>
675+<a class="tooltip" href='/docs/hoon/library/4h/#tar' title="Parse * (tar)"><code>++tar</code></a>
676+<a class="tooltip" href='/docs/hoon/library/2q/#tang' title="Generic print structure"><code>++tang</code></a>
677+<a class="tooltip" href='/docs/hoon/library/2q/#tank' title="Pretty-printing structure"><code>++tank</code></a>
678+<a class="tooltip" href='/docs/hoon/library/2i/#tap-by' title="Listify pairs"><code>+-tap:by</code></a>
679+<a class="tooltip" href='/docs/hoon/library/2h/#tap-in' title="Flatten set into list"><code>+-tap:in</code></a>
680+<a class="tooltip" href='/docs/hoon/library/2q/#tape' title="List of characters"><code>++tape</code></a>
681+<a class="tooltip" href='/docs/hoon/library/2q/#tarp' title="Parsed time"><code>++tarp</code></a>
682+<a class="tooltip" href='/docs/hoon/library/4l/#tash-so' title="Parse signed dime"><code>++tash:so</code></a>
683+<a class="tooltip" href='/docs/hoon/library/4h/#tec' title="Parse ` (tec)"><code>++tec</code></a>
684+<a class="tooltip" href='/docs/hoon/library/4j/#ted-ab' title="Parse decimal number with <= 3 digits"><code>++ted:ab</code></a>
685+<a class="tooltip" href='/docs/hoon/library/4b/#teff' title="UTF-8 length"><code>++teff</code></a>
686+<a class="tooltip" href='/docs/hoon/library/3f/#teil-ob' title="Reverse Feistel-like cipher"><code>++teil:ob</code></a>
687+<a class="tooltip" href='/docs/hoon/library/2q/#term' title="Hoon constant"><code>++term</code></a>
688+<a class="tooltip" href='/docs/hoon/library/2n/#test' title="Test for equality"><code>++test</code></a>
689+<a class="tooltip" href='/docs/hoon/library/4j/#tid-ab' title="Parse 3 decimal digits"><code>++tid:ab</code></a>
690+<a class="tooltip" href='/docs/hoon/library/4o/#tiki' title="(Undocumented)"><code>++tiki</code></a>
691+<a class="tooltip" href='/docs/hoon/library/4j/#til-ab' title="Parse 3 lowercase letters"><code>++til:ab</code></a>
692+<a class="tooltip" href='/docs/hoon/library/4j/#tip-ab' title="Leading phonetic byte"><code>++tip:ab</code></a>
693+<a class="tooltip" href='/docs/hoon/library/4j/#tiq-ab' title="Trailing phonetic syllable"><code>++tiq:ab</code></a>
694+<a class="tooltip" href='/docs/hoon/library/4h/#tis' title="Parse = (tis)"><code>++tis</code></a>
695+<a class="tooltip" href='/docs/hoon/library/2k/#to' title="Queue operations"><code>++to</code></a>
696+<a class="tooltip" href='/docs/hoon/library/4a/#tod-po' title="Fetch suffix"><code>++tod:po</code></a>
697+<a class="tooltip" href='/docs/hoon/library/4o/#toga' title="Tree of faces"><code>++toga</code></a>
698+<a class="tooltip" href='/docs/hoon/library/3b/#toi-ff' title="Round IEEE float to nearest signed integer"><code>++toi:ff</code></a>
699+<a class="tooltip" href='/docs/hoon/library/3b/#toi-fl' title="Round float to nearest signed integer"><code>++toi:fl</code></a>
700+<a class="tooltip" href='/docs/hoon/library/3b/#toi-rd' title="Round double-precision float to nearest signed integer"><code>++toi:rd</code></a>
701+<a class="tooltip" href='/docs/hoon/library/3b/#toi-rh' title="Round half-precision float to nearest signed integer"><code>++toi:rh</code></a>
702+<a class="tooltip" href='/docs/hoon/library/3b/#toi-rs' title="Round single-precision float to nearest signed integer"><code>++toi:rs</code></a>
703+<a class="tooltip" href='/docs/hoon/library/3b/#toi-rq' title="Round quad-precision float to nearest signed integer"><code>++toi:rq</code></a>
704+<a class="tooltip" href='/docs/hoon/library/3b/#toj-fl' title="Round unsigned and signed integer to float"><code>++toj:fl</code></a>
705+<a class="tooltip" href='/docs/hoon/library/3g/#tone' title="Nock result (error report)"><code>++tone</code></a>
706+<a class="tooltip" href='/docs/hoon/library/3g/#toon' title="Nock result (stack trace)"><code>++toon</code></a>
707+<a class="tooltip" href='/docs/hoon/library/2k/#top-to' title="Produce head of queue"><code>+-top:to</code></a>
708+<a class="tooltip" href='/docs/hoon/library/4a/#tos-po' title="Fetch prefix"><code>++tos:po</code></a>
709+<a class="tooltip" href='/docs/hoon/library/3b/#tos-rh' title="Convert half-precision float to single-precision float"><code>++tos:rh</code></a>
710+<a class="tooltip" href='/docs/hoon/library/1c/#trap' title="Core with one arm $"><code>++trap</code></a>
711+<a class="tooltip" href='/docs/hoon/library/1c/#tree' title="Mold generator (tree)"><code>++tree</code></a>
712+<a class="tooltip" href='/docs/hoon/library/1c/#trel' title="Mold generator (tuple of three types)"><code>++trel</code></a>
713+<a class="tooltip" href='/docs/hoon/library/4b/#trim' title="Tape split"><code>++trim</code></a>
714+<a class="tooltip" href='/docs/hoon/library/4b/#trip' title="Cord to tape"><code>++trip</code></a>
715+<a class="tooltip" href='/docs/hoon/library/4b/#tuba' title="UTF-8 to UTF-32 tape"><code>++tuba</code></a>
716+<a class="tooltip" href='/docs/hoon/library/4b/#tufa' title="UTF-32 to UTF-8 tape"><code>++tufa</code></a>
717+<a class="tooltip" href='/docs/hoon/library/4o/#tuna' title="XML template tree"><code>++tuna</code></a>
718+<a class="tooltip" href='/docs/hoon/library/4b/#tuft' title="UTF-32 to UTF-8 text"><code>++tuft</code></a>
719+<a class="tooltip" href='/docs/hoon/library/4b/#turf' title="UTF-8 to UTF-32 cord"><code>++turf</code></a>
720+<a class="tooltip" href='/docs/hoon/library/2b/#turn' title="Gate to list"><code>++turn</code></a>
721+<a class="tooltip" href='/docs/hoon/library/4o/#tusk' title="List of expressions"><code>++tusk</code></a>
722+<a class="tooltip" href='/docs/hoon/library/4l/#twid-so' title="Parse coins without ~ prefix"><code>++twid:so</code></a>
723+<a class="tooltip" href='/docs/hoon/library/4o/#tyke' title="List of 'maybe' hoons"><code>++tyke</code></a>
724+<a class="tooltip" href='/docs/hoon/library/4o/#typo' title="Pointer for ++type"><code>++typo</code></a>
725+<a class="tooltip" href='/docs/hoon/library/4o/#tyre' title="List, term hoon"><code>++tyre</code></a>
726+
727+### u
728+
729+<a class="tooltip" href='/docs/hoon/library/3f/#un' title="Reversible scrambling"><code>++un</code></a>
730+<a class="tooltip" href='/docs/hoon/library/2i/#uni-by' title="Union (map between keys of two lists)"><code>+-uni:by</code></a>
731+<a class="tooltip" href='/docs/hoon/library/3b/#uni-fl' title="Change representation to odd"><code>++uni:fl</code></a>
732+<a class="tooltip" href='/docs/hoon/library/2h/#uni-in' title="Union (sets)"><code>+-uni:in</code></a>
733+<a class="tooltip" href='/docs/hoon/library/1c/#unit' title="Mold generator (maybe)"><code>++unit</code></a>
734+<a class="tooltip" href='/docs/hoon/library/2i/#urn-by' title="Turn (with key) (map)"><code>+-urn:by</code></a>
735+<a class="tooltip" href='/docs/hoon/library/4j/#urs-ab' title="Parse span characters"><code>++urs:ab</code></a>
736+<a class="tooltip" href='/docs/hoon/library/4j/#urt-ab' title="Parse non-_ span"><code>++urt:ab</code></a>
737+
738+### v
739+
740+<a class="tooltip" href='/docs/hoon/library/4j/#v-ne' title="Render base 32"><code>++v:ne</code></a>
741+<code>++vang</code>
742+<a class="tooltip" href='/docs/hoon/library/4o/#vase' title="Typed data"><code>++vase</code></a>
743+<code>++vast</code>
744+<a class="tooltip" href='/docs/hoon/library/4i/#ven' title="Axis syntax parser"><code>++ven</code></a>
745+<a class="tooltip" href='/docs/hoon/library/4o/#vise' title="Convert during reboot"><code>++vise</code></a>
746+<a class="tooltip" href='/docs/hoon/library/4i/#vit' title="Parse base 64 digit"><code>++vit</code></a>
747+<a class="tooltip" href='/docs/hoon/library/4j/#viz-ag' title="Parse base 32 digit with dot separators"><code>++viz:ag</code></a>
748+<a class="tooltip" href='/docs/hoon/library/2f/#vor' title="Vertical order"><code>++vor</code></a>
749+<a class="tooltip" href='/docs/hoon/library/4j/#voy-ab' title="Parse bas, soq, or bix"><code>++voy:ab</code></a>
750+<a class="tooltip" href='/docs/hoon/library/4i/#vul' title="Comments to null"><code>++vul</code></a>
751+<a class="tooltip" href='/docs/hoon/library/4j/#vum-ag' title="Parse base 32 string"><code>++vum:ag</code></a>
752+
753+### w
754+
755+<a class="tooltip" href='/docs/hoon/library/4j/#w-ne' title="Render base 64 digit"><code>++w:ne</code></a>
756+<a class="tooltip" href='/docs/hoon/library/4b/#wack' title="Coin format encode"><code>++wack</code></a>
757+<a class="tooltip" href='/docs/hoon/library/2q/#wain' title="List of cords"><code>++wain</code></a>
758+<a class="tooltip" href='/docs/hoon/library/2q/#wall' title="List of list of characters"><code>++wall</code></a>
759+<a class="tooltip" href='/docs/hoon/library/2b/#weld' title="Concatenate two lists"><code>++weld</code></a>
760+<a class="tooltip" href='/docs/hoon/library/2m/#weld-nl' title="Concatenate null-terminated nouns"><code>++weld:nl</code></a>
761+<a class="tooltip" href='/docs/hoon/library/2b/#welp' title="Perfect concatenate (lists)"><code>++welp</code></a>
762+<a class="tooltip" href='/docs/hoon/library/4b/#wick' title="Coin format decode"><code>++wick</code></a>
763+<a class="tooltip" href='/docs/hoon/library/4c/#wig-re' title="++win - render tape"><code>++wig:re</code></a>
764+<a class="tooltip" href='/docs/hoon/library/4c/#win-re' title="Render at indent"><code>++win:re</code></a>
765+<a class="tooltip" href='/docs/hoon/library/4o/#wing' title="Address in subject"><code>++wing</code></a>
766+<a class="tooltip" href='/docs/hoon/library/4j/#wiz-ag' title="Parse base 64 number"><code>++wiz:ag</code></a>
767+<a class="tooltip" href='/docs/hoon/library/4b/#woad' title="Unescape cord"><code>++woad</code></a>
768+<a class="tooltip" href='/docs/hoon/library/4b/#wood' title="Escape cord"><code>++wood</code></a>
769+<a class="tooltip" href='/docs/hoon/library/3g/#wonk' title="Product from edge"><code>++wonk</code></a>
770+<a class="tooltip" href='/docs/hoon/library/3f/#wred-un' title="Restore structure"><code>++wred:un</code></a>
771+<a class="tooltip" href='/docs/hoon/library/3f/#wren-un' title="Conceal structure"><code>++wren:un</code></a>
772+<a class="tooltip" href='/docs/hoon/library/4h/#wut' title="Parse ? (wut)"><code>++wut</code></a>
773+<a class="tooltip" href='/docs/hoon/library/2i/#wyt-by' title="Produce depth of tree map"><code>+-wyt:by</code></a>
774+<a class="tooltip" href='/docs/hoon/library/2h/#wyt-in' title="Produce number of elements in set"><code>+-wyt:in</code></a>
775+
776+### x
777+
778+<a class="tooltip" href='/docs/hoon/library/4j/#x-ne' title="Render hexadecimal digit as atom of ASCII byte value"><code>++x:ne</code></a>
779+<a class="tooltip" href='/docs/hoon/library/2c/#xeb' title="Binary logarithm"><code>++xeb</code></a>
780+<a class="tooltip" href='/docs/hoon/library/3b/#xpd-fl' title="Expand signed and unsigned integer cell"><code>++xpd:fl</code></a>
781+
782+### y
783+
784+<a class="tooltip" href='/docs/hoon/library/3c/#yall' title="Time since beginning of time"><code>++yall</code></a>
785+<a class="tooltip" href='/docs/hoon/library/3c/#yawn' title="Days since beginning of time"><code>++yawn</code></a>
786+<a class="tooltip" href='/docs/hoon/library/3c/#year' title="Date to @d"><code>++year</code></a>
787+<a class="tooltip" href='/docs/hoon/library/3c/#yell' title="Tarp from atomic date"><code>++yell</code></a>
788+<a class="tooltip" href='/docs/hoon/library/3c/#yelp' title="Determine if leap-week"><code>++yelp</code></a>
789+<a class="tooltip" href='/docs/hoon/library/3c/#yer-yo' title="Seconds in year"><code>++yer:yo</code></a>
790+<a class="tooltip" href='/docs/hoon/library/3c/#yo' title="Time constants core"><code>++yo</code></a>
791+<a class="tooltip" href='/docs/hoon/library/3c/#yore' title="Date from atomic date"><code>++yore</code></a>
792+<a class="tooltip" href='/docs/hoon/library/3c/#yule' title="Daily time to time atom"><code>++yule</code></a>
793+
794+### z
795+
796+<a class="tooltip" href='/docs/hoon/library/3f/#zaft-un' title="Look up in 255 sub box"><code>++zaft:un</code></a>
797+<a class="tooltip" href='/docs/hoon/library/4j/#zag-mu' title="Add bottom into top"><code>++zag:mu</code></a>
798+<a class="tooltip" href='/docs/hoon/library/4h/#zap' title="Parse ! (zap)"><code>++zap</code></a>
799+<a class="tooltip" href='/docs/hoon/library/3f/#zart-un' title="Reverse look up in 255 sub box"><code>++zart:un</code></a>
800+<a class="tooltip" href='/docs/hoon/library/3b/#zer-fl' title="Produce zero as float"><code>++zer:fl</code></a>
801+<a class="tooltip" href='/docs/hoon/library/4j/#zig-mu' title="Subtract bottom from top"><code>++zig:mu</code></a>
802+<a class="tooltip" href='/docs/hoon/library/2b/#zing' title="Turn lists into single list by promoting elements from sublists"><code>++zing</code></a>
803+<a class="tooltip" href='/docs/hoon/library/4j/#zug-mu' title="Concatenate into atom"><code>++zug:mu</code></a>
804+<a class="tooltip" href='/docs/hoon/library/4l/#zust-so' title="Parse prefixed dimes from IP, loobean, or floating point"><code>++zust:so</code></a>
805+<a class="tooltip" href='/docs/hoon/library/3f/#zyft-un' title="Lookup byte in 256 sub box"><code>++zyft:un</code></a>
806+<a class="tooltip" href='/docs/hoon/library/3f/#zyrt-un' title="Reverse lookup byte in 256 sub box"><code>++zyrt:un</code></a>
807+
808+## By Section
809+
810+### 1a: basic arithmetic
811+
812+<a class="tooltip" href='/docs/hoon/library/1a/#add' title="Add"><code>++add</code></a>
813+<a class="tooltip" href='/docs/hoon/library/1a/#dec' title="Decrement"><code>++dec</code></a>
814+<a class="tooltip" href='/docs/hoon/library/1a/#div' title="Divide"><code>++div</code></a>
815+<a class="tooltip" href='/docs/hoon/library/1a/#dvr' title="Divide (with remainder)"><code>++dvr</code></a>
816+<a class="tooltip" href='/docs/hoon/library/1a/#gte' title="Greater than / equal"><code>++gte</code></a>
817+<a class="tooltip" href='/docs/hoon/library/1a/#gth' title="Greater than"><code>++gth</code></a>
818+<a class="tooltip" href='/docs/hoon/library/1a/#lte' title="Less than / equal (atom)"><code>++lte</code></a>
819+<a class="tooltip" href='/docs/hoon/library/1a/#lth' title="Less than (atom)"><code>++lth</code></a>
820+<a class="tooltip" href='/docs/hoon/library/1a/#max' title="Maximum"><code>++max</code></a>
821+<a class="tooltip" href='/docs/hoon/library/1a/#min' title="Minimum (atom)"><code>++min</code></a>
822+<a class="tooltip" href='/docs/hoon/library/1a/#mod' title="Modulus (atom)"><code>++mod</code></a>
823+<a class="tooltip" href='/docs/hoon/library/1a/#mul' title="Multiply (atom)"><code>++mul</code></a>
824+<a class="tooltip" href='/docs/hoon/library/1a/#sub' title="Subtract"><code>++sub</code></a>
825+
826+### 1b: tree addressing
827+
828+<a class="tooltip" href='/docs/hoon/library/1b/#cap' title="Tree head"><code>++cap</code></a>
829+<a class="tooltip" href='/docs/hoon/library/1b/#mas' title="Address within head/tail"><code>++mas</code></a>
830+<a class="tooltip" href='/docs/hoon/library/1b/#peg' title="Address within address"><code>++peg</code></a>
831+
832+### 1c: molds and mold builders
833+
834+<a class="tooltip" href='/docs/hoon/library/1c/#bloq' title="Blocksize"><code>++bloq</code></a>
835+<a class="tooltip" href='/docs/hoon/library/1c/#each' title="Mold of fork between two types"><code>++each</code></a>
836+<a class="tooltip" href='/docs/hoon/library/1c/#gate' title="Function"><code>++gate</code></a>
837+<a class="tooltip" href='/docs/hoon/library/1c/#list' title="Mold constructor (list)"><code>++list</code></a>
838+<a class="tooltip" href='/docs/hoon/library/1c/#lone' title="Mold generator (face on mold)"><code>++lone</code></a>
839+<a class="tooltip" href='/docs/hoon/library/1c/#pair' title="Mold of pair of types"><code>++pair</code></a>
840+<a class="tooltip" href='/docs/hoon/library/1c/#pole' title="Mold generator of faceless list"><code>++pole</code></a>
841+<a class="tooltip" href='/docs/hoon/library/1c/#quip' title="Mold generator (tuple of list and type)"><code>++quip</code></a>
842+<a class="tooltip" href='/docs/hoon/library/1c/#trap' title="Core with one arm $"><code>++trap</code></a>
843+<a class="tooltip" href='/docs/hoon/library/1c/#tree' title="Mold generator (tree)"><code>++tree</code></a>
844+<a class="tooltip" href='/docs/hoon/library/1c/#trel' title="Mold generator (tuple of three types)"><code>++trel</code></a>
845+<a class="tooltip" href='/docs/hoon/library/1c/#unit' title="Mold generator (maybe)"><code>++unit</code></a>
846+
847+### 2a: unit logic
848+
849+<a class="tooltip" href='/docs/hoon/library/2a/#biff' title="Unit as argument"><code>++biff</code></a>
850+<a class="tooltip" href='/docs/hoon/library/2a/#bind' title="Non-unit function to unit, producing unit"><code>++bind</code></a>
851+<a class="tooltip" href='/docs/hoon/library/2a/#bond' title="Replace null"><code>++bond</code></a>
852+<a class="tooltip" href='/docs/hoon/library/2a/#both' title="Group unit values into pair"><code>++both</code></a>
853+<a class="tooltip" href='/docs/hoon/library/2a/#clap' title="Apply function to two units"><code>++clap</code></a>
854+<a class="tooltip" href='/docs/hoon/library/2a/#drop' title="Unit to list"><code>++drop</code></a>
855+<a class="tooltip" href='/docs/hoon/library/2a/#fall' title="Give unit a default value"><code>++fall</code></a>
856+<a class="tooltip" href='/docs/hoon/library/2a/#lift' title="Curried bind"><code>++lift</code></a>
857+<a class="tooltip" href='/docs/hoon/library/2a/#mate' title="Choose"><code>++mate</code></a>
858+<a class="tooltip" href='/docs/hoon/library/2a/#need' title="Unwrap unit"><code>++need</code></a>
859+<a class="tooltip" href='/docs/hoon/library/2a/#some' title="Wrap value in unit"><code>++some</code></a>
860+
861+### 2b: list logic
862+
863+<a class="tooltip" href='/docs/hoon/library/2b/#fand' title="All indices in list"><code>++fand</code></a>
864+<a class="tooltip" href='/docs/hoon/library/2b/#find' title="First index in list"><code>++find</code></a>
865+<a class="tooltip" href='/docs/hoon/library/2b/#flop' title="Reverse list"><code>++flop</code></a>
866+<a class="tooltip" href='/docs/hoon/library/2b/#gulf' title="List from range"><code>++gulf</code></a>
867+<a class="tooltip" href='/docs/hoon/library/2b/#homo' title="Homogenize list"><code>++homo</code></a>
868+<a class="tooltip" href='/docs/hoon/library/2b/#join' title="Add separator between list elements"><code>++join</code></a>
869+<a class="tooltip" href='/docs/hoon/library/2b/#lent' title="List length"><code>++lent</code></a>
870+<a class="tooltip" href='/docs/hoon/library/2b/#levy' title="Logical AND on list"><code>++levy</code></a>
871+<a class="tooltip" href='/docs/hoon/library/2b/#lien' title="Logical OR on list"><code>++lien</code></a>
872+<a class="tooltip" href='/docs/hoon/library/2b/#limo' title="Construct list from null-terminated tuple"><code>++limo</code></a>
873+<a class="tooltip" href='/docs/hoon/library/2b/#murn' title="Maybe transform"><code>++murn</code></a>
874+<a class="tooltip" href='/docs/hoon/library/2b/#oust' title="Remove from list"><code>++oust</code></a>
875+<a class="tooltip" href='/docs/hoon/library/2b/#reap' title="Replicate (list)"><code>++reap</code></a>
876+<a class="tooltip" href='/docs/hoon/library/2b/#reel' title="Right fold (list)"><code>++reel</code></a>
877+<a class="tooltip" href='/docs/hoon/library/2b/#roll' title="Left fold (list)"><code>++roll</code></a>
878+<a class="tooltip" href='/docs/hoon/library/2b/#scag' title="Prefix (produce front of list)"><code>++scag</code></a>
879+<a class="tooltip" href='/docs/hoon/library/2b/#skid' title="Separate list into two lists from slammed elments"><code>++skid</code></a>
880+<a class="tooltip" href='/docs/hoon/library/2b/#skim' title="Produce list of elements from boolean gate"><code>++skim</code></a>
881+<a class="tooltip" href='/docs/hoon/library/2b/#skip' title="Produce list of elements failing boolean gate"><code>++skip</code></a>
882+<a class="tooltip" href='/docs/hoon/library/2b/#slag' title="Produce all elements from index in list"><code>++slag</code></a>
883+<a class="tooltip" href='/docs/hoon/library/2b/#snag' title="Produce element at specific index (list)"><code>++snag</code></a>
884+<a class="tooltip" href='/docs/hoon/library/2b/#snoc' title="Append noun to list"><code>++snoc</code></a>
885+<a class="tooltip" href='/docs/hoon/library/2b/#sort' title="Quicksort (list)"><code>++sort</code></a>
886+<a class="tooltip" href='/docs/hoon/library/2b/#spin' title="Gate to list (with state)"><code>++spin</code></a>
887+<a class="tooltip" href='/docs/hoon/library/2b/#spun' title="Gate to list (with state)"><code>++spun</code></a>
888+<a class="tooltip" href='/docs/hoon/library/2b/#swag' title="Infix (list)"><code>++swag</code></a>
889+<a class="tooltip" href='/docs/hoon/library/2b/#turn' title="Gate to list"><code>++turn</code></a>
890+<a class="tooltip" href='/docs/hoon/library/2b/#weld' title="Concatenate two lists"><code>++weld</code></a>
891+<a class="tooltip" href='/docs/hoon/library/2b/#welp' title="Perfect concatenate (lists)"><code>++welp</code></a>
892+<a class="tooltip" href='/docs/hoon/library/2b/#zing' title="Turn lists into single list by promoting elements from sublists"><code>++zing</code></a>
893+
894+### 2c: bit arithmetic
895+
896+<a class="tooltip" href='/docs/hoon/library/2c/#fe' title="Modulo bloq"><code>++fe</code></a>
897+<a class="tooltip" href='/docs/hoon/library/2c/#dif-fe' title="Difference between atoms (modular basis)"><code>++dif:fe</code></a>
898+<a class="tooltip" href='/docs/hoon/library/2c/#inv-fe' title="Inverse order of modular field"><code>++inv:fe</code></a>
899+<a class="tooltip" href='/docs/hoon/library/2c/#net-fe' title="Flip endianness"><code>++net:fe</code></a>
900+<a class="tooltip" href='/docs/hoon/library/2c/#out-fe' title="Maximum integer value"><code>++out:fe</code></a>
901+<a class="tooltip" href='/docs/hoon/library/2c/#rol-fe' title="Roll left"><code>++rol:fe</code></a>
902+<a class="tooltip" href='/docs/hoon/library/2c/#ror-fe' title="Roll right"><code>++ror:fe</code></a>
903+<a class="tooltip" href='/docs/hoon/library/2c/#sit-fe' title="Enforce modulo"><code>++sit:fe</code></a>
904+<a class="tooltip" href='/docs/hoon/library/2c/#sum-fe' title="Sum two numbers in modular field"><code>++sum:fe</code></a>
905+
906+<a class="tooltip" href='/docs/hoon/library/2c/#bex' title="Binary exponent"><code>++bex</code></a>
907+<a class="tooltip" href='/docs/hoon/library/2c/#can' title="Assemble"><code>++can</code></a>
908+<a class="tooltip" href='/docs/hoon/library/2c/#cat' title="Concatenate"><code>++cat</code></a>
909+<a class="tooltip" href='/docs/hoon/library/2c/#cut' title="Slice"><code>++cut</code></a>
910+<a class="tooltip" href='/docs/hoon/library/2c/#end' title="Tail"><code>++end</code></a>
911+<a class="tooltip" href='/docs/hoon/library/2c/#fil' title="Fill bloqstream"><code>++fil</code></a>
912+<a class="tooltip" href='/docs/hoon/library/2c/#lsh' title="Left-shift"><code>++lsh</code></a>
913+<a class="tooltip" href='/docs/hoon/library/2c/#met' title="Measure"><code>++met</code></a>
914+<a class="tooltip" href='/docs/hoon/library/2c/#rap' title="Assemble non-zero"><code>++rap</code></a>
915+<a class="tooltip" href='/docs/hoon/library/2c/#rep' title="Assemble single"><code>++rep</code></a>
916+<a class="tooltip" href='/docs/hoon/library/2c/#rip' title="Disassemble"><code>++rip</code></a>
917+<a class="tooltip" href='/docs/hoon/library/2c/#rsh' title="Right-shift"><code>++rsh</code></a>
918+<a class="tooltip" href='/docs/hoon/library/2c/#swp' title="Reverse block order"><code>++swp</code></a>
919+<a class="tooltip" href='/docs/hoon/library/2c/#xeb' title="Binary logarithm"><code>++xeb</code></a>
920+
921+### 2d: bit logic
922+
923+<a class="tooltip" href='/docs/hoon/library/2d/#con' title="Binary OR"><code>++con</code></a>
924+<a class="tooltip" href='/docs/hoon/library/2d/#dis' title="Binary AND (atoms)"><code>++dis</code></a>
925+<a class="tooltip" href='/docs/hoon/library/2d/#mix' title="Binary XOR (atom)"><code>++mix</code></a>
926+<a class="tooltip" href='/docs/hoon/library/2d/#not' title="Binary NOT (atom)"><code>++not</code></a>
927+
928+### 2e: insecure hashing
929+
930+<a class="tooltip" href='/docs/hoon/library/2e/#fnv' title="FNV scrambler"><code>++fnv</code></a>
931+<a class="tooltip" href='/docs/hoon/library/2e/#mug' title="FNV-1a scrambler"><code>++mug</code></a>
932+<a class="tooltip" href='/docs/hoon/library/2e/#muk' title="Standard MurmurHash3"><code>++muk</code></a>
933+<a class="tooltip" href='/docs/hoon/library/2e/#mum' title="31-bit MurmurHash3 scrambler"><code>++mum</code></a>
934+
935+### 2f: noun ordering
936+
937+<a class="tooltip" href='/docs/hoon/library/2f/#aor' title="Alphabetical order"><code>++aor</code></a>
938+<a class="tooltip" href='/docs/hoon/library/2f/#dor' title="Numeric order"><code>++dor</code></a>
939+<a class="tooltip" href='/docs/hoon/library/2f/#gor' title="Hash order"><code>++gor</code></a>
940+<a class="tooltip" href='/docs/hoon/library/2f/#hor' title="Horizontal hash order"><code>++hor</code></a>
941+<a class="tooltip" href='/docs/hoon/library/2f/#lor' title="Leg order"><code>++lor</code></a>
942+<a class="tooltip" href='/docs/hoon/library/2f/#vor' title="Vertical order"><code>++vor</code></a>
943+
944+### 2g: unsigned powers
945+
946+<a class="tooltip" href='/docs/hoon/library/2g/#pow' title="Computes a to the power of b"><code>++pow</code></a>
947+<a class="tooltip" href='/docs/hoon/library/2g/#sqt' title="Compute square root with remainder"><code>++sqt</code></a>
948+
949+### 2h: set logic
950+
951+<a class="tooltip" href='/docs/hoon/library/2h/#in'><code>++in</code></a>
952+<a class="tooltip" href='/docs/hoon/library/2h/#all-in' title="Logical AND (set and wet gate)"><code>+-all:in</code></a>
953+<a class="tooltip" href='/docs/hoon/library/2h/#any-in' title="Logical OR (set and gate)"><code>+-any:in</code></a>
954+<a class="tooltip" href='/docs/hoon/library/2h/#apt-in' title="Check correctness (set)"><code>+-apt:in</code></a>
955+<a class="tooltip" href='/docs/hoon/library/2h/#bif-in' title="Bifurcate set"><code>+-bif:in</code></a>
956+<a class="tooltip" href='/docs/hoon/library/2h/#del-in' title="Delete (set)"><code>+-del:in</code></a>
957+<a class="tooltip" href='/docs/hoon/library/2h/#dif-in' title='Difference (set)'><code>+-dif:in</code></a>
958+<a class="tooltip" href='/docs/hoon/library/2h/#dig-in' title="Address of a in set"><code>+-dig:in</code></a>
959+<a class="tooltip" href='/docs/hoon/library/2h/#gas-in' title="Concatenate (set)"><code>+-gas:in</code></a>
960+<a class="tooltip" href='/docs/hoon/library/2h/#has-in' title="Key existence check (set)"><code>+-has:in</code></a>
961+<a class="tooltip" href='/docs/hoon/library/2h/#int-in' title="Intersection (set)"><code>+-int:in</code></a>
962+<a class="tooltip" href='/docs/hoon/library/2h/#put-in' title="Put b in a (set)"><code>+-put:in</code></a>
963+<a class="tooltip" href='/docs/hoon/library/2h/#rep-in' title="Accumulate elements (set)"><code>+-rep:in</code></a>
964+<a class="tooltip" href='/docs/hoon/library/2h/#run-in' title="Apply gate to set"><code>+-run:in</code></a>
965+<a class="tooltip" href='/docs/hoon/library/2h/#tap-in' title="Flatten set into list"><code>+-tap:in</code></a>
966+<a class="tooltip" href='/docs/hoon/library/2h/#uni-in' title="Union (sets)"><code>+-uni:in</code></a>
967+<a class="tooltip" href='/docs/hoon/library/2h/#wyt-in' title="Produce number of elements in set"><code>+-wyt:in</code></a>
968+
969+### 2i: map logic
970+
971+<a class="tooltip" href='/docs/hoon/library/2i/#by' title="Map operations"><code>++by</code></a>
972+<a class="tooltip" href='/docs/hoon/library/2i/#all-by' title="Logical AND (map and wet gate)"><code>+-all:by</code></a>
973+<a class="tooltip" href='/docs/hoon/library/2i/#any-by' title="Logical OR (map and wet gate)"><code>+-any:by</code></a>
974+<a class="tooltip" href='/docs/hoon/library/2i/#apt-by' title="Check correctness (map)"><code>+-apt:by</code></a>
975+<a class="tooltip" href='/docs/hoon/library/2i/#bif-by' title="Bifurcate map"><code>+-bif:by</code></a>
976+<a class="tooltip" href='/docs/hoon/library/2i/#def-by' title="Difference (map)"><code>+-def:by</code></a>
977+<a class="tooltip" href='/docs/hoon/library/2i/#del-by' title="Delete (map)"><code>+-del:by</code></a>
978+<a class="tooltip" href='/docs/hoon/library/2i/#dep-by' title="Difference as patch (map)"><code>+-dep:by</code></a>
979+<a class="tooltip" href='/docs/hoon/library/2i/#dig-by' title="Address of key (map)"><code>+-dig:by</code></a>
980+<a class="tooltip" href='/docs/hoon/library/2i/#gas-by' title="Concatenate (map)"><code>+-gas:by</code></a>
981+<a class="tooltip" href='/docs/hoon/library/2i/#get-by' title="Grab unit value"><code>+-get:by</code></a>
982+<a class="tooltip" href='/docs/hoon/library/2i/#got-by' title="Assert for value (map)"><code>+-got:by</code></a>
983+<a class="tooltip" href='/docs/hoon/library/2i/#has-by' title="Key existence check (map)"><code>+-has:by</code></a>
984+<a class="tooltip" href='/docs/hoon/library/2i/#int-by' title="Intersection (map)"><code>+-int:by</code></a>
985+<a class="tooltip" href='/docs/hoon/library/2i/#mar-by' title="Assert and add (map)"><code>+-mar:by</code></a>
986+<a class="tooltip" href='/docs/hoon/library/2i/#put-by' title="Add key-value pair (map)"><code>+-put:by</code></a>
987+<a class="tooltip" href='/docs/hoon/library/2i/#rep-by' title="Replace by product (map)"><code>+-rep:by</code></a>
988+<a class="tooltip" href='/docs/hoon/library/2i/#rib-by' title="Replace values with accumulator (map)"><code>+-rib:by</code></a>
989+<a class="tooltip" href='/docs/hoon/library/2i/#run-by' title="Transform values (map)"><code>+-run:by</code></a>
990+<a class="tooltip" href='/docs/hoon/library/2i/#rut-by' title="Transform nodes (map)"><code>+-rut:by</code></a>
991+<a class="tooltip" href='/docs/hoon/library/2i/#tap-by' title="Listify pairs"><code>+-tap:by</code></a>
992+<a class="tooltip" href='/docs/hoon/library/2i/#uni-by' title="Union (map between keys of two lists)"><code>+-uni:by</code></a>
993+<a class="tooltip" href='/docs/hoon/library/2i/#urn-by' title="Turn (with key) (map)"><code>+-urn:by</code></a>
994+<a class="tooltip" href='/docs/hoon/library/2i/#wyt-by' title="Produce depth of tree map"><code>+-wyt:by</code></a>
995+
996+### 2j: jar and jug logic
997+
998+<a class="tooltip" href='/docs/hoon/library/2j/#ja' title="Jar engine"><code>++ja</code></a>
999+<a class="tooltip" href='/docs/hoon/library/2j/#add-ja' title="Prepend to list"><code>+-add:ja</code></a>
1000+<a class="tooltip" href='/docs/hoon/library/2j/#get-ja' title="Grab value by key"><code>+-get:ja</code></a>
1001+
1002+<a class="tooltip" href='/docs/hoon/library/2j/#ju' title="Jug operations"><code>++ju</code></a>
1003+<a class="tooltip" href='/docs/hoon/library/2j/#del-ju' title="Delete (jug)"><code>+-del:ju</code></a>
1004+<a class="tooltip" href='/docs/hoon/library/2j/#get-ju' title="Retrieve set"><code>+-get:ju</code></a>
1005+<a class="tooltip" href='/docs/hoon/library/2j/#has-ju' title="Check contents (jug)"><code>+-has:ju</code></a>
1006+<a class="tooltip" href='/docs/hoon/library/2j/#put-ju' title="Add key-set pair (jar)"><code>+-put:ju</code></a>
1007+
1008+### 2k: queue logic
1009+
1010+<a class="tooltip" href='/docs/hoon/library/2k/#to' title="Queue operations"><code>++to</code></a>
1011+<a class="tooltip" href='/docs/hoon/library/2k/#bal-to' title="Balance queue"><code>+-bal:to</code></a>
1012+<a class="tooltip" href='/docs/hoon/library/2k/#dep-to' title="Maximum depth (queue)"><code>+-dep:to</code></a>
1013+<a class="tooltip" href='/docs/hoon/library/2k/#gas-to' title="Push list into queue"><code>+-gas:to</code></a>
1014+<a class="tooltip" href='/docs/hoon/library/2k/#get-to' title="Head-tail pair"><code>+-get:to</code></a>
1015+<a class="tooltip" href='/docs/hoon/library/2k/#nap-to' title="Remove head of queue"><code>+-nap:to</code></a>
1016+<a class="tooltip" href='/docs/hoon/library/2k/#nip-to' title="Remove root of queue"><code>+-nip:to</code></a>
1017+<a class="tooltip" href='/docs/hoon/library/2k/#put-to' title="Insert into queue"><code>+-put:to</code></a>
1018+<a class="tooltip" href='/docs/hoon/library/2k/#tap-to' title="Queue to list"><code>+-tap:to</code></a>
1019+<a class="tooltip" href='/docs/hoon/library/2k/#top-to' title="Produce head of queue"><code>+-top:to</code></a>
1020+
1021+### 2l: container from container
1022+
1023+<a class="tooltip" href='/docs/hoon/library/2l/#malt' title="Map from list"><code>++malt</code></a>
1024+<a class="tooltip" href='/docs/hoon/library/2l/#molt' title="Map from pair list"><code>++molt</code></a>
1025+<a class="tooltip" href='/docs/hoon/library/2l/#silt' title="Produce set from list"><code>++silt</code></a>
1026+
1027+### 2m: container from noun
1028+
1029+<a class="tooltip" href='/docs/hoon/library/2m/#nl' title="Noun to container operations"><code>++nl</code></a>
1030+<a class="tooltip" href='/docs/hoon/library/2m/#le-nl' title="Construct list from null-terminated noun"><code>++le:nl</code></a>
1031+<a class="tooltip" href='/docs/hoon/library/2m/#my-nl' title="Construct map from null-terminated noun"><code>++my:nl</code></a>
1032+<a class="tooltip" href='/docs/hoon/library/2m/#si-nl' title="Construct set from null-terminated noun"><code>++si:nl</code></a>
1033+<a class="tooltip" href='/docs/hoon/library/2m/#snag-nl' title="Produce element from list at specific null-terminated noun"><code>++snag:nl</code></a>
1034+<a class="tooltip" href='/docs/hoon/library/2m/#weld-nl' title="Concatenate null-terminated nouns"><code>++weld:nl</code></a>
1035+
1036+<a class="tooltip" href='/docs/hoon/library/2m/#ly' title="List from raw noun"><code>++ly</code></a>
1037+<a class="tooltip" href='/docs/hoon/library/2m/#my' title="Map from raw noun"><code>++my</code></a>
1038+<a class="tooltip" href='/docs/hoon/library/2m/#sy' title="Produce set from null-terminated noun"><code>++sy</code></a>
1039+
1040+### 2n: functional hacks
1041+
1042+<a class="tooltip" href='/docs/hoon/library/2n/#cork' title="Compose forward"><code>++cork</code></a>
1043+<a class="tooltip" href='/docs/hoon/library/2n/#corl' title="Compose backward"><code>++corl</code></a>
1044+<a class="tooltip" href='/docs/hoon/library/2n/#curr' title="Right-curry a gate"><code>++curr</code></a>
1045+<a class="tooltip" href='/docs/hoon/library/2n/#cury' title="Curry left a gate"><code>++cury</code></a>
1046+<a class="tooltip" href='/docs/hoon/library/2n/#hard' title="Force remold"><code>++hard</code></a>
1047+<a class="tooltip" href='/docs/hoon/library/2n/#head' title="Get head of cell"><code>++head</code></a>
1048+<a class="tooltip" href='/docs/hoon/library/2n/#mean' title="Crash and printf"><code>++mean</code></a>
1049+<a class="tooltip" href='/docs/hoon/library/2n/#same' title="Identity (produces same value)"><code>++same</code></a>
1050+<a class="tooltip" href='/docs/hoon/library/2n/#slog' title="Deify printf"><code>++slog</code></a>
1051+<a class="tooltip" href='/docs/hoon/library/2n/#soft' title="Maybe remold"><code>++soft</code></a>
1052+<a class="tooltip" href='/docs/hoon/library/2n/#tail' title="Get tail of cell"><code>++tail</code></a>
1053+<a class="tooltip" href='/docs/hoon/library/2n/#test' title="Test for equality"><code>++test</code></a>
1054+
1055+### 2o: normalizing containers
1056+
1057+<a class="tooltip" href='/docs/hoon/library/2o/#jar' title="Mold generator (jar)"><code>++jar</code></a>
1058+<a class="tooltip" href='/docs/hoon/library/2o/#jug' title="Mold generator (jug)"><code>++jug</code></a>
1059+<a class="tooltip" href='/docs/hoon/library/2o/#map' title="Mold generator (map)"><code>++map</code></a>
1060+<a class="tooltip" href='/docs/hoon/library/2o/#qeu' title="Mold generator (queue)"><code>++qeu</code></a>
1061+<a class="tooltip" href='/docs/hoon/library/2o/#set' title="Mold generator (set)"><code>++set</code></a>
1062+
1063+### 2p: serialization
1064+
1065+<a class="tooltip" href='/docs/hoon/library/2p/#cue' title="Unpack atom to noun"><code>++cue</code></a>
1066+<a class="tooltip" href='/docs/hoon/library/2p/#jam' title="Pack noun to atom"><code>++jam</code></a>
1067+<a class="tooltip" href='/docs/hoon/library/2p/#mat' title="Length-encode"><code>++mat</code></a>
1068+<a class="tooltip" href='/docs/hoon/library/2p/#rub' title="Length-decode"><code>++rub</code></a>
1069+
1070+### 2q: molds and mold builders
1071+
1072+<a class="tooltip" href='/docs/hoon/library/2q/#char' title="Character"><code>++char</code></a>
1073+<a class="tooltip" href='/docs/hoon/library/2q/#cord' title="UTF-8 text"><code>++cord</code></a>
1074+<a class="tooltip" href='/docs/hoon/library/2q/#date' title="Point in time"><code>++date</code></a>
1075+<a class="tooltip" href='/docs/hoon/library/2q/#knot' title="Atom type of ASCII characters"><code>++knot</code></a>
1076+<a class="tooltip" href='/docs/hoon/library/2q/#tang' title="Generic print structure"><code>++tang</code></a>
1077+<a class="tooltip" href='/docs/hoon/library/2q/#tank' title="Pretty-printing structure"><code>++tank</code></a>
1078+<a class="tooltip" href='/docs/hoon/library/2q/#tape' title="List of characters"><code>++tape</code></a>
1079+<a class="tooltip" href='/docs/hoon/library/2q/#tarp' title="Parsed time"><code>++tarp</code></a>
1080+<a class="tooltip" href='/docs/hoon/library/2q/#term' title="Hoon constant"><code>++term</code></a>
1081+<a class="tooltip" href='/docs/hoon/library/2q/#wain' title="List of cords"><code>++wain</code></a>
1082+<a class="tooltip" href='/docs/hoon/library/2q/#wall' title="List of list of characters"><code>++wall</code></a>
1083+
1084+### 3a: modular and signed ints
1085+
1086+<a class="tooltip" href='/docs/hoon/library/3a/#fo' title="Modulo prime"><code>++fo</code></a>
1087+<a class="tooltip" href='/docs/hoon/library/3a/#dif-fo' title='Subtraction (modular base)'><code>++dif:fo</code></a>
1088+<a class="tooltip" href='/docs/hoon/library/3a/#exp-fo' title="Exponent (modular base)"><code>++exp:fo</code></a>
1089+<a class="tooltip" href='/docs/hoon/library/3a/#fra-fo' title="Divide (modular base)"><code>++fra:fo</code></a>
1090+<a class="tooltip" href='/docs/hoon/library/3a/#inv-fo' title="Inverse (signed modulus)"><code>++inv:fo</code></a>
1091+<a class="tooltip" href='/docs/hoon/library/3a/#pro-fo' title="Multiplies b and c modulo a"><code>++pro:fo</code></a>
1092+<a class="tooltip" href='/docs/hoon/library/3a/#sit-fo' title="Produce remainder of b modulo a"><code>++sit:fo</code></a>
1093+<a class="tooltip" href='/docs/hoon/library/3a/#sum-fo' title="Modular sum"><code>++sum:fo</code></a>
1094+
1095+<a class="tooltip" href='/docs/hoon/library/3a/#si' title="Signed integer"><code>++si</code></a>
1096+<a class="tooltip" href='/docs/hoon/library/3a/#abs-si' title="Absolute value (signed integer)"><code>++abs:si</code></a>
1097+<a class="tooltip" href='/docs/hoon/library/3a/#cmp-si' title="Compare (signed integer)"><code>++cmp:si</code></a>
1098+<a class="tooltip" href='/docs/hoon/library/3a/#dif-si' title="Subtraction (signed integer)"><code>++dif:si</code></a>
1099+<a class="tooltip" href='/docs/hoon/library/3a/#dul-si' title="Modulus (signed integer)"><code>++dul:si</code></a>
1100+<a class="tooltip" href='/docs/hoon/library/3a/#fra-si' title="Divide (signed integer)"><code>++fra:si</code></a>
1101+<a class="tooltip" href='/docs/hoon/library/3a/#new-si' title="Atom to @s"><code>++new:si</code></a>
1102+<a class="tooltip" href='/docs/hoon/library/3a/#old-si' title="Sign and absolute value"><code>++old:si</code></a>
1103+<a class="tooltip" href='/docs/hoon/library/3a/#pro-si' title="Multiply to signed integer"><code>++pro:si</code></a>
1104+<a class="tooltip" href='/docs/hoon/library/3a/#rem-si' title="Remainder (signed integer)"><code>++rem:si</code></a>
1105+<a class="tooltip" href='/docs/hoon/library/3a/#sum-si' title="Addition (signed integer)"><code>++sum:si</code></a>
1106+<a class="tooltip" href='/docs/hoon/library/3a/#sun-si' title="@u to @s"><code>++sun:si</code></a>
1107+<a class="tooltip" href='/docs/hoon/library/3a/#syn-si' title="Sign test"><code>++syn:si</code></a>
1108+
1109+<a class="tooltip" href='/docs/hoon/library/3a/#egcd' title="Extended Euclidean algorithm"><code>++egcd</code></a>
1110+
1111+### 3b: floating point
1112+
1113+<a class="tooltip" href='/docs/hoon/library/3b/#dn'><code>++dn</code></a>
1114+<a class="tooltip" href='/docs/hoon/library/3b/#fn'><code>++fn</code></a>
1115+<a class="tooltip" href='/docs/hoon/library/3b/#rn'><code>++rn</code></a>
1116+
1117+<a class="tooltip" href='/docs/hoon/library/3b/#ff'><code>++ff</code></a>
1118+<a class="tooltip" href='/docs/hoon/library/3b/#add-ff' title="Add (floating point)"><code>++add:ff</code></a>
1119+<a class="tooltip" href='/docs/hoon/library/3b/#bif-ff' title="Converts from fn to @r"><code>++bif:ff</code></a>
1120+<a class="tooltip" href='/docs/hoon/library/3b/#bit-ff' title="fn to @r with rounding"><code>++bit:ff</code></a>
1121+<a class="tooltip" href='/docs/hoon/library/3b/#div-ff' title="Divide (IEEE float)"><code>++div:ff</code></a>
1122+<a class="tooltip" href='/docs/hoon/library/3b/#drg-ff' title="@r to decimal float"><code>++drg:ff</code></a>
1123+<a class="tooltip" href='/docs/hoon/library/3b/#equ-ff' title="Equals (IEEE float)"><code>++equ:ff</code></a>
1124+<a class="tooltip" href='/docs/hoon/library/3b/#exp-ff' title="Get exponent (IEEE float)"><code>++exp:ff</code></a>
1125+<a class="tooltip" href='/docs/hoon/library/3b/#fma-ff' title="Fused multiply-add (IEEE float)"><code>++fma:ff</code></a>
1126+<a class="tooltip" href='/docs/hoon/library/3b/#grd-ff' title="Decimal float to @r"><code>++grd:ff</code></a>
1127+<a class="tooltip" href='/docs/hoon/library/3b/#gte-ff' title="Greater than / equal (IEEE float)"><code>++gte:ff</code></a>
1128+<a class="tooltip" href='/docs/hoon/library/3b/#gth-ff' title="Greater than (IEEE float)"><code>++gth:ff</code></a>
1129+<a class="tooltip" href='/docs/hoon/library/3b/#lte-ff' title="Less than / equal (IEEE float)"><code>++lte:ff</code></a>
1130+<a class="tooltip" href='/docs/hoon/library/3b/#lth-ff' title="Less than (IEEE float)"><code>++lth:ff</code></a>
1131+<a class="tooltip" href='/docs/hoon/library/3b/#me-ff' title="Minimum exponent of ff"><code>++me:ff</code></a>
1132+<a class="tooltip" href='/docs/hoon/library/3b/#mul-ff' title="Multiply (IEEE float)"><code>++mul:ff</code></a>
1133+<a class="tooltip" href='/docs/hoon/library/3b/#pa-ff' title="Initialize fl from ff core"><code>++pa:ff</code></a>
1134+<a class="tooltip" href='/docs/hoon/library/3b/#san-ff' title="Signed integer to @r"><code>++san:ff</code></a>
1135+<a class="tooltip" href='/docs/hoon/library/3b/#sb-ff' title="Sign bit"><code>++sb:ff</code></a>
1136+<a class="tooltip" href='/docs/hoon/library/3b/#sea-ff' title="Convert from IEEE float to fn"><code>++sea:ff</code></a>
1137+<a class="tooltip" href='/docs/hoon/library/3b/#sig-ff' title="Produce sign of IEEE float"><code>++sig:ff</code></a>
1138+<a class="tooltip" href='/docs/hoon/library/3b/#sqt-ff' title="Produce square root from IEEE float"><code>++sqt:ff</code></a>
1139+<a class="tooltip" href='/docs/hoon/library/3b/#sub-ff' title="Subtract from IEEE float"><code>++sub:ff</code></a>
1140+<a class="tooltip" href='/docs/hoon/library/3b/#sun-ff' title="Unsigned integer to IEEE float"><code>++sun:ff</code></a>
1141+<a class="tooltip" href='/docs/hoon/library/3b/#toi-ff' title="Round IEEE float to nearest signed integer"><code>++toi:ff</code></a>
1142+
1143+<a class="tooltip" href='/docs/hoon/library/3b/#fl'><code>++fl</code></a>
1144+<a class="tooltip" href='/docs/hoon/library/3b/#abs-fl' title="Absolute value"><code>++abs:fl</code></a>
1145+<a class="tooltip" href='/docs/hoon/library/3b/#add-fl' title="Add (with exact/rounded flag)"><code>++add:fl</code></a>
1146+<a class="tooltip" href='/docs/hoon/library/3b/#den-fl' title="Denormalizes (floating point)"><code>++den:fl</code></a>
1147+<a class="tooltip" href='/docs/hoon/library/3b/#div-fl' title="Divide (signed and unsigned integer cell)"><code>++div:fl</code></a>
1148+<a class="tooltip" href='/docs/hoon/library/3b/#drg-fl' title="Get printable decimal (signed and unsigned integer cell)"><code>++drg:fl</code></a>
1149+<a class="tooltip" href='/docs/hoon/library/3b/#ead-fl' title="Exact add"><code>++ead:fl</code></a>
1150+<a class="tooltip" href='/docs/hoon/library/3b/#emn-fl' title="Minimum exponent"><code>++emn:fl</code></a>
1151+<a class="tooltip" href='/docs/hoon/library/3b/#emu-fl' title="Exact multiply"><code>++emu:fl</code></a>
1152+<a class="tooltip" href='/docs/hoon/library/3b/#emx-fl' title="Maximum exponent"><code>++emx:fl</code></a>
1153+<a class="tooltip" href='/docs/hoon/library/3b/#equ-fl' title="Equals (signed and unsigned integer cell)"><code>++equ:fl</code></a>
1154+<a class="tooltip" href='/docs/hoon/library/3b/#fli-fl' title="Flip sign"><code>++fli:fl</code></a>
1155+<a class="tooltip" href='/docs/hoon/library/3b/#fma-fl' title="Fused multiply-add"><code>++fma:fl</code></a>
1156+<a class="tooltip" href='/docs/hoon/library/3b/#grd-fl' title="Decimal to float"><code>++grd:fl</code></a>
1157+<a class="tooltip" href='/docs/hoon/library/3b/#gte-fl' title="Greater than / equal (producing flag)"><code>++gte:fl</code></a>
1158+<a class="tooltip" href='/docs/hoon/library/3b/#gth-fl' title="Greater than (producing flag)"><code>++gth:fl</code></a>
1159+<a class="tooltip" href='/docs/hoon/library/3b/#ibl-fl' title="Integer binary logarithm"><code>++ibl:fl</code></a>
1160+<a class="tooltip" href='/docs/hoon/library/3b/#inv-fl' title="Inverse"><code>++inv:fl</code></a>
1161+<a class="tooltip" href='/docs/hoon/library/3b/#lfe-fl' title="Maximum"><code>++lfe:fl</code></a>
1162+<a class="tooltip" href='/docs/hoon/library/3b/#lfn-fl' title="Largest normal float"><code>++lfn:fl</code></a>
1163+<a class="tooltip" href='/docs/hoon/library/3b/#lte-fl' title="Less than / equal (producing flag)"><code>++lte:fl</code></a>
1164+<a class="tooltip" href='/docs/hoon/library/3b/#lth-fl' title="Less than (signed and unsigned integer cell)"><code>++lth:fl</code></a>
1165+<a class="tooltip" href='/docs/hoon/library/3b/#lug-fl' title="Central rounding mechanism"><code>++lug:fl</code></a>
1166+<a class="tooltip" href='/docs/hoon/library/3b/#mul-fl' title="Multiply (signed and unsigned integer cell)"><code>++mul:fl</code></a>
1167+<a class="tooltip" href='/docs/hoon/library/3b/#ned-fl' title="Require float"><code>++ned:fl</code></a>
1168+<a class="tooltip" href='/docs/hoon/library/3b/#prc-fl' title="Force precision of 2 or greater (floating point)"><code>++prc:fl</code></a>
1169+<a class="tooltip" href='/docs/hoon/library/3b/#rau-fl' title="Various roundings (floating point)"><code>++rau:fl</code></a>
1170+<a class="tooltip" href='/docs/hoon/library/3b/#rou-fl' title="Round to nearest float with 113-bit significand"><code>++rou:fl</code></a>
1171+<a class="tooltip" href='/docs/hoon/library/3b/#san-fl' title="Signed integer to float"><code>++san:fl</code></a>
1172+<a class="tooltip" href='/docs/hoon/library/3b/#shf-fl' title="Shift power"><code>++shf:fl</code></a>
1173+<a class="tooltip" href='/docs/hoon/library/3b/#spd-fl' title="Produce smallest denormalized float"><code>++spd:fl</code></a>
1174+<a class="tooltip" href='/docs/hoon/library/3b/#spn-fl' title="Produce smallest normal float"><code>++spn:fl</code></a>
1175+<a class="tooltip" href='/docs/hoon/library/3b/#sqt-fl' title="Produce square root from signed and unsigned integer cell"><code>++sqt:fl</code></a>
1176+<a class="tooltip" href='/docs/hoon/library/3b/#sub-fl' title="Subtract from signed and unsigned integer cells"><code>++sub:fl</code></a>
1177+<a class="tooltip" href='/docs/hoon/library/3b/#sun-fl' title="Unsigned integer to float"><code>++sun:fl</code></a>
1178+<a class="tooltip" href='/docs/hoon/library/3b/#swr-fl' title="Switch rounding mode of floating point"><code>++swr:fl</code></a>
1179+<a class="tooltip" href='/docs/hoon/library/3b/#syn-fl' title="Get sign"><code>++syn:fl</code></a>
1180+<a class="tooltip" href='/docs/hoon/library/3b/#toi-fl' title="Round float to nearest signed integer"><code>++toi:fl</code></a>
1181+<a class="tooltip" href='/docs/hoon/library/3b/#toj-fl' title="Round unsigned and signed integer to float"><code>++toj:fl</code></a>
1182+<a class="tooltip" href='/docs/hoon/library/3b/#uni-fl' title="Change representation to odd"><code>++uni:fl</code></a>
1183+<a class="tooltip" href='/docs/hoon/library/3b/#xpd-fl' title="Expand signed and unsigned integer cell"><code>++xpd:fl</code></a>
1184+<a class="tooltip" href='/docs/hoon/library/3b/#zer-fl' title="Produce zero as float"><code>++zer:fl</code></a>
1185+
1186+<a class="tooltip" href='/docs/hoon/library/3b/#rd'><code>++rd</code></a>
1187+<a class="tooltip" href='/docs/hoon/library/3b/#add-rd' title="Add (double-precision float)"><code>++add:rd</code></a>
1188+<a class="tooltip" href='/docs/hoon/library/3b/#bit-rd' title="fn to double-precision binary float"><code>++bit:rd</code></a>
1189+<a class="tooltip" href='/docs/hoon/library/3b/#div-rd' title="Double precision float"><code>++div:rd</code></a>
1190+<a class="tooltip" href='/docs/hoon/library/3b/#drg-rd' title="@rd to decimal float"><code>++drg:rd</code></a>
1191+<a class="tooltip" href='/docs/hoon/library/3b/#equ-rd' title="Equals (double-precision float)"><code>++equ:rd</code></a>
1192+<a class="tooltip" href='/docs/hoon/library/3b/#exp-rd' title="Exponent (@rd)"><code>++exp:rd</code></a>
1193+<a class="tooltip" href='/docs/hoon/library/3b/#fma-rd' title="Fused multiply-add (@rd)"><code>++fma:rd</code></a>
1194+<a class="tooltip" href='/docs/hoon/library/3b/#grd-rd' title="Decimal float to @rd"><code>++grd:rd</code></a>
1195+<a class="tooltip" href='/docs/hoon/library/3b/#gte-rd' title="Greater than / equal (double-precision float)"><code>++gte:rd</code></a>
1196+<a class="tooltip" href='/docs/hoon/library/3b/#gth-rd' title="Greater than (double-precision float)"><code>++gth:rd</code></a>
1197+<a class="tooltip" href='/docs/hoon/library/3b/#lte-rd' title="Less than / equal (double-precision float)"><code>++lte:rd</code></a>
1198+<a class="tooltip" href='/docs/hoon/library/3b/#lth-rd' title="Less than (double-precision float)"><code>++lth:rd</code></a>
1199+<a class="tooltip" href='/docs/hoon/library/3b/#ma-rd' title="Initialize ff (rd core)"><code>++ma:rd</code></a>
1200+<a class="tooltip" href='/docs/hoon/library/3b/#mul-rd' title="Multiply (double-precision float)"><code>++mul:rd</code></a>
1201+<a class="tooltip" href='/docs/hoon/library/3b/#san-rd' title="Unsigned integer to @rd"><code>++san:rd</code></a>
1202+<a class="tooltip" href='/docs/hoon/library/3b/#sea-rd' title="Convert from double-precision binary float to fn"><code>++sea:rd</code></a>
1203+<a class="tooltip" href='/docs/hoon/library/3b/#sig-rd' title="Produce sign of @rd"><code>++sig:rd</code></a>
1204+<a class="tooltip" href='/docs/hoon/library/3b/#sqt-rd' title="Produce square root of double-precision float"><code>++sqt:rd</code></a>
1205+<a class="tooltip" href='/docs/hoon/library/3b/#sub-rd' title="Subtract from double-precision float"><code>++sub:rd</code></a>
1206+<a class="tooltip" href='/docs/hoon/library/3b/#sun-rd' title="Unsigned integer to double-precision float"><code>++sun:rd</code></a>
1207+<a class="tooltip" href='/docs/hoon/library/3b/#toi-rd' title="Round double-precision float to nearest signed integer"><code>++toi:rd</code></a>
1208+
1209+<a class="tooltip" href='/docs/hoon/library/3b/#rh'><code>++rh</code></a>
1210+<a class="tooltip" href='/docs/hoon/library/3b/#add-rh' title="Add (half-precision float)"><code>++add:rh</code></a>
1211+<a class="tooltip" href='/docs/hoon/library/3b/#bit-rh' title="fn to half-precision float"><code>++bit:rh</code></a>
1212+<a class="tooltip" href='/docs/hoon/library/3b/#div-rh' title="Divide (half-precision float)"><code>++div:rh</code></a>
1213+<a class="tooltip" href='/docs/hoon/library/3b/#drg-rh' title="@rh to decimal float"><code>++drg:rh</code></a>
1214+<a class="tooltip" href='/docs/hoon/library/3b/#equ-rh' title="Equals (half-precision float)"><code>++equ:rh</code></a>
1215+<a class="tooltip" href='/docs/hoon/library/3b/#exp-rh' title="Exponent (half-precision float)"><code>++exp:rh</code></a>
1216+<a class="tooltip" href='/docs/hoon/library/3b/#fma-rh' title="Fused multiply-add (half-precision float)"><code>++fma:rh</code></a>
1217+<a class="tooltip" href='/docs/hoon/library/3b/#fos-rh' title="@rs to @rh"><code>++fos:rh</code></a>
1218+<a class="tooltip" href='/docs/hoon/library/3b/#grd-rh' title="Decimal float to @rh"><code>++grd:rh</code></a>
1219+<a class="tooltip" href='/docs/hoon/library/3b/#gte-rh' title="Greater than / equal (half-precision float)"><code>++gte:rh</code></a>
1220+<a class="tooltip" href='/docs/hoon/library/3b/#gth-rh' title="Greater than (half-precision float)"><code>++gth:rh</code></a>
1221+<a class="tooltip" href='/docs/hoon/library/3b/#lte-rh' title="Less than / equal (half-precision float)"><code>++lte:rh</code></a>
1222+<a class="tooltip" href='/docs/hoon/library/3b/#lth-rh' title="Less than (half-precision float)"><code>++lth:rh</code></a>
1223+<a class="tooltip" href='/docs/hoon/library/3b/#ma-rh' title="Initialize ff (rh core)"><code>++ma:rh</code></a>
1224+<a class="tooltip" href='/docs/hoon/library/3b/#mul-rh' title="Multiply (quad-precision float)"><code>++mul:rh</code></a>
1225+<a class="tooltip" href='/docs/hoon/library/3b/#san-rh' title="Signed integer to @rh"><code>++san:rh</code></a>
1226+<a class="tooltip" href='/docs/hoon/library/3b/#sea-rh' title="Convert from half-precision float to fn"><code>++sea:rh</code></a>
1227+<a class="tooltip" href='/docs/hoon/library/3b/#sig-rh' title="Produce sign of half-precision float"><code>++sig:rh</code></a>
1228+<a class="tooltip" href='/docs/hoon/library/3b/#sqt-rh' title="Produce square root of half-precision float"><code>++sqt:rh</code></a>
1229+<a class="tooltip" href='/docs/hoon/library/3b/#sub-rh' title="Subtract from half-precision float"><code>++sub:rh</code></a>
1230+<a class="tooltip" href='/docs/hoon/library/3b/#sun-rh' title="Unsigned integer to half-precision float"><code>++sun:rh</code></a>
1231+<a class="tooltip" href='/docs/hoon/library/3b/#toi-rh' title="Round half-precision float to nearest signed integer"><code>++toi:rh</code></a>
1232+<a class="tooltip" href='/docs/hoon/library/3b/#tos-rh' title="Convert half-precision float to single-precision float"><code>++tos:rh</code></a>
1233+
1234+<a class="tooltip" href='/docs/hoon/library/3b/#rs'><code>++rs</code></a>
1235+<a class="tooltip" href='/docs/hoon/library/3b/#add-rs' title="Add (single-precision float)"><code>++add:rs</code></a>
1236+<a class="tooltip" href='/docs/hoon/library/3b/#bit-rs' title="fn to single-precision float"><code>++bit:rs</code></a>
1237+<a class="tooltip" href='/docs/hoon/library/3b/#div-rs' title="Divide (single-precision float)"><code>++div:rs</code></a>
1238+<a class="tooltip" href='/docs/hoon/library/3b/#drg-rs' title="@rs to decimal float"><code>++drg:rs</code></a>
1239+<a class="tooltip" href='/docs/hoon/library/3b/#equ-rs' title="Equals (single-precision float)"><code>++equ:rs</code></a>
1240+<a class="tooltip" href='/docs/hoon/library/3b/#exp-rs' title="Exponent (@rs)"><code>++exp:rs</code></a>
1241+<a class="tooltip" href='/docs/hoon/library/3b/#fma-rs' title="Fused multiply-add (single-precision float)"><code>++fma:rs</code></a>
1242+<a class="tooltip" href='/docs/hoon/library/3b/#grd-rs' title="Decimal float to @rs"><code>++grd:rs</code></a>
1243+<a class="tooltip" href='/docs/hoon/library/3b/#gte-rs' title="Greater than / equal (single-precision float)"><code>++gte:rs</code></a>
1244+<a class="tooltip" href='/docs/hoon/library/3b/#gth-rs' title="Greater than (single-precision float)"><code>++gth:rs</code></a>
1245+<a class="tooltip" href='/docs/hoon/library/3b/#lte-rs' title="Less than / equal (single-precision float)"><code>++lte:rs</code></a>
1246+<a class="tooltip" href='/docs/hoon/library/3b/#lth-rs' title="Less than (single-precision float)"><code>++lth:rs</code></a>
1247+<a class="tooltip" href='/docs/hoon/library/3b/#ma-rs' title="Initialize ff (rs core)"><code>++ma:rs</code></a>
1248+<a class="tooltip" href='/docs/hoon/library/3b/#mul-rs' title="Multiply (single-precision float)"><code>++mul:rs</code></a>
1249+<a class="tooltip" href='/docs/hoon/library/3b/#san-rs' title="Signed integer to @rs"><code>++san:rs</code></a>
1250+<a class="tooltip" href='/docs/hoon/library/3b/#sea-rs' title="Convert from single-precision float to fn"><code>++sea:rs</code></a>
1251+<a class="tooltip" href='/docs/hoon/library/3b/#sig-rs' title="Produce sign of @rs"><code>++sig:rs</code></a>
1252+<a class="tooltip" href='/docs/hoon/library/3b/#sqt-rs' title="Produce square root of single-precision float"><code>++sqt:rs</code></a>
1253+<a class="tooltip" href='/docs/hoon/library/3b/#sub-rs' title="Subtract from single-precision float"><code>++sub:rs</code></a>
1254+<a class="tooltip" href='/docs/hoon/library/3b/#sun-rs' title="Unsigned integer to single-precision float"><code>++sun:rs</code></a>
1255+<a class="tooltip" href='/docs/hoon/library/3b/#toi-rs' title="Round single-precision float to nearest signed integer"><code>++toi:rs</code></a>
1256+
1257+<a class="tooltip" href='/docs/hoon/library/3b/#rq'><code>++rq</code></a>
1258+<a class="tooltip" href='/docs/hoon/library/3b/#add-rq' title="Add (quad-precision float)"><code>++add:rq</code></a>
1259+<a class="tooltip" href='/docs/hoon/library/3b/#bit-rq' title="fn to quad-precision float"><code>++bit:rq</code></a>
1260+<a class="tooltip" href='/docs/hoon/library/3b/#div-rq' title="Divide (quad-precision float)"><code>++div:rq</code></a>
1261+<a class="tooltip" href='/docs/hoon/library/3b/#drg-rq' title="@rq to decimal float"><code>++drg:rq</code></a>
1262+<a class="tooltip" href='/docs/hoon/library/3b/#equ-rq' title="Equals (quad-precision float)"><code>++equ:rq</code></a>
1263+<a class="tooltip" href='/docs/hoon/library/3b/#exp-rq' title="Exponent (quad-precision float)"><code>++exp:rq</code></a>
1264+<a class="tooltip" href='/docs/hoon/library/3b/#fma-rq' title="Fused multiply-add (quad-precision float)"><code>++fma:rq</code></a>
1265+<a class="tooltip" href='/docs/hoon/library/3b/#grd-rq' title="Decimal float to @rq"><code>++grd:rq</code></a>
1266+<a class="tooltip" href='/docs/hoon/library/3b/#gte-rq' title="Greater than / equal (quad-precision float)"><code>++gte:rq</code></a>
1267+<a class="tooltip" href='/docs/hoon/library/3b/#gth-rq' title="Greater than (quad-precision float)"><code>++gth:rq</code></a>
1268+<a class="tooltip" href='/docs/hoon/library/3b/#lte-rq' title="Less than / equal (quad-precision float)"><code>++lte:rq</code></a>
1269+<a class="tooltip" href='/docs/hoon/library/3b/#lth-rq' title="Less than (quad-precision float)"><code>++lth:rq</code></a>
1270+<a class="tooltip" href='/docs/hoon/library/3b/#ma-rq' title="Initialize ff (rq core)"><code>++ma:rq</code></a>
1271+<a class="tooltip" href='/docs/hoon/library/3b/#mul-rq' title="Multiply (quad-precision float)"><code>++mul:rq</code></a>
1272+<a class="tooltip" href='/docs/hoon/library/3b/#san-rq' title="Signed integer to @rq"><code>++san:rq</code></a>
1273+<a class="tooltip" href='/docs/hoon/library/3b/#sea-rq' title="Convert from quad-precision float to fn"><code>++sea:rq</code></a>
1274+<a class="tooltip" href='/docs/hoon/library/3b/#sig-rq' title="Produce sign of quad-precision float"><code>++sig:rq</code></a>
1275+<a class="tooltip" href='/docs/hoon/library/3b/#sqt-rq' title="Produce square root of quad-precision float"><code>++sqt:rq</code></a>
1276+<a class="tooltip" href='/docs/hoon/library/3b/#sub-rq' title="Subtract from quad-precision float"><code>++sub:rq</code></a>
1277+<a class="tooltip" href='/docs/hoon/library/3b/#sun-rq' title="Unsigned integer to quad-precision float"><code>++sun:rq</code></a>
1278+<a class="tooltip" href='/docs/hoon/library/3b/#toi-rq' title="Round quad-precision float to nearest signed integer"><code>++toi:rq</code></a>
1279+
1280+<a class="tooltip" href='/docs/hoon/library/3b/#rlyd'><code>++rlyd</code></a>
1281+<a class="tooltip" href='/docs/hoon/library/3b/#rlyh'><code>++rlyh</code></a>
1282+<a class="tooltip" href='/docs/hoon/library/3b/#rlyq'><code>++rlyq</code></a>
1283+<a class="tooltip" href='/docs/hoon/library/3b/#rlys'><code>++rlys</code></a>
1284+<a class="tooltip" href='/docs/hoon/library/3b/#ryld'><code>++ryld</code></a>
1285+<a class="tooltip" href='/docs/hoon/library/3b/#rylh'><code>++rylh</code></a>
1286+<a class="tooltip" href='/docs/hoon/library/3b/#rylq'><code>++rylq</code></a>
1287+<a class="tooltip" href='/docs/hoon/library/3b/#ryls'><code>++ryls</code></a>
1288+
1289+### 3c: urbit time
1290+
1291+<a class="tooltip" href='/docs/hoon/library/3c/#yo' title="Time constants core"><code>++yo</code></a>
1292+<a class="tooltip" href='/docs/hoon/library/3c/#cet-yo' title="Days in a century"><code>++cet:yo</code></a>
1293+<a class="tooltip" href='/docs/hoon/library/3c/#day-yo' title="Seconds in day"><code>++day:yo</code></a>
1294+<a class="tooltip" href='/docs/hoon/library/3c/#era-yo' title="Leap-year period"><code>++era:yo</code></a>
1295+<a class="tooltip" href='/docs/hoon/library/3c/#hor-yo' title="Seconds in hour"><code>++hor:yo</code></a>
1296+<a class="tooltip" href='/docs/hoon/library/3c/#jes-yo' title="Maximum 64-bit timestamp"><code>++jes:yo</code></a>
1297+<a class="tooltip" href='/docs/hoon/library/3c/#mit-yo' title="Seconds in minute"><code>++mit:yo</code></a>
1298+<a class="tooltip" href='/docs/hoon/library/3c/#moh-yo' title="Days in month"><code>++moh:yo</code></a>
1299+<a class="tooltip" href='/docs/hoon/library/3c/#moy-yo' title="Days in months of leap-year"><code>++moy:yo</code></a>
1300+<a class="tooltip" href='/docs/hoon/library/3c/#qad-yo' title="Seconds in 4 years"><code>++qad:yo</code></a>
1301+<a class="tooltip" href='/docs/hoon/library/3c/#yer-yo' title="Seconds in year"><code>++yer:yo</code></a>
1302+
1303+<a class="tooltip" href='/docs/hoon/library/3c/#yall' title="Time since beginning of time"><code>++yall</code></a>
1304+<a class="tooltip" href='/docs/hoon/library/3c/#yawn' title="Days since beginning of time"><code>++yawn</code></a>
1305+<a class="tooltip" href='/docs/hoon/library/3c/#year' title="Date to @d"><code>++year</code></a>
1306+<a class="tooltip" href='/docs/hoon/library/3c/#yell' title="Tarp from atomic date"><code>++yell</code></a>
1307+<a class="tooltip" href='/docs/hoon/library/3c/#yelp' title="Determine if leap-week"><code>++yelp</code></a>
1308+<a class="tooltip" href='/docs/hoon/library/3c/#yore' title="Date from atomic date"><code>++yore</code></a>
1309+<a class="tooltip" href='/docs/hoon/library/3c/#yule' title="Daily time to time atom"><code>++yule</code></a>
1310+
1311+### 3d: SHA hash family
1312+
1313+<a class="tooltip" href='/docs/hoon/library/3d/#og' title="Container arm for SHA-256 powered RNG"><code>++og</code></a>
1314+<a class="tooltip" href='/docs/hoon/library/3d/#rad-og' title="Random in range"><code>++rad:og</code></a>
1315+<a class="tooltip" href='/docs/hoon/library/3d/#rads-og' title="Random continuation"><code>++rads:og</code></a>
1316+<a class="tooltip" href='/docs/hoon/library/3d/#raw-og' title="Random bits"><code>++raw:og</code></a>
1317+<a class="tooltip" href='/docs/hoon/library/3d/#raws-og' title="Random bits continuation"><code>++raws:og</code></a>
1318+
1319+<a class="tooltip" href='/docs/hoon/library/3d/#shad' title="Double SHA-256"><code>++shad</code></a>
1320+<a class="tooltip" href='/docs/hoon/library/3d/#shaf' title="Half SHA-256"><code>++shaf</code></a>
1321+<a class="tooltip" href='/docs/hoon/library/3d/#shal' title="SHA-512 with length"><code>++shal</code></a>
1322+<a class="tooltip" href='/docs/hoon/library/3d/#sham' title="128-bit noun hash"><code>++sham</code></a>
1323+<a class="tooltip" href='/docs/hoon/library/3d/#shan' title="SHA-1"><code>++shan</code></a>
1324+<a class="tooltip" href='/docs/hoon/library/3d/#shas' title="Salted hash"><code>++shas</code></a>
1325+<a class="tooltip" href='/docs/hoon/library/3d/#shaw' title="Hash to nbits"><code>++shaw</code></a>
1326+<a class="tooltip" href='/docs/hoon/library/3d/#shax' title="SHA-256"><code>++shax</code></a>
1327+<a class="tooltip" href='/docs/hoon/library/3d/#shay' title="SHA-256 with length"><code>++shay</code></a>
1328+<a class="tooltip" href='/docs/hoon/library/3d/#shaz' title="SHA-512"><code>++shaz</code></a>
1329+
1330+### 3e: AES encryption
1331+
1332+<a href='/docs/hoon/library/3e/'>_(removed)_</a>
1333+
1334+### 3f: scrambling
1335+
1336+<a class="tooltip" href='/docs/hoon/library/3f/#ob' title="Reversible scrambling v2"><code>++ob</code></a>
1337+<a class="tooltip" href='/docs/hoon/library/3f/#feen-ob' title="Conceal structure v2"><code>++feen:ob</code></a>
1338+<a class="tooltip" href='/docs/hoon/library/3f/#fend-ob' title="Restore structure v2"><code>++fend:ob</code></a>
1339+<a class="tooltip" href='/docs/hoon/library/3f/#fice-ob' title="Feistel-like cipher"><code>++fice:ob</code></a>
1340+<a class="tooltip" href='/docs/hoon/library/3f/#raku-ob' title="Key list"><code>++raku:ob</code></a>
1341+<a class="tooltip" href='/docs/hoon/library/3f/#rund-ob' title="Reverse single Feistel-like"><code>++rund:ob</code></a>
1342+<a class="tooltip" href='/docs/hoon/library/3f/#rynd-ob' title="Reverse Feistel-like cipher"><code>++rynd:ob</code></a>
1343+<a class="tooltip" href='/docs/hoon/library/3f/#teil-ob' title="Reverse Feistel-like cipher"><code>++teil:ob</code></a>
1344+
1345+<a class="tooltip" href='/docs/hoon/library/3f/#un' title="Reversible scrambling"><code>++un</code></a>
1346+<a class="tooltip" href='/docs/hoon/library/3f/#wred-un' title="Restore structure"><code>++wred:un</code></a>
1347+<a class="tooltip" href='/docs/hoon/library/3f/#wren-un' title="Conceal structure"><code>++wren:un</code></a>
1348+<a class="tooltip" href='/docs/hoon/library/3f/#xafo-un'><code>++xafo:un</code></a>
1349+<a class="tooltip" href='/docs/hoon/library/3f/#xaro-un'><code>++xaro:un</code></a>
1350+<a class="tooltip" href='/docs/hoon/library/3f/#zaft-un' title="Look up in 255 sub box"><code>++zaft:un</code></a>
1351+<a class="tooltip" href='/docs/hoon/library/3f/#zart-un' title="Reverse look up in 255 sub box"><code>++zart:un</code></a>
1352+<a class="tooltip" href='/docs/hoon/library/3f/#zyft-un' title="Lookup byte in 256 sub box"><code>++zyft:un</code></a>
1353+<a class="tooltip" href='/docs/hoon/library/3f/#zyrt-un' title="Reverse lookup byte in 256 sub box"><code>++zyrt:un</code></a>
1354+
1355+### 3g: molds and mold builders
1356+
1357+<a class="tooltip" href='/docs/hoon/library/3g/#coin' title="Noun-literal syntax cases"><code>++coin</code></a>
1358+<a class="tooltip" href='/docs/hoon/library/3g/#dime' title="Aura-atom pair"><code>++dime</code></a>
1359+<a class="tooltip" href='/docs/hoon/library/3g/#edge' title="Parsing location metadata"><code>++edge</code></a>
1360+<a class="tooltip" href='/docs/hoon/library/3g/#hair' title="Parsing line and column"><code>++hair</code></a>
1361+<a class="tooltip" href='/docs/hoon/library/3g/#like' title="Generic edge"><code>++like</code></a>
1362+<a class="tooltip" href='/docs/hoon/library/3g/#nail' title="Location, remainder of parsed text"><code>++nail</code></a>
1363+<a class="tooltip" href='/docs/hoon/library/3g/#path' title="Filesystem path"><code>++path</code></a>
1364+<a class="tooltip" href='/docs/hoon/library/3g/#pint' title="Parsing range"><code>++pint</code></a>
1365+<a class="tooltip" href='/docs/hoon/library/3g/#rule' title="Parsing rule (match this with _)"><code>++rule</code></a>
1366+<a class="tooltip" href='/docs/hoon/library/3g/#spot' title="Stack trace line"><code>++spot</code></a>
1367+<a class="tooltip" href='/docs/hoon/library/3g/#tone' title="Nock result (error report)"><code>++tone</code></a>
1368+<a class="tooltip" href='/docs/hoon/library/3g/#toon' title="Nock result (stack trace)"><code>++toon</code></a>
1369+<a class="tooltip" href='/docs/hoon/library/3g/#wonk' title="Product from edge"><code>++wonk</code></a>
1370+
1371+### 4a: exotic bases
1372+
1373+<a class="tooltip" href='/docs/hoon/library/4a/#po' title="Phonetic base"><code>++po</code></a>
1374+<a class="tooltip" href='/docs/hoon/library/4a/#ind-po' title="Parse suffix"><code>++ind:po</code></a>
1375+<a class="tooltip" href='/docs/hoon/library/4a/#ins-po' title="Parse prefix"><code>++ins:po</code></a>
1376+<a class="tooltip" href='/docs/hoon/library/4a/#tod-po' title="Fetch suffix"><code>++tod:po</code></a>
1377+<a class="tooltip" href='/docs/hoon/library/4a/#tos-po' title="Fetch prefix"><code>++tos:po</code></a>
1378+
1379+### 4b: text processing
1380+
1381+<a class="tooltip" href='/docs/hoon/library/4b/#at' title="(Undocumented)"><code>++at</code></a>
1382+<a class="tooltip" href='/docs/hoon/library/4b/#r-at' title="(Undocumented)"><code>++r:at</code></a>
1383+<a class="tooltip" href='/docs/hoon/library/4b/#rf-at' title="(Undocumented)"><code>++rf:at</code></a>
1384+<a class="tooltip" href='/docs/hoon/library/4b/#rn-at' title="(Undocumented)"><code>++rn:at</code></a>
1385+<a class="tooltip" href='/docs/hoon/library/4b/#rt-at' title="(Undocumented)"><code>++rt:at</code></a>
1386+<a class="tooltip" href='/docs/hoon/library/4b/#rta-at' title="(Undocumented)"><code>++rta:at</code></a>
1387+<a class="tooltip" href='/docs/hoon/library/4b/#rtam-at' title="(Undocumented)"><code>++rtam:at</code></a>
1388+<a class="tooltip" href='/docs/hoon/library/4b/#rub-at' title="(Undocumented)"><code>++rub:at</code></a>
1389+<a class="tooltip" href='/docs/hoon/library/4b/#rud-at' title="(Undocumented)"><code>++rud:at</code></a>
1390+<a class="tooltip" href='/docs/hoon/library/4b/#rum-at' title="(Undocumented)"><code>++rum:at</code></a>
1391+<a class="tooltip" href='/docs/hoon/library/4b/#rup-at' title="(Undocumented)"><code>++rup:at</code></a>
1392+<a class="tooltip" href='/docs/hoon/library/4b/#ruv-at' title="(Undocumented)"><code>++ruv:at</code></a>
1393+<a class="tooltip" href='/docs/hoon/library/4b/#rux-at' title="(Undocumented)"><code>++rux:at</code></a>
1394+
1395+<a class="tooltip" href='/docs/hoon/library/4b/#cass' title="To lowercase"><code>++cass</code></a>
1396+<a class="tooltip" href='/docs/hoon/library/4b/#crip' title="Tape to cord"><code>++crip</code></a>
1397+<a class="tooltip" href='/docs/hoon/library/4b/#cuss' title="To uppercase"><code>++cuss</code></a>
1398+<a class="tooltip" href='/docs/hoon/library/4b/#mesc' title="Escape special characters"><code>++mesc</code></a>
1399+<a class="tooltip" href='/docs/hoon/library/4b/#runt' title="Prepend n times"><code>++runt</code></a>
1400+<a class="tooltip" href='/docs/hoon/library/4b/#sand' title="Soft-cast by odor"><code>++sand</code></a>
1401+<a class="tooltip" href='/docs/hoon/library/4b/#sane' title="Check odor validity"><code>++sane</code></a>
1402+<a class="tooltip" href='/docs/hoon/library/4b/#teff' title="UTF-8 length"><code>++teff</code></a>
1403+<a class="tooltip" href='/docs/hoon/library/4b/#trim' title="Tape split"><code>++trim</code></a>
1404+<a class="tooltip" href='/docs/hoon/library/4b/#trip' title="Cord to tape"><code>++trip</code></a>
1405+<a class="tooltip" href='/docs/hoon/library/4b/#tuba' title="UTF-8 to UTF-32 tape"><code>++tuba</code></a>
1406+<a class="tooltip" href='/docs/hoon/library/4b/#tufa' title="UTF-32 to UTF-8 tape"><code>++tufa</code></a>
1407+<a class="tooltip" href='/docs/hoon/library/4b/#tuft' title="UTF-32 to UTF-8 text"><code>++tuft</code></a>
1408+<a class="tooltip" href='/docs/hoon/library/4b/#turf' title="UTF-8 to UTF-32 cord"><code>++turf</code></a>
1409+<a class="tooltip" href='/docs/hoon/library/4b/#wack' title="Coin format encode"><code>++wack</code></a>
1410+<a class="tooltip" href='/docs/hoon/library/4b/#wick' title="Coin format decode"><code>++wick</code></a>
1411+<a class="tooltip" href='/docs/hoon/library/4b/#woad' title="Unescape cord"><code>++woad</code></a>
1412+<a class="tooltip" href='/docs/hoon/library/4b/#wood' title="Escape cord"><code>++wood</code></a>
1413+
1414+### 4c: tank printer
1415+
1416+<a class="tooltip" href='/docs/hoon/library/4c/#re' title="Pretty-printing engine (tank)"><code>++re</code></a>
1417+<a class="tooltip" href='/docs/hoon/library/4c/#din-re' title="(Undocumented)"><code>++din:re</code></a>
1418+<a class="tooltip" href='/docs/hoon/library/4c/#fit-re' title="Fit on one line test"><code>++fit:re</code></a>
1419+<a class="tooltip" href='/docs/hoon/library/4c/#ram-re' title="Flatten tank to tape"><code>++ram:re</code></a>
1420+<a class="tooltip" href='/docs/hoon/library/4c/#rig-re' title="Wrap tape in / (tank)"><code>++rig:re</code></a>
1421+<a class="tooltip" href='/docs/hoon/library/4c/#wig-re' title="++win - render tape"><code>++wig:re</code></a>
1422+<a class="tooltip" href='/docs/hoon/library/4c/#win-re' title="Render at indent"><code>++win:re</code></a>
1423+
1424+<a class="tooltip" href='/docs/hoon/library/4c/#shep' title="(Undocumented)"><code>++shep</code></a>
1425+<a class="tooltip" href='/docs/hoon/library/4c/#shop' title="(Undocumented)"><code>++shop</code></a>
1426+<a class="tooltip" href='/docs/hoon/library/4c/#show' title="(Undocumented)"><code>++show</code></a>
1427+
1428+### 4d: parsing (tracing)
1429+
1430+<a class="tooltip" href='/docs/hoon/library/4d/#last' title="Further trace"><code>++last</code></a>
1431+<a class="tooltip" href='/docs/hoon/library/4d/#lust' title="Detect new line"><code>++lust</code></a>
1432+
1433+### 4e: parsing (combinators)
1434+
1435+<a class="tooltip" href='/docs/hoon/library/4e/#bend' title="Conditional composer"><code>++bend</code></a>
1436+<a class="tooltip" href='/docs/hoon/library/4e/#comp' title="Arbitrary compose"><code>++comp</code></a>
1437+<a class="tooltip" href='/docs/hoon/library/4e/#fail' title="Never parse"><code>++fail</code></a>
1438+<a class="tooltip" href='/docs/hoon/library/4e/#glue' title="Skip delimiter"><code>++glue</code></a>
1439+<a class="tooltip" href='/docs/hoon/library/4e/#less' title="Parse unless"><code>++less</code></a>
1440+<a class="tooltip" href='/docs/hoon/library/4e/#pfix' title="Discard first rule"><code>++pfix</code></a>
1441+<a class="tooltip" href='/docs/hoon/library/4e/#plug' title="Parse to tuple"><code>++plug</code></a>
1442+<a class="tooltip" href='/docs/hoon/library/4e/#pose' title="Parse options"><code>++pose</code></a>
1443+<a class="tooltip" href='/docs/hoon/library/4e/#sfix' title="Discard second rule"><code>++sfix</code></a>
1444+<a class="tooltip" href='/docs/hoon/library/4e/#simu' title="First and second"><code>++simu</code></a>
1445+
1446+### 4f: parsing (rule builders)
1447+
1448+<a class="tooltip" href='/docs/hoon/library/4f/#bass' title="Parser modifier (LSB-ordered ++list as atom of ++base)"><code>++bass</code></a>
1449+<a class="tooltip" href='/docs/hoon/library/4f/#boss' title="Parser modifier: LSB"><code>++boss</code></a>
1450+<a class="tooltip" href='/docs/hoon/library/4f/#cold' title="Replace with constant"><code>++cold</code></a>
1451+<a class="tooltip" href='/docs/hoon/library/4f/#cook' title="Apply gate"><code>++cook</code></a>
1452+<a class="tooltip" href='/docs/hoon/library/4f/#easy' title="Always parse"><code>++easy</code></a>
1453+<a class="tooltip" href='/docs/hoon/library/4f/#full' title="Parse to end"><code>++full</code></a>
1454+<a class="tooltip" href='/docs/hoon/library/4f/#funk' title="Add to tape"><code>++funk</code></a>
1455+<a class="tooltip" href='/docs/hoon/library/4f/#here' title="Place-based apply"><code>++here</code></a>
1456+<a class="tooltip" href='/docs/hoon/library/4f/#ifix' title="Infix"><code>++ifix</code></a>
1457+<a class="tooltip" href='/docs/hoon/library/4f/#jest' title="Match a cord"><code>++jest</code></a>
1458+<a class="tooltip" href='/docs/hoon/library/4f/#just' title="Match a single character"><code>++just</code></a>
1459+<a class="tooltip" href='/docs/hoon/library/4f/#knee' title="Recursive parsers"><code>++knee</code></a>
1460+<a class="tooltip" href='/docs/hoon/library/4f/#mask' title="Match character"><code>++mask</code></a>
1461+<a class="tooltip" href='/docs/hoon/library/4f/#more' title="Parse list with delimiter"><code>++more</code></a>
1462+<a class="tooltip" href='/docs/hoon/library/4f/#most' title="Parse list of at least one match"><code>++most</code></a>
1463+<a class="tooltip" href='/docs/hoon/library/4f/#next' title="Consume character"><code>++next</code></a>
1464+<a class="tooltip" href='/docs/hoon/library/4f/#plus' title="List of at least one match"><code>++plus</code></a>
1465+<a class="tooltip" href='/docs/hoon/library/4f/#sear' title="Conditional ++cook"><code>++sear</code></a>
1466+<a class="tooltip" href='/docs/hoon/library/4f/#shim' title="Match character within range"><code>++shim</code></a>
1467+<a class="tooltip" href='/docs/hoon/library/4f/#slug' title="Use gate to parse delimited list"><code>++slug</code></a>
1468+<a class="tooltip" href='/docs/hoon/library/4f/#stag' title="Add label"><code>++stag</code></a>
1469+<a class="tooltip" href='/docs/hoon/library/4f/#star' title="Produce list of matches"><code>++star</code></a>
1470+<a class="tooltip" href='/docs/hoon/library/4f/#stet' title="Add faces to range-parser pairs in list"><code>++stet</code></a>
1471+<a class="tooltip" href='/docs/hoon/library/4f/#stew' title="Switch by first"><code>++stew</code></a>
1472+<a class="tooltip" href='/docs/hoon/library/4f/#stir' title="Parse repeatedly"><code>++stir</code></a>
1473+<a class="tooltip" href='/docs/hoon/library/4f/#stun' title="Parse several times"><code>++stun</code></a>
1474+
1475+### 4g: parsing (outside caller)
1476+
1477+<a class="tooltip" href='/docs/hoon/library/4g/#rash' title="Parse or crash"><code>++rash</code></a>
1478+<a class="tooltip" href='/docs/hoon/library/4g/#rush' title="Parse or null"><code>++rush</code></a>
1479+<a class="tooltip" href='/docs/hoon/library/4g/#rust' title="Parse tape or null"><code>++rust</code></a>
1480+<a class="tooltip" href='/docs/hoon/library/4g/#scan' title="Parse tape or crash"><code>++scan</code></a>
1481+
1482+### 4h: parsing (ascii glyphs)
1483+
1484+<a class="tooltip" href='/docs/hoon/library/4h/#ace' title="Parse space"><code>++ace</code></a>
1485+<a class="tooltip" href='/docs/hoon/library/4h/#bar' title="Parse | (bar)"><code>++bar</code></a>
1486+<a class="tooltip" href='/docs/hoon/library/4h/#bas' title="Parse \ (bas)"><code>++bas</code></a>
1487+<a class="tooltip" href='/docs/hoon/library/4h/#buc' title="Parse $ (buc)"><code>++buc</code></a>
1488+<a class="tooltip" href='/docs/hoon/library/4h/#cab' title="Parse _ (cab)"><code>++cab</code></a>
1489+<a class="tooltip" href='/docs/hoon/library/4h/#cen' title="Parse % (cen)"><code>++cen</code></a>
1490+<a class="tooltip" href='/docs/hoon/library/4h/#col' title="Parse : (col)"><code>++col</code></a>
1491+<a class="tooltip" href='/docs/hoon/library/4h/#com' title="Parse , (comma)"><code>++com</code></a>
1492+<a class="tooltip" href='/docs/hoon/library/4h/#doq' title="Parse double quote"><code>++doq</code></a>
1493+<a class="tooltip" href='/docs/hoon/library/4h/#dot' title="Parse period"><code>++dot</code></a>
1494+<a class="tooltip" href='/docs/hoon/library/4h/#fas' title="Parse / (fas)"><code>++fas</code></a>
1495+<a class="tooltip" href='/docs/hoon/library/4h/#gal' title="Parse < (gal)"><code>++gal</code></a>
1496+<a class="tooltip" href='/docs/hoon/library/4h/#gar' title="Parse > (gar)"><code>++gar</code></a>
1497+<a class="tooltip" href='/docs/hoon/library/4h/#hax' title="Parse # (hax)"><code>++hax</code></a>
1498+<a class="tooltip" href='/docs/hoon/library/4h/#hep' title="Parse - (hep)"><code>++hep</code></a>
1499+<a class="tooltip" href='/docs/hoon/library/4h/#kel' title="Parse { (kel)"><code>++kel</code></a>
1500+<a class="tooltip" href='/docs/hoon/library/4h/#ker' title="Parse } (ker)"><code>++ker</code></a>
1501+<a class="tooltip" href='/docs/hoon/library/4h/#ket' title="Parse ^ (ket)"><code>++ket</code></a>
1502+<a class="tooltip" href='/docs/hoon/library/4h/#lus' title="Parse + (lus)"><code>++lus</code></a>
1503+<a class="tooltip" href='/docs/hoon/library/4h/#pam' title="Parse & (pam)"><code>++pam</code></a>
1504+<a class="tooltip" href='/docs/hoon/library/4h/#pat' title="Parse @ (pat)"><code>++pat</code></a>
1505+<a class="tooltip" href='/docs/hoon/library/4h/#pel' title="Parse ( (pel)"><code>++pel</code></a>
1506+<a class="tooltip" href='/docs/hoon/library/4h/#per' title="Parse ) (per)"><code>++per</code></a>
1507+<a class="tooltip" href='/docs/hoon/library/4h/#sel' title="Parse [ (sel)"><code>++sel</code></a>
1508+<a class="tooltip" href='/docs/hoon/library/4h/#sem' title="Parse ; (sem)"><code>++sem</code></a>
1509+<a class="tooltip" href='/docs/hoon/library/4h/#ser' title="Parse ] (ser)"><code>++ser</code></a>
1510+<a class="tooltip" href='/docs/hoon/library/4h/#sig' title="Parse ~ (sig)"><code>++sig</code></a>
1511+<a class="tooltip" href='/docs/hoon/library/4h/#soq' title="Parse ' (soq)"><code>++soq</code></a>
1512+<a class="tooltip" href='/docs/hoon/library/4h/#tar' title="Parse * (tar)"><code>++tar</code></a>
1513+<a class="tooltip" href='/docs/hoon/library/4h/#tec' title="Parse ` (tec)"><code>++tec</code></a>
1514+<a class="tooltip" href='/docs/hoon/library/4h/#tis' title="Parse = (tis)"><code>++tis</code></a>
1515+<a class="tooltip" href='/docs/hoon/library/4h/#wut' title="Parse ? (wut)"><code>++wut</code></a>
1516+<a class="tooltip" href='/docs/hoon/library/4h/#zap' title="Parse ! (zap)"><code>++zap</code></a>
1517+
1518+### 4i: parsing (useful idioms)
1519+
1520+<a class="tooltip" href='/docs/hoon/library/4i/#alf' title="Parse alphabetic characters"><code>++alf</code></a>
1521+<a class="tooltip" href='/docs/hoon/library/4i/#aln' title="Parse alphanumeric characters"><code>++aln</code></a>
1522+<a class="tooltip" href='/docs/hoon/library/4i/#alp' title="Parse alphanumeric characters and -"><code>++alp</code></a>
1523+<a class="tooltip" href='/docs/hoon/library/4i/#bet' title="Parse hep and lus axis syntax"><code>++bet</code></a>
1524+<a class="tooltip" href='/docs/hoon/library/4i/#bin' title="Binary to atom"><code>++bin</code></a>
1525+<a class="tooltip" href='/docs/hoon/library/4i/#but' title="Parse binary digit"><code>++but</code></a>
1526+<a class="tooltip" href='/docs/hoon/library/4i/#cit' title="Octal digit"><code>++cit</code></a>
1527+<a class="tooltip" href='/docs/hoon/library/4i/#dem' title="Decimal to atom"><code>++dem</code></a>
1528+<a class="tooltip" href='/docs/hoon/library/4i/#dit' title="Decimal digit"><code>++dit</code></a>
1529+<a class="tooltip" href='/docs/hoon/library/4i/#dog' title="Optional gap"><code>++dog</code></a>
1530+<a class="tooltip" href='/docs/hoon/library/4i/#doh' title="@p separator"><code>++doh</code></a>
1531+<a class="tooltip" href='/docs/hoon/library/4i/#dun' title="-- to ~"><code>++dun</code></a>
1532+<a class="tooltip" href='/docs/hoon/library/4i/#duz' title="== to ~"><code>++duz</code></a>
1533+<a class="tooltip" href='/docs/hoon/library/4i/#gah' title="New line or ''"><code>++gah</code></a>
1534+<a class="tooltip" href='/docs/hoon/library/4i/#gap' title="Plural whitespace"><code>++gap</code></a>
1535+<a class="tooltip" href='/docs/hoon/library/4i/#gaq' title="End of line"><code>++gaq</code></a>
1536+<a class="tooltip" href='/docs/hoon/library/4i/#gaw' title="Classic whitespace"><code>++gaw</code></a>
1537+<a class="tooltip" href='/docs/hoon/library/4i/#gay' title="Optional gap"><code>++gay</code></a>
1538+<a class="tooltip" href='/docs/hoon/library/4i/#gon' title="Parse long numbers"><code>++gon</code></a>
1539+<a class="tooltip" href='/docs/hoon/library/4i/#gul' title="Axis syntax < or >"><code>++gul</code></a>
1540+<a class="tooltip" href='/docs/hoon/library/4i/#hex' title="Hexadecimal to atom"><code>++hex</code></a>
1541+<a class="tooltip" href='/docs/hoon/library/4i/#hig' title="Parse single uppercase letter"><code>++hig</code></a>
1542+<a class="tooltip" href='/docs/hoon/library/4i/#hit' title="Parse single hexadecimal digit"><code>++hit</code></a>
1543+<a class="tooltip" href='/docs/hoon/library/4i/#iny' title="Indentation block"><code>++iny</code></a>
1544+<a class="tooltip" href='/docs/hoon/library/4i/#low' title="Parse lowercase letter"><code>++low</code></a>
1545+<a class="tooltip" href='/docs/hoon/library/4i/#mes' title="Parse hexabyte"><code>++mes</code></a>
1546+<a class="tooltip" href='/docs/hoon/library/4i/#nix' title="Parse letters and -"><code>++nix</code></a>
1547+<a class="tooltip" href='/docs/hoon/library/4i/#nud' title="Parse numeric character"><code>++nud</code></a>
1548+<a class="tooltip" href='/docs/hoon/library/4i/#prn' title="Parse any printable character"><code>++prn</code></a>
1549+<a class="tooltip" href='/docs/hoon/library/4i/#qit' title="Parse character to cord atom"><code>++qit</code></a>
1550+<a class="tooltip" href='/docs/hoon/library/4i/#qut' title="Parse cord"><code>++qut</code></a>
1551+<a class="tooltip" href='/docs/hoon/library/4i/#soz' title="Parse triple single-quote"><code>++soz</code></a>
1552+<a class="tooltip" href='/docs/hoon/library/4i/#sym' title="Term"><code>++sym</code></a>
1553+<a class="tooltip" href='/docs/hoon/library/4i/#ven' title="Axis syntax parser"><code>++ven</code></a>
1554+<a class="tooltip" href='/docs/hoon/library/4i/#vit' title="Parse base 64 digit"><code>++vit</code></a>
1555+<a class="tooltip" href='/docs/hoon/library/4i/#vul' title="Comments to null"><code>++vul</code></a>
1556+
1557+### 4j: parsing (bases and base digits)
1558+
1559+<a class="tooltip" href='/docs/hoon/library/4j/#ab' title="Primitive parser engine"><code>++ab</code></a>
1560+<a class="tooltip" href='/docs/hoon/library/4j/#bix-ab' title="Parse hex pair"><code>++bix:ab</code></a>
1561+<a class="tooltip" href='/docs/hoon/library/4j/#hif-ab' title="Parse phonetic pair"><code>++hif:ab</code></a>
1562+<a class="tooltip" href='/docs/hoon/library/4j/#huf-ab' title="Parse two phonetic pairs"><code>++huf:ab</code></a>
1563+<a class="tooltip" href='/docs/hoon/library/4j/#hyf-ab' title="Parse 8 phonetic bytes"><code>++hyf:ab</code></a>
1564+<a class="tooltip" href='/docs/hoon/library/4j/#pev-ab' title="Parse <=5 in base 32"><code>++pev:ab</code></a>
1565+<a class="tooltip" href='/docs/hoon/library/4j/#pew-ab' title="Parse <= 5 in base 64"><code>++pew:ab</code></a>
1566+<a class="tooltip" href='/docs/hoon/library/4j/#piv-ab' title="Parse 5 digits in base 32"><code>++piv:ab</code></a>
1567+<a class="tooltip" href='/docs/hoon/library/4j/#piw-ab' title="Parse 5 digits in base 64"><code>++piw:ab</code></a>
1568+<a class="tooltip" href='/docs/hoon/library/4j/#qeb-ab' title="Parse <=4 binary digits"><code>++qeb:ab</code></a>
1569+<a class="tooltip" href='/docs/hoon/library/4j/#qex-ab' title="Parse <=4 hexadecimal digits"><code>++qex:ab</code></a>
1570+<a class="tooltip" href='/docs/hoon/library/4j/#qib-ab' title="Parse 4 binary digits"><code>++qib:ab</code></a>
1571+<a class="tooltip" href='/docs/hoon/library/4j/#qix-ab' title="Parse 4 hexadecimal digits"><code>++qix:ab</code></a>
1572+<a class="tooltip" href='/docs/hoon/library/4j/#seb-ab' title="Parse 1"><code>++seb:ab</code></a>
1573+<a class="tooltip" href='/docs/hoon/library/4j/#sed-ab' title="Parse non-zero decimal digit"><code>++sed:ab</code></a>
1574+<a class="tooltip" href='/docs/hoon/library/4j/#sev-ab' title="Parse non-zero base 32 digit"><code>++sev:ab</code></a>
1575+<a class="tooltip" href='/docs/hoon/library/4j/#sew-ab' title="Parse non-zero base 64 digit"><code>++sew:ab</code></a>
1576+<a class="tooltip" href='/docs/hoon/library/4j/#sex-ab' title="Parse nonzero hexadecimal digit"><code>++sex:ab</code></a>
1577+<a class="tooltip" href='/docs/hoon/library/4j/#sib-ab' title="Parse binary digit"><code>++sib:ab</code></a>
1578+<a class="tooltip" href='/docs/hoon/library/4j/#sid-ab' title="Parse decimal digit"><code>++sid:ab</code></a>
1579+<a class="tooltip" href='/docs/hoon/library/4j/#siv-ab' title="Parse a base 32 digit"><code>++siv:ab</code></a>
1580+<a class="tooltip" href='/docs/hoon/library/4j/#siw-ab' title="Parse a base 64 digit"><code>++siw:ab</code></a>
1581+<a class="tooltip" href='/docs/hoon/library/4j/#six-ab' title="Parse a hexadecimal digit"><code>++six:ab</code></a>
1582+<a class="tooltip" href='/docs/hoon/library/4j/#sov-ab' title="Parse base 32 letter"><code>++sov:ab</code></a>
1583+<a class="tooltip" href='/docs/hoon/library/4j/#sow-ab' title="Parse base 64 letter/symbol"><code>++sow:ab</code></a>
1584+<a class="tooltip" href='/docs/hoon/library/4j/#sox-ab' title="Parse hexadecimal letter"><code>++sox:ab</code></a>
1585+<a class="tooltip" href='/docs/hoon/library/4j/#ted-ab' title="Parse decimal number with <= 3 digits"><code>++ted:ab</code></a>
1586+<a class="tooltip" href='/docs/hoon/library/4j/#tid-ab' title="Parse 3 decimal digits"><code>++tid:ab</code></a>
1587+<a class="tooltip" href='/docs/hoon/library/4j/#til-ab' title="Parse 3 lowercase letters"><code>++til:ab</code></a>
1588+<a class="tooltip" href='/docs/hoon/library/4j/#tip-ab' title="Leading phonetic byte"><code>++tip:ab</code></a>
1589+<a class="tooltip" href='/docs/hoon/library/4j/#tiq-ab' title="Trailing phonetic syllable"><code>++tiq:ab</code></a>
1590+<a class="tooltip" href='/docs/hoon/library/4j/#urs-ab' title="Parse span characters"><code>++urs:ab</code></a>
1591+<a class="tooltip" href='/docs/hoon/library/4j/#urt-ab' title="Parse non-_ span"><code>++urt:ab</code></a>
1592+<a class="tooltip" href='/docs/hoon/library/4j/#voy-ab' title="Parse bas, soq, or bix"><code>++voy:ab</code></a>
1593+
1594+<a class="tooltip" href='/docs/hoon/library/4j/#ag' title="Top-level atom parser engine"><code>++ag</code></a>
1595+<a class="tooltip" href='/docs/hoon/library/4j/#ape-ag' title="Parse 0 or rule"><code>++ape:ag</code></a>
1596+<a class="tooltip" href='/docs/hoon/library/4j/#bay-ag' title="Parses binary number"><code>++bay:ag</code></a>
1597+<a class="tooltip" href='/docs/hoon/library/4j/#bip-ag' title="Parse IPv6"><code>++bip:ag</code></a>
1598+<a class="tooltip" href='/docs/hoon/library/4j/#dem-ag' title="Parse decmal with dots"><code>++dem:ag</code></a>
1599+<a class="tooltip" href='/docs/hoon/library/4j/#dim-ag' title="Parse decimal number"><code>++dim:ag</code></a>
1600+<a class="tooltip" href='/docs/hoon/library/4j/#dum-ag' title="Parse decimal with leading zero"><code>++dum:ag</code></a>
1601+<a class="tooltip" href='/docs/hoon/library/4j/#fed-ag' title="Parse @p"><code>++fed:ag</code></a>
1602+<a class="tooltip" href='/docs/hoon/library/4j/#hex-ag' title="Parse hexadecimal number"><code>++hex:ag</code></a>
1603+<a class="tooltip" href='/docs/hoon/library/4j/#lip-ag' title="Parse IPv4 address"><code>++lip:ag</code></a>
1604+<a class="tooltip" href='/docs/hoon/library/4j/#viz-ag' title="Parse base 32 digit with dot separators"><code>++viz:ag</code></a>
1605+<a class="tooltip" href='/docs/hoon/library/4j/#vum-ag' title="Parse base 32 string"><code>++vum:ag</code></a>
1606+<a class="tooltip" href='/docs/hoon/library/4j/#wiz-ag' title="Parse base 64 number"><code>++wiz:ag</code></a>
1607+
1608+<a class="tooltip" href='/docs/hoon/library/4j/#mu' title="Core used to scramble 16-bit atoms"><code>++mu</code></a>
1609+<a class="tooltip" href='/docs/hoon/library/4j/#zag-mu' title="Add bottom into top"><code>++zag:mu</code></a>
1610+<a class="tooltip" href='/docs/hoon/library/4j/#zig-mu' title="Subtract bottom from top"><code>++zig:mu</code></a>
1611+<a class="tooltip" href='/docs/hoon/library/4j/#zug-mu' title="Concatenate into atom"><code>++zug:mu</code></a>
1612+
1613+<a class="tooltip" href='/docs/hoon/library/4j/#ne' title="Digit rendering engine"><code>++ne</code></a>
1614+<a class="tooltip" href='/docs/hoon/library/4j/#d-ne' title="Render decimal"><code>++d:ne</code></a>
1615+<a class="tooltip" href='/docs/hoon/library/4j/#v-ne' title="Render base 32"><code>++v:ne</code></a>
1616+<a class="tooltip" href='/docs/hoon/library/4j/#w-ne' title="Render base 64 digit"><code>++w:ne</code></a>
1617+<a class="tooltip" href='/docs/hoon/library/4j/#x-ne' title="Render hexadecimal digit as atom of ASCII byte value"><code>++x:ne</code></a>
1618+
1619+### 4k: parsing (atom printing)
1620+
1621+<a class="tooltip" href='/docs/hoon/library/4k/#co' title="Literal rendering engine"><code>++co</code></a>
1622+<a class="tooltip" href='/docs/hoon/library/4k/#rear-co' title="Prepend and render atom as tape"><code>++rear:co</code></a>
1623+<a class="tooltip" href='/docs/hoon/library/4k/#rend-co' title="Render coin lot as tape"><code>++rend:co</code></a>
1624+<a class="tooltip" href='/docs/hoon/library/4k/#rent-co' title="Render coin lot as span"><code>++rent:co</code></a>
1625+
1626+### 4l: parsing (atom parsing)
1627+
1628+<a class="tooltip" href='/docs/hoon/library/4l/#so' title="Coin parser engine"><code>++so</code></a>
1629+<a class="tooltip" href='/docs/hoon/library/4l/#bisk-so' title="Parse odor-atom pair"><code>++bisk:so</code></a>
1630+<a class="tooltip" href='/docs/hoon/library/4l/#crub-so' title="Parse @da, @dr, @p, @t"><code>++crub:so</code></a>
1631+<a class="tooltip" href='/docs/hoon/library/4l/#nuck-so' title="Top-level coin parser"><code>++nuck:so</code></a>
1632+<a class="tooltip" href='/docs/hoon/library/4l/#nusk-so' title="Parse coin literal with escapes"><code>++nusk:so</code></a>
1633+<a class="tooltip" href='/docs/hoon/library/4l/#perd-so' title="Parses dime/tiple without standard prefixes"><code>++perd:so</code></a>
1634+<a class="tooltip" href='/docs/hoon/library/4l/#royl-so' title="Parse dime float"><code>++royl:so</code></a>
1635+<a class="tooltip" href='/docs/hoon/library/4l/#royl-cell-so' title="(Undocumented)"><code>++royl-cell:so</code></a>
1636+<a class="tooltip" href='/docs/hoon/library/4l/#tash-so' title="Parse signed dime"><code>++tash:so</code></a>
1637+<a class="tooltip" href='/docs/hoon/library/4l/#twid-so' title="Parse coins without ~ prefix"><code>++twid:so</code></a>
1638+<a class="tooltip" href='/docs/hoon/library/4l/#zust-so' title="Parse prefixed dimes from IP, loobean, or floating point"><code>++zust:so</code></a>
1639+
1640+### 4m: parsing (formatting functions)
1641+
1642+<a class="tooltip" href='/docs/hoon/library/4m/#scot' title="Render dime as cord"><code>++scot</code></a>
1643+<a class="tooltip" href='/docs/hoon/library/4m/#scow' title="Render dime as tape"><code>++scow</code></a>
1644+<a class="tooltip" href='/docs/hoon/library/4m/#slat' title="Curried slaw"><code>++slat</code></a>
1645+<a class="tooltip" href='/docs/hoon/library/4m/#slav' title="Demand: parse cord with input odor"><code>++slav</code></a>
1646+<a class="tooltip" href='/docs/hoon/library/4m/#slaw' title="Parse cord to input odor"><code>++slaw</code></a>
1647+<a class="tooltip" href='/docs/hoon/library/4m/#slay' title="Parse cord to coin"><code>++slay</code></a>
1648+<a class="tooltip" href='/docs/hoon/library/4m/#smyt' title="Render path as tank"><code>++smyt</code></a>
1649+<a class="tooltip" href='/docs/hoon/library/4m/#spat' title="Render path as cord"><code>++spat</code></a>
1650+<a class="tooltip" href='/docs/hoon/library/4m/#spud' title="Render path as tape"><code>++spud</code></a>
1651+<a class="tooltip" href='/docs/hoon/library/4m/#stab' title="Parse cord to path"><code>++stab</code></a>
1652+
1653+### 4n: parsing (virtualization)
1654+
1655+<a class="tooltip" href='/docs/hoon/library/4n/#mack' title="Nock subject to unit"><code>++mack</code></a>
1656+<a class="tooltip" href='/docs/hoon/library/4n/#mink' title="Mock (virtual Nock) interpreter"><code>++mink</code></a>
1657+<a class="tooltip" href='/docs/hoon/library/4n/#mock' title="Compute formula on subject with hint"><code>++mock</code></a>
1658+<a class="tooltip" href='/docs/hoon/library/4n/#mong' title="Slam gate with sample"><code>++mong</code></a>
1659+<a class="tooltip" href='/docs/hoon/library/4n/#mook' title="Intelligently render crash annotation"><code>++mook</code></a>
1660+<a class="tooltip" href='/docs/hoon/library/4n/#mule' title="Typed virtual"><code>++mule</code></a>
1661+<a class="tooltip" href='/docs/hoon/library/4n/#mute' title="Untyped virtual"><code>++mute</code></a>
1662+
1663+### 4o: parsing (molds)
1664+
1665+<a class="tooltip" href='/docs/hoon/library/4o/#abel' title="Compiler alias"><code>++abel</code></a>
1666+<a class="tooltip" href='/docs/hoon/library/4o/#aura' title="'Type' of atom"><code>++aura</code></a>
1667+<a class="tooltip" href='/docs/hoon/library/4o/#axis' title="Nock axis"><code>++axis</code></a>
1668+<a class="tooltip" href='/docs/hoon/library/4o/#base' title="Base type"><code>++base</code></a>
1669+<a class="tooltip" href='/docs/hoon/library/4o/#bean' title="Boolean"><code>++bean</code></a>
1670+<a class="tooltip" href='/docs/hoon/library/4o/#beer' title="Tape builder"><code>++beer</code></a>
1671+<a class="tooltip" href='/docs/hoon/library/4o/#beet' title="XML interpolation cases"><code>++beet</code></a>
1672+<a class="tooltip" href='/docs/hoon/library/4o/#chum' title="Jet hint information"><code>++chum</code></a>
1673+<a class="tooltip" href='/docs/hoon/library/4o/#coil' title="Tuple of core information"><code>++coil</code></a>
1674+<a class="tooltip" href='/docs/hoon/library/4o/#foot' title="Cases of arms by variance model"><code>++foot</code></a>
1675+<a class="tooltip" href='/docs/hoon/library/4o/#limb' title="Reference into subject by name/axis"><code>++limb</code></a>
1676+<a class="tooltip" href='/docs/hoon/library/4o/#line' title="(Undocumented)"><code>++line</code></a>
1677+<a class="tooltip" href='/docs/hoon/library/4o/#metl' title="(Undocumented)"><code>++metl</code></a>
1678+<a class="tooltip" href='/docs/hoon/library/4o/#nock' title="Virtual machine (see Nock)"><code>++nock</code></a>
1679+<a class="tooltip" href='/docs/hoon/library/4o/#noun' title="(Undocumented)"><code>++noun</code></a>
1680+<a class="tooltip" href='/docs/hoon/library/4o/#null' title="(Undocumented)"><code>++null</code></a>
1681+<a class="tooltip" href='/docs/hoon/library/4o/#port' title="(Undocumented)"><code>++port</code></a>
1682+<a class="tooltip" href='/docs/hoon/library/4o/#span' title="ASCII atom"><code>++span</code></a>
1683+<a class="tooltip" href='/docs/hoon/library/4o/#tiki' title="(Undocumented)"><code>++tiki</code></a>
1684+<a class="tooltip" href='/docs/hoon/library/4o/#toga' title="Tree of faces"><code>++toga</code></a>
1685+<a class="tooltip" href='/docs/hoon/library/4o/#tone'><code>++tone</code></a>
1686+<a class="tooltip" href='/docs/hoon/library/4o/#tuna' title="XML template tree"><code>++tuna</code></a>
1687+<a class="tooltip" href='/docs/hoon/library/4o/#tusk' title="List of expressions"><code>++tusk</code></a>
1688+<a class="tooltip" href='/docs/hoon/library/4o/#tyke' title="List of 'maybe' hoons"><code>++tyke</code></a>
1689+<a class="tooltip" href='/docs/hoon/library/4o/#typo' title="Pointer for ++type"><code>++typo</code></a>
1690+<a class="tooltip" href='/docs/hoon/library/4o/#tyre' title="List, term hoon"><code>++tyre</code></a>
1691+<a class="tooltip" href='/docs/hoon/library/4o/#vase' title="Typed data"><code>++vase</code></a>
1692+<a class="tooltip" href='/docs/hoon/library/4o/#vise' title="Convert during reboot"><code>++vise</code></a>
1693+<a class="tooltip" href='/docs/hoon/library/4o/#wing' title="Address in subject"><code>++wing</code></a>
1694+
1695+### 5a: compiler utilities
1696+
1697+<a class="tooltip" href='/docs/hoon/library/5a/'>_(To be documented)_</a>
1698+
1699+### 5b: macro expansion
1700+
1701+<a class="tooltip" href='/docs/hoon/library/5b/'>_(To be documented)_</a>
1702+
1703+### 5c: compiler backend and prettyprinter
1704+
1705+<a class="tooltip" href='/docs/hoon/library/5c/'>_(To be documented)_</a>
1706+
1707+### 5d: parser
1708+
1709+<a class="tooltip" href='/docs/hoon/library/5d/'>_(To be documented)_</a>
1710+
1711+### 5e: caching compiler
1712+
1713+<a class="tooltip" href='/docs/hoon/library/5e/'>_(To be documented)_</a>
1714+
1715+### 5f: molds and mold builders
1716+
1717+<a class="tooltip" href='/docs/hoon/library/5f/#mane'><code>++mane</code></a>
1718+<a class="tooltip" href='/docs/hoon/library/5f/#manx'><code>++manx</code></a>
1719+<a class="tooltip" href='/docs/hoon/library/5f/#marl'><code>++marl</code></a>
1720+<a class="tooltip" href='/docs/hoon/library/5f/#mars'><code>++mars</code></a>
1721+<a class="tooltip" href='/docs/hoon/library/5f/#mart'><code>++mart</code></a>
1722+<a class="tooltip" href='/docs/hoon/library/5f/#marx'><code>++marx</code></a>
1723+<a class="tooltip" href='/docs/hoon/library/5f/#pass'><code>++pass</code></a>
1724+<a class="tooltip" href='/docs/hoon/library/5f/#ring'><code>++ring</code></a>
1725+<a class="tooltip" href='/docs/hoon/library/5f/#time'><code>++time</code></a>
1726+
1727+### 5g: profiling support
1728+
1729+<a class="tooltip" href='/docs/hoon/library/5g/'>_(To be documented)_</a>