on master help sign in
Merge pull request #648 from urbit/mp-urbitorg-next

Migrate urbit.org information architecture, language syntax markup

commitbe21dedc95cd1381e625ace7d09d2f04a86329ca authorMatilde Park <matilde@tlon.io> dateWed 2 Oct 2019, 21:06 (7 years ago) parent1c74abb06a1d75
162 files changed+3407−4371
.gitmodules+2−2 _index.md+4 learn/arvo/_index.md → arvo/_index.md+9−9 learn/arvo/ames.md → arvo/ames.md+81−81 learn/arvo/behn.md → arvo/behn.md learn/arvo/clay.md → arvo/clay.md+92−92 learn/arvo/dill.md → arvo/dill.md learn/arvo/eyre.md → arvo/eyre.md+1−1 learn/arvo/ford.md → arvo/ford.md+26−26 learn/arvo/gall.md → arvo/gall.md+32−33 reference/arvo-glossary.md → arvo/glossary.md+33−33 learn/arvo/hall.md → arvo/hall.md+43−43 using/sail-and-udon.md → arvo/sail-and-udon.md+3−3 using/ship-troubleshooting.md → arvo/ship-troubleshooting.md+1−1 azimuth/_index.md+5 learn/azimuth.md → azimuth/azimuth.md reference/azimuth-glossary.md → azimuth/glossary.md+3−3 concepts/_index.md−13 concepts/azimuth.md−93 concepts/community-tutorials.md−15 concepts/galaxies-stars-and-planets.md−34 concepts/technical-overview.md−170 getting-started/_index.md−37 getting-started/booting-a-ship.md−108 getting-started/contributing.md−21 getting-started/installing-urbit.md−74 getting-started/using-bridge.md−70 learn/hoon/_index.md → hoon/_index.md+3−3 reference/cheat-sheet.md → hoon/cheat-sheet.md+1−1 reference/hoon-expressions/_index.md → hoon/hoon-expressions/_index.md+5−5 reference/hoon-expressions/advanced.md → hoon/hoon-expressions/advanced.md+2−2 reference/hoon-expressions/basic.md → hoon/hoon-expressions/basic.md+2−2 reference/hoon-expressions/irregular.md → hoon/hoon-expressions/irregular.md+19−19 reference/hoon-expressions/limb/_index.md → hoon/hoon-expressions/limb/_index.md+2−2 reference/hoon-expressions/limb/limb.md → hoon/hoon-expressions/limb/limb.md reference/hoon-expressions/limb/wing.md → hoon/hoon-expressions/limb/wing.md hoon/hoon-expressions/rune/_index.md+71 reference/hoon-expressions/rune/bar.md → hoon/hoon-expressions/rune/bar.md+29−29 reference/hoon-expressions/rune/buc.md → hoon/hoon-expressions/rune/buc.md+5−5 reference/hoon-expressions/rune/cen.md → hoon/hoon-expressions/rune/cen.md+24−24 reference/hoon-expressions/rune/col.md → hoon/hoon-expressions/rune/col.md+8−8 reference/hoon-expressions/rune/constants.md → hoon/hoon-expressions/rune/constants.md reference/hoon-expressions/rune/dot.md → hoon/hoon-expressions/rune/dot.md reference/hoon-expressions/rune/ket.md → hoon/hoon-expressions/rune/ket.md+7−7 reference/hoon-expressions/rune/lus.md → hoon/hoon-expressions/rune/lus.md+4−4 reference/hoon-expressions/rune/mic.md → hoon/hoon-expressions/rune/mic.md+14−14 reference/hoon-expressions/rune/sig.md → hoon/hoon-expressions/rune/sig.md+3−3 reference/hoon-expressions/rune/terminators.md → hoon/hoon-expressions/rune/terminators.md reference/hoon-expressions/rune/tis.md → hoon/hoon-expressions/rune/tis.md+13−13 reference/hoon-expressions/rune/wut.md → hoon/hoon-expressions/rune/wut.md+16−16 reference/hoon-expressions/rune/zap.md → hoon/hoon-expressions/rune/zap.md+2−2 learn/hoon/hoon-tutorial/_index.md → hoon/hoon-tutorial/_index.md+4−2 learn/hoon/hoon-tutorial/ackermann.md → hoon/hoon-tutorial/ackermann.md+1−1 learn/hoon/hoon-tutorial/arms-and-cores.md → hoon/hoon-tutorial/arms-and-cores.md+5−5 learn/hoon/hoon-tutorial/atoms-auras-and-simple-cell-types.md → hoon/hoon-tutorial/atoms-auras-and-simple-cell-types.md+1−1 learn/hoon/hoon-tutorial/bank-account.md → hoon/hoon-tutorial/bank-account.md+6−6 learn/hoon/hoon-tutorial/caesar.md → hoon/hoon-tutorial/caesar.md+9−9 learn/hoon/hoon-tutorial/conditionals.md → hoon/hoon-tutorial/conditionals.md+6−6 learn/hoon/hoon-tutorial/doors.md → hoon/hoon-tutorial/doors.md+3−3 learn/hoon/hoon-tutorial/egg-timer.md → hoon/hoon-tutorial/egg-timer.md+6−6 learn/hoon/hoon-tutorial/fibonacci.md → hoon/hoon-tutorial/fibonacci.md+6−6 learn/hoon/hoon-tutorial/gall.md → hoon/hoon-tutorial/gall.md+2−2 learn/hoon/hoon-tutorial/gates.md → hoon/hoon-tutorial/gates.md learn/hoon/hoon-tutorial/generators.md → hoon/hoon-tutorial/generators.md+28−28 learn/hoon/hoon-tutorial/hoon-syntax.md → hoon/hoon-tutorial/hoon-syntax.md+10−10 learn/hoon/hoon-tutorial/iron-polymorphism.md → hoon/hoon-tutorial/iron-polymorphism.md+6−6 learn/hoon/hoon-tutorial/lead-polymorphism.md → hoon/hoon-tutorial/lead-polymorphism.md+7−7 learn/hoon/hoon-tutorial/libraries.md → hoon/hoon-tutorial/libraries.md+7−7 learn/hoon/hoon-tutorial/list-of-numbers.md → hoon/hoon-tutorial/list-of-numbers.md+8−8 learn/hoon/hoon-tutorial/lists.md → hoon/hoon-tutorial/lists.md+3−3 learn/hoon/hoon-tutorial/molds.md → hoon/hoon-tutorial/molds.md+6−6 learn/hoon/hoon-tutorial/nouns.md → hoon/hoon-tutorial/nouns.md learn/hoon/hoon-tutorial/recursion.md → hoon/hoon-tutorial/recursion.md+4−4 learn/hoon/hoon-tutorial/setup.md → hoon/hoon-tutorial/setup.md+4−4 learn/hoon/hoon-tutorial/structures-and-complex-types.md → hoon/hoon-tutorial/structures-and-complex-types.md+1−1 learn/hoon/hoon-tutorial/the-subject-and-its-legs.md → hoon/hoon-tutorial/the-subject-and-its-legs.md learn/hoon/hoon-tutorial/trees-sets-and-maps.md → hoon/hoon-tutorial/trees-sets-and-maps.md+2−2 learn/hoon/hoon-tutorial/type-checking-and-type-inference.md → hoon/hoon-tutorial/type-checking-and-type-inference.md+9−7 learn/hoon/hoon-tutorial/type-polymorphism.md → hoon/hoon-tutorial/type-polymorphism.md+3−4 reference/library/1a.md → hoon/library/1a.md+13−13 reference/library/1b.md → hoon/library/1b.md+4−4 reference/library/1c.md → hoon/library/1c.md+13−13 reference/library/2a.md → hoon/library/2a.md+11−11 reference/library/2b.md → hoon/library/2b.md+30−30 reference/library/2c.md → hoon/library/2c.md+37−37 reference/library/2d.md → hoon/library/2d.md+6−6 reference/library/2e.md → hoon/library/2e.md+6−6 reference/library/2f.md → hoon/library/2f.md+10−10 reference/library/2g.md → hoon/library/2g.md+2−2 reference/library/2h.md → hoon/library/2h.md+19−19 reference/library/2i.md → hoon/library/2i.md+25−25 reference/library/2j.md → hoon/library/2j.md+8−8 reference/library/2k.md → hoon/library/2k.md+10−10 reference/library/2l.md → hoon/library/2l.md+3−3 reference/library/2m.md → hoon/library/2m.md+12−12 reference/library/2n.md → hoon/library/2n.md+12−12 reference/library/2o.md → hoon/library/2o.md+10−10 reference/library/2p.md → hoon/library/2p.md+4−4 reference/library/2q.md → hoon/library/2q.md+13−13 reference/library/3a.md → hoon/library/3a.md+22−22 reference/library/3b.md → hoon/library/3b.md+180−180 reference/library/3c.md → hoon/library/3c.md+18−18 reference/library/3d.md → hoon/library/3d.md+17−17 reference/library/3e.md → hoon/library/3e.md reference/library/3f.md → hoon/library/3f.md+20−20 reference/library/3g.md → hoon/library/3g.md+17−17 reference/library/4a.md → hoon/library/4a.md+5−5 reference/library/4b.md → hoon/library/4b.md+32−32 reference/library/4c.md → hoon/library/4c.md+8−8 reference/library/4d.md → hoon/library/4d.md+2−2 reference/library/4e.md → hoon/library/4e.md+10−10 reference/library/4f.md → hoon/library/4f.md+26−26 reference/library/4g.md → hoon/library/4g.md+4−4 reference/library/4h.md → hoon/library/4h.md+34−34 reference/library/4i.md → hoon/library/4i.md+37−37 reference/library/4j.md → hoon/library/4j.md+56−56 reference/library/4k.md → hoon/library/4k.md+4−4 reference/library/4l.md → hoon/library/4l.md+11−11 reference/library/4m.md → hoon/library/4m.md+10−10 reference/library/4n.md → hoon/library/4n.md+7−7 reference/library/4o.md → hoon/library/4o.md+30−30 reference/library/5a.md → hoon/library/5a.md reference/library/5b.md → hoon/library/5b.md reference/library/5c.md → hoon/library/5c.md reference/library/5d.md → hoon/library/5d.md reference/library/5e.md → hoon/library/5e.md reference/library/5f.md → hoon/library/5f.md+9−9 reference/library/5g.md → hoon/library/5g.md reference/library/_index.md → hoon/library/_index.md hoon/library/table-of-contents.md+1729 reference/library/zuse.md → hoon/library/zuse.md learn/hoon/style.md → hoon/style.md+21−21 reference/hoon-errors.md → hoon/troubleshooting.md+14−14 hoon/workbook/_index.md+16 learn/hoon/workbook/bomb.md → hoon/workbook/bomb.md+2−2 learn/hoon/workbook/digits.md → hoon/workbook/digits.md+8−8 learn/hoon/workbook/eightball.md → hoon/workbook/eightball.md+8−8 learn/hoon/workbook/traffic-light.md → hoon/workbook/traffic-light.md+10−10 learn/_index.md−27 learn/hoon/workbook/_index.md−16 learn/nock/_index.md → nock/_index.md+4−4 learn/nock/definition.md → nock/definition.md+2 learn/nock/example.md → nock/example.md+1−1 learn/nock/explanation.md → nock/explanation.md learn/nock/implementations.md → nock/implementations.md+8−8 reference/_index.md−25 reference/hoon-expressions/rune/_index.md−71 using/_index.md−18 using/admin.md−213 using/arvo-network-dns.md−52 using/creating-a-comet.md−29 using/creating-a-development-ship.md−69 using/filesystem.md−471 using/messaging.md−680 using/operating-a-star.md−49 using/shell.md−440 learn/vere/_index.md → vere/_index.md+5−5 learn/vere/api.md → vere/api.md+18−18 learn/vere/c.md → vere/c.md+3−3 learn/vere/jetting.md → vere/jetting.md+31−31 learn/vere/nouns.md → vere/nouns.md+6−6 learn/vere/runtime.md → vere/runtime.md+2
.gitmodules+2−2
@@ -1,3 +1,3 @@
1−[submodule "docs/learn/hoon/workbook"]
2− path = docs/learn/hoon/workbook
1+[submodule "docs/hoon/workbook"]
2+ path = docs/hoon/workbook
33 url = git@github.com:urbit/hoon-workbook.git
_index.md+4
@@ -3,3 +3,7 @@ title = "Docs"
33template = "sections/docs.html"
44+++
55Welcome 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](/install)
8+- [Operator's Manual](/operations)
9+- [Developer's Guide](/develop)
learn/arvo/_index.md → arvo/_index.mdrenamed+9−9
@@ -4,37 +4,37 @@ weight = 1
44sort_by = "weight"
55template = "sections/docs/chapters.html"
66+++
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_:
88
9−## [Ames](@/docs/learn/arvo/ames.md)
9+## [Ames](@/docs/arvo/ames.md)
1010
1111Ames 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.
1212
13−## [Behn](@/docs/learn/arvo/behn.md)
13+## [Behn](@/docs/arvo/behn.md)
1414
1515Behn is our timer. It allows vanes and applications to set and timer events, which are managed in a simple priority queue.
1616
17−## [Clay](@/docs/learn/arvo/clay.md)
17+## [Clay](@/docs/arvo/clay.md)
1818
1919Clay is our filesystem and revision-control system.
2020
21−## [Dill](@/docs/learn/arvo/dill.md)
21+## [Dill](@/docs/arvo/dill.md)
2222
2323Dill is our terminal driver. Unix sends keyboard events to dill from the terminal, and dill produces terminal output.
2424
25−## [Eyre](@/docs/learn/arvo/eyre.md)
25+## [Eyre](@/docs/arvo/eyre.md)
2626
2727Eyre is our HTTP server. Unix sends HTTP messages to `%eyre`, and `%eyre` produces HTTP messages in response.
2828
29−## [Ford](@/docs/learn/arvo/ford.md)
29+## [Ford](@/docs/arvo/ford.md)
3030
3131Ford is our build system. It handles resources and publishing.
3232
33−## [Gall](@/docs/learn/arvo/gall.md)
33+## [Gall](@/docs/arvo/gall.md)
3434
3535Gall is the vane for controlling userspace apps.
3636
37−### [Hall](@/docs/learn/arvo/hall.md)
37+### [Hall](@/docs/arvo/hall.md)
3838
3939Hall isn't a vane, but an important Gall app that functions as the Urbit messaging protocol.
4040
learn/arvo/ames.md → arvo/ames.mdrenamed+81−81
@@ -66,7 +66,7 @@ the path is the same for both.
6666When an app (or a vane) wishes to send a packet to another ship, it must
6767send a `%wont` card:
6868
69−```
69+```hoon
7070 [%wont p=sock q=path r=*] :: e2e send message
7171```
7272
@@ -96,7 +96,7 @@ But enough about the interface. Grepping in ames.hoon for `%wont`, we
9696find that it appears in `++knob`. We see that we go
9797directly into `++wise:am`.
9898
99−```
99+```hoon
100100 ++ wise :: wise:am
101101 |= [soq=sock hen=duct cha=path val=* ete=?] :: send a statement
102102 ^- [p=(list boon) q=fort]
@@ -119,7 +119,7 @@ The code predates the widespread usage of that name.
119119The interesting part, then, is in `++wool:ho:um:am`. Let's look at the
120120code.
121121
122−```
122+```hoon
123123 ++ wool :: wool:ho:um:am
124124 |= [hen=duct cha=path val=* ete=?] :: send a statement
125125 ^+ +>
@@ -164,7 +164,7 @@ Finally, we call `++wind:ho:um:am` with the `++soup` of the path and
164164message number and the `++meal:ames` of the payload itself. For end-to-end
165165acknowledged messages, we use `%bund`.
166166
167−```
167+```hoon
168168 [%bund p=life q=path r=@ud s=*] :: e2e message
169169```
170170
@@ -173,7 +173,7 @@ is for.
173173
174174Following the trail a little further, we go to `++wind:ho:um:am`.
175175
176−```
176+```hoon
177177 ++ wind :: wind:ho:um:am
178178 |= [gom=soup ham=meal]
179179 :: ~& [%wind her gom]
@@ -192,7 +192,7 @@ gate is over. We'll go in order here.
192192`++zuul:lax:as:go` is the what converts a `++meal:ames` into a list of
193193actual, 1KB packets.
194194
195−```
195+```hoon
196196 ++ zuul :: zuul:lax:as:go
197197 |= [now=@da ham=meal] :: encode message
198198 ^- [p=(list rock) q=_+>]
@@ -208,7 +208,7 @@ three arms. `++wasp` encodes the meal into an atom with no encryption.
208208`++wasp`). `++weft` takes the result of `++wisp` and splits it into
209209actual packets.
210210
211−```
211+```hoon
212212 ++ wasp :: null security
213213 ^-([p=skin q=@] [%none (jam ham)])
214214```
@@ -218,7 +218,7 @@ meaning no encryption.
218218
219219Since `++wisp` is a little long, we'll go through it line-by-line.
220220
221−```
221+```hoon
222222 ++ wisp :: generate message
223223 ^- [[p=skin q=@] q=_..wisp]
224224```
@@ -226,7 +226,7 @@ Since `++wisp` is a little long, we'll go through it line-by-line.
226226`++wisp` produces a pair of a `skin` and an atom, which is the meal
227227encoded as a single atom and possibly encrypted.
228228
229−```
229+```hoon
230230 ?: =(%carp -.ham)
231231 [wasp ..wisp]
232232```
@@ -236,7 +236,7 @@ A `%carp` meal is a partial meal, used when a message is more than 1KB.
236236Since the entire message is already encrypted, we don't need to encrypt
237237each packet individually again.
238238
239−```
239+```hoon
240240 ?: !=(~ yed.caq.dur)
241241 ?> ?=(^ yed.caq.dur)
242242 :_ ..wisp
@@ -249,7 +249,7 @@ each packet individually again.
249249If we have a symmetric key set up with this neighbor, then we simply use
250250it. The skin `%fast` is used to indicate a symmetric key.
251251
252−```
252+```hoon
253253 ?: &(=(~ lew.wod.dur) |(=(%back -.ham) =(%buck -.ham)))
254254 [wasp ..wisp]
255255```
@@ -259,7 +259,7 @@ can seal the message so that only they may read it. If what we're
259259sending is an acknowledgment, then we go ahead and just send it in the
260260clear.
261261
262−```
262+```hoon
263263 =^ tuy +>.$
264264 ?:(=(~ lew.wod.dur) [*code +>.$] (griz now))
265265```
@@ -268,7 +268,7 @@ If we don't have our neighbor's will, then we "encrypt" with a key of 0.
268268If we do have their will, then we generate a new symmetric key that we
269269will propose.
270270
271−```
271+```hoon
272272 :_ ..wisp
273273 =+ yig=sen
274274 =+ bil=law.saf :: XX send whole will
@@ -278,7 +278,7 @@ will propose.
278278`yig` will be the life and engine for our current crypto. `bil` is our
279279will. `hom` is the meal encoded as a single atom.
280280
281−```
281+```hoon
282282 ?: =(~ lew.wod.dur)
283283 :- %open
284284 %^ jam
@@ -291,7 +291,7 @@ If we do not have our neighbor's will, then we send our current life
291291along with our will and the message. The message itself is "signed" with
292292a key of 0.
293293
294−```
294+```hoon
295295 :- %full
296296 =+ cay=cluy
297297 %^ jam
@@ -307,7 +307,7 @@ is sealed with their public key so that only they can read our message.
307307
308308Once we have the message encoded as an atom, `++weft` goes to work.
309309
310−```
310+```hoon
311311 ++ weft :: fragment message
312312 ^- [p=(list rock) q=_+>.$]
313313 =^ gim ..weft wisp
@@ -318,7 +318,7 @@ Once we have the message encoded as an atom, `++weft` goes to work.
318318We're going to produce a list of the packets to send. First, we use the
319319aforementioned `++wisp` to get the message as an atom.
320320
321−```
321+```hoon
322322 =+ wit=(met 13 q.gim)
323323 ?< =(0 wit)
324324```
@@ -326,7 +326,7 @@ aforementioned `++wisp` to get the message as an atom.
326326`wit` is the number of 1KB (2\^13 bit) blocks in the message. We assert
327327that there is at least one block.
328328
329−```
329+```hoon
330330 ?: =(1 wit)
331331 =+ yup=(spit [our her] p.gim q.gim)
332332 [yup ~]
@@ -335,7 +335,7 @@ that there is at least one block.
335335If there is exactly one block, then we just call `++spit` to turn the
336336message into a packet. We'll explain what `++spit` does momentarily.
337337
338−```
338+```hoon
339339 =+ ruv=(rip 13 q.gim)
340340 =+ gom=(shaf %thug q.gim)
341341 =+ inx=0
@@ -345,7 +345,7 @@ If there is more than one block, then we rip it into blocks in `ruv`.
345345`gom` is a hash of the message, used as an id. `inx` is the number of
346346packets we've already made.
347347
348−```
348+```hoon
349349 |- ^- (list rock)
350350 ?~ ruv ~
351351 =+ ^= vie
@@ -359,7 +359,7 @@ packets we've already made.
359359Here we package each block into a packet with `++spit` and produce the
360360list of packets.
361361
362−```
362+```hoon
363363 ++ spit :: cake to packet
364364 |= kec=cake ^- @
365365 =+ wim=(met 3 p.p.kec)
@@ -426,7 +426,7 @@ This concludes our discussion of `++zuul:lax:as:go`. If you recall from
426426`++whap:pu` to update the packet pump and get any packets that can be
427427sent immediately.
428428
429−```
429+```hoon
430430 ++ whap :: whap:pu
431431 |= [now=@da gom=soup wyv=(list rock)] :: send a message
432432 ^- [(list rock) _+>]
@@ -456,7 +456,7 @@ the packet itself.
456456
457457Finally, we harvest the packet pump.
458458
459−```
459+```hoon
460460 ++ harv :: harv:pu
461461 |= now=@da :: harvest queue
462462 ^- [(list rock) _+>]
@@ -480,7 +480,7 @@ we initialize `rub` to nil. `rub` will be the list of packets that are
480480ready to be sent. We then call `++apse` and pass the result to `++abet`.
481481`++apse` decides which packets are ready to be sent.
482482
483−```
483+```hoon
484484 ++ apse
485485 ^+ .
486486 ?~ puq .
@@ -515,7 +515,7 @@ send; (3) increment `nif`, the number of live packets; (4) set the
515515packet to be live; (5) increment the number of transmissions of the
516516packet; and (6) set the last sent time of the packet to now.
517517
518−```
518+```hoon
519519 ++ left
520520 ?> ?=(^ puq)
521521 ^+(. =+(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.
529529
530530Finally, `++abet` gets called, which resolves the changes.
531531
532−```
532+```hoon
533533 ++ abet
534534 ?~ rub [~ +>.$]
535535 [(flop rub) +>.$(rtn [~ (add rto now)])]
@@ -544,7 +544,7 @@ wait, in the call to `++busk`, the first argument is `xong:diz`. What is
544544this? This, my dear reader, is one more detour, this time into
545545`++xong:lax:as:go`.
546546
547−```
547+```hoon
548548 ++ xong :: xong:lax:as:go
549549 ^- (list ship) :: route unto
550550 =+ [fro=xen too=xeno]
@@ -583,7 +583,7 @@ trying, in order, to find a lane to these.
583583
584584Now, we can finally get to `++busk:ho:um:am`.
585585
586−```
586+```hoon
587587 ++ busk :: busk:ho:um:am
588588 |= [waz=(list ship) pax=(list rock)] :: send packets
589589 %_ +>
@@ -599,7 +599,7 @@ and convert them to `++boon:ames`s with `++wist:lax:as:go`. These boons are
599599placed into `bin`, and they end up getting processed by `++clop` (this
600600happens in `++knob`).
601601
602−```
602+```hoon
603603 ++ wist :: wist:lax:as:go
604604 |= $: now=@da :: route via
605605 waz=(list ,@p)
@@ -666,7 +666,7 @@ of moves. In `++clop`, we see the handling of each specific boon. The
666666one we are interested in is `%ouzo`, since that is the only one we have
667667sent thus far.
668668
669−```
669+```hoon
670670 %ouzo
671671 :: ~& [%send now p.bon `@p`(mug (shaf %flap q.bon))]
672672 :_ fox
@@ -687,7 +687,7 @@ And now we reenter the kernel.
687687The `%hear` task goes straight to `++knob`, just as did the `%wont` task
688688earlier.
689689
690−```
690+```hoon
691691 %hear
692692 (~(gnaw am [now fox]) %good p.kyz q.kyz)
693693```
@@ -701,7 +701,7 @@ event system, the `%hear` event will never be considered to have
701701actually happened, and unix will send a `%hole` task so that we may send
702702a negative acknowledgment.
703703
704−```
704+```hoon
705705 ++ gnaw :: gnaw:am
706706 |= [kay=cape ryn=lane pac=rock] :: process packet
707707 ^- [p=(list boon) q=fort]
@@ -722,7 +722,7 @@ simply ignore the packet entirely. Otherwise, we parse the packet with
722722of the `sock` (pair of sender and receiver), the `skin` (encryption
723723type), and the data.
724724
725−```
725+```hoon
726726 ++ bite :: packet to cake
727727 |= pac=rock ^- cake
728728 =+ [mag=(end 5 1 pac) bod=(rsh 5 1 pac)]
@@ -760,7 +760,7 @@ and a hash of the packet, used as an id.
760760contains a little helper core inside of it, which starts immediately
761761with `++apse`.
762762
763−```
763+```hoon
764764 ++ apse
765765 ^+ +>.$
766766 =+ oub=bust:puz
@@ -795,7 +795,7 @@ first decrypts the message, then calls `++chow:la:ho:um:am` with the
795795resultant meal. We'll go through each of the four cases in turn, but
796796first since each one calls `++bilk:pu`, we'll take a brief detour.
797797
798−```
798+```hoon
799799 ++ bilk :: bilk:pu
800800 |= now=@da :: inbound packet
801801 ^+ +>
@@ -815,7 +815,7 @@ we've just heard a message.
815815
816816Back to `++east`.
817817
818−```
818+```hoon
819819 %none
820820 =. puz (bilk:puz now)
821821 (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
827827want to crash since someone is sending us malformed data. Finally, we
828828send the result to `++chow` for interpretation and handling.
829829
830−```
830+```hoon
831831 %fast
832832 =+ [mag=`hand`(end 7 1 msg) bod=(rsh 7 1 msg)]
833833 =+ dey=(kuch:diz mag)
@@ -849,7 +849,7 @@ message.
849849Otherwise, we call `++bilk` as before to update the packet pump and pass
850850into `++chow` the decrypted data.
851851
852−```
852+```hoon
853853 %full
854854 =+ mex=((hard ,[p=[p=life q=life] q=will r=@]) (cue msg))
855855 =. diz (deng:diz q.mex)
@@ -874,7 +874,7 @@ key from our neighbor's crypto. We register the proposed symmetric key,
874874update the packet pump, and call `++west`, which simply casts the
875875message to a meal and calls `++chow`, reporting any error.
876876
877−```
877+```hoon
878878 %open
879879 =+ mex=((hard ,[p=[~ q=life] q=will r=@]) (cue msg))
880880 =. diz (deng:diz q.mex)
@@ -894,7 +894,7 @@ The rest you have seen. We call `++deng` to extend the will, we verify
894894that their crypto life is what we think it ought to be, we "decrypt" the
895895data, we update the packet pump, and we call `++west` to call `++chow`.
896896
897−```
897+```hoon
898898 ++ chow :: chow:la:ho:um:am
899899 |= fud=meal :: interpret meal
900900 ^+ +>
@@ -912,7 +912,7 @@ we want to do with it. The telos is of any meal to be dined on. We will
912912choose out the cases here that are important to our current
913913investigation.
914914
915−```
915+```hoon
916916 %fore
917917 =+ ^= lyn ^- lane
918918 ?~ q.fud ryn
@@ -932,7 +932,7 @@ resolves. If we're told to forward a packet to ourselves, then we emit a
932932`%mead` boon which simply sends another `%hear` task to ourselves with
933933the data. Otherwise, we try to find a route to the recipient, as before.
934934
935−```
935+```hoon
936936 %carp
937937 =+ zol=(~(get by olz.weg) s.fud)
938938 ?^ zol cock(kay u.zol)
@@ -975,7 +975,7 @@ complete message into `olz.weg`, and call `++golf`, which assembles the
975975message and calls `++chew`, to start the dance again with the complete
976976message.
977977
978−```
978+```hoon
979979 %bund
980980 :: ~& [%bund q.fud r.fud]
981981 ?> =(p:sen:gus p.fud)
@@ -989,7 +989,7 @@ unix rather than a `%hear` card), then we don't even send the data at
989989all. Remember, if a packet fails to process, it's as if it never even
990990arrived, except that we send a negative acknowledgment.
991991
992−```
992+```hoon
993993 ++ deer :: deer:la:ho:um:am
994994 |= [cha=path num=@ud dut=(unit)] :: interpret message
995995 ^+ +>
@@ -1029,7 +1029,7 @@ acknowledgment.
10291029
10301030Otherwise, we're ready for a packet, so we process it.
10311031
1032−```
1032+```hoon
10331033 ++ coat :: coat:ho:um:am
10341034 |= [cha=path rum=race] :: update input race
10351035 ^+ +>
@@ -1064,7 +1064,7 @@ been here before, if you recall, when we handled the `%cake` boon to
10641064send a message. Now, we're handling the `%mulk` boon, which is
10651065unfortunately slightly more complicated.
10661066
1067−```
1067+```hoon
10681068 %mulk
10691069 :: ~& [%mulk p.bon q.bon]
10701070 ?> ?=([@ @ *] q.q.bon)
@@ -1140,7 +1140,7 @@ After this brief interlude, our story resumes in `++knap`, where we
11401140receive responses. In particular, a `%mean` indicates a negative
11411141acknowledgment while a `%nice` indicates a positive acknowledgment.
11421142
1143−```
1143+```hoon
11441144 ?(%mean %nice)
11451145 ?> ?=([@ @ @ *] tea)
11461146 =+ 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
11641164`++knob`, so we call `++rack:am` and send the resulting boons to
11651165`++clop`. Business as usual.
11661166
1167−```
1167+```hoon
11681168 ++ rack :: rack:am
11691169 |= [soq=sock cha=path cop=coop] :: e2e ack
11701170 =+ oh=(ho:(um p.soq) q.soq)
@@ -1178,7 +1178,7 @@ new, though. Well, `++cook` is not actually new, but we delayed the
11781178explanation saying only that it sends an acknowledgment. The time has
11791179come.
11801180
1181−```
1181+```hoon
11821182 ++ cook :: cook:ho:um:am
11831183 |= [cop=coop cha=path ram=(unit ,[ryn=lane dam=flap])]
11841184 ^+ +> :: acknowledgment
@@ -1253,7 +1253,7 @@ The last thing we need to do on this ship is move on to the next packet
12531253in the queue if there is one. If you recall, in `++rack` after the call
12541254to `++cook` there was a call to `++cans:ho:um:am`.
12551255
1256−```
1256+```hoon
12571257 ++ cans :: cans:ho:um:am
12581258 |= cha=path
12591259 =+ rum=(need (~(get by raz.bah) cha))
@@ -1285,7 +1285,7 @@ going over to `++chew`, `++apse`, `++chow`, and eventualy to `++dine`.
12851285We've seen most of the cases in `++dine`, but we haven't yet looked at
12861286the handling of this `%buck` meal.
12871287
1288−```
1288+```hoon
12891289 %buck
12901290 =. +> ?.(=(%full aut) +> cock) :: finish key exch
12911291 +>(..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
13001300wish to see this thing through to the end, it's once more into the
13011301breach.
13021302
1303−```
1303+```hoon
13041304 ++ tock :: tock:ho:um:am
13051305 |= [cop=coop fap=flap cot=@dr] :: e2e ack by hash
13061306 ^+ +>
@@ -1324,7 +1324,7 @@ skip `++bick` for the moment and finish the rest.
13241324
13251325If `++bick` succesfully acks the message, then we call `++done`.
13261326
1327−```
1327+```hoon
13281328 ++ done :: done:ho:um:am
13291329 |= [cha=path num=@ud] :: complete outgoing
13301330 ^- [(unit duct) _+>]
@@ -1357,7 +1357,7 @@ ones have been acknowledged.
13571357We'll look at the processing of the `%cake` boon in `++clop` before we
13581358get back to talking about `++bick`.
13591359
1360−```
1360+```hoon
13611361 %cake
13621362 :_ fox
13631363 :~ [s.bon %give %woot q.p.bon r.bon]
@@ -1374,7 +1374,7 @@ the application. Our job is done.
13741374
13751375Well, except that we skipped `++bick:pu`. Let's go back to that.
13761376
1377−```
1377+```hoon
13781378 ++ bick :: bick:pu
13791379 |= [now=@da fap=flap] :: ack by hash
13801380 ^- [[p=(unit soup) q=(list rock)] _+>]
@@ -1401,7 +1401,7 @@ In `++bock`, there are three arms we haven't seen before: `++bine`,
14011401`+wept`, and `++beet`. We'll describe each of these before we get to
14021402`++bock`. `++bine` looks scariest.
14031403
1404−```
1404+```hoon
14051405 ++ bine :: bine:pu
14061406 |= [now=@da num=@ud] :: apply ack
14071407 ^- [(unit soup) _+>]
@@ -1458,7 +1458,7 @@ message. Otherwise, we simply update `pyz` with the new number of
14581458unacked messages. In either case, we remove the packet from the packet
14591459queue.
14601460
1461−```
1461+```hoon
14621462 ++ wept :: wept:pu
14631463 |= [fip=@ud lap=@ud] :: fip thru lap-1
14641464 =< abet =< apse
@@ -1489,7 +1489,7 @@ mourn too much the passing of these packets, know that they shall soon
14891489rise again. Recall that in `++bick` after the call to `++bock` we call
14901490`++harv`. This will resend the packets that have just been labeled dead.
14911491
1492−```
1492+```hoon
14931493 ++ beet :: beet:pu
14941494 ^+ . :: advance unacked
14951495 =- +(nep ?~(foh nus u.foh))
@@ -1508,7 +1508,7 @@ number of packets sent.
15081508
15091509We can now dive into `++bock`, our last arm.
15101510
1511−```
1511+```hoon
15121512 ++ bock :: bock:pu
15131513 |= [now=@da num=@ud] :: ack by sequence
15141514 ^- [(unit soup) _+>]
@@ -1555,7 +1555,7 @@ involved.
15551555
15561556### `++sufi:ames`, domestic host
15571557
1558−```
1558+```hoon
15591559 ++ sufi :: domestic host
15601560 $: hoy=(list ship) :: hierarchy
15611561 val=wund :: private keys
@@ -1583,7 +1583,7 @@ information about foreign ships. The keys to this map are the neighbors
15831583
15841584### `++wund:ames`, private keys
15851585
1586−```
1586+```hoon
15871587 ++ wund (list ,[p=life q=ring r=acru]) :: mace in action
15881588```
15891589
@@ -1595,7 +1595,7 @@ at the head of the list and can be accessed with `++sen:as:go`.
15951595
15961596### `++ring`, private key
15971597
1598−```
1598+```hoon
15991599 ++ ring ,@ :: private key
16001600```
16011601
@@ -1605,7 +1605,7 @@ key, and the letter identifies which `++acru:ames` to use.
16051605
16061606### `++pass`, public key
16071607
1608−```
1608+```hoon
16091609 ++ pass ,@ :: public key
16101610```
16111611
@@ -1615,7 +1615,7 @@ and the letter identifies which `++acru:ames` to use.
16151615
16161616### `++mace:ames`, private secrets
16171617
1618−```
1618+```hoon
16191619 ++ mace (list ,[p=life q=ring]) :: private secrets
16201620```
16211621
@@ -1624,7 +1624,7 @@ can generate a `++wund:ames` for actual use.
16241624
16251625### `++skin:ames`, encoding stem
16261626
1627−```
1627+```hoon
16281628 ++ skin ?(%none %open %fast %full) :: encoding stem
16291629```
16301630
@@ -1635,7 +1635,7 @@ encrypted messages. See `++acru:ames` for details.
16351635
16361636### `++acru:ames`, asymmetric cryptosuite
16371637
1638−```
1638+```hoon
16391639 ++ acru :: asym cryptosuite
16401640 $_ ^? |% :: opaque object
16411641 ++ as ^? :: asym ops
@@ -1669,7 +1669,7 @@ which is elliptic-curve cryptography.
16691669
16701670#### `++as:acru:ames`, asymmetric operations
16711671
1672−```
1672+```hoon
16731673 ++ as ^? :: asym ops
16741674 |% ++ seal |=([a=pass b=@ c=@] _@) :: encrypt to a
16751675 ++ sign |=([a=@ b=@] _@) :: certify as us
@@ -1706,7 +1706,7 @@ associated with the `++skin:ames` `%full`.
17061706
17071707#### `++de:acru:ames`, `++dy:acru:ames`, and `++en:acru:ames`, symmetric encryption/decryption
17081708
1709−```
1709+```hoon
17101710 ++ de |+([a=@ b=@] *(unit ,@)) :: symmetric de, soft
17111711 ++ dy |+([a=@ b=@] _@) :: symmetric de, hard
17121712 ++ en |+([a=@ b=@] _@) :: symmetric en
@@ -1725,7 +1725,7 @@ semantically equivalent to, `(need (de a b))`.
17251725
17261726#### `++ex:acru:ames`, exporting data
17271727
1728−```
1728+```hoon
17291729 ++ ex ^? :: export
17301730 |% ++ fig _@uvH :: fingerprint
17311731 ++ pac _@uvG :: default passcode
@@ -1747,7 +1747,7 @@ owned by their owners
17471747
17481748#### `++nu:acru:ames`, reconstructors
17491749
1750−```
1750+```hoon
17511751 ++ nu ^? :: reconstructors
17521752 |% ++ pit |=([a=@ b=@] ^?(..nu)) :: from [width seed]
17531753 ++ nol |=(a=@ ^?(..nu)) :: from naked ring
@@ -1769,7 +1769,7 @@ the `++acru:ames`.
17691769
17701770### `++will`, certificate
17711771
1772−```
1772+```hoon
17731773 ++ will (list deed) :: certificate
17741774```
17751775
@@ -1782,7 +1782,7 @@ issued \~tasruc's deed).
17821782
17831783### `++deed`, identity
17841784
1785−```
1785+```hoon
17861786 ++ deed ,[p=@ q=step r=?] :: sig, stage, fake?
17871787```
17881788
@@ -1797,7 +1797,7 @@ networks for development without interfering with the real network.
17971797
17981798### `++step:ames`, identity stage
17991799
1800−```
1800+```hoon
18011801 ++ step ,[p=bray q=gens r=pass] :: identity stage
18021802```
18031803
@@ -1813,7 +1813,7 @@ lives.
18131813
18141814### `++bray:ames`
18151815
1816−```
1816+```hoon
18171817 ++ bray ,[p=life q=(unit life) r=ship s=@da] :: our parent us now
18181818```
18191819
@@ -1821,7 +1821,7 @@ XXX
18211821
18221822### `++gens:ames`, general identity
18231823
1824−```
1824+```hoon
18251825 ++ gens ,[p=lang q=gcos] :: general identity
18261826```
18271827
@@ -1833,7 +1833,7 @@ localized based on this.
18331833
18341834### `++gcos:ames`, identity description
18351835
1836−```
1836+```hoon
18371837 ++ gcos :: id description
18381838 $% [%czar ~] :: 8-bit ship
18391839 [%duke p=what] :: 32-bit ship
@@ -1872,7 +1872,7 @@ This is the underworld of Urbit, where anonymity reigns supreme.
18721872
18731873### `++what:ames`, logical destroyer identity
18741874
1875−```
1875+```hoon
18761876 ++ what :: logical identity
18771877 $% [%anon ~] :: anonymous
18781878 [%lady p=whom] :: female person ()
@@ -1896,7 +1896,7 @@ A `%punk` is a person who is identified only by a handle.
18961896
18971897### `++whom:ames`, real person
18981898
1899−```
1899+```hoon
19001900 ++ whom ,[p=@ud q=govt r=sect s=name] :: year/govt/id
19011901```
19021902
@@ -1913,7 +1913,7 @@ information that could be observed with the briefest of interactions.
19131913
19141914### `++govt:ames`
19151915
1916−```
1916+```hoon
19171917 ++ govt path :: country/postcode
19181918```
19191919
@@ -1921,7 +1921,7 @@ This is the location of the user, usually of the form "country/zip".
19211921
19221922### `++sect:ames`
19231923
1924−```
1924+```hoon
19251925 ++ sect ?(%black %blue %red %orange %white) :: banner
19261926```
19271927
@@ -1929,7 +1929,7 @@ XXX
19291929
19301930### `++name:ames`
19311931
1932−```
1932+```hoon
19331933 ++ name ,[p=@t q=(unit ,@t) r=(unit ,@t) s=@t] :: first mid/nick last
19341934```
19351935
learn/arvo/behn.md → arvo/behn.mdrenamed

The content is the same.

learn/arvo/clay.md → arvo/clay.mdrenamed+92−92
@@ -473,7 +473,7 @@ back when you need to.
473473
474474### `++raft`, formal state
475475
476−```
476+```hoon
477477 ++ raft :: filesystem
478478 $: fat=(map ship room) :: domestic
479479 hoy=(map ship rung) :: foreign
@@ -496,7 +496,7 @@ bookkeeping".
496496
497497#### `++room`, filesystem per domestic ship
498498
499−```
499+```hoon
500500 ++ room :: fs per ship
501501 $: hun=duct :: terminal duct
502502 hez=(unit duct) :: sync duch
@@ -519,7 +519,7 @@ set of desks on this ship, mapped to their data.
519519
520520#### `++desk`, filesystem branch
521521
522−```
522+```hoon
523523 ++ desk ,@tas :: ship desk case spur
524524```
525525
@@ -530,7 +530,7 @@ merged into each other.
530530
531531### `++dojo`, domestic desk state
532532
533−```
533+```hoon
534534 ++ dojo ,[p=cult q=dome] :: domestic desk state
535535```
536536
@@ -540,7 +540,7 @@ data in the desk.
540540
541541#### `++cult`, subscriptions
542542
543−```
543+```hoon
544544 ++ cult (map duct rave) :: subscriptions
545545```
546546
@@ -551,7 +551,7 @@ requested information.
551551
552552#### `++rave:clay`, general subscription request
553553
554−```
554+```hoon
555555 ++ rave :: general request
556556 $% [& p=mood] :: single request
557557 [| p=moat] :: change range
@@ -564,7 +564,7 @@ the desk.
564564
565565### `++rove`, stored general subscription request
566566
567−```
567+```hoon
568568 ++ rove (each mood moot) :: stored request
569569```
570570
@@ -574,7 +574,7 @@ affect the path we're subscribed to.
574574
575575#### `++mood:clay`, single subscription request
576576
577−```
577+```hoon
578578 ++ mood ,[p=care q=case r=path] :: request in desk
579579```
580580
@@ -584,7 +584,7 @@ desired, and `r` specifies the path we are requesting.
584584
585585#### `++moat:clay`, range subscription request
586586
587−```
587+```hoon
588588 ++ moat ,[p=case q=case r=path] :: change range
589589```
590590
@@ -594,7 +594,7 @@ by the path or to any of its children.
594594
595595### `++moot`, stored range subscription request
596596
597−```
597+```hoon
598598 ++ moot ,[p=case q=case r=path s=(map path lobe)] ::
599599```
600600
@@ -605,7 +605,7 @@ the subscription if the data at a new revision is different than it was.
605605
606606### `++care:clay`, clay submode
607607
608−```
608+```hoon
609609 ++ care ?(%u %v %w %x %y %z) :: clay submode
610610```
611611
@@ -630,7 +630,7 @@ if `q:ankh` is null), then this produces null.
630630
631631### `++arch`, shallow filesystem node
632632
633−```
633+```hoon
634634 ++ arch ,[p=@uvI q=(unit ,@uvI) r=(map ,@ta ,~)] :: fundamental node
635635```
636636
@@ -644,7 +644,7 @@ efficient conversion.
644644
645645#### `++case:clay`, specifying a commit
646646
647−```
647+```hoon
648648 ++ case :: ship desk case spur
649649 $% [%da p=@da] :: date
650650 [%tas p=@tas] :: label
@@ -660,7 +660,7 @@ referenced with a `++case:clay`.
660660
661661#### `++dome:clay`, desk data
662662
663−```
663+```hoon
664664 ++ dome :: project state
665665 $: ang=agon :: pedigree
666666 ank=ankh :: state
@@ -700,7 +700,7 @@ desk.
700700
701701#### `++ankh`, filesystem node
702702
703−```
703+```hoon
704704 ++ ankh :: fs node (new)
705705 $: p=cash :: recursive hash
706706 q=(unit ,[p=cash q=*]) :: file
@@ -724,7 +724,7 @@ are, recursively, the nodes themselves.
724724
725725#### `++cash`, ankh hash
726726
727−```
727+```hoon
728728 ++ cash ,@uvH :: ankh hash
729729```
730730
@@ -734,7 +734,7 @@ hierarchies.
734734
735735#### `++rung`, filesystem per neighbor ship
736736
737−```
737+```hoon
738738 ++ rung $: rus=(map desk rede) :: neighbor desks
739739 == ::
740740```
@@ -744,7 +744,7 @@ the desks we know about on their ship.
744744
745745#### `++rede`, desk state
746746
747−```
747+```hoon
748748 ++ rede :: universal project
749749 $: lim=@da :: complete to
750750 qyx=cult :: subscribers
@@ -770,7 +770,7 @@ null since we handle requests ourselves.
770770
771771#### `++rind`, request manager
772772
773−```
773+```hoon
774774 ++ rind :: request manager
775775 $: nix=@ud :: request index
776776 bom=(map ,@ud ,[p=duct q=rave]) :: outstanding
@@ -801,7 +801,7 @@ for a particular `++mood:clay` is nearly instantaneous.
801801
802802#### `++rang:clay`, data store
803803
804−```
804+```hoon
805805 ++ rang $: hut=(map tako yaki) ::
806806 lat=(map lobe blob) ::
807807 == ::
@@ -821,7 +821,7 @@ this map.
821821
822822#### `++tako:clay`, commit reference
823823
824−```
824+```hoon
825825 ++ tako ,@ :: yaki ref
826826```
827827
@@ -832,7 +832,7 @@ associated with these.
832832
833833#### `++yaki:clay`, commit
834834
835−```
835+```hoon
836836 ++ yaki ,[p=(list tako) q=(map path lobe) r=tako t=@da] :: commit
837837```
838838
@@ -854,7 +854,7 @@ here tells the whole story.
854854
855855#### `++lobe:clay`, data reference
856856
857−```
857+```hoon
858858 ++ lobe ,@ :: blob ref
859859```
860860
@@ -864,7 +864,7 @@ where they are associated with the actual `++blob:clay`, and as the values in
864864
865865#### `++blob:clay`, data
866866
867−```
867+```hoon
868868 ++ blob $% [%delta p=lobe q=lobe r=udon] :: delta on q
869869 [%direct p=lobe q=* r=umph] ::
870870 [%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.
892892
893893#### `++udon`, abstract delta
894894
895−```
895+```hoon
896896 ++ udon :: abstract delta
897897 $: p=umph :: preprocessor
898898 $= q :: patch
@@ -927,7 +927,7 @@ moment, and may in fact be unimplemented.
927927
928928#### `++urge`, list change
929929
930−```
930+```hoon
931931 ++ urge |*(a=_,* (list (unce a))) :: list change
932932```
933933
@@ -936,7 +936,7 @@ is a list change for lines of text.
936936
937937#### `++unce`, change part of a list.
938938
939−```
939+```hoon
940940 ++ unce |* a=_,* :: change part
941941 $% [%& p=@ud] :: skip[copy]
942942 [%| 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,
952952
953953#### `++umph`, preprocessing information
954954
955−```
955+```hoon
956956 ++ umph :: change filter
957957 $| $? %a :: no filter
958958 %b :: jamfile
@@ -967,7 +967,7 @@ we get a well-typed clay.
967967
968968#### `++upas`, tree change
969969
970−```
970+```hoon
971971 ++ upas :: tree change (%d)
972972 $& [p=upas q=upas] :: cell
973973 $% [%0 p=axis] :: copy old
@@ -982,7 +982,7 @@ is not a complicated type; it is not difficult to work out the meaning.
982982
983983#### `++nori:clay`, repository action
984984
985−```
985+```hoon
986986 ++ nori :: repository action
987987 $% [& q=soba] :: delta
988988 [| p=@tas] :: label
@@ -998,7 +998,7 @@ label. In the `&` case, we will apply the given changes.
998998
999999#### `++soba:clay`, delta
10001000
1001−```
1001+```hoon
10021002 ++ soba ,[p=cart q=(list ,[p=path q=miso])] :: delta
10031003```
10041004
@@ -1010,7 +1010,7 @@ itself.
10101010
10111011#### `++miso:clay`, ankh delta
10121012
1013−```
1013+```hoon
10141014 ++ miso :: ankh delta
10151015 $% [%del p=*] :: delete
10161016 [%ins p=*] :: insert
@@ -1026,7 +1026,7 @@ changes we are applying to the file.
10261026
10271027#### `++mizu:clay`, merged state
10281028
1029−```
1029+```hoon
10301030 ++ mizu ,[p=@u q=(map ,@ud tako) r=rang] :: new state
10311031```
10321032
@@ -1040,7 +1040,7 @@ commits or data need be here.
10401040
10411041#### `++riff:clay`, request/desist
10421042
1043−```
1043+```hoon
10441044 ++ riff ,[p=desk q=(unit rave)] :: request/desist
10451045```
10461046
@@ -1051,7 +1051,7 @@ along this duct.
10511051
10521052#### `++riot:clay`, response
10531053
1054−```
1054+```hoon
10551055 ++ riot (unit rant) :: response/complete
10561056```
10571057
@@ -1061,7 +1061,7 @@ been completed, and no more responses will be sent. Otherwise, the
10611061
10621062#### `++rant:clay`, response data
10631063
1064−```
1064+```hoon
10651065 ++ rant :: namespace binding
10661066 $: p=[p=care q=case r=@tas] :: clade release book
10671067 q=path :: spur
@@ -1077,7 +1077,7 @@ node. `r` is the data itself (in the format specified by `p.p`).
10771077
10781078### `++nako`, subscription response data
10791079
1080−```
1080+```hoon
10811081 ++ nako $: gar=(map ,@ud tako) :: new ids
10821082 let=@ud :: next id
10831083 lar=(set yaki) :: new commits
@@ -1105,7 +1105,7 @@ As with all vanes, there are exactly two ways to interact with clay.
11051105above under `++care:clay`. The primary way of interacting with clay, though,
11061106is by sending kisses and receiving gifts.
11071107
1108−```
1108+```hoon
11091109 ++ gift :: out result <-$
11101110 $% [%ergo p=@p q=@tas r=@ud] :: version update
11111111 [%note p=@tD q=tank] :: debug message
@@ -1126,7 +1126,7 @@ is by sending kisses and receiving gifts.
11261126There are only a small number of possible kisses, so it behooves us to
11271127describe each in detail.
11281128
1129−```
1129+```hoon
11301130 $% [%info p=@p q=@tas r=nori] :: internal edit
11311131
11321132 [%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
11451145should never send a `%into` kiss. The `%info` kiss is exactly identical
11461146except it does not reset the duct.
11471147
1148−```
1148+```hoon
11491149 [%ingo p=@p q=@tas r=nori] :: internal noun edit
11501150
11511151 [%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
11561156typed changes to clay so that we may store typed data. This is currently
11571157unimplemented.
11581158
1159−```
1159+```hoon
11601160 [%init p=@p] :: report install
11611161```
11621162
@@ -1164,7 +1164,7 @@ Init is called when a ship is started on our pier. This simply creates a
11641164default `room` to go into our `raft`. Essentially, this initializes the
11651165filesystem for a ship.
11661166
1167−```
1167+```hoon
11681168 [%merg p=@p q=@tas r=mizu] :: internal change
11691169```
11701170
@@ -1181,7 +1181,7 @@ time is XX usually the closest time specified in a subscription request.
11811181When `%wake` is XX called, we update our subscribers if there have been
11821182any changes.
11831183
1184−```
1184+```hoon
11851185 [%wart p=sock q=@tas r=path s=*] :: network request
11861186```
11871187
@@ -1190,7 +1190,7 @@ file. When another ship asks for a file from us, that request comes to
11901190us in the form of a `%wart` kiss. This is handled by trivially turning
11911191it into a `%warp`.
11921192
1193−```
1193+```hoon
11941194 [%warp p=sock q=riff] :: file request
11951195```
11961196
@@ -1220,7 +1220,7 @@ version.
12201220As in all vanes, a kiss enters clay via a call to `++call`. Scanning
12211221through the arm, we quickly see where `%warp` is handled.
12221222
1223−```
1223+```hoon
12241224 ?: =(p.p.q.hic q.p.q.hic)
12251225 =+ une=(un p.p.q.hic now ruf)
12261226 =+ wex=(di:une p.q.q.hic)
@@ -1261,7 +1261,7 @@ Although it's called last, it's usually worth examining `++abet` first,
12611261since it defines in what ways we can cause side effects. Let's do that,
12621262and also a few of the lines at the beginning of `++de`.
12631263
1264−```
1264+```hoon
12651265 =| yel=(list ,[p=duct q=gift])
12661266 =| byn=(list ,[p=duct q=riot])
12671267 =| vag=(list ,[p=duct q=gift])
@@ -1317,7 +1317,7 @@ the only notes we pass here are `%wait` and `%rest` to the timer vane.
13171317Now that we know what kinds of side effects we may have, we can jump
13181318into the handling of requests.
13191319
1320−```
1320+```hoon
13211321 ++ ease :: release request
13221322 |= hen=duct
13231323 ^+ +>
@@ -1347,7 +1347,7 @@ it's easy to see that for foreign desks, we cancel any outstanding
13471347requests for this duct and send a message over ames to the other ship
13481348telling them to cancel the subscription.
13491349
1350−```
1350+```hoon
13511351 ++ best
13521352 |= [hen=duct tym=@da]
13531353 %_(+> tag :_(tag [hen /tyme %t %rest tym]))
@@ -1357,7 +1357,7 @@ This simply pushes a `%rest` note onto `tag`, from where it will be
13571357passed back to arvo to be handled. This cancels the timer at the given
13581358duct (with the given time).
13591359
1360−```
1360+```hoon
13611361 ++ mabe :: maybe fire function
13621362 |* [rov=rove fun=$+(@da _+>.^$)]
13631363 ^+ +>.$
@@ -1394,7 +1394,7 @@ smallest time.
13941394The more interesting case is, of course, when we're not cancelling a
13951395subscription but starting one.
13961396
1397−```
1397+```hoon
13981398 ++ eave :: subscribe
13991399 |= [hen=duct rav=rave]
14001400 ^+ +>
@@ -1428,7 +1428,7 @@ This case occurs when we make a request for a case whose (1) date is
14281428after the current date, (2) number is after the current number, or (3)
14291429label is not yet used.
14301430
1431−```
1431+```hoon
14321432 ++ duce :: produce request
14331433 |= [hen=duct rov=rove]
14341434 ^+ +>
@@ -1456,7 +1456,7 @@ Recall that `ref` is null for domestic desks and that `++mabe` fires the
14561456given function with the time we need to be woken up at, if we need to be
14571457woken up at a particular time.
14581458
1459−```
1459+```hoon
14601460 ++ bait
14611461 |= [hen=duct tym=@da]
14621462 %_(+> 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
14711471number, or (3) a `%w` request with a nonempty path. The `++blub` is
14721472exactly what you would expect it to be.
14731473
1474−```
1474+```hoon
14751475 ++ blub :: ship stop
14761476 |= hen=duct
14771477 %_(+> byn [[hen ~] byn])
@@ -1483,7 +1483,7 @@ isn't satisfiable.
14831483Otherwise, we have received the desired information, so we send it on to
14841484the subscriber with `++blab`.
14851485
1486−```
1486+```hoon
14871487 ++ blab :: ship result
14881488 |= [hen=duct mun=mood dat=*]
14891489 ^+ +>
@@ -1493,7 +1493,7 @@ the subscriber with `++blab`.
14931493The most interesting arm called in `++eave` is, of course, `++aver`,
14941494where we actually try to read the data.
14951495
1496−```
1496+```hoon
14971497 ++ aver :: read
14981498 |= mun=mood
14991499 ^- (unit (unit ,*))
@@ -1520,7 +1520,7 @@ Here, we jump into `arvo/zuse.hoon`, which is where much of the
15201520algorithmic code is stored, as opposed to the clay interface, which is
15211521stored in `arvo/clay.hoon`. We examine `++case-to-aeon:ze`.
15221522
1523−```
1523+```hoon
15241524 ++ case-to-aeon :: case-to-aeon:ze
15251525 |= lok=case :: act count through
15261526 ^- (unit aeon)
@@ -1561,7 +1561,7 @@ revisions were committed, we produce `0`.
15611561
15621562The definitions of `++aeon-to-tako` and `++tako-to-yaki` are trivial.
15631563
1564−```
1564+```hoon
15651565 ++ aeon-to-tako ~(got by hit)
15661566
15671567 ++ tako-to-yaki ~(got by hut) :: grab yaki
@@ -1574,7 +1574,7 @@ Assuming we got a valid version number, `++aver` calls
15741574`++read-at-aeon:ze`, which reads the requested data at the given
15751575revision.
15761576
1577−```
1577+```hoon
15781578 ++ read-at-aeon :: read-at-aeon:ze
15791579 |= [oan=aeon mun=mood] :: seek and read
15801580 ^- (unit)
@@ -1588,7 +1588,7 @@ number, then we go ahead and just produce the number we were given.
15881588Otherwise, we call `++rewind` to rewind our state to the given revision,
15891589and then we call `++read` to get the requested information.
15901590
1591−```
1591+```hoon
15921592 ++ rewind :: rewind:ze
15931593 |= oan=aeon :: rewind to aeon
15941594 ^+ +>
@@ -1606,7 +1606,7 @@ represents a version of the filesystem. We call `++checkout-ankh` to
16061606checkout the commit, and we replace `ank` in our context with the
16071607result.
16081608
1609−```
1609+```hoon
16101610 ++ checkout-ankh :: checkout-ankh:ze
16111611 |= hat=(map path lobe) :: checkout commit
16121612 ^- ankh
@@ -1629,7 +1629,7 @@ Twice we call `++cosh`, which hashes a commit, updating `p` in an
16291629`ankh`. Let's jump into that algorithm before we describe
16301630`++checkout-ankh`.
16311631
1632−```
1632+```hoon
16331633 ++ cosh :: locally rehash
16341634 |= ank=ankh :: NB v/unix.c
16351635 ank(p rehash:(zu ank))
@@ -1638,7 +1638,7 @@ Twice we call `++cosh`, which hashes a commit, updating `p` in an
16381638We simply replace `p` in the hash with the `cash` we get from a call to
16391639`++rehash:zu`.
16401640
1641−```
1641+```hoon
16421642 ++ zu !: :: filesystem
16431643 |= ank=ankh :: filesystem state
16441644 =| 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
16761676great ankh out of them. First, we call `++lobe-to-noun` to get the raw
16771677data referred to be each lobe.
16781678
1679−```
1679+```hoon
16801680 ++ lobe-to-noun :: grab blob
16811681 |= p=lobe :: ^- *
16821682 %- blob-to-noun
@@ -1687,13 +1687,13 @@ This converts a lobe into the raw data it refers to by first getting the
16871687blob with `++lobe-to-blob` and converting that into data with
16881688`++blob-to-noun`.
16891689
1690−```
1690+```hoon
16911691 ++ lobe-to-blob ~(got by lat) :: grab blob
16921692```
16931693
16941694This just grabs the blob that the lobe refers to.
16951695
1696−```
1696+```hoon
16971697 ++ blob-to-noun :: grab blob
16981698 |= p=blob
16991699 ?- -.p
@@ -1708,7 +1708,7 @@ right in the blob. Otherwise, we have to reconstruct it from the diffs.
17081708We do this by calling `++lump` on the diff in the blob with the data
17091709obtained by recursively calling the parent of this blob.
17101710
1711−```
1711+```hoon
17121712 ++ lump :: apply patch
17131713 |= [don=udon src=*]
17141714 ^- *
@@ -1738,7 +1738,7 @@ we're performing a trivial replace, so we produce simply `q.q.don`. If
17381738we have a `%c` udon, then we're performing a list merge (as in, for
17391739example, lines of text). The merge is performed by `++lurk`.
17401740
1741−```
1741+```hoon
17421742 ++ lurk :: apply list patch
17431743 |* [hel=(list) rug=(urge)]
17441744 ^+ hel
@@ -1777,7 +1777,7 @@ crashing on failure. If they're good, then we append the new lines in
17771777And that's really it. List merges are pretty easy. Anyway, if you
17781778recall, we were discussing `++checkout-ankh`.
17791779
1780−```
1780+```hoon
17811781 ++ checkout-ankh :: checkout-ankh:ze
17821782 |= hat=(map path lobe) :: checkout commit
17831783 ^- ankh
@@ -1887,7 +1887,7 @@ in which our current state is (very nearly) as it was when the specified
18871887version of the desk was the head. This allows `++read-at-aeon` to call
18881888`++read` to read the requested information.
18891889
1890−```
1890+```hoon
18911891 ++ read :: read:ze
18921892 |= mun=mood :: read at point
18931893 ^- (unit)
@@ -1919,7 +1919,7 @@ doesn't seem to work, so we'll ignore this case.
19191919Otherwise, we descend into the ankh tree to the given path with
19201920`++descend-path:zu`, and then we handle specific request in `++query`.
19211921
1922−```
1922+```hoon
19231923 ++ descend-path :: descend recursively
19241924 |= way=path
19251925 ^+ +>
@@ -1929,7 +1929,7 @@ Otherwise, we descend into the ankh tree to the given path with
19291929This is simple recursion down into the ankh tree. `++descend` descends
19301930one level, so this will eventually get us down to the path we want.
19311931
1932−```
1932+```hoon
19331933 ++ descend :: descend
19341934 |= lol=@ta
19351935 ^+ +>
@@ -1944,7 +1944,7 @@ one at that path if it exists; else we create a blank one.
19441944Once we've decscended to the correct level, we need to actually deal
19451945with the request.
19461946
1947−```
1947+```hoon
19481948 ++ query :: query:ze
19491949 |= ren=?(%u %v %x %y %z) :: endpoint query
19501950 ^- (unit ,*)
@@ -1962,7 +1962,7 @@ the rang, dome, or ankh, we give it to them. If the contents of a file,
19621962we give it to them if it is in fact a file. If the `arch`, then we
19631963calculate it with `++as-arch`.
19641964
1965−```
1965+```hoon
19661966 ++ as-arch :: as-arch:ze
19671967 ^- arch :: arch report
19681968 :+ p.ank
@@ -1983,7 +1983,7 @@ same path that a single read does. In `++aver`, we checked the head of
19831983the given rave. If the head was `&`, then it was a single request, so we
19841984handled it above. If `|`, then we handle it with the following code.
19851985
1986−```
1986+```hoon
19871987 =+ nab=(~(case-to-aeon ze lim dom ran) p.p.rav)
19881988 ?~ nab
19891989 ?> =(~ (~(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
20432043`++bleb`, so we'll get back to those right now. `++bleb` is simple, so
20442044we'll start with that.
20452045
2046−```
2046+```hoon
20472047 ++ bleb :: ship sequence
20482048 |= [hen=duct ins=@ud hip=nako]
20492049 ^+ +>
@@ -2057,7 +2057,7 @@ of the beginning of the subscription, and the data is the nako itself.
20572057
20582058We call `++lobes-at-path:ze` to get the data at the particular path.
20592059
2060−```
2060+```hoon
20612061 ++ lobes-at-path :: lobes-at-path:ze
20622062 |= [oan=aeon pax=path] :: data at path
20632063 ^- (map path lobe)
@@ -2090,7 +2090,7 @@ tell if a node or its children have changed.
20902090
20912091Finally, we will describe `++make-nako:ze`.
20922092
2093−```
2093+```hoon
20942094 ++ make-nako :: gack a through b
20952095 |= [a=aeon b=aeon]
20962096 ^- [(map aeon tako) aeon (set yaki) (set blob)]
@@ -2119,7 +2119,7 @@ commit.
21192119The third and fourth are slightly more interesting, though not too
21202120terribly difficult. First, we call `++reachable-between-takos`.
21212121
2122−```
2122+```hoon
21232123 ++ reachable-between-takos
21242124 |= [a=(unit tako) b=tako] :: pack a through b
21252125 ^- [(set tako) (set lobe)]
@@ -2150,7 +2150,7 @@ We let `sar` be the set of commits reachable from `a`. If `a` is null,
21502150then obviously no commits are reachable. Otherwise, we call
21512151`++reachable-takos` to calculate this.
21522152
2153−```
2153+```hoon
21542154 ++ reachable-takos :: reachable
21552155 |= p=tako :: XX slow
21562156 ^- (set tako)
@@ -2175,7 +2175,7 @@ tako referenced by `a`. The result is passed into `++new-lobes-takos` to
21752175do the same, but not recomputing those in already calculated last
21762176sentence. This produces the sets of takos and lobes we need.
21772177
2178−```
2178+```hoon
21792179 ++ new-lobes :: object hash set
21802180 |= [b=(set lobe) a=(set tako)] :: that aren't in b
21812181 ^- (set lobe)
@@ -2206,7 +2206,7 @@ there, and, if it's not already in `b`, we add it to `b`. In the case of
22062206a direct blob, we're done. For a delta or an indirect blob, we
22072207recursively add every blob referenced within the blob.
22082208
2209−```
2209+```hoon
22102210 ++ new-lobes-takos :: garg & repack
22112211 |= [b=(set lobe) a=(set tako)]
22122212 ^- [(set tako) (set lobe)]
@@ -2229,7 +2229,7 @@ Thus, we start in the same place -- in `++call`, handling `%warp`.
22292229However, since the two side of the `sock` are different, we follow a
22302230different path.
22312231
2232−```
2232+```hoon
22332233 =+ wex=(do now p.q.hic p.q.q.hic ruf)
22342234 =+ ^= woo
22352235 ?~ q.q.q.hic
@@ -2249,7 +2249,7 @@ the modified rung into the raft.
22492249
22502250We'll first trace through `++do`.
22512251
2252−```
2252+```hoon
22532253 ++ do
22542254 |= [now=@da [who=ship him=ship] syd=@tas ruf=raft]
22552255 =+ ^= rug ^- rung
@@ -2273,7 +2273,7 @@ With this information, we create a `++de` core as usual.
22732273Although we've already covered `++ease` and `++eave`, we'll go through
22742274them quickly again, highlighting the case of foreign request.
22752275
2276−```
2276+```hoon
22772277 ++ ease :: release request
22782278 |= hen=duct
22792279 ^+ +>
@@ -2307,7 +2307,7 @@ is exactly identical to the case of the local request except `++duce`.
23072307We said that `++duce` simply puts the request into our cult. This is
23082308true for a domestic request, but distinctly untrue for foreign requests.
23092309
2310−```
2310+```hoon
23112311 ++ duce :: produce request
23122312 |= [hen=duct rov=rove]
23132313 ^+ +>
@@ -2344,7 +2344,7 @@ ship, that comes to us in the form of a `%wart` from ames.
23442344We handle a `%wart` in `++call`, right next to where we handle the
23452345`%warp` case.
23462346
2347−```
2347+```hoon
23482348 %wart
23492349 ?> ?=(%re q.q.hic)
23502350 =+ ryf=((hard riff) s.q.hic)
@@ -2362,7 +2362,7 @@ ourself. This gets handled like normal, as a local request. When the
23622362request produces a value, it does so like normal as a `%writ`, which is
23632363returned to `++take` along the path we just sent it on.
23642364
2365−```
2365+```hoon
23662366 %writ
23672367 ?> ?=([@ @ *] tea)
23682368 =+ our=(need (slaw %p i.tea))
@@ -2380,7 +2380,7 @@ the new data.
23802380This comes back to the original ship as a `%waft` from ames, which comes
23812381into `++take`, right next to where we handled `%writ`.
23822382
2383−```
2383+```hoon
23842384 %waft
23852385 ?> ?=([@ @ ~] tea)
23862386 =+ 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
24022402
24032403We'll examine `++knit` and `++wake`, in that order.
24042404
2405−```
2405+```hoon
24062406 ++ knit :: external change
24072407 |= [inx=@ud rot=riot]
24082408 ^+ +>
@@ -2474,7 +2474,7 @@ of the desk. We do so in `++edis`, and then we remove the stuff we just
24742474applied from the cache, since it's not really a true "single read", like
24752475what should really be in the cache.
24762476
2477−```
2477+```hoon
24782478 ++ edis :: apply subscription
24792479 |= nak=nako
24802480 ^+ +>
@@ -2509,7 +2509,7 @@ This concludes our discussion of `++knit`. Now the changes have been
25092509applied to our local copy of the desk, and we just need to update our
25102510subscribers. We do so in `++wake:de`.
25112511
2512−```
2512+```hoon
25132513 ++ wake :: update subscribers
25142514 ^+ .
25152515 =+ xiq=(~(tap by qyx) ~)
@@ -2585,7 +2585,7 @@ it.
25852585`++balk` is very simple, so we'll describe it here before we get to the
25862586subscription case.
25872587
2588−```
2588+```hoon
25892589 ++ balk :: read and send
25902590 |= [hen=duct oan=@ud mun=mood]
25912591 ^+ +>
learn/arvo/dill.md → arvo/dill.mdrenamed

The content is the same.

learn/arvo/eyre.md → arvo/eyre.mdrenamed+1−1
@@ -81,7 +81,7 @@ the perk it into a `%boil` `++ford-req`, adding an `++fcgi` path-segment
8181containing query string and `++fcgi-cred:for-client` auth information.
8282
8383`%ford`s translation of `/=cli=/hymn/hook` to a self-refreshing `%urb` html page
84−[deserves its own commentary](/docs/learn/arvo/arvo-internals/ford#commentary), but
84+[deserves its own commentary](/docs/arvo/ford#commentary), but
8585we resume in `%eyre` when the `%made` sign arrives in `++take`, and soon after
8686`++axon:ye`. There the `wire`, or rather the `whir` it has been verified to be,
8787determines that the response should be served immediately. However, as the mark
learn/arvo/ford.md → arvo/ford.mdrenamed+26−26
@@ -118,9 +118,9 @@ library in urbit.
118118
119119To run this example, put this code in your desk at `gen/faslus.hoon` and run
120120`+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).
122122
123−```
123+```hoon
124124/+ time-to-id
125125::
126126:- %say
@@ -136,7 +136,7 @@ with commas.
136136
137137Replace the code in `gen/faslus.hoon` with the following:
138138
139−```
139+```hoon
140140/+ time-to-id, hep-to-cab
141141::
142142:- %say
@@ -170,7 +170,7 @@ similar to including a header file in C.
170170
171171Example:
172172
173−```
173+```hoon
174174/- talk
175175::
176176*serial:talk
@@ -191,7 +191,7 @@ structure representing a `%ford` static resource.
191191
192192Example:
193193
194−```
194+```hoon
195195/~ [a=0 b=1]
196196[a b]
197197```
@@ -201,12 +201,12 @@ produces: `[0 1]`
201201In wide-form, `/~` always takes a tuple (which may be a degenerate tuple of one element), and produces it.
202202
203203Example:
204−```
204+```hoon
205205/~[%something]
206206```
207207produces: `%something`
208208
209−```
209+```hoon
210210/~[%a %b]
211211```
212212produces: `[%a %b]`
@@ -219,7 +219,7 @@ just a hoon twig, so its result can't be used as an argument to other runes
219219that expect a horn. There is no wide-form for this rune.
220220
221221Example:
222−```
222+```hoon
223223// %/file-to-include
224224::
225225(frobnicate:file-to-include %.n)
@@ -245,7 +245,7 @@ stored at that path._
245245that horn, and wraps a face around it.
246246
247247Example:
248−```
248+```hoon
249249/= foo /~ [a=0 b=1]
250250::
251251[a.foo b.foo]
@@ -260,7 +260,7 @@ In wide-form, `/=` uses `=` as a delimiter: `/=foo=/~[a=0 b=1]`
260260`/mar/` renders the mark 'mar' at the current path.
261261
262262Example:
263−```
263+```hoon
264264/= hoo-source /: /path/to/hoon-file /hoon/
265265::
266266`@t`hoo-source
@@ -272,10 +272,10 @@ produces the text of the hoon file at "/path/to/hoon-file/hoon".
272272passes the contents through unchanged. In general, rendering a file with a
273273mark will potentially run the contents through a series of conversion
274274operations. For details on marks, see the
275−[Gall docs](../gall).
275+[Gall docs](gall).
276276
277277Here's an example that includes a mark conversion:
278−```
278+```hoon
279279/= page /: /path/to/html/file /mime/
280280::
281281page
@@ -294,7 +294,7 @@ In wide-form, `/:` uses `:` as a delimiter: `/=page=/:/path/to/html/file:/mime/`
294294### `/!mark/` evaluate as hoon, then pass through mark
295295
296296Example:
297−```
297+```hoon
298298/= mime /: /%/some-hoon-file /!mime/
299299::
300300mime
@@ -311,7 +311,7 @@ wide-form and a tall-form syntax. In wide-form, it takes a series of mark
311311arguments followed by a horn. In tall-form, it takes a single mark followed by
312312a horn.
313313
314−```
314+```hoon
315315/= some-text /: /%/text-file /&mime&/txt/
316316::
317317some-text
@@ -326,7 +326,7 @@ cord is a single line. Once we've read the file, the `%mime` mark converts the
326326`wain` to a triple that includes the MIME type ("text/plain"), the content
327327length in bytes, and the content itself as a cord.
328328
329−```
329+```hoon
330330/= page /&html&elem&/~[;div.foo;]
331331::
332332page
@@ -354,7 +354,7 @@ need to be enclosed in `/`'s: `/& html /elem/`
354354succeeds. If none succeed, it produces stack traces from all of its arguments.
355355
356356Example:
357−```
357+```hoon
358358/= res /: /%/path/to/file
359359/|
360360 /!elem/
@@ -384,7 +384,7 @@ directory, and each value is the result of running that horn on the contents of
384384the file.
385385
386386Example:
387−```
387+```hoon
388388/= kids /_ /hoon/
389389::
390390`(map term cord)`kids
@@ -407,7 +407,7 @@ that atom type, and each value is the result of running the horn on the
407407contents of that file.
408408
409409Example:
410−```
410+```hoon
411411/= timed-posts /_ @da /md/
412412`(map @da @t)`timed-posts
413413```
@@ -423,7 +423,7 @@ Wide-form filtered `/_` uses `_` as a delimiter: `/= timed-posts /_@da_/md/`
423423with the result of the horn as its sample.
424424
425425Example:
426−```
426+```hoon
427427/= goo
428428 /; |=({a/@ b/@} +(b))
429429 /~ [a=0 b=1]
@@ -434,7 +434,7 @@ goo
434434produces: `2`
435435
436436Here's a slightly more complex example with runes that use the filesystem:
437−```
437+```hoon
438438/= file-length
439439 /; |=(a/@t (lent (crip a)))
440440 /: /%/path/to/hoon/file /hoon/
@@ -450,7 +450,7 @@ whether the current path matches the path in the switch statement.
450450Takes a sequence of pairs of (path, horn) terminated by a `==`. No wide-form.
451451
452452Example:
453−```
453+```hoon
454454/= just-right
455455 /: /===/right-path :: set path to /%/right-path
456456 /,
@@ -469,7 +469,7 @@ produces: `'evaluate-me'`
469469Produce a null-terminated list from a sequence of horns, terminated by a `==`. No wide-form.
470470
471471Example:
472−```
472+```hoon
473473/= vanes
474474 /.
475475 /~ %ames
@@ -495,7 +495,7 @@ TODO: remove
495495`/^` takes a mold and a horn, and casts the result of the horn to the mold.
496496
497497Example:
498−```
498+```hoon
499499/= liz /^ (list @) :: cast to real list
500500 /~ ~[1 2 3] :: no 'i' or 't' faces
501501::
@@ -515,7 +515,7 @@ Wide-form `/^` uses `^` as a delimiter: `/^(list @)^/~[1 2 3 ~]`
515515hash of the result of the horn, and the result itself.
516516
517517Example:
518−```
518+```hoon
519519/= inline /^ {dep/@uvH txt/@t} /# /: /%/my-script /js/
520520::
521521;= ;script: (trip txt.inline) :: set script contents
@@ -539,7 +539,7 @@ contain an argument representing the query string, which can be parsed using the
539539standard library gate `++fuel:html`.
540540
541541Example:
542−```
542+```hoon
543543/= gas /$ fuel:html
544544::
545545:*
@@ -559,7 +559,7 @@ Wide-form `/$` takes its arguments inside brackets, like `/~`:
559559renderers that use `/$` to read the extra arguments will crash.
560560
561561Example:
562−```
562+```hoon
563563/= dat /% /tree-json/
564564::
565565dat
learn/arvo/gall.md → arvo/gall.mdrenamed+32−33
@@ -104,14 +104,14 @@ of `move` and `sub-result` (all the types of data that can be
104104returned by a place). This can just be a line at the top of the
105105main core:
106106
107−```
107+```hoon
108108=+ connector=(connector move sub-result) :: Set up connector library
109109```
110110
111111Most of the Github-specific logic is in `++places`, which is a
112112list of all the places we can request. A place consists of:
113113
114−```
114+```hoon
115115++ place
116116 $: guard/mold
117117 read-x/$-(path move)
@@ -522,8 +522,7 @@ interact with apps. Generators are the "porcelain" layer. This is why
522522when you run a command like `+ls` or `|merge`, there are no marks in
523523sight.
524524
525−We've used generators before, back in [Basic
526−Operation](/docs/learn/arvo/arvo-internals/admin). At that point, we just used the
525+At that point, we just used the
527526generators to produce values -- we didn't pipe their results into apps.
528527In the dojo cast, the role of a generator is to take a list of arguments
529528and produce a value, which is often, though not always, piped into an
@@ -574,7 +573,7 @@ We'll need a new mark for our arguments. Let's call it
574573
575574> 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).
576575
577−```
576+```hoon
578577::
579578:::: /mar/ping/message/hoon
580579 ::
@@ -589,7 +588,7 @@ We'll need a new mark for our arguments. Let's call it
589588
590589The app can easily be modified to use this (`/app/ping.hoon`):
591590
592−```
591+```hoon
593592:: Allows one ship to ping another with a string of text
594593::
595594:::: /app/ping/hoon
@@ -640,7 +639,7 @@ mandatory, and optional arguments are hard. Let's make a generator,
640639`+send` to make everything nicer. Since it's specific to
641640`:ping`, let's put it in `/gen/ping/send.hoon`:
642641
643−```
642+```hoon
644643:- %say
645644|= [^ [to=@p message=?(%~ [text=@t %~])] %~]
646645[%ping-message to ?~(message 'howdy' text.message)]
@@ -686,7 +685,7 @@ Let's build an uptime-monitoring system. It'll ping a web
686685service periodically and print out an error when the response
687686code isn't 2xx. Save the following as `app/up.hoon`:
688687
689−```
688+```hoon
690689:: Up-ness monitor. Accepts atom url, 'on', or 'off'
691690::
692691:::: /hoon/up/app
@@ -774,7 +773,7 @@ produce a `%wake` when the time comes.
774773
775774Let's take a look at our state:
776775
777−```
776+```hoon
778777|_ [hid=bowl:gall on=_| in-progress=_| target=@t]
779778```
780779
@@ -807,7 +806,7 @@ actual url, so we save it in `target`.
807806
808807Here's the move that sends the HTTP request:
809808
810−```
809+```hoon
811810[ost.hid %hiss /request ~ %httr %purl (need (de-purl:html target))]
812811```
813812
@@ -816,7 +815,7 @@ Here's the move that sends the HTTP request:
816815The correspondence between this move and `[bone card]` can be hard to
817816visualize on one line. Here it is more pedantically:
818817
819−```
818+```hoon
820819:* bone=ost.hid :: the move
821820 term=%hiss
822821 wire=/request
@@ -896,7 +895,7 @@ Let's make a small "cord" mark. "Cord" is a name we use for `@t`
896895text, but there's no predefined mark for it. Let's put the following code in:
897896`/mar/cord.hoon`:
898897
899−```
898+```hoon
900899/? 314
901900|_ cod=@t
902901++ grab
@@ -1012,7 +1011,7 @@ In the following we assume that you have some knowledge of Hoon. If you don't,
10121011
10131012Let'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`:
10141013
1015−```
1014+```hoon
10161015:: Accepts any noun from dojo and prints it out
10171016::
10181017:::: /===/app/echo/hoon
@@ -1064,7 +1063,7 @@ from the command line, which we we did with `:echo 5`
10641063(`:[app-name] [argument(s)]`).
10651064
10661065In this case, `++poke-noun` takes an argument (**sample**) `arg` and
1067−prints it to dojo with `~&` ([sigpam](/docs/reference/hoon-expressions/rune/sig#sigpam/)).
1066+prints it to dojo with `~&` ([sigpam](/docs/hoon/hoon-expressions/rune/sig#sigpam/)).
10681067This is an unusual rune that formally "does nothing", but the interpreter
10691068detects it and printfs the first child, before executing the second as if the
10701069first didn't exist. This is a slightly hacky way of printing to the console,
@@ -1090,7 +1089,7 @@ is a magic invocation that means "app state".
10901089Let's look at another example. Say we want to
10911090only accept a number, and then print out the square of that number.
10921091
1093−```
1092+```hoon
10941093:: Accepts an atom from the dojo and squares it.
10951094::
10961095:::: /===/app/square/hoon
@@ -1162,7 +1161,7 @@ so we'll be getting quite used to them.
11621161
11631162Let's write our first network message! Here's `examples/app/pong.hoon`:
11641163
1165−```
1164+```hoon
11661165:: Allows one urbit to send the string 'Pong' to
11671166:: another urbit.
11681167::
@@ -1210,11 +1209,11 @@ Run it with these commands:
12101209
12111210Replace `~sampel-sipnym` with another urbit. The easiest thing to do is to start
12121211a comet, a free and disposable Urbit identity. If you don't know how to start a
1213−comet, see [the user setup section](/docs/getting-started/). Don't forget to start
1212+comet, see [the user setup section](@/operations.md). Don't forget to start
12141213the `%pong` app on that urbit, too. You should see, on the foreign
12151214urbit, this output:
12161215
1217−```
1216+```hoon
12181217[%pong 'Incoming pong!']
12191218[%pong %received 'Pong']
12201219```
@@ -1232,7 +1231,7 @@ now, we've left the list of moves empty, since we haven't wanted to tell Arvo to
12321231do anything in particular. Now we want to send a message to another urbit. Thus,
12331232we produce a list with one element:
12341233
1235−```
1234+```hoon
12361235~[[ost.bow %poke /sending [to dap.bow] %atom 'Pong]]
12371236```
12381237
@@ -1413,7 +1412,7 @@ to be authenticated.
14131412
14141413Here's a simple security driver:
14151414
1416−```
1415+```hoon
14171416:: Test url +https://api.github.com/user
14181417::
14191418:::: /hoon/github/com/sec
@@ -1463,7 +1462,7 @@ can send data of any mark as long as it has a conversion path to
14631462Let's take a look at the code and see if we can figure out what's
14641463happening here:
14651464
1466−```
1465+```hoon
14671466/+ basic-auth
14681467```
14691468
@@ -1539,7 +1538,7 @@ just as with Basic Authentication.
15391538
15401539Now we need a security driver. Use this:
15411540
1542−```
1541+```hoon
15431542:: Test url +https://api.github.com/user
15441543::
15451544:::: /hoon/github/com/sec
@@ -1634,7 +1633,7 @@ entirely stateless, however. Most useful apps require some amount of state.
16341633Let's build a trivial stateful app. It'll keep a running the sum of all the
16351634atoms we poke it with. Here's `examples/app/sum.hoon`:
16361635
1637−```
1636+```hoon
16381637:: Keeps track of the sum of all the atoms it has been
16391638:: poked with and prints the sum out
16401639::
@@ -1755,7 +1754,7 @@ that it's built into Arvo.
17551754Let's take a look at two apps, `:source` and `:sink`. First,
17561755`:source`:
17571756
1758−```
1757+```hoon
17591758:: Sends subscription updates to sink.hoon
17601759::
17611760:::: /===/app/source/hoon
@@ -1813,7 +1812,7 @@ Save this as `source.hoon` in the `/app` directory of your urbit's pier.
18131812
18141813And secondly, `:sink`:
18151814
1816−```
1815+```hoon
18171816:: Sets up a simple subscription to source.hoon
18181817::
18191818:::: /===/app/sink/hoon
@@ -2008,7 +2007,7 @@ In `++poke-noun` we check our input to see both if it's `%on` and we're
20082007available (`val` is true). If so, we produce the move to subscribe to
20092008`:source`:
20102009
2011−```
2010+```hoon
20122011:~ :* ost.bow
20132012 %peer
20142013 /subscribe
@@ -2029,7 +2028,7 @@ Otherwise, if our input is `%off` and we're already subscribed (i.e. `val`
20292028is false), then we unsubscribe from `:source` and set `val` back to true (`&`),
20302029again using our handy inverted cell constructor mold `:_`:
20312030
2032−```
2031+```hoon
20332032:_ +>.$(val &)
20342033~[[ost.bow %pull /subscribe [our.bow %source] ~]]
20352034```
@@ -2041,7 +2040,7 @@ If neither of these cases are true, then we print our current subscription
20412040state, based on whether `val` is true or false, and return a cell containing
20422041a null list of moves and our unchanged app state:
20432042
2044−```
2043+```hoon
20452044~& ?: val
20462045 sink+unsubscribed+'You are now unsubscribed!'
20472046 sink+subscribed+'You are now subscribed!'
@@ -2053,7 +2052,7 @@ mark of `noun`. `++diff-noun` is given the wire that we originally passed with
20532052the `%peer` subscription request along and the data we got back. In our case we
20542053just print out the data:
20552054
2056−```
2055+```hoon
20572056~& sink+received-data+'You got something!'
20582057~& sink+data+non
20592058```
@@ -2086,7 +2085,7 @@ update this by subscribing our page to the relevant path on its app.
20862085
20872086Save the following as `click.hoon` in the `/app` directory of your urbit's pier.
20882087
2089−```
2088+```hoon
20902089/? 314
20912090!:
20922091|%
@@ -2115,7 +2114,7 @@ number of clicks.
21152114
21162115Let's take a look at the new marks. Save this as `/mar/click.hoon`:
21172116
2118−```
2117+```hoon
21192118|_ click=%click
21202119++ grab
21212120 |%
@@ -2161,7 +2160,7 @@ ford: cast %click
21612160
21622161And save the following as `/mar/clicks.hoon`:
21632162
2164−```
2163+```hoon
21652164|_ clicks=@
21662165++ grab
21672166 |%
@@ -2240,7 +2239,7 @@ we'll put the number of clicks. We also include a small
22402239javascript file where the client-side application logic can be
22412240found. It's in `/web/pages/click.js`:
22422241
2243−```
2242+```js
22442243$(function() {
22452244 var clicks, $go, $clicks, $err
22462245
reference/arvo-glossary.md → arvo/glossary.mdrenamed+33−33
@@ -11,7 +11,7 @@ As Dijkstra put it: "The purpose of abstraction is not to be vague, but
1111to create a new semantic level in which one can be absolutely precise."
1212
1313This glossary only covers terms the Arvo side of the project. You can find the
14−Azimuth glossary [here](../azimuth-glossary)
14+Azimuth glossary [here](../azimuth/glossary)
1515
1616### application
1717
@@ -42,7 +42,7 @@ dry.
4242 path, which works as if we expanded the callee with the caller's
4343 context.
4444
45−_See [advanced types](/docs/reference/hoon-expressions/advanced/)_.
45+_See [advanced types](/docs/hoon/hoon-expressions/advanced/)_.
4646
4747
4848
@@ -67,7 +67,7 @@ their effects happen like so:
6767Arvo is located in `/home/sys/arvo.hoon` within your urbit.
6868
6969More in-depth information on Arvo can be found
70−[`here`](@/docs/learn/arvo/_index.md).
70+[`here`](@/docs/arvo/_index.md).
7171
7272Below are Arvo modules, which are called "vanes".
7373
@@ -80,7 +80,7 @@ Below are Arvo modules, which are called "vanes".
8080 Ames is located in `/home/sys/vane/ames.hoon` within your urbit.
8181
8282 More in-depth information on Ames can be found
83− [`here`](@/docs/learn/arvo/ames.md).
83+ [`here`](@/docs/arvo/ames.md).
8484
8585#### Behn
8686
@@ -103,9 +103,9 @@ Below are Arvo modules, which are called "vanes".
103103 Clay is located at `/home/sys/vane/clay.hoon` within your urbit.
104104
105105 Basic information on using Clay can be found
106− [`here`](@/docs/using/filesystem.md). An in-depth explanation
106+ [`here`](@/operations.md). An in-depth explanation
107107 of the architecture can be found
108− [`here`](@/docs/learn/arvo/clay.md).
108+ [`here`](@/docs/arvo/clay.md).
109109
110110#### Dill
111111
@@ -124,7 +124,7 @@ Below are Arvo modules, which are called "vanes".
124124 Dill is located at `/home/sys/vane/dill.hoon` within your urbit.
125125
126126 More in-depth information on Dill can be found
127− [`here`](@/docs/learn/arvo/dill.md).
127+ [`here`](@/docs/arvo/dill.md).
128128
129129#### Eyre
130130
@@ -138,7 +138,7 @@ Below are Arvo modules, which are called "vanes".
138138 Eyre is located at `/home/sys/vane/eyre.hoon` within your urbit.
139139
140140 More in-depth information on Eyre can be found
141− [`here`](@/docs/learn/arvo/eyre.md).
141+ [`here`](@/docs/arvo/eyre.md).
142142
143143#### Ford
144144
@@ -153,7 +153,7 @@ Below are Arvo modules, which are called "vanes".
153153 Ford is located at `/home/sys/vane/ford.hoon` within your urbit.
154154
155155 More in-depth information on Ford can be found
156− [`here`](@/docs/learn/arvo/ford.md).
156+ [`here`](@/docs/arvo/ford.md).
157157
158158#### Gall
159159
@@ -169,7 +169,7 @@ Below are Arvo modules, which are called "vanes".
169169 Gall is located at `/home/sys/vane/gall.hoon` within your urbit.
170170
171171 More in-depth information on Gall can be found
172− [`here`](@/docs/learn/arvo/gall.md).
172+ [`here`](@/docs/arvo/gall.md).
173173
174174### atom
175175
@@ -189,7 +189,7 @@ An atom type is _warm_ or _cold_ based on whether the constant exists.
189189
190190 If the constant is `[~ atom]`, its only legal value is `atom`.
191191
192−_See [basic types](@/docs/reference/hoon-expressions/basic.md)_
192+_See [basic types](@/docs/hoon/hoon-expressions/basic.md)_
193193
194194### aura
195195
@@ -245,7 +245,7 @@ Aura Meaning Example Literal Syntax
245245 @ux unsigned hexadecimal 0x5f5.e138
246246```
247247
248−You can find the list of all auras [here](@/docs/reference/hoon-expressions/rune/constants.md).
248+You can find the list of all auras [here](@/docs/hoon/hoon-expressions/rune/constants.md).
249249
250250### blocksize
251251
@@ -309,7 +309,7 @@ translate to cores in Hoon.
309309
310310 The data-containing tail of a core.
311311
312−_See [basic types](@/docs/reference/hoon-expressions/basic.md)._
312+_See [basic types](@/docs/hoon/hoon-expressions/basic.md)._
313313
314314### Dojo
315315
@@ -355,7 +355,7 @@ In the above example, `a` is the face and `2` is the value.
355355Hoon has no scope or symbol-table; there is only the subject. To "declare" a
356356"variable" is to construct a new subject: `[name=value old-subject]`.
357357
358−_See [advanced types](@/docs/reference/hoon-expressions/advanced.md)_.
358+_See [advanced types](@/docs/hoon/hoon-expressions/advanced.md)_.
359359
360360
361361### flag
@@ -367,7 +367,7 @@ _no_.
367367
368368A _gate_ is a [core](#core) with one [arm](#arm) -- Hoon's closest
369369analog to a function. To call a gate on an argument, replace the sample
370−(at [tree address](@/docs/reference/hoon-expressions/limb/limb.md) `+6`
370+(at [tree address](@/docs/hoon/hoon-expressions/limb/limb.md) `+6`
371371in the core) with the argument, and then compute the arm.
372372
373373The payload of a gate has a shape of `[sample context]`.
@@ -380,8 +380,8 @@ The payload of a gate has a shape of `[sample context]`.
380380
381381 The subject in which the gate was defined.
382382
383−_See [basic types](@/docs/reference/hoon-expressions/basic.md),
384−[`%-` ("cenhep")](@/docs/reference/hoon-expressions/rune/cen.md#cenhep) (the
383+_See [basic types](@/docs/hoon/hoon-expressions/basic.md),
384+[`%-` ("cenhep")](@/docs/hoon/hoon-expressions/rune/cen.md#cenhep) (the
385385[rune](#rune) for calling a `gate`)._
386386
387387### generator
@@ -402,7 +402,7 @@ information pipeline.
402402
403403Generators are run from the `/gen` directory of your current desk. For example,
404404to run a generator named `whatever.hoon`, you would type `> +whatever` in the
405−[Dojo](@/docs/using/shell.md).
405+[Dojo](@/operations/#using-the-shell).
406406
407407### glyph
408408
@@ -432,7 +432,7 @@ _Hall_ is the Urbit communication back-end. It’s a messaging bus that can work
432432with clients of all sorts. [`:talk`](#talk), the built-in chat client, is one
433433such app that uses Hall.
434434
435−_More information on Hall can be found [here](@/docs/learn/arvo/hall.md)._
435+_More information on Hall can be found [here](@/docs/arvo/hall.md)._
436436
437437#### circle
438438
@@ -455,7 +455,7 @@ to Nock.
455455
456456The Hoon source file is located in `/home/sys/hoon.hoon` within your urbit.
457457
458−_More information can be found in the [hoon](@/docs/learn/hoon/_index.md) section._
458+_More information can be found in the [hoon](@/docs/hoon/_index.md) section._
459459
460460#### Mint
461461
@@ -486,7 +486,7 @@ atoms (in this case each with an aura of `%ud`, i.e. unsigned
486486decimal).
487487
488488To parse Hoon source into a hoon AST, use `ream` on a `cord`
489−containing Hoon source. Try the following in [Dojo](@/docs/using/shell.md):
489+containing Hoon source. Try the following in [Dojo](@/operations/#using-the-shell):
490490
491491```
492492(ream ':+(12 7 %a)')
@@ -498,7 +498,7 @@ The result should be:
498498[%clls p=[%sand p=%ud q=12] q=[%sand p=%ud q=7] r=[%rock p=%tas q=97]]
499499```
500500
501−See [expression reference](@/docs/reference/hoon-expressions/rune/_index.md) for the full list of hoons.
501+See [expression reference](@/docs/hoon/hoon-expressions/rune/_index.md) for the full list of hoons.
502502
503503### irregular form
504504
@@ -506,7 +506,7 @@ Irregular forms are alternative ways of writing Hoon expressions, alternatives
506506to the digraphic runes such as `:~`. Irregular forms are usually more compact
507507than regular forms.=
508508
509−_See [irregular forms](@/docs/reference/hoon-expressions/irregular.md)._
509+_See [irregular forms](@/docs/hoon/hoon-expressions/irregular.md)._
510510
511511### jet
512512
@@ -519,7 +519,7 @@ so inefficiently. Nock, for example, can’t decrement (reduce a number by one)
519519except by starting building a loop that starts from zero and increments to a
520520number just below.
521521
522−_See [API overview](@/docs/learn/vere/api.md)._
522+_See [API overview](@/docs/vere/api.md)._
523523
524524### lark
525525
@@ -569,7 +569,7 @@ found, the result is the product of the arm.
569569 a search path into the subject, composed of
570570 limbs. Search occurs from right to left (`a.b` means `b` within `a`).
571571
572−_See [Limbs and wings](@/docs/reference/hoon-expressions/limb/_index.md)_
572+_See [Limbs and wings](@/docs/hoon/hoon-expressions/limb/_index.md)_
573573
574574### move
575575
@@ -609,7 +609,7 @@ Urbit's low-level programming language. Nock is functional and typeless.
609609
610610 a noun - the result of evaluating a formula against a subject.
611611
612−_See the [Nock definition](@/docs/learn/nock/definition.md)._
612+_See the [Nock definition](@/docs/nock/definition.md)._
613613
614614### mark
615615
@@ -635,7 +635,7 @@ properties of the type of a compatible core). The default is `gold`
635635- `zinc`: _covariant_
636636- `iron`: _contravariant_
637637
638−_See [advanced types](@/docs/reference/hoon-expressions/advanced.md)_.
638+_See [advanced types](@/docs/hoon/hoon-expressions/advanced.md)_.
639639
640640### ship
641641
@@ -717,17 +717,17 @@ Here's some common structure terminology:
717717
718718#### icon: The type of the mold's range
719719
720−_See [mold hoons](/docs/reference/hoon-expressions/rune/buc/)._
720+_See [mold hoons](/docs/hoon/hoon-expressions/rune/buc/)._
721721
722722### rune
723723
724724A Hoon _rune_ is a pair of ASCII symbols used to begin a
725725[Hoon expression](#a-hoon).
726726
727−For example, the rune [`?:`](@/docs/reference/hoon-expressions/rune/wut.md#wutcol) is
727+For example, the rune [`?:`](@/docs/hoon/hoon-expressions/rune/wut.md#wutcol) is
728728Hoon's most common conditional, a branch on a boolean test. The first
729729symbol in a rune represents a family of related runes. For example, the
730−[`?` family](@/docs/reference/hoon-expressions/rune/wut.md) are all conditionals.
730+[`?` family](@/docs/hoon/hoon-expressions/rune/wut.md) are all conditionals.
731731
732732The result of parsing a Hoon source expression&mdash;the rune, followed
733733by its respective children&mdash;into an AST node is simply called
@@ -763,7 +763,7 @@ Tall hoons can contain flat hoons, but not vice versa. All irregular
763763forms are flat.
764764
765765_See [hoon concept](#a-hoon),
766−[expressions](@/docs/reference/hoon-expressions/rune/_index.md).
766+[expressions](@/docs/hoon/hoon-expressions/rune/_index.md).
767767
768768### Sail
769769
@@ -774,7 +774,7 @@ _Sail_ is the Hoon markup language for XML.
774774To _scry_ means to request data from the Arvo namespace and bring it
775775to userspace.
776776
777−_See [.^ (dot-ket)](@/docs/reference/hoon-expressions/rune/dot.md#dotket)._
777+_See [.^ (dot-ket)](@/docs/hoon/hoon-expressions/rune/dot.md#dotket)._
778778
779779### slot
780780
@@ -793,7 +793,7 @@ The head of `+n` is `+2n`, the tail is `+(2n+1)`.
793793_Talk_ is Urbit's built-in chat app. It’s one example of an app that can be
794794built on top of Hall, the Urbit back-end messaging system.
795795
796−_See [Messaging](@/docs/using/messaging.md). for more information._
796+_See [Messaging](@/operations/#messaging). for more information._
797797
798798### type
799799
learn/arvo/hall.md → arvo/hall.mdrenamed+43−43
@@ -34,7 +34,7 @@ The messaging parts of Talk have been separated from its user-interface parts. W
3434
3535### Circles
3636
37−```
37+```hoon
3838++ circle {hos/ship nom/term} :: native target
3939```
4040
@@ -44,7 +44,7 @@ A `circle` is essentially a named collection of messages created by and hosted o
4444
4545When 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.
4646
47−```
47+```hoon
4848++ speech :> content body
4949 $% {$lin pat/? msg/cord} :< no/@ text line
5050 {$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
5858
5959At 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.
6060
61−```
61+```hoon
6262++ audience (set circle) :< destinations
6363++ serial @uvH :< unique identifier
6464++ thought :> inner message
@@ -71,7 +71,7 @@ At the heart of every message lies a `speech` that describes the message body. T
7171
7272A `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.
7373
74−```
74+```hoon
7575++ telegram {aut/ship thought} :< whose message
7676++ envelope {num/@ud gam/telegram} :< outward message
7777```
@@ -82,7 +82,7 @@ Finally, before sending the message over the wire, we add on the message's origi
8282
8383Messages aren't the only thing a subscription gets us. We're also kept up to date with relevant metadata.
8484
85−```
85+```hoon
8686++ crowd {loc/group rem/(map partner group)} :< our & srcs presences
8787++ group (map ship status) :< presence map
8888++ status {pec/presence man/human} :< participant
@@ -105,7 +105,7 @@ For reasons we'll discover shortly, circles keep track of both their own `group`
105105
106106### Configurations
107107
108−```
108+```hoon
109109++ lobby {loc/config rem/(map circle config)} :< our & srcs configs
110110++ config :> circle config
111111 $: src/(set circle) :< active sources
@@ -128,7 +128,7 @@ Aside from that, `config` contains a description for the circle, which is exactl
128128
129129Lastly, 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.
130130
131−```
131+```hoon
132132++ security :> security mode
133133 $? $channel :< blacklist
134134 $village :< whitelist
@@ -146,7 +146,7 @@ A `mailbox` is readable by its owner and publicly writable, with a blacklist for
146146
147147To see how that all ties together, we're going to take a look at Hall's state.
148148
149−```
149+```hoon
150150++ state :> hall state
151151 $: stories/(map term story) :< conversations
152152 :: ... ::
@@ -186,7 +186,7 @@ Applications can interact with Hall in two complementary ways: they can tell it
186186
187187Hall can be commanded by poking it with `action`s.
188188
189−```
189+```hoon
190190++ action :> user action
191191 $% :: circle configuration ::
192192 {$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
221221
222222To 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.
223223
224−```
224+```hoon
225225++ query :> query paths
226226 $% {$client $~} :< shared ui state
227227 $: $circle :> story query
@@ -269,7 +269,7 @@ To be clear, the paths for those queries are `/client` and `/circle/[name]/[data
269269
270270Any changes to the results of these queries are communicated via the following `rumor`s. It's a fairly long list of potential changes,
271271
272−```
272+```hoon
273273++ rumor :< query result change
274274 $% {$client rum/rumor-client} :< /client
275275 {$circle rum/rumor-story} :< /circle
@@ -325,7 +325,7 @@ Halls can communicate with other Halls by sending commands and subscription upda
325325
326326To request changes to a story, Halls can send `command`s.
327327
328−```
328+```hoon
329329++ command :> effect on story
330330 $% {$publish tos/(list thought)} :< deliver
331331 {$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.
341341
342342Halls can query other halls. Here's the peer move we send when we open a query on a foreign circle:
343343
344−```
344+```hoon
345345:* ost.bol :< bone
346346 %peer :< move type
347347 /[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
358358
359359Along the way so far, we've skipped some parts of structures. Most of those relate to federation. Let's see what we missed.
360360
361−```
361+```hoon
362362++ query :> query paths
363363 $% {$burden who/ship} :< duties to share
364364 {$report $~} :< duty reports
@@ -420,7 +420,7 @@ Upon receiving a valid peer on a `/circle` path, the subscribing ship is added t
420420
421421![subscriptions implementation flow](https://media.urbit.org/docs/hall/diagrams/flow-subscriptions.png)
422422
423−```
423+```hoon
424424++ poke-talk-action :< we got poked with an action.
425425 ++ ta-action :< applies an action.
426426 ++ 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
437437
438438![rumor implementation flow](https://media.urbit.org/docs/hall/diagrams/flow-rumors.png)
439439
440−```
440+```hoon
441441++ diff-talk-rumor :< we got a query update.
442442 ++ ta-hear :< applies a rumor to the story it's intended for.
443443 ++ 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
452452
453453![messaging implementation flow](https://media.urbit.org/docs/hall/diagrams/flow-messaging.png)
454454
455−```
455+```hoon
456456++ poke-talk-action :< we got poked with an action.
457457 ++ ta-action :< applies an action.
458458:: ::
@@ -514,7 +514,7 @@ Queries are the paths you pass into `%peer` moves. Internally, they get translat
514514
515515To 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.
516516
517−```
517+```hoon
518518++ query ::
519519 $% {$client $~} :< shared ui state
520520 :: .... ::
@@ -532,7 +532,7 @@ Valid paths include:
532532
533533Contains a map of glyphs and the audiences that they map to, as well as a map of ships and their locally set nicknames.
534534
535−```
535+```hoon
536536++ prize :> query result
537537 $% {$client prize-client} :< /client
538538 :: ... ::
@@ -547,7 +547,7 @@ Contains a map of glyphs and the audiences that they map to, as well as a map of
547547
548548Contains 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.
549549
550−```
550+```hoon
551551++ rumor :> query result change
552552 $% {$client rum/rumor-client} :< /client
553553 :: ... ::
@@ -565,7 +565,7 @@ Contains either a bound or unbound glyph and its target, or a ship with its new
565565
566566To 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.
567567
568−```
568+```hoon
569569++ query ::
570570 $% {$public $~} :< public memberships
571571 :: .... ::
@@ -583,7 +583,7 @@ Valid paths include:
583583
584584Contains the set of circles the user has on their public list.
585585
586−```
586+```hoon
587587++ prize :> query result
588588 $% {$public cis/(set circle)} :< /public
589589 :: ... ::
@@ -594,7 +594,7 @@ Contains the set of circles the user has on their public list.
594594
595595Contains a circle that was either added or removed from the public list.
596596
597−```
597+```hoon
598598++ rumor :> query result change
599599 $% {$public add/? cir/circle} :< /public
600600 :: ... ::
@@ -605,7 +605,7 @@ Contains a circle that was either added or removed from the public list.
605605
606606To allow a circle owner to inspect who is currently subscribed to their stories, they can issue a query to retrieve subscription data.
607607
608−```
608+```hoon
609609++ query ::
610610 $% {$peers nom/naem} :< readers of story
611611 :: .... ::
@@ -629,7 +629,7 @@ Valid paths include:
629629
630630Contains a map of ships and the different queries they currently have active for the selected story.
631631
632−```
632+```hoon
633633++ prize :> query result
634634 $% {$peers pes/(jar ship query)} :< /peers
635635 :: ... ::
@@ -640,7 +640,7 @@ Contains a map of ships and the different queries they currently have active for
640640
641641Contains a ship and a query, and a flag to indicate whether that subscription has started or ended.
642642
643−```
643+```hoon
644644++ rumor :> query result change
645645 $% {$peers add/? who/ship qer/query} :< /peers
646646 :: ... ::
@@ -654,7 +654,7 @@ Circle queries allow for the retrieving of data from stories. Their messages, co
654654
655655A 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`.
656656
657−```
657+```hoon
658658++ query ::
659659 $% $: $circle :> story query
660660 nom/naem :< circle name
@@ -718,7 +718,7 @@ Valid paths include:
718718
719719Contains (where applicable) messages in envelopes (with message numbers), as well as local and remote configurations and presences.
720720
721−```
721+```hoon
722722++ prize :> query result
723723 $% {$circle package} :< /circle
724724 :: ... ::
@@ -736,7 +736,7 @@ Contains a detailed change description of the data relevant to the query that ch
736736
737737Messages 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.
738738
739−```
739+```hoon
740740++ rumor :> query result change
741741 $% {$circle rum/rumor-story} :< /circle
742742 :: ... ::
@@ -779,7 +779,7 @@ Actions can be sent by poking Hall with data marked as `%hall-action`. Actions a
779779
780780Since all of these apply to a specific circle, they all specify a name `nom` of the circle to operate on.
781781
782−```
782+```hoon
783783++ action :> user action
784784 $% {$create nom/naem des/cord sec/security} :< create circle
785785 {$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
807807
808808There 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.
809809
810−```
810+```hoon
811811++ action :> user action
812812 $% {$convey tos/(list thought)} :< post exact
813813 {$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
823823
824824These concern the presence users have in circles they are participating in.
825825
826−```
826+```hoon
827827++ action :> user action
828828 $% {$notify aud/audience pes/(unit presence)} :< our presence update
829829 {$naming aud/audience man/human} :< our name update
@@ -839,7 +839,7 @@ These concern the presence users have in circles they are participating in.
839839
840840When the user makes any changes to shared UI elements (elements that should persist between clients), this has to be communicated to Hall.
841841
842−```
842+```hoon
843843++ action :> user action
844844 $% {$glyph gyf/char aud/audience bin/?} :< un/bind a glyph
845845 {$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
853853
854854### Miscellaneous changes
855855
856−```
856+```hoon
857857++ action :> user action
858858 $% {$public add/? cir/circle} :< show/hide membership
859859 :: ... ::
@@ -925,7 +925,7 @@ These should be fairly straightforward. Like packets are to Urbits, `delta`s are
925925
926926This also wouldn't be Urbit if we couldn't boil that down to a few simple pseudocode functions. Let's try, shall we?
927927
928−```
928+```hoon
929929++ bake |= {brain delta} ^- {brain opera}
930930++ peek |= {brain query} ^- (unit (unit prize))
931931++ 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
955955
956956Below is the application state, and the deltas we'll be using to modify it.
957957
958−```
958+```hoon
959959|%
960960++ brain {num/@ud $~} :< application state
961961++ delta :> state change
@@ -970,7 +970,7 @@ Fairly simple, right? We store a number, and every change either in- or decremen
970970
971971Let'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.
972972
973−```
973+```hoon
974974++ query :> valid queries
975975 $% {$number $~} :< current number
976976 {$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
992992
993993Now, 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.
994994
995−```
995+```hoon
996996|_ {bol/bowl brain}
997997::
998998++ leak :> read permission
@@ -1003,7 +1003,7 @@ Now, let's implement all the arms that will be called as things start happening.
10031003
10041004Next, 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."
10051005
1006−```
1006+```hoon
10071007++ peek :> synchronous read
10081008 |= qer/query
10091009 ^- (unit (unit prize))
@@ -1019,7 +1019,7 @@ Next, let's create the `prize`s for the folks that make it through `++leak`. We'
10191019
10201020Our 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.
10211021
1022−```
1022+```hoon
10231023++ poke-loob :> regular old poke
10241024 |= inc/?
10251025 ^- (list delta)
@@ -1039,7 +1039,7 @@ Our app can be queried! If they're interested enough, they'll want to receive up
10391039
10401040`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.
10411041
1042−```
1042+```hoon
10431043++ feel :> delta to rumor
10441044 |= {qer/query del/delta}
10451045 ^- (unit rumor)
@@ -1090,7 +1090,7 @@ As we saw earlier, for `/number` queries the `delta`s match one-on-one with the
10901090
10911091`~sorreg-namtyv`
10921092
1093−```
1093+```hoon
10941094=> |%
10951095 --
10961096|* $: :> 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
12441244
12451245## A new-Gall example app
12461246
1247−```
1247+```hoon
12481248:: counter app
12491249:: new gall example, may or may not compile.
12501250::
using/sail-and-udon.md → arvo/sail-and-udon.mdrenamed+3−3
@@ -21,7 +21,7 @@ This document will be divided into two main sections: the Sail guide and the Udo
2121## Getting Started {#getting-started}
2222
2323Before starting with either Sail or Udon, make sure that your ship is
24−[mounted to Unix](/docs/getting-started/booting-a-ship)
24+[mounted to Unix](@/operations#booting-a-ship)
2525
2626To host that output, your ship also has a web-server that can be found at
2727`localhost` (default port 80) if it’s your first ship that’s running on the
@@ -944,12 +944,12 @@ destination.
944944**Example:**
945945
946946```
947−[I'm an inline-style link](https://www.urbit.org/docs/using/shell)
947+[I'm an inline-style link](https://urbit.org/operations/#using-the-shell)
948948```
949949
950950**Produces:**
951951
952−[I'm an inline-style link](https://www.urbit.org/docs/using/shell)
952+[I'm an inline-style link](https://urbit.org/operations/#using-the-shell)
953953
954954The second type is a reference-style link, which uses a relative path, based on
955955the current page's location. Instead of the full url, we use `..` to fill in
using/ship-troubleshooting.md → arvo/ship-troubleshooting.mdrenamed+1−1
@@ -28,7 +28,7 @@ If you accidentally booted with the same keyfile twice, the only remedy is perfo
2828
2929**Avoid killing the Urbit process directly.** The best way to end an urbit process is to use `ctrl-d` from the Dojo. Unix methods to kill the process, such as with `ctrl-z` or with the `kill` Bash command, or simply closing the window, should only be used if `ctrl-d` does not work.
3030
31−**Keep up-to-date builds.** Check for latest Urbit version at https://github.com/urbit/urbit/releases. If you're behind, update using [this guide](/docs/getting-started)
31+**Keep up-to-date builds.** Check for latest Urbit version at https://github.com/urbit/urbit/releases. If you're behind, update using [this guide](/operations/)
3232
3333**`|hi` your star to see if you're connected.** Find out who your star is by running `(sein:title our now our)` in the Dojo. Then, run `|hi ~star`, where `~star` is the star's name, and if things are working properly, you should get the message `hi ~star successful`. It could also be helpful to use `|hi` to check connectivity with `~zod` or another planet that you're in a Talk channel with.
3434
azimuth/_index.mdnew file+5
@@ -0,0 +1,5 @@
1++++
2+title = "Azimuth"
3+weight = 1
4+template = "doc.html"
5++++
learn/azimuth.md → azimuth/azimuth.mdrenamed

The content is the same.

reference/azimuth-glossary.md → azimuth/glossary.mdrenamed+3−3
@@ -1,13 +1,13 @@
11+++
22title = "Azimuth Glossary"
3−weight = 4
3+weight = 3
44template = "doc.html"
55+++
66
77
8−Azimuth is a general-purpose public-key infrastructure (PKI) on the Ethereum blockchain, used as a platform for Urbit identities. You need an Azimuth identity to use the Arvo network. All identity-related operations are governed at this layer For more information, see the [Azimuth documentation](https://urbit.org/docs/concepts/azimuth/).
8+Azimuth is a general-purpose public-key infrastructure (PKI) on the Ethereum blockchain, used as a platform for Urbit identities. You need an Azimuth identity to use the Arvo network. All identity-related operations are governed at this layer For more information, see the [Azimuth documentation](azimuth).
99
10−This glossary is intended to familiarize you with Azimuth-related terminology. To brush up on terminology related to Arvo, check out the [Arvo glossary](../arvo-glossary).
10+This glossary is intended to familiarize you with Azimuth-related terminology. To brush up on terminology related to Arvo, check out the [Arvo glossary](../arvo/glossary).
1111
1212### Azimuth identity
1313
concepts/_index.mddeleted−13
@@ -1,13 +0,0 @@
1−+++
2−title = "Concepts"
3−weight = 3
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−+++
7−The documents in this section are high-level introductions to the Urbit project and components thereof.
8−
9−
10−* [Technical Overview](technical-overview): An in-the-weeds explanation of the components of the Urbit stack.
11−* [Azimuth](azimuth): An overview of Azimuth, the Urbit identity layer.
12−* [Galaxies, Stars, and Planets](galaxies-stars-and-planets): A guide to the Urbit network hierarchy.
13−* [Community Tutorials](community-tutorials): A collection of community guides for various pieces of the project.
concepts/azimuth.mddeleted−93
@@ -1,93 +0,0 @@
1−+++
2−title = "Azimuth"
3−weight = 4
4−template = "doc.html"
5−description = "An explanation of the Urbit identity layer."
6−+++
7−Azimuth is a general-purpose public-key infrastructure (PKI) on the Ethereum blockchain, used as a platform for Urbit identities that we call _points_. You need a point to use the Arvo network.
8−
9−The primary way to interact with Azimuth is through our [Bridge](https://github.com/urbit/bridge) application and the node libraries that it depends on, [azimuth-js](https://github.com/urbit/azimuth-js) and [urbit-key-generation](https://github.com/urbit/urbit-key-generation). Take a look at the source and play around, or see [Getting Started](/docs/getting-started).
10−
11−## Arvo vs. Azimuth
12−
13−Urbit is a project, not a single computer system. It has multiple components: Arvo, the operating system; and Azimuth, the identity system. Let's compare them.
14−
15−**Arvo** is an operating system that provides the software for a personal server. These personal servers together constitute the peer-to-peer Arvo network. To make this network work on the social level, Arvo is built to work with a system of scarce and immutable identities.
16−
17−**Azimuth** is the public-key infrastructure built to be such a system. A suite of smart-contracts on the Ethereum blockchain, Azimuth determines which Ethereum addresses own which Azimuth identities, called _points_. All point-related operations, such as transfers, are governed at this layer. But Azimuth isn't built strictly for Arvo -- it could be used as a generalized identity system for other projects.
18−
19−These otherwise-parallel systems meet when you want to connect to the Arvo network. Your Arvo personal server, called your _ship_, needs to be able to prove cryptographically that it is who it says it is. This proof comes in the form of a keyfile, derived from your point, that you use to start your ship.
20−
21−A metaphor might help illustrate the relationship between these two systems: the Arvo network is the neighborhood that you live in; Azimuth is the bank vault that stores the deed to your house.
22−
23−## Why Urbit Uses a Blockchain
24−
25−The Arvo network is composed of personal servers: instances of the Arvo operating system, called ships, that communicate as peers.
26−
27−Every ship has an associated secure identity, called a point, that it needs to connect to the network. Your point is your name and your network address. Each point has associated authentication and encryption keys for networking. Think of a point as an IP address, a domain name, and a PGP key-pair.
28−
29−There are a limited number of points and, as you might expect, scarcity gives points value. This means that bad actors – spammers, scammers, and malware-spreaders – can be made economically unviable. Points being immutable allows for reputation systems to be built on top, keeping the network friendly and giving users information to help them decide who to treat as a trusted peer.
30−
31−At the user level, having one identity for your digital life means that all the services that you trust recognize you. You no longer need to worry about managing dozens of different logins. When you're using Arvo, everything you do is "verified" in the sense that it links back to your point.
32−
33−But wait! We need some way to secure these identities. To that end, we have built the Azimuth identity layer on the Ethereum blockchain to determine which PKI. As mentioned above, it's separate from and parallel to the Arvo network.
34−
35−In theory, our ecosystem doesn't need a blockchain, because Urbit identities are more like real estate than currency: they change hands slowly. A low-friction, zero-trust solution to the double-spend problem isn't an economic necessity for transactions such as ours. So we could have the Arvo network run its own key-signing system. But, since Azimuth identities are valuable, you don't want to put them in an self-hosted PKI that isn't generally recognized as secure. Arvo is still young, we'd prefer to use an existing system for people to secure their property.
36−
37−Moving the Urbit land registry to Ethereum is an easy and obvious solution to this problem. We chose Ethereum over Bitcoin because the former is built for computation and the latter is not. We need a computational blockchain to enforce the specific rules of the Urbit identity registry.
38−
39−For more background on the decision to use the Ethereum blockchain, check out [these](https://urbit.org/posts/essays/urbit-and-the-blockchain/) [two](https://urbit.org/posts/essays/bootstrapping-urbit-from-ethereum/) posts.
40−
41−## The Urbit HD Wallet
42−
43−Owners of Azimuth points need safeguards that allow for the use of Urbit without jeopardizing cryptographic ownership of their assets. Toward this end, we created the **Urbit Hierarchical Deterministic (HD) Wallet** for the storage of points. The Urbit HD Wallet is not one key-pair, but a system of related key-pairs that each have distinct powers, from setting networking keys for communicating in the Arvo network to transferring ownership of points.
44−
45−The Urbit HD Wallet's derivation paths have a hierarchical structure, so that keys with different powers can be physically separated. A \"master ticket" can re-derive the entire wallet in case of loss. The encryption and authentication keys that points ships use to sign messages within the network are also derived from the wallet.
46−
47−Urbit HD wallets are composed of the following items, which are each assigned to their own individual Ethereum key-pairs.
48−
49−### Master Ticket
50−
51−Think of your master ticket like a very high-value password. The master ticket is the secret code from which all of your other keys are derived. Technically, your master ticket is seed entropy. You should never share it with anyone, and store it very securely. This ticket can derive all of your other keys: your ownership key and all of the related proxies.
52−
53−### Ownership Address
54−
55−An ownership address has all rights over the assets deeded to it. These rights are on-chain actions described and implemented in the Ecliptic, Azimuth's suite of governing smart-contracts.
56−
57−### Proxies
58−
59−Proxy addresses allow you to execute non-ownership related actions like spawning child points, voting, and setting networking keys without jeopardizing the keys you've designated with ownership rights. Setting proxy rights is optional, but it is recommended for on-chain actions you will execute more frequently.
60−
61−- **Management Proxy**
62−
63− Can configure or set Arvo networking keys and conduct sponsorship related
64− operations.
65−
66−- **Voting Proxy**
67−
68− Galaxies only. Galaxies are the part of the galactic senate, and this means
69− they can cast votes on new proposals including changes to the Ecliptic.
70−
71−- **Spawn Proxy**
72−
73− For stars and galaxies only. Can create new child points.
74−
75−![](https://media.urbit.org/fora/proposals/UP-8.jpg)
76−
77−
78−Most Ethereum tokens use the ERC-20 standard for smart contracts. Azimuth points
79−are, however, essentially different from most Ethereum tokens, due to points not
80−being fungible. Since any two stars will handle social-networking realities in a
81−different way, they will carry a different reputation. Points are to houses as
82−tokens are to gold.
83−
84−The ERC-721 standard, having been made specifically to provide a smart-contract
85−interface for non-fungible assets, serves our needs well. This is the standard
86−that we use for deeding Azimuth points.
87−
88−Points, and all of their blockchain operations, are governed by the Ecliptic.
89−The Ecliptic is an Ethereum smart-contract that governs point state and the
90−ownership, spawn, management, and voting rights affiliated with your points.
91−
92−For the technical implementation details, take a look at Azimuth's
93−[Github repository](https://github.com/urbit/azimuth).
concepts/community-tutorials.mddeleted−15
@@ -1,15 +0,0 @@
1−+++
2−title = "Community Tutorials"
3−weight = 9
4−template = "doc.html"
5−description = "A collection of unofficial but useful Urbit learning resources."
6−+++
7−Here are some tutorials written by members of the Urbit community. Some are a little outdated, but they may still prove useful.
8−
9−- [Generators](https://github.com/joemfb/mardev/tree/master/docs/gen) by `~master-morzod`
10−- [Urbit by Doing](https://github.com/Fang-/Urbit-By-Doing) by `~palfun-foslup`
11−- [Learning Hoon](https://github.com/knubie/learning-hoon) by `@knubie`
12−- [A Nock Interpreter](https://jtobin.io/nock) by `~nidsut-tomdun`
13−- [Basic Hoonery](https://jtobin.io/basic-hoonery) by `~nidsut-tomdun`
14−
15−If you want to add something to the list, [shoot us an email](mailto:support@urbit.org) or make a pull request in the [docs repository](https://github.com/urbit/docs).
concepts/galaxies-stars-and-planets.mddeleted−34
@@ -1,34 +0,0 @@
1−+++
2−title = "Galaxies, Stars, and Planets"
3−weight = 7
4−template = "doc.html"
5−description = "An explanation of the Urbit address-space hierarchy. "
6−+++
7−
8−The current internet has no consistent system of identity. There are only quasi-identities such as IP addresses, Google accounts and email addresses, each able to be assumed and abandoned without much trouble. The result is a hostile social experience, since bad actors -- spammers, scammers, malware-spreaders, and harassers -- have an inexhaustible supply of places to hide.
9−
10−That's why we built a system for persistent identity called [Azimuth](@/docs/concepts/azimuth.md). Azimuth identities are called _points_, and you need one to use the Arvo network. Points are secure, since they are owned and controlled with key-pair the Ethereum blockchain, which Azimuth is built on top of.
11−
12−An Azimuth point is a pronounceable string like `~firbyr-napbes`. It means nothing, but it's easy to remember and say out loud. `~firbyr-napbes` is actually just a 32-bit number (`3.237.967.392`, to be exact) that we turn into a human-memorable string.
13−
14−Points come in three classes: **galaxies**, **stars**, and **planets**. You can tell what class a point is in by how long its name is. The address space grows like a family tree. Galaxies are 8-bit and have names like `~mul`. Galaxies can issue 16-bit stars (`~dacpyl`), which can themselves issue 32-bit planets (`~laptel-holfur`).
15−
16−Planets are intended for everyday use by an adult human, and there is a maximum of about 4.3 billion of them (2 to the 32nd power). Stars and galaxies, on the other hand, are meant to act as network infrastructure: in the Arvo network they provide P2P routing and distribute software updates.
17−
18−```
19− Size Name Parent Object Example
20− ----- ------ ------ ------ -------
21− 2^8 galaxy ~ supernode ~zod
22− 2^16 star galaxy supernode ~dozbud
23− 2^32 planet star user ~tasfyn-partyv
24− 2^64 moon planet device ~sigsam-nimbot-tasfyn-partyv
25− 2^128 comet ~ bot ~racmus-mollen-fallyt-linpex--watres-sibbur-modlux-rinmex
26−```
27−
28−## Moons and Comets
29−
30−In addition to these three classes of Azimuth points, there two other kinds of Urbit identities, but they do _not_ use Azimuth.
31−
32−**Moons** are 64 bits, are issued by planets, and have names like `~doznec-salfun-naptul-habrys`. Moons are meant for connected devices: phones, smart TVs, digital thermostats. Moons are not independent, but are subordinated to their parent planet. To create new moon under your planet, follow [this guide](/docs/using/admin#moons).
33−
34−**Comets** are 128-bit points with no parents that can be launched by anyone. They are meant for bots. Being disposable and essentially unlimited, they will likely not be trusted by the others on the Arvo network. They have enormous names, like `~racmus-mollen-fallyt-linpex--watres-sibbur-modlux-rinmex`.
concepts/technical-overview.mddeleted−170
@@ -1,170 +0,0 @@
1−+++
2−title = "Technical overview"
3−weight = 1
4−template = "doc.html"
5−description = "A more in-depth description of the entire Urbit stack."
6−+++
7−Urbit is a clean-slate software stack designed to implement an encrypted P2P
8−network of general-purpose personal servers. Each server on this network is a
9−deterministic computer called an 'urbit' that runs on a Unix-based virtual
10−machine.
11−
12−The current Urbit stack includes (among other things):
13−
14−- Arvo: the functional operating system of each urbit, written in Hoon.
15−- Azimuth: the Urbit identity layer, built on the Ethereum blockchain.
16−- Hoon: a strictly typed functional programming language whose standard library
17− includes a Hoon-to-Nock compiler.
18−- Nock: a low-level combinator language whose formal specification fits readably on a t-shirt.
19−- Vere: a Nock interpreter and Unix-based virtual machine that mediates between
20− each urbit and the Unix software layer.
21−
22−## Anatomy of a personal server
23−
24−Your urbit is a deterministic computer in the sense that its state is a pure
25−function of its event history. Every event in this history is a
26−[transaction](https://en.wikipedia.org/wiki/Transaction_processing); your
27−urbit's state is effectively an [ACID database](https://en.wikipedia.org/wiki/ACID).
28−
29−Because each urbit is deterministic we can describe its role appropriately in
30−purely functional terms: it maps an input event and the old urbit state to a
31−list of output actions and the subsequent state. This is the Urbit transition
32−function.
33−
34−```
35−<input event, old state> -> <output actions, new state>
36−```
37−
38−For example, one input event could be a keystroke from the terminal, say
39−`[enter]` after having already typed `(add 2 2)`; and an output action could be
40−to print in the terminal window the resulting value of a computation performed
41−when the user hit `[enter]`, in this case `4`. The input event is stored in the
42−urbit's event history.
43−
44−Events always start from outside of your urbit, whether they're local to the
45−computer running the urbit (e.g., a keystroke in the terminal) or they originate
46−elsewhere (e.g., a packet received from another urbit). When an event is
47−processed, various parts of the urbit state can be modified before the resulting
48−list of output actions is returned.
49−
50−Can output actions from your urbit cause side-effects in the outside world?
51−The answer had better be "yes," because a personal server without side effects
52−isn't useful for much. In another sense the answer had better be "no," or else
53−there is a risk of losing functional purity; your urbit cannot _guarantee_ that
54−the side effects in question actually occur. What's the solution?
55−
56−Each urbit is
57−[sandboxed](https://en.wikipedia.org/wiki/Sandbox_%28computer_security%29) in a
58−virtual machine, Vere, which runs on Unix. Code running in your urbit cannot
59−make Unix system calls or otherwise directly affect the underlying platform.
60−Strictly speaking, internal urbit code can only change internal urbit state; it
61−has no way of sending events outside of its runtime environment. Functional
62−purity is preserved.
63−
64−In practical terms, however, you don't want your urbit to be an impotent
65−[brain in a vat](https://en.wikipedia.org/wiki/Brain_in_a_vat). That's why
66−Vere also serves as the intermediary between your urbit and Unix. Vere observes
67−the list of output events, and when external action is called for makes the
68−appropriate system calls itself. When external events relevant to your urbit
69−occur in the Unix layer, Vere encodes and delivers them as input events.
70−
71−### Arvo
72−
73−Arvo is a purely functional, [non-preemptive](https://en.wikipedia.org/wiki/Cooperative_multitasking)
74−OS, written in Hoon, that serves as the event manager of your urbit.
75−It can upgrade itself from over the network without downtime. The Arvo kernel
76−proper is quite simple -- it's only about 600 lines of code, excluding its
77−various modules.
78−
79−The Urbit transition function is implemented in Arvo. Upon being 'poked' by
80−Vere with the pair of `<input event, state>`, Arvo directs the event to the
81−appropriate OS module. The result of each Vere 'poke' is a pair of
82−`<output events, new state>`. Events are typed, and each has an explicit
83−call-stack structure indicating the event's source module in Arvo.
84−
85−Arvo modules are also called 'vanes'. Arvo's vanes are:
86−
87−- Ames: defines and implements Urbit's encrypted P2P network protocol, as well
88− as Urbit's identity protocol.
89−- Behn: manages timer events for other vanes.
90−- Clay: global, version-controlled, and referentially-transparent file system.
91−- Dill: terminal driver.
92−- Eyre: HTTP web client and server.
93−- Ford: typed functional build system.
94−- Gall: application sandbox and manager.
95− - Dojo (app): Shell and Hoon REPL.
96− - Talk (app): Chat client.
97−
98−### Hoon
99−
100−Hoon is a strictly typed functional programming language that compiles itself
101−to Nock and is designed to support higher-order functional programming without
102−requiring knowledge of category theory or other advanced mathematics. Haskell
103−is fun but it isn't for everybody.
104−
105−Hoon aspires to a concrete, imperative feel. To discourage the creation of
106−write-only code, Hoon forbids user-level macros and uses ASCII digraphs instead
107−of keywords. The type system infers only forward and does not use unification,
108−but is not much weaker than Haskell's. The compiler and inference engine is
109−about 3000 lines of Hoon.
110−
111−### Nock
112−
113−Nock is a low-level [homoiconic](https://en.wikipedia.org/wiki/Homoiconicity)
114−combinator language. It's so simple that its [specification](@/docs/learn/nock/definition.md)
115−fits on a t-shirt. In some ways Nock resembles a nano-Lisp but its ambitions
116−are more narrow. Most Lisps are one-layer: a practical language is to be
117−created by extending a theoretically simple interpreter. The abstraction is
118−simple and the implementation is practical. Unfortunately it's far more difficult
119−to enforce both simplicity and practicality in an actual Lisp codebase. Hoon
120−and Nock are two layers: Hoon, the practical layer, compiles itself to Nock, the
121−simple layer. Your urbit runs in Vere, which includes a Nock interpreter, so it
122−can upgrade Hoon over the network without downtime.
123−
124−The Nock data model is quite simple. Every piece of data is a 'noun'. A noun
125−is an atom or a cell. An atom is any unsigned integer. A cell is an ordered
126−pair of nouns. Nouns are acyclic and expose no pointer equality test.
127−
128−### Vere
129−
130−Vere is the Nock runtime environment and Urbit VM. It's written in C, runs on
131−Unix, and is the intermediate layer between your urbit and Unix. As noted
132−earlier, Unix system calls are made by Vere, not Arvo; Vere must also encode
133−and deliver relevant external events to Arvo. Vere is also responsible for
134−implementing jets and maintaining the persistent state of each urbit.
135−
136−In principle, Vere keeps a comprehensive log of every event from the time you
137−initially booted your urbit. What happens if the physical machine loses power
138−and your urbit's state is 'lost' from memory? When your urbit restarts it will
139−replay its entire event history and totally recover its latest state from
140−scratch.
141−
142−In practice, event logs become large and unwieldy over time. Periodically a
143−snapshot of the permanent state is taken and the logs are pruned. You're still
144−able to rebuild your state in case of power outage, down to the last keystroke.
145−
146−Vere is not essential to the Urbit stack; one can imagine using Urbit on a
147−hypervisor, or even bare metal. One member of the community is even working on
148−an independent implementation of Urbit using Graal/Truffle on the JVM.
149−
150−The Urbit stack (compiler, standard library, kernel, modules, and applications,
151−but excluding Vere) is about 30,000 lines of Hoon. Urbit is patent-free and MIT
152−licensed.
153−
154−### Azimuth
155−
156−Azimuth is a general-purpose public-key infrastructure (PKI) on the Ethereum
157−blockchain, used as a decentralized ledger for Urbit identities that we call
158−**points**. Having a point is necessary to use the Urbit network, which makes it
159−important to have a neutral ledger to determine who owns what.
160−
161−Azimuth is not, however, part of the Urbit stack. Azimuth is a parallel system
162−that can be used as a generalized identity system for other projects. Azimuth
163−"touches" the Urbit ecosystem when a point is used to boot a virtual computer
164−on the Urbit network for the first time. When that happens, the point considered
165−**linked** to Azimuth and the point’s full powers are available for use. Once a
166−point is linked, it cannot be unlinked.
167−
168−A metaphor might make the relationship between these two systems to understand:
169−Azimuth is the bank vault that stores the deed to your house. The Urbit network
170−is the neighborhood that you live in.
getting-started/_index.mddeleted−37
@@ -1,37 +0,0 @@
1−+++
2−title = "Getting Started"
3−weight = 1
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−+++
7−
8−Welcome to Urbit, a personal server. Urbit isn't ready for serious use yet, but it's available to try out. If you have an Azimuth point, you can follow this step-by-step guide to get your point's _keyfile_, which you need to boot your ship. Then you can install Urbit and join the community.
9−
10−If you don't have an Azimuth point, you can always [create a comet](@/docs/using/creating-a-comet.md) to join the network before committing to a point, or [create a development ship](@/docs/using/creating-a-development-ship.md) and start using Urbit offline first.
11−
12−### [Step 1: Using Bridge](@/docs/getting-started/using-bridge.md)
13−
14−In order to join the Urbit network, you need an Azimuth point, which acts like an identity and a password for your Urbit ship. Bridge is our client for managing Azimuth points, and lets you get your keyfile and claim the point.
15−
16−### [Step 2: Installing Urbit](@/docs/getting-started/installing-urbit.md)
17−
18−The Urbit software is a command-line application that runs the Arvo operating system. This guide walks you through the installation process.
19−
20−### [Step 3: Booting a Ship](@/docs/getting-started/booting-a-ship.md)
21−
22−This guide teaches you how to get your ship operational and onto the Arvo network.
23−
24−### [Optional: Contributing](contributing)
25−
26−This document will get your started with contributing code or contributing to the community.
27−
28−## Terminology
29−
30−You've already encountered some new terminology on this page, and you'll encounter more as you proceed with this guide. Let's go over the basics:
31−
32−- Arvo is the name of the Urbit operating system.
33−- An instance of the Arvo operating system is called a _ship_.
34−- Ships communicate with one another over "the Arvo network."
35−- Azimuth is an Ethereum-based PKI used to give each ship a unique identity on the Arvo network.
36−- An Azimuth identity is called a _point_. You'll need a point to use the Arvo network.
37−- Urbit refers to the project as a whole, including Arvo, Azimuth, and other system components.
getting-started/booting-a-ship.mddeleted−108
@@ -1,108 +0,0 @@
1−+++
2−title = "Booting a Ship"
3−weight = 3
4−template = "doc.html"
5−+++
6−Now the rubber meets the road. You'll be booting your ship with the keyfile that you [downloaded from Bridge](@/docs/concepts/azimuth.md).
7−
8−Note that this document is only for booting a ship that uses the live Arvo network. If you just want to create an unnetworked ship for development purposes, read [this guide](@/docs/using/creating-a-development-ship.md) instead.
9−
10−## Step 1: Find Your Point's Name
11−
12−This will look something like `~lodleb-ritrul`. You can see the name of your point(s) when you log into your wallet using the Bridge client.
13−
14−![](https://media.urbit.org/site/bridge-0.png)
15−
16−## Step 2: Find the path to your keyfile
17−
18−Find the absolute path to the keyfile that you downloaded from Bridge. Copy it.
19−
20−## Step 3: Run the boot command
21−
22−Type `cd` in your terminal to return to your home directory. If you want to
23−store your ship somewhere besides your home directory, change the terminal's
24−working directory to the desired directory.
25−
26−Run the command below, except with `sample-planet` replaced by the name of your
27−Urbit identity, and `path/to/my-planet.key` replaced with the path to your
28−keyfile:
29−
30−```
31−./urbit -w sample-planet -k path/to/my-planet.key
32−```
33−
34−Or, if you'd prefer to copy your key in, you can run:
35−
36−```
37−./urbit -w sample-planet -G rAnDoMkEy
38−```
39−
40−Either command will create a directory called `sample-planet/` and begin
41−building your ship. It may take a few minutes.
42−
43−When your ship is finished booting, you will see the `~sample-planet:dojo>`
44−prompt. At that point, you should permanently erase your keyfile from your
45−machine.
46−
47−## Basic Operations
48−
49−Welcome to your ship! There's a few things you should do to become oriented.
50−
51−### The Dojo
52−
53−Let's try out the Dojo, the Arvo command line and Hoon REPL:
54−
55−```
56−~sample-planet:dojo> (add 2 2)
57−```
58−
59−Should produce:
60−
61−```
62−> (add 2 2)
63−4
64−```
65−
66−Good.
67−
68−### Mounting
69−
70−Your ship's filesystem being "mounted" means that its filesystem can be interacted with through Unix. This makes things much easier for you.
71−
72−The Arvo filesystem isn't mounted to Unix by default. Switch to the Dojo prompt and run:
73−
74−```
75−~sample-planet:dojo> |mount %
76−```
77−
78−This should produce:
79−
80−```
81−> |mount %
82−>=
83−```
84−
85−which indicates that the command was processed.
86−
87−`|mount %` will cause a `home/` directory to appear inside your _pier_ folder in Unix (the "pier" is our shorthand for the directory whose name corresponds to your Azimuth point). Once you've changed a file, `|commit %home` to synchronize changes to your pier.
88−
89−**Note:** Do not delete your pier. Doing so will make your ship unusable, because deleted piers normally cannot be recovered. The exception is during a network breach (a reset) -- in such a rare event, you must delete your pier to update your ship to the new era, and ships with previously deleted piers can be recovered.
90−
91−### Shutting Down and Restarting
92−
93−You can toggle between the Dojo and Talk (chat) prompts with `ctrl-x`. You can turn your ship off with `ctrl-d` from the Talk or Dojo prompts.
94−
95−To restart your ship, simply pass the name of your pier:
96−
97−```
98−./urbit some-planet
99−```
100−
101−### Using Landscape
102−
103−Landscape is the Urbit web interface, and it's the best way to interact with your ship. Chrome and Brave are the recommended browsers for using Landscape. To get onto Landscape:
104−
105−1. Start your ship. In the boot messages, look for a line that says something like `http: live (insecure, public) on 80`. The number given is the port that your ship is using.
106−2. If the port given is 80, simply type `localhost` into your browser's address bar. If the given port is a different number, such as `8080`, you would type `localhost:8080`.
107−3. Type `+code` into your ship's Dojo. Copy-paste the returned code into the field asking for it.
108−4. You're in! Now you can explore apps such as Chat for messages, Publish for blogging, and Weather.
getting-started/contributing.mddeleted−21
@@ -1,21 +0,0 @@
1−+++
2−title = "Contributing"
3−weight = 5
4−template = "doc.html"
5−description = "A guide to getting involved with the Urbit project."
6−+++
7−
8−We welcome submissions for improving our [code](https://github.com/urbit/urbit/) and [documentation](https://github.com/urbit/docs/) alike. If you're looking to get involved, there are a few things you can do to get started right away:
9−
10−- Join the [urbit-dev](https://groups.google.com/a/urbit.org/forum/#!forum/dev) mailing list
11−- [Apply to Hoon School](https://urbit.org/hoonschool/). We run a beginner course and an advanced course to teach the Hoon programming language and Urbit application development. Both courses are free, online, and asynchronous.
12−- Check out the "good contributor issues" tag in the [urbit](https://github.com/urbit/urbit/labels/good%20contributor%20issue) and [arvo](https://github.com/urbit/arvo/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+contributor+issue%22) Github repositories.
13−- Reach out to [support@urbit.org](mailto:support@urbit.org) to say hi and ask any questions you might have. We're always happy to try to point you in the right direction.
14−
15−Many contributors start by contributing to the [documentation](https://github.com/urbit/docs), [urbit.org](https://github.com/urbit/urbit.org), or [bridge](https://github.com/urbit/bridge) repositories. If you're not yet comfortable with Hoon, we recommend starting there.
16−
17−If you're just getting set up to work on the Urbit or Arvo code base for the first time, see our [Getting Started](@/docs/getting-started/_index.md) guide, then have a look at [CONTRIBUTING.md](https://github.com/urbit/urbit/blob/master/CONTRIBUTING.md) in the Urbit repository.
18−
19−## Code style
20−
21−Before contributing Hoon code, you should familiarize yourself with the [Hoon style guide](@/docs/learn/hoon/style.md). For a good example of idiomatic Hoon, see [Ford](https://github.com/urbit/urbit/blob/master/pkg/arvo/sys/vane/ford.hoon).
getting-started/installing-urbit.mddeleted−74
@@ -1,74 +0,0 @@
1−+++
2−title = "Installing Urbit"
3−weight = 2
4−template = "doc.html"
5−+++
6−
7−Arvo runs nicely on a Unix-like operating system – Ubuntu, Fedora, macOS, and FreeBSD, for example. If you're using Windows, you'll need to get one of the aforementioned systems. Don't worry: most of them are free. Let's get it onto your machine.
8−
9−But first, some terminology:
10−
11−- `vere` or `urbit`: the interpreter that runs when you run a command like `urbit` or `/bin/urbit` in your command line
12−- `arvo`: the deterministic OS that lives in a directory whose name matches your Azimuth point, ie `~famreb-todmec` lives in `/famreb-todmec`
13−
14−We have different installation instructions for different platforms. To install and run Arvo, run the commands that are listed for your operating system.
15−
16−On any platform, you can check your Arvo installation by running the `urbit` command. Installation was successful if you get a block of output that begins with the line below:
17−
18−```
19−Urbit: a personal server operating function
20−```
21−
22−## Instructions
23−
24−### macOS (Darwin)
25−
26−We provide static binaries for macOS. You can grab the latest stable release as follows:
27−
28−```
29−curl -O https://bootstrap.urbit.org/urbit-darwin-v0.8.2.tgz
30−tar xzf urbit-darwin-v0.8.2.tgz
31−./urbit
32−```
33−
34−### Linux (64-bit)
35−
36−We also provide static binaries for 64-bit Linux distributions (Ubuntu, Debian, Fedora, Arch, etc.). You can get the latest stable release similarly:
37−
38−```
39−curl -O https://bootstrap.urbit.org/urbit-linux64-v0.8.2.tgz
40−tar xzf urbit-linux64-v0.8.2.tgz
41−./urbit
42−```
43−
44−To access your Urbit via HTTP on port 80 on Ubuntu, you may need to run the following:
45−
46−```
47−sudo apt-get install libcap2-bin
48−sudo setcap 'cap_net_bind_service=+ep' /path/to/urbit
49−```
50−
51−### Other
52−
53−We maintain a [Nix](https://nixos.org/nix) derivation for Urbit in [nixpkgs](https://github.com/NixOS/nixpkgs), however we're still in the process of updating it to `v0.8.2`. Once available, you will be able to install and launch it like so:
54−
55−```
56−nix-env -i urbit
57−urbit
58−```
59−
60−## Booting a Ship
61−
62−One you've completed your installation, you can continue on to the instructions for [booting your ship](@/docs/getting-started/booting-a-ship.md) to get on the Arvo network.
63−
64−Or, if you want to try testing and writing code, check out the guide to [getting an unnetworked development ship](/docs/using/creating-a-development-ship).
65−
66−## Set Up Swap
67−
68−If you're running Urbit in the cloud on a small instance, you may need to additionally configure swap space. If you're not, you can safely ignore this section.
69−
70−Urbit wants to map 2GB of memory when it boots up. We won’t necessarily use all this memory, we just want to see it. On a normal modern PC or Mac, or on a large cloud virtual machine, this is not an issue. On some small cloud virtual machines (Amazon or Digital Ocean), the default memory configuration is smaller than this, and you need to manually configure a swapfile.
71−
72−Digital Ocean has a post on adding swap [here](https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04). For Amazon there’s a StackOverflow thread [here](https://stackoverflow.com/questions/17173972/how-do-you-add-swap-to-an-ec2-instance).
73−
74−Don’t spend a lot of time tweaking these settings; the simplest thing is fine.
getting-started/using-bridge.mddeleted−70
@@ -1,70 +0,0 @@
1−+++
2−title = "Using Bridge"
3−weight = 1
4−template = "doc.html"
5−+++
6−
7−[Bridge](https://github.com/urbit/bridge) is the application we built for interacting with [Azimuth](@/docs/concepts/azimuth.md), the Urbit PKI, and managing your Azimuth identities, also known as _points_. Importantly, Bridge also allows you to generate a keyfile that you will need to boot your ship so that it can use the Arvo network.
8−
9−This guide assumes that you own an Azimuth identity, or that you have found someone to send an Azimuth identity to your Ethereum address and are looking to claim it.
10−
11−## Online Bridge
12−
13−To connect to Bridge, type `https://bridge.urbit.org` into your browser, and enter the your identity's credentials in the appropriate fields. If you were invited to claim an Azimuth identity, it's very likely that you received an email that would direct you to Bridge, and you can simply follow the hyperlink in that email.
14−
15−Once you arrive Proceed through the steps presented to you. You'll eventually arrive at a page with a few choices: `Invite`, `Admin`, and `Boot Arvo`. `Admin` is the only option that you're interested in right now; click on it. On the "Admin" page, click the `Download Arvo Keyfile` button. Once you have downloaded the keyfile, you can exit Bridge ands proceed to the guide to [installing Arvo](@/docs/getting-started/installing-urbit.md).
16−
17−## Offline Bridge
18−
19−Alternatively, Bridge can be run locally. It's more complicated, but we recommend this option for managing sufficiently valuable assets, such as several stars or more. To install local Bridge, navigate to the [release page](https://github.com/urbit/bridge/releases/) on GitHub. Download the `.zip` file of the latest version. After you download it, follow the instructions below.
20−
21−### Installation
22−
23−To use Bridge:
24−
25−+ Unzip the `.zip` file that you downloaded (`bridge-$version.zip`).
26−+ Open up your command line interface (Terminal on OSX, Command Prompt on Windows).
27−+ Navigate to the `bridge-$version` directory, where `$version` is the appropriate version number.
28−+ Run this command: `python3 -m http.server 5000 --bind 127.0.0.1`
29−+ You can then use the Bridge app by navigating to `http://localhost:5000` in your internet browser.
30−
31−**Note:** Bridge allows you both make reads and writes to the Ethereum blockchain. Writing to the blockchain, such as changing your networking keys, will incur a transaction cost that will require you to have some ETH in your address.
32−
33−Once the program is running in your browser, go through each step presented according to what kind of wallet you have. There are a few login options you'll be presented with. A notable option is **Urbit Master Ticket**. This is for those who used our Wallet Generator software. If you bought points from an Urbit sale and then used the Wallet Generator, your networking keys will be set for you. All other login options will result in you needing to set your own networking keys.
34−
35−### Accept Your Transfer
36−
37−If you were given points by Tlon, you likely already fully own them. But if someone sent you a point, then you will first need to use Bridge to accept that transfer.
38−
39−After you access your Ethereum address, if a point was sent to that address,
40−you'll come to a page that has an `Incoming Transfers` header, under which is
41−a graphic. Click the `Details ->` link under that graphic.
42−
43−Now you'll be on the management page of your point. The transfer isn't completed
44−yet, so click `Accept incoming transfer`. Then check both boxes and and click
45−their associated `Sign Transaction` and `Send Transaction` buttons.
46−
47−If you already own a point, then click on the `Details ->` under your sigil in the
48−`Your Points` section.
49−
50−### Set Your Networking Keys
51−
52−If you just accepted a point, you'll be returned to your point screen. Notice that that links and buttons are now clickable. You now own this point!
53−
54−Click the link that says `Set network keys`. The field that is presented in the resulting page expects a 32-byte hexadecimal string. If it's filled already, no action is required. If this is empty, you will need to generate such a string. You can generate this data any way you please, but in the terminal on MacOS or Linux, you can write
55−
56−```
57−hexdump -n 32 -e '4/4 "%08X"' /dev/random
58−```
59−
60−and use the result.
61−
62−It should be noted that setting your network keys is an event on the Ethereum network, and will therefore cost a trivial, but non-zero, amount of [gas](https://github.com/ethereum/wiki/wiki/Design-Rationale#gas-and-fees) to complete.
63−
64−### Generate Your Keyfile
65−
66−From the detail page associated with your point, click the `Generate Arvo Keyfile` link and you'll be taken to a page with a field titled `Network seed`. This field should already be filled in, and should match the hexadecimal string that you entered in the previous step. If its not filled in or does not match, fill it in with the correct string.
67−
68−Click `Generate ->`, which will download a keyfile onto your machine.
69−
70−With that keyfile in hand, you can now exit Bridge, and continue to the guide to [installing Arvo](@/docs/getting-started/installing-urbit.md).
learn/hoon/_index.md → hoon/_index.mdrenamed+3−3
@@ -10,14 +10,14 @@ Hoon is an unusual language in several respects, both in syntax and semantics.
1010
1111In this section, you'll find useful resources on the Hoon programming language.
1212
13−## [The Hoon Tutorial](@/docs/learn/hoon/hoon-tutorial/_index.md)
13+## [The Hoon Tutorial](@/docs/hoon/hoon-tutorial/_index.md)
1414
1515This section is the place to learn the fundamentals of the language, from the very beginning.
1616
17−## [The Hoon Workbook](@/docs/learn/hoon/workbook/_index.md)
17+## [The Hoon Workbook](@/docs/hoon/workbook/_index.md)
1818
1919The workbook lets you dive right into code walkthroughs.
2020
21−## [The Style Guide](@/docs/learn/hoon/style.md)
21+## [The Style Guide](@/docs/hoon/style.md)
2222
2323This guide shows you how to write code in the correct way.
reference/cheat-sheet.md → hoon/cheat-sheet.mdrenamed+1−1
@@ -11,7 +11,7 @@ hand. So above is a download link to a Hoon cheatsheet .pdf. It's missing a
1111few of the literal syntaxes, but it covers the most common ones.
1212
1313This 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).
1515
1616The following runes also exist, but are currently undocumented and not listed in
1717the cheat sheet:
reference/hoon-expressions/_index.md → hoon/hoon-expressions/_index.mdrenamed+5−5
@@ -6,22 +6,22 @@ template = "sections/docs/chapters.html"
66+++
77Documentation for Hoon expressions.
88
9−## [Runes](@/docs/reference/hoon-expressions/rune/_index.md)
9+## [Runes](@/docs/hoon/hoon-expressions/rune/_index.md)
1010
1111Runes are a way to form expressions in Hoon. Their exact semantics and
1212
13−## [Limbs and Wings](@/docs/reference/hoon-expressions/limb/_index.md)
13+## [Limbs and Wings](@/docs/hoon/hoon-expressions/limb/_index.md)
1414
1515Limbs and wings are ways to extract data from the subject.
1616
17−## [Basic Types](@/docs/reference/hoon-expressions/basic.md)
17+## [Basic Types](@/docs/hoon/hoon-expressions/basic.md)
1818
1919A simplified explanation of of the Hoon type system.
2020
21−## [Advanced Types](@/docs/reference/hoon-expressions/advanced.md)
21+## [Advanced Types](@/docs/hoon/hoon-expressions/advanced.md)
2222
2323A more comprehensive explanation of the Hoon type system, covering aliasing and polymorphism.
2424
25−## [Irregular Forms](@/docs/reference/hoon-expressions/irregular.md)
25+## [Irregular Forms](@/docs/hoon/hoon-expressions/irregular.md)
2626
2727Alternative syntaxes for Hoon runes.
reference/hoon-expressions/advanced.md → hoon/hoon-expressions/advanced.mdrenamed+2−2
@@ -12,7 +12,7 @@ large functions. Don't worry about them for a little while.
1212
1313## The Full Version of `$type`
1414
15−```
15+```hoon
1616+$ type $~ %noun
1717 $@ $? %noun
1818 %void
@@ -190,7 +190,7 @@ limb, we just search the type depth-first.
190190If a name is in the `p.p` map, it's an alias. (An alias is defined using the
191191`=*` rune.) The map contains a `(unit hoon)`; if the unit is full, the name
192192resolves 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
194194this means).
195195
196196If a name is in the `q.p` map, it's a bridge. (A bridge is defined using the
reference/hoon-expressions/basic.md → hoon/hoon-expressions/basic.mdrenamed+2−2
@@ -31,10 +31,10 @@ including both faces and arm names. (See Chapter 1 of the Hoon tutorial for an
3131introduction to name resolution.)
3232
3333As 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)
3535section.
3636
37−```
37+```hoon
3838+$ term @tas
3939+$ type $~ %noun
4040 $@ $? %noun
reference/hoon-expressions/irregular.md → hoon/hoon-expressions/irregular.mdrenamed+19−19
@@ -17,7 +17,7 @@ Anything Nock can do, Hoon can do also.
1717
1818### .+ dotlus
1919
20−[docs](@/docs/reference/hoon-expressions/rune/dot.md#dotlus) \\+
20+[docs](@/docs/hoon/hoon-expressions/rune/dot.md#dotlus) \\+
2121`[%dtls p=atom]`: increment an atom with Nock 4.
2222
2323R: `.+(p)`
@@ -25,7 +25,7 @@ I: `+(p)`
2525
2626### .= dottis
2727
28−[docs](@/docs/reference/hoon-expressions/rune/dot.md#dottis) \\=
28+[docs](@/docs/hoon/hoon-expressions/rune/dot.md#dottis) \\=
2929`[%dtts p=hoon q=hoon]`: test for equality with Nock 5.
3030
3131R: `.=(p q)`
@@ -37,7 +37,7 @@ Miscellaneous useful macros.
3737
3838### ;: miccol
3939
40−[docs](@/docs/reference/hoon-expressions/rune/mic.md#miccol) \\:
40+[docs](@/docs/hoon/hoon-expressions/rune/mic.md#miccol) \\:
4141`[%mccl p=hoon q=(list hoon)]`: call a binary function as an n-ary function.
4242
4343R: `;:(p q)`
@@ -49,7 +49,7 @@ The cell runes.
4949
5050### :- colhep
5151
52−[docs](@/docs/reference/hoon-expressions/rune/col.md#colhep) \\[\\]\\^\\+\\\`\\~
52+[docs](@/docs/hoon/hoon-expressions/rune/col.md#colhep) \\[\\]\\^\\+\\\`\\~
5353`[%clhp p=hoon q=hoon]`: construct a cell (2-tuple).
5454
5555R: `:-(p q)`
@@ -71,7 +71,7 @@ Flow hoons change the subject. All non-flow hoons (except cores) pass the subjec
7171
7272### =< tisgal
7373
74−[docs](@/docs/reference/hoon-expressions/rune/tis.md#tisgal) \\:
74+[docs](@/docs/hoon/hoon-expressions/rune/tis.md#tisgal) \\:
7575`[%tsgl p=hoon q=hoon]`: compose two hoons, inverted.
7676
7777R: `=<(p q)`
@@ -79,7 +79,7 @@ I: `p:q`
7979
8080## | bar (core)
8181
82−[docs](@/docs/reference/hoon-expressions/rune/bar.md) \\$
82+[docs](@/docs/hoon/hoon-expressions/rune/bar.md) \\$
8383Core hoons are flow hoon.
8484
8585Technically not irregular syntax, but worth mentioning.
@@ -97,7 +97,7 @@ The invocation family of runes.
9797
9898### %= centis
9999
100−[docs](@/docs/reference/hoon-expressions/rune/cen.md#centis) \\(\\)
100+[docs](@/docs/hoon/hoon-expressions/rune/cen.md#centis) \\(\\)
101101`[%cnts p=wing q=(list (pair wing hoon))]`: take a wing with changes.
102102
103103R: `%=(p a 1)`
@@ -105,7 +105,7 @@ I: `p(a 1)`
105105
106106### %~ censig
107107
108−[docs](@/docs/reference/hoon-expressions/rune/cen.md#censig) \\~
108+[docs](@/docs/hoon/hoon-expressions/rune/cen.md#censig) \\~
109109`[%cnsg p=wing q=hoon r=hoon]`: call with multi-armed door.
110110
111111R: `%~(p q r)`
@@ -113,7 +113,7 @@ I: `~(p q r)`
113113
114114### %- cenhep
115115
116−[docs](@/docs/reference/hoon-expressions/rune/cen.md#cenhep) \\(\\)
116+[docs](@/docs/hoon/hoon-expressions/rune/cen.md#cenhep) \\(\\)
117117`[%cnhp p=hoon q=hoon]`: call a gate (function).
118118
119119R: `%-(p q)`
@@ -127,7 +127,7 @@ A mold is a gate (function) that helps us build simple and rigorous data structu
127127
128128### $? bucwut
129129
130−[docs](@/docs/reference/hoon-expressions/rune/buc.md#bucwut) \\?
130+[docs](@/docs/hoon/hoon-expressions/rune/buc.md#bucwut) \\?
131131`[%bcwt p=(list model)]`: mold which normalizes a general union.
132132
133133R: `$?(p)`
@@ -135,7 +135,7 @@ I: `?(p)`
135135
136136### $_ buccab
137137
138−[docs](@/docs/reference/hoon-expressions/rune/buc.md#buccab) \\_
138+[docs](@/docs/hoon/hoon-expressions/rune/buc.md#buccab) \\_
139139`[%bccb p=value]`: mold which normalizes to an example.
140140
141141R: `$_(p)`
@@ -147,7 +147,7 @@ Hoon has the usual branches and logical tests.
147147
148148### ?! wutzap
149149
150−[docs](@/docs/reference/hoon-expressions/rune/wut.md#wutzap) \\!
150+[docs](@/docs/hoon/hoon-expressions/rune/wut.md#wutzap) \\!
151151`[%wtzp p=hoon]`: logical not.
152152
153153R: `?!(p)`
@@ -155,7 +155,7 @@ I: `!(p)`
155155
156156### ?& wutpam
157157
158−[docs](@/docs/reference/hoon-expressions/rune/wut.md#wutpam) \\&
158+[docs](@/docs/hoon/hoon-expressions/rune/wut.md#wutpam) \\&
159159`[%wtpm p=(list hoon)]`: logical and.
160160
161161R: `?&(p)`
@@ -163,7 +163,7 @@ I: `&(p)`
163163
164164### ?| wutbar
165165
166−[docs](@/docs/reference/hoon-expressions/rune/wut.md#wutbar) \\|
166+[docs](@/docs/hoon/hoon-expressions/rune/wut.md#wutbar) \\|
167167`[%wtbr p=(list hoon)]`: logical or.
168168
169169R: `?|(p)`
@@ -175,7 +175,7 @@ Lets us adjust types without violating type constraints.
175175
176176### ^- kethep
177177
178−[docs](@/docs/reference/hoon-expressions/rune/ket.md#kethep) \\\`
178+[docs](@/docs/hoon/hoon-expressions/rune/ket.md#kethep) \\\`
179179`[%kthp p=model q=value]`: typecast by mold.
180180
181181R: `^-(p q)`
@@ -183,7 +183,7 @@ I: `` `p`q ``
183183
184184### ^= kettis
185185
186−[docs](@/docs/reference/hoon-expressions/rune/ket.md#kettis) \\=
186+[docs](@/docs/hoon/hoon-expressions/rune/ket.md#kettis) \\=
187187`[%ktts p=toga q=value]`: name a value.
188188
189189R: `^=(p q)`
@@ -210,7 +210,7 @@ I: `p=q`
210210- `|` loobean false.
211211- `%a` constant `a`, where `a` can be an ((ir)regularly defined) atom or a symbol.
212212
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.
214214
215215### List addressing
216216
@@ -219,7 +219,7 @@ See [%sand](@/docs/reference/hoon-expressions/rune/constants.md#warm) for other
219219
220220### Limbs
221221
222−[docs](@/docs/reference/hoon-expressions/limb/limb.md) \\+\\.\\^
222+[docs](@/docs/hoon/hoon-expressions/limb/limb.md) \\+\\.\\^
223223`[%limb p=(each @ud [p=@ud q=@tas])]`: attribute of subject.
224224
225225- `+15` is slot 15
@@ -242,7 +242,7 @@ See [%sand](@/docs/reference/hoon-expressions/rune/constants.md#warm) for other
242242
243243### Wings
244244
245−[docs](content/docs/reference/hoon-expressions/limb/wing.md)
245+[docs](content/docs/hoon/hoon-expressions/limb/wing.md)
246246`[%wing p=(list limb)]`; a limb search path.
247247`a.b` finds limb `a` within limb `b` ("var" `a` within "var" `b`).
248248
reference/hoon-expressions/limb/_index.md → hoon/hoon-expressions/limb/_index.mdrenamed+2−2
@@ -8,10 +8,10 @@ One feature Hoon lacks: a context that isn't a first-class value. Hoon has no
88concept of scope, environment, etc. An expression has exactly one data source,
99the **subject**, a noun like any other.
1010
11−## [Limbs](@/docs/reference/hoon-expressions/limb/limb.md)
11+## [Limbs](@/docs/hoon/hoon-expressions/limb/limb.md)
1212
1313A limb is used to resolve to a piece of data in the subject. A wing is thus a resolution path into the subject.
1414
15−## [Wings](@/docs/reference/hoon-expressions/limb/wing.md)
15+## [Wings](@/docs/hoon/hoon-expressions/limb/wing.md)
1616
1717In 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/limb/limb.md → hoon/hoon-expressions/limb/limb.mdrenamed

The content is the same.

reference/hoon-expressions/limb/wing.md → hoon/hoon-expressions/limb/wing.mdrenamed

The content is the same.

hoon/hoon-expressions/rune/_index.mdnew file+71
@@ -0,0 +1,71 @@
1++++
2+title = "Runes"
3+weight = 2
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+Runes are a way to form expressions in Hoon.
8+
9+## Non-Rune Expressions
10+
11+### [Constants](@/docs/hoon/hoon-expressions/rune/constants.md)
12+
13+Hoon uses runes to form expressions, but not all expressions have runes in them. First, we have constant expressions (and also expressions that would be constant, but that they allow for interpolations).
14+
15+### [Limbs and Wings](@/docs/hoon/hoon-expressions/limb/_index.md)
16+
17+Limb and wing expressions also lack runes.
18+
19+## Runes Proper
20+
21+### [`. dot` (Nock)](@/docs/hoon/hoon-expressions/rune/dot.md)
22+
23+Runes used for carrying out Nock operations in Hoon.
24+
25+### [`! zap` (wild)](@/docs/hoon/hoon-expressions/rune/zap.md)
26+
27+Wildcard category. Expressions that don't fit anywhere else go here.
28+
29+### [`= tis` (Subject Modification)](@/docs/hoon/hoon-expressions/rune/tis.md)
30+
31+Runes used to modify the subject.
32+
33+### [`? wut` (Conditionals)](@/docs/hoon/hoon-expressions/rune/wut.md)
34+
35+Runes used for branching on conditionals.
36+
37+### [`| bar` (Cores)](@/docs/hoon/hoon-expressions/rune/bar.md)
38+
39+Runes used to produce cores.
40+
41+### [`+ lus` (Arms)](@/docs/hoon/hoon-expressions/rune/lus.md)
42+
43+Runes used to define arms in a core.
44+
45+### [`: col` (Cells)](@/docs/hoon/hoon-expressions/rune/col.md)
46+
47+Runes used to produce cells, which are pairs of nouns.
48+
49+### [`% cen` (Calls)](@/docs/hoon/hoon-expressions/rune/cen.md)
50+
51+Runes used for making function calls in Hoon.
52+
53+### [`^ ket` (Casts)](@/docs/hoon/hoon-expressions/rune/ket.md)
54+
55+Runes that let us adjust types without violating type constraints.
56+
57+### [`$ buc` (Structures)](@/docs/hoon/hoon-expressions/rune/buc.md)
58+
59+Runes used for defining custom types.
60+
61+### [`; mic` (Make)](@/docs/hoon/hoon-expressions/rune/mic.md)
62+
63+Miscellaneous useful macros.
64+
65+### [`~ sig` (Hints)](@/docs/hoon/hoon-expressions/rune/sig.md)
66+
67+Runes that use Nock `11` to pass non-semantic info to the interpreter.
68+
69+### [`--`, `==` (Terminators)](@/docs/hoon/hoon-expressions/rune/terminators.md)
70+
71+Runes used to terminate expressions.
reference/hoon-expressions/rune/bar.md → hoon/hoon-expressions/rune/bar.mdrenamed+29−29
@@ -21,7 +21,7 @@ Produce a **door** (a core with a sample).
2121
2222Regular:
2323
24−```
24+```hoon
2525|_ a=spec
2626++ b=term c=hoon
2727++ d=term e=hoon
@@ -48,7 +48,7 @@ The context of the door is the subject of the `|_` expression.
4848
4949##### Expands to
5050
51−```
51+```hoon
5252=| a=spec
5353|%
5454++ b=term c=hoon
@@ -67,7 +67,7 @@ Calling a door is like calling a gate except the caller also needs
6767to 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)`.
6868
6969Because 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).
7171
7272##### Examples
7373
@@ -86,7 +86,7 @@ A trivial door:
8686
8787A more interesting door, from the kernel library:
8888
89−```
89+```hoon
9090++ ne
9191 |_ tig=@
9292 ++ d (add tig '0')
@@ -111,7 +111,7 @@ Produce a core, `[battery payload]`.
111111
112112Regular:
113113
114−```
114+```hoon
115115|%
116116++ a=term b=hoon
117117++ c=term d=hoon
@@ -171,7 +171,7 @@ Produce a gate with a custom sample.
171171
172172Regular:
173173
174−```
174+```hoon
175175|: a=hoon b=hoon
176176```
177177
@@ -187,7 +187,7 @@ AST:
187187
188188##### Expands to
189189
190−```
190+```hoon
191191=> ^~ a
192192 |. b
193193```
@@ -219,7 +219,7 @@ Produce a trap (a core with one arm `$`).
219219
220220Regular:
221221
222−```
222+```hoon
223223|. a=hoon
224224```
225225
@@ -237,7 +237,7 @@ The payload of the core is the subject of the `|.` expression.
237237
238238##### Expands to
239239
240−```
240+```hoon
241241|% ++ $ a=hoon
242242--
243243```
@@ -277,7 +277,7 @@ A more interesting trap:
277277Note that we can use `$()` to recurse back into the
278278trap, since it's a core with an `$` arm.
279279
280−> `$(...)` expands to `%=($ ...)` (["centis"](/docs/reference/hoon-expressions/rune/cen#centis)).
280+> `$(...)` expands to `%=($ ...)` (["centis"](/docs/hoon/hoon-expressions/rune/cen#centis)).
281281
282282### |- "barhep"
283283
@@ -287,7 +287,7 @@ Produce a trap (a core with one arm `$`) and evaluate it.
287287
288288Regular:
289289
290−```
290+```hoon
291291|- a=hoon
292292```
293293
@@ -303,7 +303,7 @@ A `|-` expression produces a core with one arm named `$` and immediately evaluat
303303
304304##### Expands to
305305
306−```
306+```hoon
307307=<($ |.(a=hoon))
308308```
309309
@@ -311,7 +311,7 @@ A `|-` expression produces a core with one arm named `$` and immediately evaluat
311311
312312The `|-` 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 `$()`.
313313
314−> `$(...)` expands to `%=($ ...)` (["centis"](/docs/reference/hoon-expressions/rune/cen#centis)).
314+> `$(...)` expands to `%=($ ...)` (["centis"](/docs/hoon/hoon-expressions/rune/cen#centis)).
315315
316316##### Examples
317317
@@ -343,7 +343,7 @@ Produce a core whose battery includes a `$` arm and compute the latter.
343343
344344Regular:
345345
346−```
346+```hoon
347347|^ a=hoon
348348++ b=term c=hoon
349349++ d=term e=hoon
@@ -366,7 +366,7 @@ A `|^` expression produces a multi-arm core whose battery includes a `$` arm, wh
366366
367367##### Expands to
368368
369−```
369+```hoon
370370=> |%
371371 ++ $ a=hoon
372372 ++ b=term c=hoon
@@ -402,7 +402,7 @@ Produce an iron gate.
402402
403403Regular:
404404
405−```
405+```hoon
406406|~ a=spec b=hoon
407407```
408408
@@ -418,13 +418,13 @@ A `|~` expression produces an iron gate. `a` defines the sample, and `b` define
418418
419419##### Expands to
420420
421−```
421+```hoon
422422^| |=(a b)
423423```
424424
425425##### Discussion
426426
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)
428428
429429##### Examples
430430
@@ -441,7 +441,7 @@ Produce a wet gate (one-armed core with sample).
441441
442442Regular:
443443
444−```
444+```hoon
445445|* a=spec b=hoon
446446```
447447
@@ -457,7 +457,7 @@ A `|*` expression produces a wet gate. `a` defines the gate's sample, and `b` i
457457
458458##### Expands to
459459
460−```
460+```hoon
461461=| a
462462|@
463463++ $
@@ -478,7 +478,7 @@ you know what you're doing.
478478Just as with a [gate](#bartis), we can recurse back into a wet gate
479479with `$()`.
480480
481−> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/reference/hoon-expressions/rune/cen.md#centis)).
481+> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/hoon/hoon-expressions/rune/cen.md#centis)).
482482
483483##### Examples
484484
@@ -507,7 +507,7 @@ Produce a gate (a one-armed core with a sample).
507507
508508Regular:
509509
510−```
510+```hoon
511511|= a=spec b=hoon
512512```
513513
@@ -525,7 +525,7 @@ The product of a `|=` expression is a dry **gate**, i.e., a Hoon function.
525525
526526##### Expands to
527527
528−```
528+```hoon
529529=| a=spec
530530|% ++ $ b=hoon
531531--
@@ -537,7 +537,7 @@ Dry gates are used for the vast majority of ordinary functions in Hoon.
537537
538538A gate is a core with one arm named `$`, so we can recurse back into it with `$()`.
539539
540−> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/reference/hoon-expressions/rune/cen.md#centis)).
540+> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/hoon/hoon-expressions/rune/cen.md#centis)).
541541
542542##### Examples
543543
@@ -567,7 +567,7 @@ Produce a 'wet' core `[battery payload]`.
567567
568568Regular:
569569
570−```
570+```hoon
571571|@
572572++ a=term b=hoon
573573++ c=term d=hoon
@@ -590,7 +590,7 @@ A `|@` expression produces a 'wet' core whose payload is the expression's subjec
590590
591591##### Discussion
592592
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).
594594
595595### |? "barwut"
596596
@@ -600,7 +600,7 @@ Produce a lead trap.
600600
601601Regular:
602602
603−```
603+```hoon
604604|? a=hoon
605605```
606606
@@ -616,13 +616,13 @@ A `|?` expression produces a lead trap (i.e., a lead core with one arm named `$`
616616
617617##### Expands to
618618
619−```
619+```hoon
620620^? |. a
621621```
622622
623623##### Discussion
624624
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).
626626
627627##### Examples
628628
reference/hoon-expressions/rune/buc.md → hoon/hoon-expressions/rune/buc.mdrenamed+5−5
@@ -57,7 +57,7 @@ Irregular: `*` makes `%noun`, `^` makes `%cell`, `?` makes
5757
5858##### Expands to
5959
60−```
60+```hoon
6161|=(* p)
6262```
6363
@@ -158,7 +158,7 @@ Irregular (structure mode): `[a b c]` is `$:(a b c)`.
158158
159159##### Expands to
160160
161−```
161+```hoon
162162$_ ^|
163163|=(p $:q)
164164```
@@ -230,7 +230,7 @@ The product of `p`.
230230
231231Regular: **2-fixed**.
232232
233−```
233+```hoon
234234$~ p=hoon q=spec
235235```
236236
@@ -238,7 +238,7 @@ $~ p=hoon q=spec
238238
239239##### Discussion
240240
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).)
242242
243243Do not confuse the `$~` rune with the constant type for null, `$~`. (The latter uses older Hoon syntax that is still accepted. Preferably it would be `%~`.)
244244
@@ -320,7 +320,7 @@ Example:
320320
321321##### Expands to
322322
323−```
323+```hoon
324324|= *
325325^=(p %-(q +6))
326326```
reference/hoon-expressions/rune/cen.md → hoon/hoon-expressions/rune/cen.mdrenamed+24−24
@@ -17,7 +17,7 @@ Resolve a wing with changes, preserving type.
1717
1818Regular, tall:
1919
20−```
20+```hoon
2121%_ a=wing
2222 b=wing c=hoon
2323 d=wing e=hoon
@@ -28,7 +28,7 @@ Regular, tall:
2828
2929Regular, flat:
3030
31−```
31+```hoon
3232%_(a=wing b=wing c=hoon, d=wing e=hoon, ...)
3333```
3434
@@ -44,7 +44,7 @@ A `%_` expression resolves to the value of the subject at wing `a`, but modified
4444
4545##### Expands to
4646
47−```
47+```hoon
4848^+(a %=(a b c, d e, ...))
4949```
5050
@@ -52,7 +52,7 @@ A `%_` expression resolves to the value of the subject at wing `a`, but modified
5252
5353`%_` is different from `%=` because `%=` can change the type of a wing with mutations. `%_` preserves the wing type.
5454
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).
5656
5757##### Examples
5858
@@ -80,7 +80,7 @@ Call a gate with many arguments.
8080
8181Regular:
8282
83−```
83+```hoon
8484%: a=hoon
8585 b=hoon
8686 c=hoon
@@ -105,7 +105,7 @@ When `%:` is used in tall-form syntax, the series of expressions after `p` must
105105
106106##### Examples
107107
108−```
108+```hoon
109109> %: add 22 33 ==
11011055
111111
@@ -134,7 +134,7 @@ Call a gate (function), inverted.
134134
135135Regular:
136136
137−```
137+```hoon
138138%. a=hoon b=hoon
139139```
140140
@@ -150,7 +150,7 @@ The `%.` rune is for evaluating the `$` arm of a gate, i.e., calling a function.
150150
151151##### Expands to
152152
153−```
153+```hoon
154154%-(b=hoon a=hoon)
155155```
156156
@@ -175,13 +175,13 @@ Call a gate (function).
175175
176176Regular:
177177
178−```
178+```hoon
179179%- a=hoon b=hoon
180180```
181181
182182Irregular:
183183
184−```
184+```hoon
185185(a=hoon b=hoon)
186186```
187187
@@ -197,14 +197,14 @@ This rune is for evaluating the `$` arm of a gate, i.e., calling a gate as a fun
197197
198198##### Expands to
199199
200−```
200+```hoon
201201%~($ a b)
202202```
203203
204204##### Discussion
205205
206−`%-` is used to call a function; `a` is the function ([`gate`](@/docs/reference/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).
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/hoon/hoon-expressions/rune/bar.md#barcab).
208208
209209##### Examples
210210
@@ -224,7 +224,7 @@ Call gate with triple sample.
224224
225225Regular:
226226
227−```
227+```hoon
228228%^ a=hoon b=hoon c=hoon d=hoon
229229```
230230
@@ -237,7 +237,7 @@ AST:
237237
238238##### Expands to
239239
240−```
240+```hoon
241241%-(a=hoon [b=hoon c=hoon d=hoon])
242242```
243243
@@ -258,7 +258,7 @@ Call gate with a cell sample.
258258
259259Regular:
260260
261−```
261+```hoon
262262%+ a=hoon b=hoon c=hoon
263263```
264264
@@ -274,7 +274,7 @@ A `%+` expression is for calling a gate with a cell sample. `a` is the gate to
274274
275275##### Expands to
276276
277−```
277+```hoon
278278%-(a=hoon [b=hoon c=hoon])
279279```
280280
@@ -295,7 +295,7 @@ Evaluate an arm in a door.
295295
296296Regular:
297297
298−```
298+```hoon
299299%~ a=wing b=hoon
300300 c=hoon
301301 d=hoon
@@ -323,11 +323,11 @@ A `%~` expression evaluates the arm of a door (i.e., a core with a sample). `a`
323323
324324`%~` 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)`.
325325
326−See also [`|_`](@/docs/reference/hoon-expressions/rune/bar.md#barcab).
326+See also [`|_`](@/docs/hoon/hoon-expressions/rune/bar.md#barcab).
327327
328328##### Examples
329329
330−```
330+```hoon
331331> =mycore |_ a=@
332332 ++ plus-two (add 2 a)
333333 ++ double (mul 2 a)
@@ -347,7 +347,7 @@ Evaluate an expression, then resolve a wing with changes.
347347
348348Regular:
349349
350−```
350+```hoon
351351%* a=wing b=hoon
352352 c=wing d=hoon
353353 e=wing f=hoon
@@ -368,7 +368,7 @@ A `%*` expression evaluates some arbitrary Hoon expression, `b`, and then resolv
368368
369369##### Expands to
370370
371−```
371+```hoon
372372=+ b=hoon
373373%= a=wing
374374 c=wing d=hoon
@@ -410,7 +410,7 @@ Resolve a wing with changes.
410410
411411Regular:
412412
413−```
413+```hoon
414414%= a=wing
415415 b=wing c=hoon
416416 d=wing e=hoon
@@ -451,7 +451,7 @@ a wing, we would just be mutating `+6` within the core that defines the
451451
452452Here's that again in tall form:
453453
454−```
454+```hoon
455455=+ foo
456456=> %= +2
457457 +6 baz
reference/hoon-expressions/rune/col.md → hoon/hoon-expressions/rune/col.mdrenamed+8−8
@@ -13,7 +13,7 @@ The `:` ("col") expressions are used to produce cells, which are pairs of values
1313
1414##### Expands to
1515
16−```
16+```hoon
1717:-(q p)
1818```
1919
@@ -38,7 +38,7 @@ Code comment
3838
3939##### Examples
4040
41−```
41+```hoon
4242::
4343:: this is commented code
4444::
@@ -101,7 +101,7 @@ compiler does), `[a b]` is the same as `:-(a b)`.
101101
102102##### Expands to
103103
104−```
104+```hoon
105105:-(p :-(q :-(r s)))
106106```
107107
@@ -129,7 +129,7 @@ Regular: **4-fixed**.
129129
130130##### Expands to:
131131
132−```
132+```hoon
133133:-(p :-(q r))
134134```
135135
@@ -157,13 +157,13 @@ Regular: **3-fixed**.
157157
158158**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
159159
160−```
160+```hoon
161161:-(a :-(b :-(c :-(... :-(z ~)))))
162162```
163163
164164##### Desugaring
165165
166−```
166+```hoon
167167|-
168168?~ p
169169 ~
@@ -201,13 +201,13 @@ Regular: **running**.
201201
202202**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
203203
204−```
204+```hoon
205205:-(a :-(b :-(c :-(... z)))))
206206```
207207
208208##### Desugaring
209209
210−```
210+```hoon
211211|-
212212?~ p
213213 !!
reference/hoon-expressions/rune/constants.md → hoon/hoon-expressions/rune/constants.mdrenamed

The content is the same.

reference/hoon-expressions/rune/dot.md → hoon/hoon-expressions/rune/dot.mdrenamed

The content is the same.

reference/hoon-expressions/rune/ket.md → hoon/hoon-expressions/rune/ket.mdrenamed+7−7
@@ -90,7 +90,7 @@ ford: %ride failed to execute:
9090
9191##### Expands to
9292
93−```
93+```hoon
9494^+(%:(p q) q)
9595```
9696
@@ -98,7 +98,7 @@ ford: %ride failed to execute:
9898
9999Regular: **2-fixed**.
100100
101−```
101+```hoon
102102^. p=hoon q=hoon
103103```
104104
@@ -131,7 +131,7 @@ mint-vain
131131
132132##### Expands to
133133
134−```
134+```hoon
135135^+(^*(p) q)
136136```
137137
@@ -202,7 +202,7 @@ Regular: **1-fixed**.
202202
203203##### Discussion
204204
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).
206206
207207##### Examples
208208
@@ -275,7 +275,7 @@ A default value (i.e., 'bunt value') of the type `p`.
275275
276276Regular: **1-fixed**.
277277
278−```
278+```hoon
279279^* p=spec
280280```
281281
@@ -287,7 +287,7 @@ Irregular: `*p`.
287287
288288Regular:
289289
290−```
290+```hoon
291291> ^* @
2922920
293293
@@ -303,7 +303,7 @@ Regular:
303303
304304Irregular:
305305
306−```
306+```hoon
307307> *@
3083080
309309
reference/hoon-expressions/rune/lus.md → hoon/hoon-expressions/rune/lus.mdrenamed+4−4
@@ -19,7 +19,7 @@ Chapter label.
1919
2020Regular: **1-fixed**.
2121
22−```
22+```hoon
2323+| %label
2424```
2525
@@ -67,7 +67,7 @@ Produce a structure arm (type definition).
6767
6868Regular: **2-fixed**.
6969
70−```
70+```hoon
7171+$ p=term q=spec
7272```
7373
@@ -105,7 +105,7 @@ Produce a normal arm.
105105
106106Regular: **2-fixed**.
107107
108−```
108+```hoon
109109++ p=term q=hoon
110110```
111111
@@ -141,7 +141,7 @@ Produce a type constructor arm.
141141
142142Regular: **2-fixed**.
143143
144−```
144+```hoon
145145+* p=term [q=term] r=spec
146146```
147147
reference/hoon-expressions/rune/mic.md → hoon/hoon-expressions/rune/mic.mdrenamed+14−14
@@ -18,19 +18,19 @@ Miscellaneous useful macros.
1818
1919Regular form:
2020
21−```
21+```hoon
2222%-(p a %-(p b %-(p c ...)))
2323```
2424
2525Irregular form:
2626
27−```
27+```hoon
2828(p a (p b (p c ...)))
2929```
3030
3131##### Desugaring
3232
33−```
33+```hoon
3434|-
3535?~ q !!
3636?~ t.q !!
@@ -70,7 +70,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
7070
7171**1-fixed**
7272
73−```
73+```hoon
7474;+ p=hoon
7575```
7676
@@ -80,7 +80,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
8080
8181tl;dr -- `;+` converts a `manx` to a `marl`.
8282
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).
8484
8585In Sail a single XML node is represented by a `manx`. A single `<p>` node `manx` can be produced in the following way:
8686
@@ -123,7 +123,7 @@ One interesting thing about Sail is that it allows you to use complex Hoon expre
123123
124124##### Expands to
125125
126−```
126+```hoon
127127=+ a=(p q)
128128?> =(`*`a `*`q)
129129a
@@ -165,7 +165,7 @@ Fails because not a fixpoint:
165165
166166##### Expands to
167167
168−```
168+```hoon
169169~[%$ ~[%$ 'p']]
170170```
171171
@@ -193,14 +193,14 @@ The gates in `q` are composed together using the gate `p` as an intermediate fun
193193
194194`;~(a b c)` expands to
195195
196−```
196+```hoon
197197|= arg=*
198198(a (b arg) c(+6 arg))
199199```
200200
201201`;~(a b c d)` expands to
202202
203−```
203+```hoon
204204|= arg=*
205205%+ a (b arg)
206206=+ arg=arg
@@ -209,7 +209,7 @@ The gates in `q` are composed together using the gate `p` as an intermediate fun
209209
210210##### Desugaring
211211
212−```
212+```hoon
213213?~ q !!
214214|-
215215?~ 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
286286
287287**1-fixed**
288288
289−```
289+```hoon
290290;* p=hoon
291291```
292292
@@ -294,7 +294,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
294294
295295##### Discussion
296296
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).
298298
299299If 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.
300300
@@ -338,7 +338,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
338338
339339**running**
340340
341−```
341+```hoon
342342;= p=hoon q=hoon ... z=hoon ==
343343```
344344
@@ -346,7 +346,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
346346
347347##### Discussion
348348
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).
350350
351351In Sail a single XML node is represented by a `manx`. A single `<p>` node `manx` can be produced in the following way:
352352
reference/hoon-expressions/rune/sig.md → hoon/hoon-expressions/rune/sig.mdrenamed+3−3
@@ -193,7 +193,7 @@ Regular form: **4-fixed**
193193
194194Here's the AES
195195
196−```
196+```hoon
197197 ++ aesc :: AES-256
198198 ~% %aesc + ~
199199 |%
@@ -291,7 +291,7 @@ registered context.
291291
292292##### Expands to
293293
294−```
294+```hoon
295295~%(p +7 ~ q)
296296```
297297
@@ -302,7 +302,7 @@ Regular: **2-fixed**.
302302##### Examples
303303
304304From the kernel:
305−```
305+```hoon
306306++ add
307307 ~/ %add
308308 |= [a=@ b=@]
reference/hoon-expressions/rune/terminators.md → hoon/hoon-expressions/rune/terminators.mdrenamed

The content is the same.

reference/hoon-expressions/rune/tis.md → hoon/hoon-expressions/rune/tis.mdrenamed+13−13
@@ -52,7 +52,7 @@ Regular: **2-fixed**.
5252
5353##### Expands to
5454
55−```
55+```hoon
5656=+(*p q)
5757```
5858
@@ -83,7 +83,7 @@ Speaking more loosely, `=|` usually "declares a variable" which is "uninitialize
8383
8484##### Expands to
8585
86−```
86+```hoon
8787=>(%_(. p) q)
8888```
8989
@@ -147,7 +147,7 @@ With a dojo-defined face:
147147
148148##### Expands to
149149
150−```
150+```hoon
151151=>(%_(. p q) r)
152152```
153153
@@ -158,7 +158,7 @@ Regular: **3-fixed**.
158158##### Discussion
159159
160160Technically 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`.
162162
163163##### Examples
164164
@@ -183,7 +183,7 @@ nest-fail
183183
184184##### Expands to
185185
186−```
186+```hoon
187187=>([q .] p)
188188```
189189
@@ -213,7 +213,7 @@ a leg with the tail.
213213
214214##### Expands to
215215
216−```
216+```hoon
217217=/(p -.r =.(q +.r s))
218218```
219219
@@ -252,7 +252,7 @@ random number, so we use `=^`:
252252
253253##### Expands to
254254
255−```
255+```hoon
256256=>(q p)
257257```
258258
@@ -290,7 +290,7 @@ Irregular: `foo:baz` is `=<(foo baz)`.
290290
291291##### Expands to
292292
293−```
293+```hoon
294294=>([p .] q)
295295```
296296
@@ -312,7 +312,7 @@ Loosely speaking, `=+` is the simplest way of "declaring a variable."
312312
313313##### Expands to
314314
315−```
315+```hoon
316316=/(p r q)
317317```
318318
@@ -343,19 +343,19 @@ Regular: **3-fixed**.
343343
344344**if `p` is a name**, (e.g. `a`):
345345
346−```
346+```hoon
347347=+(^=(p q) r)
348348```
349349
350350**if `p` is a name with a type** (e.g., `a=@`):
351351
352−```
352+```hoon
353353=+(^-(p q) r)
354354```
355355
356356### Desugaring
357357
358−```
358+```hoon
359359?@ p
360360 =+ p=q
361361 r
@@ -459,7 +459,7 @@ The difference between aliasing and pinning is that pinning changes the subject,
459459
460460##### Expands to
461461
462−```
462+```hoon
463463=. p ?:(q r p)
464464s
465465```
reference/hoon-expressions/rune/wut.md → hoon/hoon-expressions/rune/wut.mdrenamed+16−16
@@ -21,7 +21,7 @@ for expressions which expand to `?:`.
2121The test does not have to be a single `?=`; the compiler can
2222analyze arbitrary boolean logic ([`?&` ("wutpam")](#wutpam),
2323[`?|` ("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**
2525analyzed.
2626
2727If the compiler detects that the branch is degenerate (only one
@@ -35,7 +35,7 @@ side is taken), it fails with an error.
3535
3636##### Expands to
3737
38−```
38+```hoon
3939?.(p !! q)
4040```
4141
@@ -75,13 +75,13 @@ nest-fail
7575
7676**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
7777
78−```
78+```hoon
7979?:(a & ?:(b & ?:(c & ?:(... ?:(z & |)))))
8080```
8181
8282##### Desugaring
8383
84−```
84+```hoon
8585|-
8686?~ p
8787 |
@@ -160,7 +160,7 @@ Note also that all other branching expressions reduce to `?:`.
160160
161161##### Expands to
162162
163−```
163+```hoon
164164?:(p r q)
165165```
166166
@@ -199,7 +199,7 @@ As is usual with inverted forms, use `?.` when the yes-case expression is much t
199199
200200**Pseudocode**: `a`, `b`, `c`, ... as elements of `q`:
201201
202−```
202+```hoon
203203?: ?=(p.a p) q.a
204204?: ?=(p.b p) q.b
205205?: ?=(p.c p) q.c
@@ -209,7 +209,7 @@ As is usual with inverted forms, use `?.` when the yes-case expression is much t
209209
210210##### Desugaring
211211
212−```
212+```hoon
213213|-
214214?. q
215215 ~|(%mint-lost !!)
@@ -260,7 +260,7 @@ of the subject is a cell.
260260
261261##### Expands to
262262
263−```
263+```hoon
264264?:(?=(^ p) q r)
265265```
266266
@@ -292,7 +292,7 @@ The type of the wing, `p`, must not be known to be either an atom or a cell, or
292292
293293##### Expands to
294294
295−```
295+```hoon
296296?:(p !! q)
297297```
298298
@@ -333,7 +333,7 @@ a union, with a default.
333333
334334**Pseudocode**: `a`, `b`, `c`, ... as elements of `r`:
335335
336−```
336+```hoon
337337?: ?=(p.a p) q.a
338338?: ?=(p.b p) q.b
339339?: ?=(p.c p) q.c
@@ -343,7 +343,7 @@ q
343343
344344##### Desugaring
345345
346−```
346+```hoon
347347|-
348348?. r
349349 q
@@ -389,13 +389,13 @@ If there is a case that is never taken you'll get a `mint-vain` error.
389389
390390**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
391391
392−```
392+```hoon
393393?.(a | ?.(b | ?.(c | ?.(... ?.(z | &)))))
394394```
395395
396396##### Desugaring
397397
398−```
398+```hoon
399399|-
400400?~ p
401401 &
@@ -426,7 +426,7 @@ Irregular: `&(foo bar baz)` is `?&(foo bar baz)`.
426426
427427##### Expands to
428428
429−```
429+```hoon
430430?:(?=($~ p) q r)
431431```
432432
@@ -489,7 +489,7 @@ A common error is `find.$`, meaning `p` is not a type.
489489
490490##### Expands to
491491
492−```
492+```hoon
493493?:(?=(@ p) q r)
494494```
495495
@@ -521,7 +521,7 @@ The type of the wing, `p`, must not be known to be either an atom or a cell, or
521521
522522##### Expands to
523523
524−```
524+```hoon
525525.=(| p)
526526```
527527
reference/hoon-expressions/rune/zap.md → hoon/hoon-expressions/rune/zap.mdrenamed+2−2
@@ -47,7 +47,7 @@ The product of `p` unless `p` crashes, in which case a stack trace is given.
4747
4848Regular: **1-fixed**.
4949
50−```
50+```hoon
5151!: p=hoon
5252```
5353
@@ -79,7 +79,7 @@ The product of `p`. If `p` crashes, no stack trace entries are given for that co
7979
8080Regular: **1-fixed**.
8181
82−```
82+```hoon
8383!. p=hoon
8484```
8585
learn/hoon/hoon-tutorial/_index.md → hoon/hoon-tutorial/_index.mdrenamed+4−2
@@ -3,6 +3,7 @@ title = "Hoon Tutorial"
33weight = 1
44sort_by = "weight"
55template = "sections/docs/chapters.html"
6+aliases = ["/docs/byte/0/", "/docs/byte"]
67+++
78
89This 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
4243- [2.3 Structures and Complex Types](structures-and-complex-types)
4344- [2.4 Standard Library: Trees, Sets, and Maps](trees-sets-and-maps)
4445- [2.5 Type Polymorphism](type-polymorphism)
46+- [2.7 Gall](gall)
4547
4648## Other Resources
4749
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.
4951
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](@/docs/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.
5153
5254
5355> Last major revision of this section: February 2019
learn/hoon/hoon-tutorial/ackermann.md → hoon/hoon-tutorial/ackermann.mdrenamed+1−1
@@ -8,7 +8,7 @@ The Ackermann function is one of the earliest examples of a function that is bot
88
99In this lesson, we will write a gate that computes the [Ackermann function](https://en.wikipedia.org/wiki/Ackermann_function)
1010
11− ```
11+``` hoon
1212|= [m=@ n=@]
1313?: =(m 0) +(n)
1414?: =(n 0) $(m (dec m), n 1)
learn/hoon/hoon-tutorial/arms-and-cores.md → hoon/hoon-tutorial/arms-and-cores.mdrenamed+5−5
@@ -25,7 +25,7 @@ We'll make a core using a multi-line Hoon expression that is more complex than t
2525
2626Use 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`:
2727
28−```
28+```hoon
2929> =c |%
3030 ++ twenty 20
3131 ++ 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
9898
9999Now 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`):
100100
101−```
101+```hoon
102102> =c |%
103103 ++ two 2
104104 ++ inc (add 1 a)
@@ -214,7 +214,7 @@ The result is a tree of uncomputed Nock formulas. But you virtually never need
214214
215215To 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`:
216216
217−```
217+```hoon
218218> =c |%
219219 ++ two 2
220220 ++ inc (add 1 a)
@@ -409,7 +409,7 @@ This almost looks like a function call of sorts.
409409
410410Let'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.
411411
412−```
412+```hoon
413413> =dec |%
414414 ++ dec
415415 |= a=@
@@ -450,7 +450,7 @@ Again, being able to read Nock is not essential to understanding Hoon.
450450
451451Let's take a quick look at how cores can be combined to build up larger structures.
452452
453−```
453+```hoon
454454=>
455455|%
456456++ dec
learn/hoon/hoon-tutorial/atoms-auras-and-simple-cell-types.md → hoon/hoon-tutorial/atoms-auras-and-simple-cell-types.mdrenamed+1−1
@@ -17,7 +17,7 @@ In this lesson we'll cover (1)-(4) as they pertain to atoms and simple cell type
1717
1818## Atoms and Auras
1919
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.
2121
2222In 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.
2323
learn/hoon/hoon-tutorial/bank-account.md → hoon/hoon-tutorial/bank-account.mdrenamed+6−6
@@ -6,7 +6,7 @@ template = "doc.html"
66
77In 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.
88
9−```
9+```hoon
1010:- %say
1111|= *
1212:- %noun
@@ -31,7 +31,7 @@ In this lesson, we will write a door that can act as a bank account with the abi
3131
3232We start with the three lines we have in every `%say` generator:
3333
34−```
34+```hoon
3535:- %say
3636|= *
3737:- %noun
@@ -39,7 +39,7 @@ We start with the three lines we have in every `%say` generator:
3939
4040In 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.
4141
42−```
42+```hoon
4343=< =~ new-account
4444 (deposit 100)
4545 (deposit 100)
@@ -52,7 +52,7 @@ In this code above, we're going to compose two runes using `=<`, which has inver
5252
5353`=~` 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.
5454
55−```
55+```hoon
5656|%
5757++ new-account
5858 |_ balance=@ud
@@ -70,11 +70,11 @@ We've chosen here to wrap our door in it's own core to emulate the style of prog
7070
7171Each of these arms produces a gate which takes an `@ud` argument. Each of these gates has a similar bit of code inside:
7272
73−```
73+```hoon
7474+>.$(balance (add balance amount))
7575```
7676
77−`+>` is [wing syntax](/docs/reference/hoon-expressions/limb/limb/). This particularly wing construction looks for the the tail of the tail (the third element) in `$`, the subject of the gate we are in, which is the entire `new-account` door. We change `balance` to be the result of adding `balance` and `amount` and produce the door as the result. `withdraw` functions the same way only doing subtraction instead of addition.
77+`+>` is [wing syntax](/docs/hoon/hoon-expressions/limb/limb/). This particularly wing construction looks for the the tail of the tail (the third element) in `$`, the subject of the gate we are in, which is the entire `new-account` door. We change `balance` to be the result of adding `balance` and `amount` and produce the door as the result. `withdraw` functions the same way only doing subtraction instead of addition.
7878
7979It's important to notice that the sample, `balance`, is stored as part of the door rather than existing outside of it.
8080
learn/hoon/hoon-tutorial/caesar.md → hoon/hoon-tutorial/caesar.mdrenamed+9−9
@@ -28,7 +28,7 @@ isn't the most compact implementation of such a cipher in Hoon, but it
2828demonstrates important principles that more laconic code would not. Save it as
2929`caesar.hoon` in your `/gen` directory.
3030
31−```
31+```hoon
3232!:
3333|= [msg=tape key=@ud]
3434=<
@@ -112,7 +112,7 @@ in written order; instead, we'll cover code in the intuitive order of the
112112program. For each chunk that we cover, try to read and understand the code
113113itself before reading the explanation.
114114
115−```
115+```hoon
116116!:
117117|= [msg=tape key=@ud]
118118=+ ^= caesar
@@ -134,7 +134,7 @@ expressions in the code chunk below against the core declared later, which
134134allows us reference the core's contained arms before they are defined. Without
135135`=<`, we would need to put the code chunk below at the bottom of our program.
136136
137−```
137+```hoon
138138=. msg (cass msg)
139139:- (shift msg key)
140140(unshift msg key)
@@ -149,7 +149,7 @@ gate that converts uppercase letters to lowercase.
149149cell of a right-shifted cipher and a left-shifted cell. This is the final output
150150of our generator.
151151
152−```
152+```hoon
153153 ++ rott
154154 |= [m=tape n=@ud]
155155 =/ length=@ud (lent m)
@@ -176,7 +176,7 @@ if `n` is larger than `length`.
176176instance, we are switching the two parts: the second part `q.s` is welded to the
177177front, and the first part `p.s` is welded to the back.
178178
179−```
179+```hoon
180180 ++ zipper
181181 |= [a=tape b=tape]
182182 ^- (map @t @t)
@@ -232,7 +232,7 @@ We have three related arms to look at next, `coder`, `encoder`, and
232232`decoder`. `coder` is the foundation of the other two, so we'll look at it
233233first.
234234
235−```
235+```hoon
236236 ++ coder
237237 |= [a=tape b=tape]
238238 (~(put by (zipper a b)) ' ' ' ')
@@ -246,7 +246,7 @@ character (called `ace`) simply maps to itself. This is done to simplify
246246the handling of spaces in `tapes` we want to encode, since we don't want to
247247shift them.
248248
249−```
249+```hoon
250250 ++ encoder
251251 |= [key=@ud]
252252 =/ keytape=tape (rott alpha key)
@@ -280,7 +280,7 @@ translation between the alphabet and our shifted alphabet, or vice versa.
280280Still with us? Good. We are finally about to use all the stuff that we've
281281walked through.
282282
283−```
283+```hoon
284284 ++ shift
285285 |= [message=tape key=@ud]
286286 (operate message key (encoder key))
@@ -299,7 +299,7 @@ that call with `(operate message key (decoder key))`. These both produce the
299299final output of the core, to be called in the form of `(shift msg key)`
300300and `(unshift msg key)` at the bottom of the program.
301301
302−```
302+```hoon
303303++ operate
304304 |= [message=tape key=@ud encoder=(map @t @t)]
305305 ^- tape
learn/hoon/hoon-tutorial/conditionals.md → hoon/hoon-tutorial/conditionals.mdrenamed+6−6
@@ -6,7 +6,7 @@ template = "doc.html"
66
77In 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.
88
9−```
9+```hoon
1010:- %say
1111|= [* [n=@ud ~] ~]
1212:- %noun
@@ -21,13 +21,13 @@ In this lesson, we will write a generator that takes an integer and checks if it
2121
2222On 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.
2323
24−```
24+```hoon
2525|= [* [n=@ud ~] ~]
2626```
2727
2828The 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`.
2929
30−```
30+```hoon
3131:- %noun
3232```
3333
@@ -35,7 +35,7 @@ This code is the third line of the `%say` "boilerplate," and it produces a `cask
3535
3636But now let's get into the conditionals themselves. Below we'll examine the series of `?` runes used.
3737
38−```
38+```hoon
3939?: ?& =(0 (mod n 2))
4040```
4141
@@ -45,7 +45,7 @@ In our case, the first child of `?:` is `?& =(0 (mod n 2))`. It itself has anot
4545
4646The second child is:
4747
48−```
48+```hoon
4949 ?& (gte n 1)
5050 ?! (gth n 100)
5151 ==
@@ -69,6 +69,6 @@ We only went into three "wut" runes in our walkthrough, but there are many other
6969
7070- `?|` takes an indefinite number of children. It's the logical "or" operator. It checks if at least one of its children is true.
7171
72−To see an exhaustive list of "wut" runes, check out the [reference documentation on conditionals](/docs/reference/hoon-expressions/rune/wut/).
72+To see an exhaustive list of "wut" runes, check out the [reference documentation on conditionals](/docs/hoon/hoon-expressions/rune/wut/).
7373
7474### [Next Up: Reading -- Lists](../lists)
learn/hoon/hoon-tutorial/doors.md → hoon/hoon-tutorial/doors.mdrenamed+3−3
@@ -52,7 +52,7 @@ It's important to learn the difference, however, because for certain use cases y
5252
5353Let'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:
5454
55−```
55+```hoon
5656> =c |%
5757 ++ inc |=(a=@ (add 1 a))
5858 ++ add-two |=(a=@ (inc (inc a)))
@@ -267,7 +267,7 @@ Gates are useful for defining functions. But there are many-armed doors as well
267267
268268Let'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:
269269
270−```
270+```hoon
271271> =c |_ b=@
272272 ++ plus |=(a=@ (add a b))
273273 ++ times |=(a=@ (mul a b))
@@ -499,6 +499,6 @@ It's better simply to use the `~(arm rs arg)` syntax to replace the value of the
499499
500500## Conclusion
501501
502−You've now reached the end of Chapter 1 of the Hoon tutorial. Ideally you should have a fair understanding of the fundamental concepts of subject-oriented programming: limbs, legs, faces, wings, arms, cores, gates, and doors. If you can master these concepts you should have little or no trouble learning to write substantial Hoon programs. Continue to [Chapter 2](../hoon-programs) to get started.
502+You've now reached the end of Chapter 1 of the Hoon tutorial. Ideally you should have a fair understanding of the fundamental concepts of subject-oriented programming: limbs, legs, faces, wings, arms, cores, gates, and doors. If you can master these concepts you should have little or no trouble learning to write substantial Hoon programs. Continue to [Chapter 2](atoms-auras-and-simple-cell-types) to get started.
503503
504504### [Next Up: Walkthrough -- Bank Account](../bank-account)
learn/hoon/hoon-tutorial/egg-timer.md → hoon/hoon-tutorial/egg-timer.mdrenamed+6−6
@@ -7,7 +7,7 @@ template = "doc.html"
77The 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.
88
99
10−```
10+```hoon
1111|%
1212+$ effect (pair bone syscall)
1313+$ syscall [%wait path @da]
@@ -28,7 +28,7 @@ The Arvo operating system is divided up into modules called vanes. Gall is the v
2828
2929The 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`.
3030
31−```
31+```hoon
3232|%
3333+$ effect (pair bone syscall)
3434+$ syscall [%wait path @da]
@@ -41,7 +41,7 @@ It's important to note that the names `effect` and `syscall` are arbitrary; you
4141
4242The sample of the `door` is:
4343
44−```
44+```hoon
4545[bowl:gall ~]
4646```
4747
@@ -55,7 +55,7 @@ You can find the full definition of `bowl` in `sys/zuse.hoon`, but for now it's
5555
5656The `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:
5757
58−```
58+```hoon
5959++ poke-noun
6060 |= t=@dr
6161 ^+ [*(list effect) +>.$]
@@ -73,7 +73,7 @@ As a matter of good type hygiene, we explicitly cast the output of this gate wit
7373
7474Next 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:
7575
76−```
76+```hoon
7777[[[ost %wait /egg-timer (add now t)] ~] +>.$]
7878```
7979
@@ -97,7 +97,7 @@ The final part of this `syscall` is:
9797
9898That'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`.
9999
100−```
100+```hoon
101101++ wake
102102 |= [=wire error=(unit tang)]
103103 ^+ [*(list effect) +>.$]
learn/hoon/hoon-tutorial/fibonacci.md → hoon/hoon-tutorial/fibonacci.mdrenamed+6−6
@@ -6,7 +6,7 @@ template = "doc.html"
66
77In this example, we will write a generator that produces a list of Fibonacci numbers up to `n`.
88
9−```
9+```hoon
1010|= n=@ud
1111%- flop
1212=+ [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
2222
2323On 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.
2424
25−```
25+```hoon
2626%- flop
2727```
2828
@@ -30,25 +30,25 @@ In the line above, we use `flop` on the output of the rest of the program. `flop
3030
3131Why 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).
3232
33−```
33+```hoon
3434=+ [i=0 p=0 q=1 r=*(list @ud)]
3535```
3636
3737Here 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)`.
3838
39−```
39+```hoon
4040|- ^+ r
4141```
4242
4343With 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`.
4444
45−```
45+```hoon
4646?: =(i n) r
4747```
4848
4949In 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.
5050
51−```
51+```hoon
5252%= $
5353 i +(i)
5454 p q
learn/hoon/hoon-tutorial/gall.md → hoon/hoon-tutorial/gall.mdrenamed+2−2
@@ -16,7 +16,7 @@ A `bone` is an opaque cause that initiates a request. When constructing a `move`
1616
1717A `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`
1818
19−```
19+```hoon
2020+$ card
2121 $% [%poke wire dock poke]
2222 [%http-response =http-event:http]
@@ -37,7 +37,7 @@ Gall applications can have a number of arms that get called depending on the inf
3737
3838Often 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.
3939
40−```
40+```hoon
4141++ prep
4242 |= a=(unit *)
4343 `(quip move _+>.$)`[~ +>.$]
learn/hoon/hoon-tutorial/gates.md → hoon/hoon-tutorial/gates.mdrenamed

The content is the same.

learn/hoon/hoon-tutorial/generators.md → hoon/hoon-tutorial/generators.mdrenamed+28−28
@@ -18,14 +18,14 @@ takes a `sample` (argument) and produces a noun. All you need to do is write a
1818`gate` and put it into a file in the `/gen` directory. Let's take a look at a
1919very simple one:
2020
21−```
21+```hoon
2222|= a=*
2323a
2424```
2525
2626This generator takes one argument of any noun and produces it without any
2727changes. 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):
2929
3030```
3131> +echo 42
@@ -65,7 +65,7 @@ generator to see something more familiar:
6565Now let's create a generator with two arguments instead of one. Save the code
6666below as `add.hoon` in the `/gen` directory.
6767
68−```
68+```hoon
6969|= [a=@ud b=@ud]
7070(add a b)
7171```
@@ -105,7 +105,7 @@ output data and the `mark` describing that data.
105105Below is an example of a `%say` generator. Save it to `add.hoon` in the `/gen`
106106directory.
107107
108−```
108+```hoon
109109:- %say
110110|= *
111111:- %noun
@@ -124,7 +124,7 @@ generators but impossible with naked generators. We'll explain that in a moment.
124124For now, let's focus on the code that is necessary to make something a `%say`
125125generator.
126126
127−```
127+```hoon
128128:- %say
129129```
130130
@@ -134,7 +134,7 @@ as its head and the second following expression as its tail.
134134The expression above creates a cell with `%say` as the head. The tail is
135135the `|= *` expression on the line that follows.
136136
137−```
137+```hoon
138138|= *
139139:- %noun
140140(add 40 2)
@@ -176,7 +176,7 @@ You can access each of those pieces of data by typing their names into the Dojo.
176176But in a generator, we need to put faces (variable names) onto that data so we
177177can easily use it in the program. We can do so like this:
178178
179−```
179+```hoon
180180|= [[now=@da eny=@uvJ bec=beak] ~ ~]
181181```
182182
@@ -191,7 +191,7 @@ represent this second part. But that would mean we don't want to use any new
191191faces for our generator. So a sample where we want to declare a single required
192192argument would look like this:
193193
194−```
194+```hoon
195195|= [* [n=@ud ~] ~]
196196```
197197
@@ -201,7 +201,7 @@ in the first part of the sample, somewhat similar to how we use a `~` to say
201201
202202But to use both parts together, our gate and sample would look like this:
203203
204−```
204+```hoon
205205|= [[now=@da eny=@uvJ bec=beak] [n=@ud ~] ~]
206206```
207207
@@ -210,14 +210,14 @@ arguments may be passed to the program as it's being run, but the program doesn'
210210require them. The syntax for the third part is just like the syntax for the
211211second part, besides its position:
212212
213−```
213+```hoon
214214|= [* ~ [bet=@ud ~]]
215215```
216216
217217Let's look at an example that uses all three parts. Save the code below in a
218218file called `dice.hoon` in your `/gen` directory.
219219
220−```
220+```hoon
221221:- %say
222222|= [[now=@da eny=@uvJ bec=beak] [n=@ud ~] [bet=@ud ~]]
223223:- %noun
@@ -263,7 +263,7 @@ to not use the second argument.
263263Also unlike a naked generator, we don't need to put our arguments together into
264264a cell. Swap the code below into your `add.hoon` file.
265265
266−```
266+```hoon
267267:- %say
268268|= [* [a=@ud b=@ud ~] ~]
269269:- %noun
@@ -312,7 +312,7 @@ to explain how this kind of generator works.
312312The code below is an `%ask` generator that checks if the user inputs "blue" when
313313prompted. Save it as `axe.hoon` in `/gen`.
314314
315−```
315+```hoon
316316/- sole
317317/+ generators
318318=, [sole generators]
@@ -352,7 +352,7 @@ Aaaaagh!
352352
353353Let's go over what exactly is happening in this code.
354354
355−```
355+```hoon
356356/- sole
357357/+ generators
358358=, [sole generators]
@@ -369,7 +369,7 @@ gates we will use from `/lib/generators`. We use some special runes for this.
369369to write `sole-result:sole` instead of `sole-result` or `print:generators`
370370instead of `print`.
371371
372−```
372+```hoon
373373:- %ask
374374|= *
375375```
@@ -381,7 +381,7 @@ generator we are running.
381381With `|= *`, we create a gate and ignore the standard arguments we are given,
382382because we're not using them.
383383
384−```
384+```hoon
385385^- (sole-result (cask tang))
386386```
387387
@@ -398,7 +398,7 @@ There are three types of `tank`: `leaf`, `palm`, and `rose`. A `leaf` is for
398398printing a single noun, a `rose` is for printing rows of data, and a `palm` is
399399for printing backstep-indented lists.
400400
401−```
401+```hoon
402402%+ print leaf+"What is your favorite color?"
403403%+ prompt [%& %prompt "color: "]
404404|= t=tape
@@ -434,7 +434,7 @@ use to prompt the user. In the case of our example, we use `"color: "`.
434434we produce a `tang`.
435435
436436
437−```
437+```hoon
438438|= t=tape
439439```
440440
@@ -457,7 +457,7 @@ This is a [known issue](https://github.com/urbit/arvo/issues/840) to be resolved
457457section we'll assume knowledge of generators covered in previous sections, so
458458we can jump in with an example:
459459
460−```
460+```hoon
461461/- sole
462462/+ generators
463463=, generators
@@ -481,7 +481,7 @@ The above generator was written with the
481481[Studio Ghibli API](https://ghibliapi.herokuapp.com/). It uses this API to
482482print the title of a Studio Ghibli film.
483483
484−```
484+```hoon
485485/- sole
486486/+ generators
487487=, generators
@@ -491,7 +491,7 @@ Here we import types from `/sur/sole.hoon` and gates from
491491`/lib/generators.hoon`. We also use `=,` to expose the namespace of
492492`generators` that we just imported.
493493
494−```
494+```hoon
495495:- %get
496496|= [* [url=tape ~] ~]
497497```
@@ -501,7 +501,7 @@ code that produces a generator-specific `cell`. The head of that cell is `%get`,
501501and the tail is a gate that takes a `tape` of the URL that we are trying
502502to access.
503503
504−```
504+```hoon
505505^- (sole-request:sole (cask json))
506506```
507507
@@ -509,7 +509,7 @@ Here we make sure our gate is producing a `sole-request` which contains a `cask`
509509of the type `json`.
510510
511511
512−```
512+```hoon
513513%+ curl (scan url auri:de-purl:html)
514514|= hit/httr:eyre
515515```
@@ -520,7 +520,7 @@ make sure it's in the proper format.
520520The second part of the `curl` call is the `gate` that will get called with the
521521result provided by the actual HTTP request.
522522
523−```
523+```hoon
524524?~ r.hit !!
525525```
526526
@@ -528,7 +528,7 @@ Here we verify that the `r` face of our response is not null before
528528continuing. If it is null, the generator will crash, as there is nothing left to
529529do.
530530
531−```
531+```hoon
532532=/ my-json (de-json:html q.u.r.hit)
533533```
534534
@@ -538,7 +538,7 @@ entire response object, including headers, which we don't care about for this
538538example. `de-json` out of `html` will parse the `cord` and produce a `json` type
539539for us that we can then use to inspect the data.
540540
541−```
541+```hoon
542542?~ my-json !!
543543=, dejs:format
544544```
@@ -548,7 +548,7 @@ type. To do that, we test for null and crash if that test passes. If it doesn't
548548pass, we use `=,` on the `dejs:format` core so that we can more easily pull arms
549549out of it.
550550
551−```
551+```hoon
552552%+ produce %json
553553%. %title
554554%~ got by
@@ -572,7 +572,7 @@ access members of a given `map`.
572572
573573At the moment, however, we do not have a `map`, but instead have a `json` type.
574574
575−```
575+```hoon
576576%- (om same)
577577u.my-json
578578```
learn/hoon/hoon-tutorial/hoon-syntax.md → hoon/hoon-tutorial/hoon-syntax.mdrenamed+10−10
@@ -83,7 +83,7 @@ We start with atom literals. Each of these is a basic expression of Hoon that e
8383~zod
8484```
8585
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).
8787
8888Cell literals can be written in Hoon using `[ ]`. Cell literals are complex, because other expressions are put inside the square brackets. Examples:
8989
@@ -110,7 +110,7 @@ You can also put complex expressions inside square brackets to make a cell. The
110110
111111### Wings
112112
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.
114114
115115Let'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:
116116
@@ -123,7 +123,7 @@ Let's start with the base case: a single limb. A limb expression is a trivial w
123123- `add`
124124- `mul`
125125
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).)
127127
128128Wing expressions with multiple limbs are complex expressions. Examples:
129129
@@ -140,7 +140,7 @@ Wing expressions with multiple limbs are complex expressions. Examples:
140140
141141Hoon 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`.
142142
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).)
144144
145145### Rune Expressions
146146
@@ -150,7 +150,7 @@ Expressions with a rune at the beginning are rune expressions. Most runes are u
150150
151151Runes 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.
152152
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.
154154
155155Runes 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.
156156
@@ -249,7 +249,7 @@ The irregular `( )` gate-calling syntax is versatile -- it is also a shortcut fo
249249
250250The `( )` gate-calling syntax can be used for gates with any number of arguments.
251251
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).
253253
254254### Expressions That Are Only Irregular
255255
@@ -284,7 +284,7 @@ b=[16 18]
284284[16 18]
285285```
286286
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).
288288
289289
290290## The Standard Library
@@ -293,7 +293,7 @@ The Hoon standard library is a compilation of generally useful Hoon gates (funct
293293
294294It'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:
295295
296−```
296+```hoon
297297++ add
298298 ~/ %add
299299 |= [a=@ b=@]
@@ -308,10 +308,10 @@ Standard library functions are often built with other standard library functions
308308
309309The Hoon syntax can be intimidating for the uninitiated, so it's good to remember where you can look up expressions can be found. The [reference section](/docs/reference/) itself is a good place to find the reference materials that you need. These children sections are likely to be useful:
310310
311−- The [Runes](/docs/reference/hoon-expressions/) page will show you how to use any Hoon rune.
311+- The [Runes](/docs/hoon/hoon-expressions/) page will show you how to use any Hoon rune.
312312- The [Cheat sheet](/docs/reference/cheat-sheet/) is a more compact place to look up rune expressions.
313313- The [Standard library](/docs/reference/library/) section has its sub-pages arranged by category. So arithmetic functions, for example, are all found on the same page.
314−- The [Hoon Style Guide](/docs/learn/hoon/style/) will show you how to write your Hoon code so that it's idiomatic and easily understood by others.
314+- The [Hoon Style Guide](/docs/hoon/style/) will show you how to write your Hoon code so that it's idiomatic and easily understood by others.
315315
316316### Debugging
317317
learn/hoon/hoon-tutorial/iron-polymorphism.md → hoon/hoon-tutorial/iron-polymorphism.mdrenamed+6−6
@@ -10,7 +10,7 @@ Polymorphism is a programming concept that allows a a piece of code to use diffe
1010
1111A 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.
1212
13−```
13+```hoon
1414++ fold
1515 |* [state=mold elem=mold]
1616 |= [[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
2222
2323On 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.
2424
25−```
25+```hoon
2626|= [[st=state xs=(list elem)] f=$-([state elem] state)]
2727```
2828
@@ -32,7 +32,7 @@ The second argument is `f=$-([state elem] state)`. `$-` is a rune that takes two
3232
3333The rest of the dry gate is straightforward:
3434
35−```
35+```hoon
3636 ^- state
3737 |-
3838 ?~ xs st
@@ -43,7 +43,7 @@ We ensure the output is of type `state`. Then we check if `xs`, the list, is emp
4343
4444Lets look at two examples of using `fold`.
4545
46−```
46+```hoon
4747%+ (fold (list @) @)
4848 :- ~
4949 ~[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
5757
5858The gate will simply add two to each element `e` and append that to the front of `s`. Let's run this in the `dojo`:
5959
60−```
60+```hoon
6161> %+ (fold (list @) @)
6262 :- ~
6363 ~[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
7474But `fold` does not have to produce a `list`. Let's look at another example:
7575
7676
77−```
77+```hoon
7878%+ (fold @ @)
7979 [0 ~[1 2 3 4]]
8080|= [s=@ e=@]
learn/hoon/hoon-tutorial/lead-polymorphism.md → hoon/hoon-tutorial/lead-polymorphism.mdrenamed+7−7
@@ -8,7 +8,7 @@ There are four kinds of cores: gold, iron, zinc, and lead. You are able to use c
88
99Lead 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`.
1010
11−```
11+```hoon
1212=< (to-list (take fib 10))
1313|%
1414++ stream
@@ -59,7 +59,7 @@ Lead cores have opaque payloads. That is, the payload can not be written to or r
5959There are five arms in this core: `stream`, `stream-type`, `to-list`, `take`, and `fib`.
6060
6161
62−```
62+```hoon
6363++ stream
6464 |* of=mold
6565 $_ ^? |.
@@ -77,7 +77,7 @@ The final `~` here is used as the type produced when initially calling this wet
7777
7878Now 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.
7979
80−```
80+```hoon
8181++ stream-type
8282 |* s=(stream)
8383 $_ => (s)
@@ -89,7 +89,7 @@ Now you can see that a `stream` is either `~` or a pair of a value of some type
8989
9090Calling 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 `!!`.
9191
92−```
92+```hoon
9393++ take
9494 |* [s=(stream) n=@]
9595 =| i=@
@@ -109,7 +109,7 @@ We're going to skip over `to-list` and examine `take` first. `take` is another w
109109
110110If `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.
111111
112−```
112+```hoon
113113++ to-list
114114 |* s=(stream)
115115 %- 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
127127
128128`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.
129129
130−```
130+```hoon
131131++ fib
132132 ^- (stream @ud)
133133 =+ [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
141141The 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.
142142
143143
144−```
144+```hoon
145145=< (to-list (take fib 10))
146146```
147147
learn/hoon/hoon-tutorial/libraries.md → hoon/hoon-tutorial/libraries.mdrenamed+7−7
@@ -6,7 +6,7 @@ template = "doc.html"
66
77In 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.
88
9−```
9+```hoon
1010|%
1111+$ suit ?(%hearts %spades %clubs %diamonds)
1212+$ 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
6464To create three types we're going to need, we use `+$`, which is an arm used to define a type.
6565
6666
67−```
67+```hoon
6868+$ suit ?(%hearts %spades %clubs %diamonds)
6969+$ darc [sut=suit val=@ud]
7070+$ deck (list darc)
@@ -78,7 +78,7 @@ Our final type is `deck`, which is simply a `list` of `darc`.
7878
7979One 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.
8080
81−```
81+```hoon
8282++ num-to-suit
8383 |= val=@ud
8484 ^- suit
@@ -94,7 +94,7 @@ We can see this is a gate that takes a single `@ud` and produces a `suit`.
9494
9595The `?+` 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.
9696
97−```
97+```hoon
9898++ make-deck
9999 ^- deck
100100 =| mydeck=deck
@@ -115,7 +115,7 @@ The `?+` rune is the rune to switch against a value with a default. The default
115115`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.
116116
117117
118−```
118+```hoon
119119++ draw
120120 |= [n=@ud d=deck]
121121 ^- [hand=deck rest=deck]
@@ -125,7 +125,7 @@ The `?+` rune is the rune to switch against a value with a default. The default
125125
126126`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`.
127127
128−```
128+```hoon
129129++ shuffle-deck
130130 |= [unshuffled=deck entropy=@]
131131 ^- deck
@@ -169,7 +169,7 @@ This is a very naive shuffling algorithm, and you could imagine a better one. Im
169169
170170So 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.
171171
172−```
172+```hoon
173173/+ playing-cards
174174:- %say
175175|= [[* eny=@uv *] *]
learn/hoon/hoon-tutorial/list-of-numbers.md → hoon/hoon-tutorial/list-of-numbers.mdrenamed+8−8
@@ -7,7 +7,7 @@ This code-example is intended to familiarize you with the basics of Hoon syntax.
77
88Below 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]`.
99
10−```
10+```hoon
1111|= end=@ :: 1
1212=/ count=@ 1 :: 2
1313|- :: 3
@@ -34,7 +34,7 @@ In our example program, we use comments with line numbers for convenient referen
3434
3535### Line 1
3636
37−```
37+```hoon
3838|= end=@
3939```
4040
@@ -50,7 +50,7 @@ Our program is simple, so the _entire program_ is the gate that's being created
5050
5151### Line 2
5252
53−```
53+```hoon
5454=/ count=@ 1
5555```
5656
@@ -62,7 +62,7 @@ We're using `count` to keep track of what numbers we're including in the list we
6262
6363### Line 3
6464
65−```
65+```hoon
6666|-
6767```
6868
@@ -70,7 +70,7 @@ The `|-` rune functions as a "restart" point for recursion that will be defined
7070
7171### Line 4
7272
73−```
73+```hoon
7474^- (list @)
7575```
7676
@@ -80,7 +80,7 @@ In this case, the rune specifies that our gate's output must be `(list @)` -- th
8080
8181### Lines 5 and 6
8282
83−```
83+```hoon
8484?: =(end count)
8585 ~
8686```
@@ -99,13 +99,13 @@ In our case, `:- count` creates a cell out of whatever value is stored in `coun
9999
100100## Line 8
101101
102−```
102+```hoon
103103$(count (add 1 count))
104104```
105105
106106The 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".
107107
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.
109109
110110## Explanation
111111
learn/hoon/hoon-tutorial/lists.md → hoon/hoon-tutorial/lists.mdrenamed+3−3
@@ -269,7 +269,7 @@ Or to double each item in a list of atoms:
269269
270270We can rewrite the Caesar cipher program using `turn`:
271271
272−```
272+```hoon
273273|= [a=@ b=tape]
274274^- tape
275275?: (gth a 25)
@@ -295,7 +295,7 @@ The Hoon standard library and compiler are written in Hoon. At this point, you
295295
296296#### `flop`
297297
298−```
298+```hoon
299299:: flop.hoon
300300::
301301|= a=(list @)
@@ -314,7 +314,7 @@ Run in dojo:
314314
315315#### `snag`
316316
317−```
317+```hoon
318318:: snag.hoon
319319::
320320|= [a=@ b=(list @)]
learn/hoon/hoon-tutorial/molds.md → hoon/hoon-tutorial/molds.mdrenamed+6−6
@@ -8,7 +8,7 @@ A mold is a function that coerces a noun to a type or crashes.
88
99Let'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.
1010
11−```
11+```hoon
1212++ pair
1313 |$ [head tail]
1414 [p=head q=tail]
@@ -16,7 +16,7 @@ Let's take some examples from `hoon.hoon`. `|$` is a new rune as of the writing
1616
1717Here 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`.
1818
19−```
19+```hoon
2020++ each
2121 |$ [this that]
2222 $% [%| p=that]
@@ -26,7 +26,7 @@ Here is a very simple mold builder. It takes two molds and produces a mold that
2626
2727`++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`.
2828
29−```
29+```hoon
3030++ list
3131 |$ [item]
3232 $@(~ [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
3434Here 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.
3535
3636
37−```
37+```hoon
3838++ lest
3939 |$ [item]
4040 [i/item t/(list item)]
4141```
4242`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:
4343
44−```
44+```hoon
4545++ list
4646 |$ [item]
4747 $@(~ lest)
@@ -49,7 +49,7 @@ Here is a mold builder you've used previously. `$@` is a rune that will match th
4949
5050Another possible way to write it could have been
5151
52−```
52+```hoon
5353++ list
5454 |$ [item]
5555 $@(~ [i=item t=$])
learn/hoon/hoon-tutorial/nouns.md → hoon/hoon-tutorial/nouns.mdrenamed

The content is the same.

learn/hoon/hoon-tutorial/recursion.md → hoon/hoon-tutorial/recursion.mdrenamed+4−4
@@ -20,7 +20,7 @@ recursive `gate` (Hoon's equivalent of a function) to perform the relevant
2020computation. Save the code below as `factorial.hoon` in your ship's `/gen`
2121directory.
2222
23−```
23+```hoon
2424|= n=@ud
2525?: =(n 1)
2626 1
@@ -124,7 +124,7 @@ frame that simply has its values replaced with each recursion.
124124With a bit of refactoring, we can write a version of our factorial gate that
125125_is_ tail-recursive and can take advantage of this feature:
126126
127−```
127+```hoon
128128|= n=@ud
129129=/ t=@ud 1
130130|-
@@ -142,7 +142,7 @@ point.
142142We then evaluate `n` to see if it is 1. If it is we return the value of `t`. In
143143the case that `n` is anything other than 1, we perform our recursion:
144144
145−```
145+```hoon
146146$(n (dec n), t (mul t n))
147147```
148148
@@ -177,7 +177,7 @@ of. That's because a gate is just a core with a single arm named `$`. The
177177subject is searched depth-first, head before tail, with faces skipped, and
178178stopping on the first result. In other words, the first match found in the head
179179will 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
181181skips the first match of a name.
182182
183183### Exercises
learn/hoon/hoon-tutorial/setup.md → hoon/hoon-tutorial/setup.mdrenamed+4−4
@@ -13,9 +13,9 @@ These may not look like numbers, but they are. Each urbit name is written in a
1313
1414## Installing Urbit
1515
16−You can install Urbit on any Mac or Unix machine; if you're just trying out Urbit or creating a development ship, you can follow the steps for creating a development ship [here](/docs/using/creating-a-development-ship). On Windows, make a virtual Linux machine using VirtualBox or a similar tool.
16+You can install Urbit on any Mac or Unix machine; if you're just trying out Urbit or creating a development ship, you can follow the steps for creating a development ship [here](@/operations/#creating-a-development-ship). On Windows, make a virtual Linux machine using VirtualBox or a similar tool.
1717
18−Once you're finished, you can [boot your very own ship](/docs/getting-started/booting-a-ship/#step-3-run-the-boot-command). While you can develop in Hoon on your own ship on the live network, we strongly suggest developing on a development ship first.
18+Once you're finished, you can [boot your very own ship](/operations/#booting-a-ship). While you can develop in Hoon on your own ship on the live network, we strongly suggest developing on a development ship first.
1919
2020## Getting started
2121
@@ -42,7 +42,7 @@ $
4242
4343Your 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:
4444
45−```
45+```sh
4646urbit zod
4747```
4848
@@ -59,7 +59,7 @@ You'll see:
595917
6060```
6161
62−You asked dojo to evaluate `17` and it echoed the number back at you. This value is a 'noun'. We'll talk more about nouns in [Chapter 1.2](docs/learn/hoon/hoon-tutorial/nouns/), but first let's write a very basic program.
62+You asked dojo to evaluate `17` and it echoed the number back at you. This value is a 'noun'. We'll talk more about nouns in [Chapter 1.2](docs/hoon/hoon-tutorial/nouns/), but first let's write a very basic program.
6363
6464## Generators
6565
learn/hoon/hoon-tutorial/structures-and-complex-types.md → hoon/hoon-tutorial/structures-and-complex-types.mdrenamed+1−1
@@ -350,6 +350,6 @@ Often `$@` is used to define a type with a null or trivial case for the `@` case
350350
351351Now the `~` value is included as a possible value for `user`.
352352
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).
354354
355355### [Next Up: Walkthrough -- Libraries](../libraries)
learn/hoon/hoon-tutorial/the-subject-and-its-legs.md → hoon/hoon-tutorial/the-subject-and-its-legs.mdrenamed

The content is the same.

learn/hoon/hoon-tutorial/trees-sets-and-maps.md → hoon/hoon-tutorial/trees-sets-and-maps.mdrenamed+2−2
@@ -61,7 +61,7 @@ This didn't work because we haven't first proved to Hoon that `b` is a non-null
6161
6262Here's a program that finds and replaces certain atoms in a `(tree @)`.
6363
64−```
64+```hoon
6565|= [nedl=@ hay=(tree @) new=@]
6666^- (tree @)
6767?~ hay ~
@@ -196,7 +196,7 @@ There are other set functions in the Hoon standard library we won't cover here.
196196
197197Here'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`.
198198
199−```
199+```hoon
200200|= [a=(set @) b=(set @)]
201201=/ c=(list @) ~(tap in a)
202202=/ d=(list @) ~(tap in b)
learn/hoon/hoon-tutorial/type-checking-and-type-inference.md → hoon/hoon-tutorial/type-checking-and-type-inference.mdrenamed+9−7
@@ -179,7 +179,7 @@ By now you've used the `|=` rune to define several gates. This rune is used to
179179
180180The 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:
181181
182−```
182+```hoon
183183|= [a=@ b=@] :: take two @
184184^- @ :: output is one @
185185?: =(b 0) :: if b is 0
@@ -195,6 +195,8 @@ We run it in the dojo using a cell to pass the two arguments:
195195
196196> +add 22
197197nest-fail
198+-want.{a/@ b/@}
199+-have.@ud
198200```
199201
200202If 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
410412
411413Nouns 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.
412414
413−```
415+```hoon
414416|= a=* :: 1
415417^- @ :: 2
416418?@ a :: 3
@@ -439,7 +441,7 @@ We have been careful to use `-.a` and `+.a` only on a branch for which `a` is pr
439441
440442Here's a program that counts the number of cells in a noun:
441443
442−```
444+```hoon
443445|= a=* :: 1
444446=| c=@ :: 2
445447|- ^- @ :: 3
@@ -499,7 +501,7 @@ To illustrate: let's say that `b` is the list of the atoms `11`, `22`, and `33`.
499501
500502Here's a program that takes atoms `a` and `b` and returns a list of all atoms from `a` to `b`:
501503
502−```
504+```hoon
503505|= [a=@ b=@] :: 1
504506^- (list @) :: 2
505507?: (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
526528
527529In fact, we could have left out the `i` and `t` faces in the program itself:
528530
529−```
531+```hoon
530532|= [a=@ b=@] :: 1
531533^- (list @) :: 2
532534?: (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
577579
578580The `?~` 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:
579581
580−```
582+```hoon
581583|= a=(list @) :: 1
582584=| c=@ :: 2
583585|- ^- @ :: 3
@@ -607,7 +609,7 @@ Save the above code as `lent.hoon` in your urbit's pier and run it from the dojo
607609
608610Here's a program that takes a noun and returns a list of its 'leaves' (atoms) in order of their appearance:
609611
610−```
612+```hoon
611613|= a=* :: 1
612614=/ lis=(list @) ~ :: 2
613615|- ^- (list @) :: 3
learn/hoon/hoon-tutorial/type-polymorphism.md → hoon/hoon-tutorial/type-polymorphism.mdrenamed+3−4
@@ -193,7 +193,7 @@ We may use the `+*` rune to define an arm that produced a more complex type from
193193
194194For 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`:
195195
196−```
196+```hoon
197197+* list [item]
198198 :: null-terminated list
199199 ::
@@ -356,7 +356,7 @@ The context type of `B` isn't checked at all; and because of the nesting rules i
356356
357357Iron 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:
358358
359−```
359+```hoon
360360|= a=_^|(|=(@ 15))
361361^- @
362362=/ b=@ (a 10)
@@ -389,7 +389,7 @@ Yup, it still works. You can't do that with a gold core sample!
389389
390390There's a simpler way to define an iron sample. Revise the first line of `gatepass.hoon` to the following:
391391
392−```
392+```hoon
393393|= a=$-(@ @)
394394^- @
395395=/ b=@ (a 10)
@@ -574,4 +574,3 @@ Once more let's clear up the dojo subject:
574574```
575575
576576
577−### [Next Up: Walkthrough -- <placeholder>]
reference/library/1a.md → hoon/library/1a.mdrenamed+13−13
@@ -21,7 +21,7 @@ An atom.
2121
2222#### Source
2323
24−```
24+```hoon
2525 ++ add
2626 ~/ %add
2727 |= [a=@ b=@]
@@ -72,7 +72,7 @@ An atom.
7272
7373#### Source
7474
75−```
75+```hoon
7676 ++ dec
7777 ~/ %dec
7878 |= a=@
@@ -125,7 +125,7 @@ An atom.
125125
126126#### Source
127127
128−```
128+```hoon
129129 ++ div
130130 ~/ %div
131131 |: [a=`@`1 b=`@`1]
@@ -180,7 +180,7 @@ A cell of atoms.
180180
181181#### Source
182182
183−```
183+```hoon
184184 ++ dvr
185185 ~/ %dvr
186186 |= [a=@ b=@]
@@ -230,7 +230,7 @@ A flag.
230230
231231#### Source
232232
233−```
233+```hoon
234234 ++ gte
235235 ~/ %gte
236236 |= [a=@ b=@]
@@ -270,7 +270,7 @@ A flag.
270270
271271#### Source
272272
273−```
273+```hoon
274274 ++ gth
275275 ~/ %gth
276276 |= [a=@ b=@]
@@ -311,7 +311,7 @@ A flag.
311311
312312#### Source
313313
314−```
314+```hoon
315315 ++ lte
316316 ~/ %lte
317317 |= [a=@ b=@]
@@ -368,7 +368,7 @@ A flag.
368368
369369#### Source
370370
371−```
371+```hoon
372372 ++ lth
373373 ~/ %lth
374374 |= [a=@ b=@]
@@ -426,7 +426,7 @@ An atom.
426426
427427#### Source
428428
429−```
429+```hoon
430430 ++ max
431431 ~/ %max
432432 |= [a=@ b=@]
@@ -482,7 +482,7 @@ An atom.
482482
483483#### Source
484484
485−```
485+```hoon
486486 ++ min
487487 ~/ %min
488488 |= [a=@ b=@]
@@ -536,7 +536,7 @@ An atom.
536536
537537#### Source
538538
539−```
539+```hoon
540540 ++ mod
541541 ~/ %mod
542542 |: [a=`@`1 b=`@`1]
@@ -587,7 +587,7 @@ An atom.
587587
588588#### Source
589589
590−```
590+```hoon
591591 ++ mul
592592 ~/ %mul
593593 |: [a=`@`1 b=`@`1]
@@ -638,7 +638,7 @@ An atom.
638638
639639#### Source
640640
641−```
641+```hoon
642642 ++ sub
643643 ~/ %sub
644644 |= [a=@ b=@]
reference/library/1b.md → hoon/library/1b.mdrenamed+4−4
@@ -3,7 +3,7 @@ title = "1b: Tree Addressing"
33weight = 2
44template = "doc.html"
55+++
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
77information on the tree-addressing system.
88
99### `++cap`
@@ -25,7 +25,7 @@ A constant atom.
2525
2626#### Source
2727
28−```
28+```hoon
2929 ++ cap
3030 ~/ %cap
3131 |= a=@
@@ -82,7 +82,7 @@ An atom.
8282
8383#### Source
8484
85−```
85+```hoon
8686 ++ mas
8787 ~/ %mas
8888 |= a=@
@@ -184,7 +184,7 @@ An atom.
184184
185185#### Source
186186
187−```
187+```hoon
188188 ++ peg
189189 ~/ %peg
190190 |= [a=@ b=@]
reference/library/1c.md → hoon/library/1c.mdrenamed+13−13
@@ -11,7 +11,7 @@ Atom representing block size. A block of size `a` has a bitwidth of `2^a`.
1111
1212#### Source
1313
14−```
14+```hoon
1515 ++ bloq @
1616```
1717
@@ -62,7 +62,7 @@ A `bloq` of 3 has a bitwidth of 8. (2^3 bits; can represent 256 values.)
6262
6363And so on.
6464
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.
6666
6767---
6868
@@ -103,7 +103,7 @@ product noun. If used dryly as a type, the subject must have a sample type of
103103
104104#### Source
105105
106−```
106+```hoon
107107 ++ gate
108108 $-(* *)
109109```
@@ -142,7 +142,7 @@ homogenous type.
142142
143143#### Source
144144
145−```
145+```hoon
146146 ++ list
147147 |*(a=mold $@($~ (lest a)))
148148```
@@ -176,7 +176,7 @@ A mold generator. Puts face of `p` on the passed-in mold.
176176
177177#### Source
178178
179−```
179+```hoon
180180 ++ lone
181181 |*(a=mold [p=a])
182182```
@@ -209,7 +209,7 @@ A mold generator. Produces a tuple of two of the types passed in.
209209
210210#### Source
211211
212−```
212+```hoon
213213 ++ pair
214214 |*([a=mold b=mold] [p=a q=b])
215215```
@@ -234,7 +234,7 @@ A mold generator. A `list` without the faces `i` and `t`.
234234
235235#### Source
236236
237−```
237+```hoon
238238 ++ pole
239239 |*(a=mold $@($~ [a (pole a)]))
240240```
@@ -260,7 +260,7 @@ A mold generator. Produces a tuple of four of the types passed in.
260260
261261#### Source
262262
263−```
263+```hoon
264264 ++ qual
265265 |* [a=mold b=mold c=mold d=mold]
266266 [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`.
285285
286286#### Source
287287
288−```
288+```hoon
289289 ++ quip
290290 |*([a=mold b=mold] [(list a) b])
291291```
@@ -314,7 +314,7 @@ A trap is a core with one arm `$`.
314314
315315#### Source
316316
317−```
317+```hoon
318318 ++ trap
319319 |*(a=mold _|?(*a))
320320```
@@ -343,7 +343,7 @@ left/right sub `tree` of the same type. Pretty-printed with `{}`.
343343
344344#### Source
345345
346−```
346+```hoon
347347 ++ tree
348348 |*(a=mold $@($~ [n=a l=(tree a) r=(tree a)]))
349349```
@@ -365,7 +365,7 @@ A mold generator. A mold of the tuple of the three types passed in.
365365
366366#### Source
367367
368−```
368+```hoon
369369 ++ trel
370370 |*([a=mold b=mold c=mold] [p=a q=b r=c])
371371```
@@ -391,7 +391,7 @@ type that was passed in.
391391
392392#### Source
393393
394−```
394+```hoon
395395 ++ unit
396396 |*(a=mold $@($~ [$~ u=a]))
397397```
reference/library/2a.md → hoon/library/2a.mdrenamed+11−11
@@ -22,7 +22,7 @@ A unit.
2222
2323#### Source
2424
25−```
25+```hoon
2626 ++ biff
2727 |* [a=(unit) b=$-(* (unit))]
2828 ?~ a ~
@@ -61,7 +61,7 @@ A unit.
6161
6262#### Source
6363
64−```
64+```hoon
6565 ++ bind
6666 |* [a=(unit) b=gate]
6767 ?~ a ~
@@ -101,7 +101,7 @@ Either the product of `a` or the value inside of unit `b`.
101101
102102#### Source
103103
104−```
104+```hoon
105105 ++ bond
106106 |* a=(trap)
107107 |* b=(unit)
@@ -143,7 +143,7 @@ A unit of the two initial values.
143143
144144#### Source
145145
146−```
146+```hoon
147147 ++ both
148148 |* [a=(unit) b=(unit)]
149149 ?~ a ~
@@ -183,7 +183,7 @@ A unit.
183183
184184#### Source
185185
186−```
186+```hoon
187187 ++ clap :: combine
188188 |* [a=(unit) b=(unit) c=_|=(^ +<-)]
189189 ?~ a b
@@ -225,7 +225,7 @@ A list.
225225
226226#### Source
227227
228−```
228+```hoon
229229 ++ drop :: enlist
230230 |* a=(unit)
231231 ?~ a ~
@@ -264,7 +264,7 @@ Either a noun `b` or the unwrapped value of unit `a`.
264264
265265#### Source
266266
267−```
267+```hoon
268268 ++ fall :: default
269269 |* [a=(unit) b=*]
270270 ?~(a b u.a)
@@ -300,7 +300,7 @@ A unit.
300300
301301#### Source
302302
303−```
303+```hoon
304304 ++ lift :: lift gate (fmap)
305305 |* a=gate :: flipped
306306 |* b=(unit) :: curried
@@ -341,7 +341,7 @@ A unit or crash.
341341
342342#### Source
343343
344−```
344+```hoon
345345 ++ mate :: choose
346346 |* [a=(unit) b=(unit)]
347347 ?~ b a
@@ -387,7 +387,7 @@ Either the unwrapped value of `a` (`u.a`), or crash.
387387
388388#### Source
389389
390−```
390+```hoon
391391 ++ need :: demand
392392 |* a=(unit)
393393 ?~ a ~|(%need !!)
@@ -428,7 +428,7 @@ A unit.
428428
429429#### Source
430430
431−```
431+```hoon
432432 ++ some :: lift (pure)
433433 |* a=*
434434 [~ u=a]
reference/library/2b.md → hoon/library/2b.mdrenamed+30−30
@@ -22,7 +22,7 @@ A `list`.
2222
2323#### Source
2424
25−```
25+```hoon
2626 ++ fand
2727 ~/ %fand
2828 |= [nedl=(list) hstk=(list)]
@@ -77,7 +77,7 @@ The `unit` of an atom.
7777
7878#### Source
7979
80−```
80+```hoon
8181 ++ find
8282 ~/ %find
8383 |= [nedl=(list) hstk=(list)]
@@ -130,7 +130,7 @@ A `list`.
130130
131131#### Source
132132
133−```
133+```hoon
134134 ++ flop
135135 ~/ %flop
136136 |* a=(list)
@@ -174,7 +174,7 @@ a `list`.
174174
175175#### Source
176176
177−```
177+```hoon
178178 ++ gulf
179179 |= [a=@ b=@]
180180 ^- (list @)
@@ -210,7 +210,7 @@ a `list`.
210210
211211#### Source
212212
213−```
213+```hoon
214214 ++ homo
215215 |* a=(list)
216216 ^+ =< $
@@ -254,7 +254,7 @@ a `list`.
254254
255255#### Source
256256
257−```
257+```hoon
258258 ++ join
259259 |* [sep=* lit=(list)]
260260 =. sep `_?>(?=(^ lit) i.lit)`sep
@@ -293,7 +293,7 @@ an atom.
293293
294294#### Source
295295
296−```
296+```hoon
297297 ++ lent
298298 ~/ %lent
299299 |= a=(list)
@@ -334,7 +334,7 @@ A boolean.
334334
335335#### Source
336336
337−```
337+```hoon
338338 ++ levy
339339 ~/ %levy :: all of
340340 |* [a=(list) b=$-(* ?)]
@@ -374,7 +374,7 @@ every element of `++list` `a`.
374374
375375#### Source
376376
377−```
377+```hoon
378378 ++ lien
379379 ~/ %lien
380380 |* [a=(list) b=$-(* ?)]
@@ -414,7 +414,7 @@ A `++list`.
414414
415415#### Source
416416
417−```
417+```hoon
418418 ++ limo :: listify
419419 |* a=*
420420 ^+ =< $
@@ -452,7 +452,7 @@ A unit.
452452
453453#### Source
454454
455−```
455+```hoon
456456 ++ murn :: maybe transform
457457 ~/ %murn
458458 |* [a=(list) b=$-(* (unit))]
@@ -491,7 +491,7 @@ A `++list`.
491491
492492#### Source
493493
494−```
494+```hoon
495495 ++ oust :: remove
496496 ~/ %oust
497497 |* [[a=@ b=@] c=(list)]
@@ -528,7 +528,7 @@ A list.
528528
529529#### Source
530530
531−```
531+```hoon
532532 ++ reap :: replicate
533533 ~/ %reap
534534 |* [a=@ b=*]
@@ -575,7 +575,7 @@ The accumulator, which is a noun.
575575
576576#### Source
577577
578−```
578+```hoon
579579 ++ reel
580580 ~/ %reel
581581 |* [a=(list) b=_|=([* *] +<+)]
@@ -626,7 +626,7 @@ The accumulator, which is a noun.
626626
627627#### Source
628628
629−```
629+```hoon
630630 ++ roll :: left fold
631631 ~/ %roll
632632 |* [a=(list) b=_|=([* *] +<+)]
@@ -673,7 +673,7 @@ A list of the same type as `b`.
673673
674674#### Source
675675
676−```
676+```hoon
677677 ++ scag :: prefix
678678 ~/ %scag
679679 |* [a=@ b=(list)]
@@ -716,7 +716,7 @@ A cell of two lists.
716716
717717#### Source
718718
719−```
719+```hoon
720720 ++ skid :: separate
721721 ~/ %skid
722722 |* [a=(list) b=$-(* ?)]
@@ -757,7 +757,7 @@ A flag.
757757
758758#### Source
759759
760−```
760+```hoon
761761 ++ skim :: only
762762 ~/ %skim
763763 |* [a=(list) b=$-(* ?)]
@@ -796,7 +796,7 @@ A list of the same type as `a`.
796796
797797#### Source
798798
799−```
799+```hoon
800800 ++ skip :: except
801801 ~/ %skip
802802 |* [a=(list) b=$-(* ?)]
@@ -835,7 +835,7 @@ A list of the same type as `b`.
835835
836836#### Source
837837
838−```
838+```hoon
839839 ++ slag :: suffix
840840 ~/ %slag
841841 |* [a=@ b=(list)]
@@ -875,7 +875,7 @@ Produces an element of `b`, or crashes if no element exists at that index.
875875
876876#### Source
877877
878−```
878+```hoon
879879 ++ snag :: index
880880 ~/ %snag
881881 |* [a=@ b=(list)]
@@ -915,7 +915,7 @@ Produces a list of `b` appended to `a`.
915915
916916#### Source
917917
918−```
918+```hoon
919919 ++ snoc
920920 |* [a/(list) b/*]
921921 (weld a ^+(a [b]~))
@@ -952,7 +952,7 @@ A list
952952
953953#### Source
954954
955−```
955+```hoon
956956 ++ sort !. :: quicksort
957957 ~/ %sort
958958 |* [a=(list) b=$-([* *] ?)]
@@ -999,7 +999,7 @@ A list.
999999
10001000#### Source
10011001
1002−```
1002+```hoon
10031003 ++ spin
10041004 ~/ %spin
10051005 |* [a=(list) b=* c=_|=(^ [** +<+])]
@@ -1064,7 +1064,7 @@ A list.
10641064
10651065#### Source
10661066
1067−```
1067+```hoon
10681068 ++ spun
10691069 ~/ %spun
10701070 |* [a=(list) b=_|=(^ [** +<+])]
@@ -1107,7 +1107,7 @@ A list of the same type as `c`.
11071107
11081108#### Source
11091109
1110−```
1110+```hoon
11111111 ++ swag
11121112 |* [[a=@ b=@] c=(list)]
11131113 (scag +<-> (slag +<-< c))
@@ -1144,7 +1144,7 @@ A list.
11441144
11451145#### Source
11461146
1147−```
1147+```hoon
11481148 ++ turn
11491149 ~/ %turn
11501150 |* [a=(list) b=gate]
@@ -1181,7 +1181,7 @@ Concatenate two `++list`s `a` and `b`.
11811181
11821182#### Source
11831183
1184−```
1184+```hoon
11851185 ++ weld
11861186 ~/ %weld
11871187 |* [a=(list) b=(list)]
@@ -1222,7 +1222,7 @@ A list.
12221222
12231223#### Source
12241224
1225−```
1225+```hoon
12261226 ++ welp
12271227 =| [* *]
12281228 |%
@@ -1267,7 +1267,7 @@ A list.
12671267
12681268#### Source
12691269
1270−```
1270+```hoon
12711271 ++ zing
12721272 =| *
12731273 |%
reference/library/2c.md → hoon/library/2c.mdrenamed+37−37
@@ -19,7 +19,7 @@ An atom.
1919
2020#### Source
2121
22−```
22+```hoon
2323 ++ bex
2424 ~/ %bex
2525 |= a=@
@@ -52,7 +52,7 @@ value.
5252
5353#### Accepts
5454
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)).
5656
5757`b` is a `list` of length-value pairs, `p` and `q`.
5858
@@ -62,7 +62,7 @@ An atom.
6262
6363#### Source
6464
65−```
65+```hoon
6666 ++ can
6767 ~/ %can
6868 |= [a=bloq b=(list [p=@ q=@])]
@@ -109,7 +109,7 @@ atom.
109109
110110#### Accepts
111111
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)).
113113
114114`b` is an atom.
115115
@@ -121,7 +121,7 @@ An atom.
121121
122122#### Source
123123
124−```
124+```hoon
125125 ++ cat
126126 ~/ %cat
127127 |= [a=bloq b=@ c=@]
@@ -172,7 +172,7 @@ Slices `c` blocks of size `a` that are positioned `b` blocks from the end of
172172
173173#### Accepts
174174
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)).
176176
177177`b` is an atom.
178178
@@ -186,7 +186,7 @@ An atom.
186186
187187#### Source
188188
189−```
189+```hoon
190190 ++ cut
191191 ~/ %cut
192192 |= [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`.
231231
232232#### Accepts
233233
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)).
235235
236236`b` is an atom.
237237
@@ -244,7 +244,7 @@ An atom.
244244
245245#### Source
246246
247−```
247+```hoon
248248 ++ end
249249 ~/ %end
250250 |= [a=bloq b=@u c=@]
@@ -298,7 +298,7 @@ Produces an atom by repeating `c` for `b` blocks of size `a`.
298298
299299#### Accepts
300300
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)).
302302
303303`b` is an atom.
304304
@@ -310,7 +310,7 @@ An atom.
310310
311311#### Source
312312
313−```
313+```hoon
314314 ++ fil
315315 |= [a=bloq b=@u c=@]
316316 =+ n=0
@@ -350,7 +350,7 @@ Produces an atom by left-shifting `c` by `b` blocks of size `a`.
350350
351351#### Accepts
352352
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)).
354354
355355`b` is an atom.
356356
@@ -362,7 +362,7 @@ An atom.
362362
363363#### Source
364364
365−```
365+```hoon
366366 ++ lsh
367367 ~/ %lsh
368368 |= [a=bloq b=@u c=@]
@@ -401,13 +401,13 @@ Computes the number of blocks of size `a` in `b`, producing an atom.
401401
402402#### Accepts
403403
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)).
405405
406406`b` is an atom.
407407
408408#### Source
409409
410−```
410+```hoon
411411 ++ met
412412 ~/ %met
413413 |= [a=bloq b=@]
@@ -447,7 +447,7 @@ Concatenates a list of atoms `b` using block size `a`, producing an atom.
447447
448448#### Accepts
449449
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)).
451451
452452`b` is a `list` of atoms.
453453
@@ -457,7 +457,7 @@ An atom.
457457
458458#### Source
459459
460−```
460+```hoon
461461 ++ rap
462462 ~/ %rap
463463 |= [a=bloq b=(list @)]
@@ -508,7 +508,7 @@ Produces an atom by assembling a list of atoms `b` using block size `a`.
508508
509509#### Accepts
510510
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)).
512512
513513`b` is a list of atoms.
514514
@@ -518,7 +518,7 @@ An atom.
518518
519519#### Source
520520
521−```
521+```hoon
522522 ++ rep
523523 ~/ %rep
524524 |= [a=bloq b=(list @)]
@@ -573,7 +573,7 @@ Produces a list of atoms from the bits of `b` using block size `a`.
573573
574574#### Accepts
575575
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)).
577577
578578`b` is an atom.
579579
@@ -583,7 +583,7 @@ A list of atoms.
583583
584584#### Source
585585
586−```
586+```hoon
587587 ++ rip
588588 ~/ %rip
589589 |= [a=bloq b=@]
@@ -633,7 +633,7 @@ Right-shifts `c` by `b` blocks of size `a`, producing an atom.
633633
634634#### Accepts
635635
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)).
637637
638638`b` is an atom.
639639
@@ -645,7 +645,7 @@ An atom.
645645
646646#### Source
647647
648−```
648+```hoon
649649 ++ rsh
650650 ~/ %rsh
651651 |= [a=bloq b=@u c=@]
@@ -701,7 +701,7 @@ reversing the block order of `b` using block size `a`.
701701
702702#### Accepts
703703
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)).
705705
706706`b` is an atom.
707707
@@ -711,7 +711,7 @@ An atom
711711
712712#### Source
713713
714−```
714+```hoon
715715 ++ swp |=([a=bloq b=@] (rep a (flop (rip a b))))
716716```
717717
@@ -752,7 +752,7 @@ An atom.
752752
753753#### Source
754754
755−```
755+```hoon
756756 ++ xeb
757757 ~/ %xeb
758758 |= a=@
@@ -796,7 +796,7 @@ Core that contains arms for `bloq` and modular integer operations.
796796
797797#### Source
798798
799−```
799+```hoon
800800 |_ a=bloq
801801```
802802
@@ -820,7 +820,7 @@ A `@s`
820820
821821#### Source
822822
823−```
823+```hoon
824824 ++ dif |=([b=@ c=@] (sit (sub (add out (sit b)) (sit c))))
825825```
826826
@@ -861,7 +861,7 @@ Inverts the order of the modular field.
861861
862862#### Accepts
863863
864−`b` is a `bloq`. (see [`++bloq`](@/docs/reference/library/1c.md))
864+`b` is a `bloq`. (see [`++bloq`](@/docs/hoon/library/1c.md))
865865
866866#### Produces
867867
@@ -869,7 +869,7 @@ An atom.
869869
870870#### Source
871871
872−```
872+```hoon
873873 ++ inv |=(b=@ (sub (dec out) (sit b)))
874874```
875875
@@ -904,7 +904,7 @@ Reverses bytes within a block.
904904
905905#### Accepts
906906
907−`b` is a `bloq`. (see [`++bloq`](@/docs/reference/library/1c.md))
907+`b` is a `bloq`. (see [`++bloq`](@/docs/hoon/library/1c.md))
908908
909909#### Produces
910910
@@ -912,7 +912,7 @@ An atom.
912912
913913#### Source
914914
915−```
915+```hoon
916916 ++ net |= b=@ ^- @
917917 => .(b (sit b))
918918 ?: (lte a 3)
@@ -1001,7 +1001,7 @@ An atom.
10011001
10021002#### Source
10031003
1004−```
1004+```hoon
10051005 ++ out (bex (bex a))
10061006```
10071007
@@ -1056,7 +1056,7 @@ An atom.
10561056
10571057#### Source
10581058
1059−```
1059+```hoon
10601060 ++ rol |= [b=bloq c=@ d=@] ^- @
10611061 =+ e=(sit d)
10621062 =+ f=(bex (sub a b))
@@ -1106,7 +1106,7 @@ An atom.
11061106
11071107#### Source
11081108
1109−```
1109+```hoon
11101110 ++ ror |= [b=bloq c=@ d=@] ^- @
11111111 =+ e=(sit d)
11121112 =+ f=(bex (sub a b))
@@ -1155,7 +1155,7 @@ An atom.
11551155
11561156#### Source
11571157
1158−```
1158+```hoon
11591159 ++ sit |=(b=@ (end a 1 b))
11601160```
11611161
@@ -1218,7 +1218,7 @@ An atom.
12181218
12191219#### Source
12201220
1221−```
1221+```hoon
12221222 ++ sum |=([b=@ c=@] (sit (add b c)))
12231223```
12241224
reference/library/2d.md → hoon/library/2d.mdrenamed+6−6
@@ -21,7 +21,7 @@ An atom.
2121
2222#### Source
2323
24−```
24+```hoon
2525 ++ con
2626 ~/ %con
2727 |= [a=@ b=@]
@@ -116,7 +116,7 @@ An atom.
116116
117117#### Source
118118
119−```
119+```hoon
120120 ++ dis
121121 ~/ %dis
122122 |= [a=@ b=@]
@@ -204,7 +204,7 @@ An atom.
204204
205205#### Source
206206
207−```
207+```hoon
208208 ++ mix
209209 ~/ %mix
210210 |= [a=@ b=@]
@@ -280,7 +280,7 @@ of `c`.
280280
281281#### Accepts
282282
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)).
284284
285285`b` is an atom.
286286
@@ -292,7 +292,7 @@ An atom.
292292
293293#### Source
294294
295−```
295+```hoon
296296 ++ not |= [a=bloq b=@ c=@]
297297 (mix c (dec (bex (mul b (bex a)))))
298298```
@@ -326,7 +326,7 @@ number's `0`s into `1`s, and vice versa.
326326
327327In Hoon, we ask for a little more information to use `not`, because binary
328328numbers 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
330330has one implicit zero in the context of a block of size `2`, which has a
331331bitwidth of 4. Let's try `not` on `7` with a single block of size `2`.
332332
reference/library/2e.md → hoon/library/2e.mdrenamed+6−6
@@ -8,7 +8,7 @@ template = "doc.html"
88FNV scrambler
99
1010Hashes 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
12125 off the product's end, producing an atom.
1313
1414#### Accepts
@@ -21,7 +21,7 @@ An atom.
2121
2222#### Source
2323
24−```
24+```hoon
2525 ++ fnv |=(a=@ (end 5 1 (mul 16.777.619 a)))
2626```
2727
@@ -57,7 +57,7 @@ An atom.
5757
5858#### Source
5959
60−```
60+```hoon
6161 ++ mug
6262 ~/ %mug
6363 |= a=*
@@ -108,7 +108,7 @@ Standard MurmurHash3
108108Implementation of the 32-bit
109109[MurmurHash3](https://en.wikipedia.org/wiki/MurmurHash#Algorithm)
110110non-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.
112112
113113#### Accepts
114114
@@ -124,7 +124,7 @@ An atom.
124124
125125#### Source
126126
127−```
127+```hoon
128128 ++ muk
129129 ~% %muk ..muk ~
130130 =+ ~(. fe 5)
@@ -235,7 +235,7 @@ An atom.
235235
236236#### Source
237237
238−```
238+```hoon
239239 ++ mum
240240 ~/ %mum
241241 |= a=*
reference/library/2f.md → hoon/library/2f.mdrenamed+10−10
@@ -21,7 +21,7 @@ A flag.
2121
2222#### Source
2323
24−```
24+```hoon
2525 ++ aor
2626 ~/ %aor
2727 |= [a=* b=*]
@@ -91,7 +91,7 @@ A flag.
9191
9292#### Source
9393
94−```
94+```hoon
9595 ++ dor
9696 ~/ %dor
9797 |= [a=* b=*]
@@ -130,7 +130,7 @@ A flag.
130130
131131#### Discussion
132132
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
134134cells, `dor` recurses on the heads, and then if the heads are the same it checks
135135the tails.
136136
@@ -147,7 +147,7 @@ Computes whether of `(mug a)` and `(mug b)` are in ascending numeric order,
147147producing a flag. If the `mug` hashes are equal, `a` and `b` are compared by
148148`dor` instead.
149149
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.
151151
152152#### Accepts
153153
@@ -161,7 +161,7 @@ A flag.
161161
162162#### Source
163163
164−```
164+```hoon
165165 ++ gor
166166 ~/ %gor
167167 |= [a=* b=*]
@@ -242,7 +242,7 @@ A flag.
242242
243243#### Source
244244
245−```
245+```hoon
246246 ++ hor
247247 ~/ %hor
248248 |= [a=* b=*]
@@ -296,7 +296,7 @@ A flag.
296296#### Discussion
297297
298298Sets (+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.
300300`vor` is used to verify.
301301
302302---
@@ -319,7 +319,7 @@ A flag.
319319
320320#### Source
321321
322−```
322+```hoon
323323 ++ lor
324324 ~/ %lor
325325 |= [a=* b=*]
@@ -377,7 +377,7 @@ Computes whether the double-hashes `(mug (mug a))` and `(mug (mug b))` are in
377377ascending numeric order, producing a flag. If the double-`mug` hashes are
378378equal, `a` and `b` are compared by `dor` instead.
379379
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.
381381
382382
383383#### Accepts
@@ -392,7 +392,7 @@ A flag.
392392
393393#### Source
394394
395−```
395+```hoon
396396 ++ vor
397397 ~/ %vor
398398 |= [a=* b=*]
reference/library/2g.md → hoon/library/2g.mdrenamed+2−2
@@ -19,7 +19,7 @@ An atom.
1919
2020#### Source
2121
22−```
22+```hoon
2323 ++ pow
2424 ~/ %pow
2525 |= [a=@ b=@]
@@ -64,7 +64,7 @@ A cell of atoms.
6464
6565#### Source
6666
67−```
67+```hoon
6868 ++ sqt
6969 ~/ %sqt
7070 |= a=@ ^- [p=@ q=@]
reference/library/2h.md → hoon/library/2h.mdrenamed+19−19
@@ -16,7 +16,7 @@ A `set`.
1616
1717#### Source
1818
19−```
19+```hoon
2020 ++ in
2121 ~/ %in
2222 |_ a=(set)
@@ -48,7 +48,7 @@ A flag.
4848
4949#### Source
5050
51−```
51+```hoon
5252 +- all
5353 ~/ %all
5454 |* b=$-(* ?)
@@ -90,7 +90,7 @@ A flag.
9090
9191#### Source
9292
93−```
93+```hoon
9494 +- any
9595 ~/ %any
9696 |* b=$-(* ?)
@@ -130,7 +130,7 @@ A flag.
130130
131131#### Source
132132
133−```
133+```hoon
134134 +- apt
135135 =| [l=(unit) r=(unit)]
136136 |- ^- ?
@@ -163,7 +163,7 @@ A flag.
163163
164164#### Discussion
165165
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.
167167
168168---
169169### `+-bif:in`
@@ -184,7 +184,7 @@ A cell of two sets.
184184
185185#### Source
186186
187−```
187+```hoon
188188 +- bif
189189 ~/ %bif
190190 |* b=*
@@ -237,7 +237,7 @@ A set.
237237
238238#### Source
239239
240−```
240+```hoon
241241 +- del
242242 ~/ %del
243243 |* b=*
@@ -292,7 +292,7 @@ A set.
292292
293293#### Source
294294
295−```
295+```hoon
296296 +- dif
297297 ~/ %dif
298298 |* b=_a
@@ -347,7 +347,7 @@ The `unit` of an atom.
347347
348348#### Source
349349
350−```
350+```hoon
351351 +- dig
352352 |= b=*
353353 =+ c=1
@@ -382,7 +382,7 @@ The `unit` of an atom.
382382
383383#### Discussion
384384
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).
386386
387387---
388388### `+-gas:in`
@@ -403,7 +403,7 @@ A `set`.
403403
404404#### Source
405405
406−```
406+```hoon
407407 +- gas
408408 ~/ %gas
409409 |= b=(list _?>(?=(^ a) n.a))
@@ -447,7 +447,7 @@ A flag.
447447
448448#### Source
449449
450−```
450+```hoon
451451 +- has
452452 ~/ %has
453453 |* b=*
@@ -492,7 +492,7 @@ A `set`.
492492
493493#### Source
494494
495−```
495+```hoon
496496 +- int
497497 ~/ %int
498498 |* b=_a
@@ -543,7 +543,7 @@ A `set`.
543543
544544#### Source
545545
546−```
546+```hoon
547547 +- put
548548 ~/ %put
549549 |* b=*
@@ -596,7 +596,7 @@ A noun.
596596
597597#### Source
598598
599−```
599+```hoon
600600 +- rep :: replace by product
601601 |* b=_|=([* *] +<+)
602602 |-
@@ -635,7 +635,7 @@ A set.
635635
636636#### Source
637637
638−```
638+```hoon
639639 +- run
640640 ~/ %run
641641 |* b=gate
@@ -674,7 +674,7 @@ A list.
674674
675675#### Source
676676
677−```
677+```hoon
678678 +- tap
679679 ~/ %tap
680680 |= b=(list _?>(?=(^ a) n.a))
@@ -716,7 +716,7 @@ A set.
716716
717717#### Source
718718
719−```
719+```hoon
720720 +- uni
721721 ~/ %uni
722722 |* b=_a
@@ -774,7 +774,7 @@ An atom.
774774
775775#### Source
776776
777−```
777+```hoon
778778 +- wyt :: size of set
779779 |- ^- @
780780 ?~(a 0 +((add $(a l.a) $(a r.a))))
reference/library/2i.md → hoon/library/2i.mdrenamed+25−25
@@ -16,7 +16,7 @@ contained arms inherit its sample map, `a`.
1616
1717#### Source
1818
19−```
19+```hoon
2020 ++ by
2121 ~/ %by
2222 =| a=(tree (pair))
@@ -60,7 +60,7 @@ A flag.
6060
6161#### Source
6262
63−```
63+```hoon
6464 +- all
6565 ~/ %all
6666 |* b=$-(* ?)
@@ -105,7 +105,7 @@ A flag.
105105
106106#### Source
107107
108−```
108+```hoon
109109 +- any
110110 ~/ %any
111111 |* b=$-(* ?)
@@ -145,7 +145,7 @@ A flag.
145145
146146#### Source
147147
148−```
148+```hoon
149149 +- apt
150150 =| [l=(unit) r=(unit)]
151151 |- ^- ?
@@ -175,7 +175,7 @@ A flag.
175175
176176#### Discussion
177177
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.
179179
180180### `+-bif:by`
181181
@@ -197,7 +197,7 @@ A cell of two maps.
197197
198198#### Source
199199
200−```
200+```hoon
201201 +- bif
202202 ~/ %bif
203203 |* [b=* c=*]
@@ -244,7 +244,7 @@ A map.
244244
245245#### Source
246246
247−```
247+```hoon
248248 +- def
249249 |* b=_a
250250 ^- (map _p:node (pair (unit _q:node) (unit _q:node)))
@@ -271,7 +271,7 @@ A cell of maps.
271271
272272#### Source
273273
274−```
274+```hoon
275275 +- dep
276276 |* b=_a
277277 ^+ [p=a q=a]
@@ -309,7 +309,7 @@ A map.
309309
310310#### Source
311311
312−```
312+```hoon
313313 +- del
314314 ~/ %del
315315 |* b=*
@@ -355,7 +355,7 @@ A unit.
355355
356356#### Source
357357
358−```
358+```hoon
359359 +- dig
360360 |= b=*
361361 =+ c=1
@@ -394,7 +394,7 @@ A map.
394394
395395#### Source
396396
397−```
397+```hoon
398398 +- gas
399399 ~/ %gas
400400 |* b=(list [p=* q=*])
@@ -434,7 +434,7 @@ A unit.
434434
435435#### Source
436436
437−```
437+```hoon
438438 +- get
439439 ~/ %get
440440 |= b=*
@@ -482,7 +482,7 @@ A noun.
482482
483483#### Source
484484
485−```
485+```hoon
486486 +- got
487487 |* b=*
488488 (need (get b))
@@ -521,7 +521,7 @@ A flag.
521521
522522#### Source
523523
524−```
524+```hoon
525525 +- has
526526 ~/ %has
527527 |* b=*
@@ -560,7 +560,7 @@ A map.
560560
561561#### Source
562562
563−```
563+```hoon
564564 +- int
565565 ~/ %int
566566 |* b=_a
@@ -632,7 +632,7 @@ A map.
632632
633633#### Assert and Add
634634
635−```
635+```hoon
636636 +- mar
637637 |* [b=_?>(?=(^ a) p.n.a) c=(unit ,_?>(?=(^ a) q.n.a))]
638638 ?~ c
@@ -675,7 +675,7 @@ A map.
675675
676676#### Source
677677
678−```
678+```hoon
679679 +- put
680680 ~/ %put
681681 |* [b=* c=*]
@@ -736,7 +736,7 @@ A noun.
736736
737737#### Source
738738
739−```
739+```hoon
740740 +- rep
741741 |* b=_|=([* *] +<+)
742742 |-
@@ -771,7 +771,7 @@ A cell of nouns.
771771
772772#### Source
773773
774−```
774+```hoon
775775 +- rib
776776 |* [b=* c=gate]
777777 |- ^+ [b a]
@@ -811,7 +811,7 @@ A map.
811811
812812#### Source
813813
814−```
814+```hoon
815815 +- run
816816 |* b=gate
817817 |-
@@ -850,7 +850,7 @@ A map.
850850
851851#### Source
852852
853−```
853+```hoon
854854 +- rut
855855 |* b=gate
856856 |-
@@ -884,7 +884,7 @@ A list.
884884
885885#### Source
886886
887−```
887+```hoon
888888 +- tap
889889 =< $
890890 ~/ %tap
@@ -929,7 +929,7 @@ A map.
929929
930930#### Source
931931
932−```
932+```hoon
933933 +- uni
934934 ~/ %uni
935935 |* b=_a
@@ -990,7 +990,7 @@ A noun.
990990
991991#### Source
992992
993−```
993+```hoon
994994 +- urn
995995 |* b=$-({* *} *)
996996 |-
@@ -1032,7 +1032,7 @@ An atom.
10321032
10331033#### Source
10341034
1035−```
1035+```hoon
10361036 +- wyt
10371037 |- ^- @
10381038 ?~(a 0 +((add $(a l.a) $(a r.a))))
reference/library/2j.md → hoon/library/2j.mdrenamed+8−8
@@ -7,7 +7,7 @@ template = "doc.html"
77
88Jar engine
99
10−```
10+```hoon
1111 |_ a=(jar)
1212```
1313
@@ -26,7 +26,7 @@ A container arm for `++jar` operation arms. A `++jar` is a `++map` of
2626
2727Grab value by key
2828
29−```
29+```hoon
3030 +- get :: gets list by key
3131 |* b=*
3232 =+ c=(~(get by a) b)
@@ -67,7 +67,7 @@ Prepend to list
6767
6868#### Source
6969
70−```
70+```hoon
7171 +- add :: adds key-list pair
7272 |* [b=* c=*]
7373 =+ d=(get b)
@@ -108,7 +108,7 @@ Prepend to list
108108
109109Jug operations
110110
111−```
111+```hoon
112112 ++ ju :: jug engine
113113 |/ a=(jug)
114114```
@@ -130,7 +130,7 @@ Remove
130130
131131#### Source
132132
133−```
133+```hoon
134134 +- del :: del key-set pair
135135 |* [b=* c=*]
136136 ^+ a
@@ -168,7 +168,7 @@ removed.
168168
169169Retrieve set
170170
171−```
171+```hoon
172172 +- get :: gets set by key
173173 |* b=*
174174 =+ c=(~(get by a) b)
@@ -198,7 +198,7 @@ Produces a set retrieved from jar `a` using key `b`.
198198
199199Check contents
200200
201−```
201+```hoon
202202 +- has :: existence check
203203 |* [b=* c=*]
204204 ^- ?
@@ -237,7 +237,7 @@ with jar `a`. Produces a loobean.
237237
238238Add key-set pair
239239
240−```
240+```hoon
241241 +- put
242242 |* {b=* c=*}
243243 ^+ a
reference/library/2k.md → hoon/library/2k.mdrenamed+10−10
@@ -17,7 +17,7 @@ sample queue.
1717
1818#### Source
1919
20−```
20+```hoon
2121 ++ to
2222 |_ a=(tree)
2323```
@@ -46,7 +46,7 @@ A queue.
4646
4747#### Source
4848
49−```
49+```hoon
5050 +- bal
5151 |- ^+ a
5252 ?~ a ~
@@ -90,7 +90,7 @@ An atom.
9090
9191#### Source
9292
93−```
93+```hoon
9494 +- dep
9595 |- ^- @
9696 ?~ a 0
@@ -138,7 +138,7 @@ A queue.
138138
139139#### Source
140140
141−```
141+```hoon
142142 +- gas
143143 |= b=(list _?>(?=(^ a) n.a))
144144 |- ^+ a
@@ -174,7 +174,7 @@ A cell of the last element in `a` along with the rest of queue `a`.
174174
175175#### Source
176176
177−```
177+```hoon
178178 +- get
179179 |- ^+ ?>(?=(^ a) [p=n.a q=*(tree _n.a)])
180180 ?~ a
@@ -216,7 +216,7 @@ A queue.
216216
217217#### Source
218218
219−```
219+```hoon
220220 +- nap
221221 ?> ?=(^ a)
222222 ?~ l.a r.a
@@ -263,7 +263,7 @@ A queue.
263263
264264#### Source
265265
266−```
266+```hoon
267267 +- nip
268268 |- ^+ a
269269 ?~ a ~
@@ -305,7 +305,7 @@ A queue.
305305
306306#### Source
307307
308−```
308+```hoon
309309 +- put
310310 |* b=*
311311 |- ^+ a
@@ -339,7 +339,7 @@ A list.
339339
340340#### Source
341341
342−```
342+```hoon
343343 +- tap
344344 =| b=(list _?>(?=(^ a) n.a))
345345 |- ^+ b
@@ -376,7 +376,7 @@ A unit.
376376
377377#### Source
378378
379−```
379+```hoon
380380 +- top
381381 |- ^- (unit _?>(?=(^ a) n.a))
382382 ?~ a ~
reference/library/2l.md → hoon/library/2l.mdrenamed+3−3
@@ -19,7 +19,7 @@ A map.
1919
2020#### Source
2121
22−```
22+```hoon
2323:- :~ navhome/'/docs/'
2424 sort/'14'
2525 title/'2k: Jar and Jug Logic'
@@ -55,7 +55,7 @@ A map.
5555
5656#### Source
5757
58−```
58+```hoon
5959 ++ molt
6060 |* a=(list (pair))
6161 (~(gas by `(tree [p=_p.i.-.a q=_q.i.-.a})`~) a)
@@ -93,7 +93,7 @@ A set.
9393
9494#### Source
9595
96−```
96+```hoon
9797 ++ silt
9898 |* a=(list)
9999 =+ b=*(tree _?>(?=(^ a) i.a))
reference/library/2m.md → hoon/library/2m.mdrenamed+12−12
@@ -19,7 +19,7 @@ A `list`.
1919
2020#### Source
2121
22−```
22+```hoon
2323 ++ ly
2424 le:nl
2525```
@@ -34,7 +34,7 @@ A `list`.
3434 ~['a' 'b' 'c']
3535```
3636
37−#### Discussion.
37+#### Discussion
3838
3939`ly` is an alias for `le:nl`.
4040
@@ -55,7 +55,7 @@ A `map`.
5555
5656#### Source
5757
58−```
58+```hoon
5959 ++ my
6060 my:nl
6161```
@@ -67,7 +67,7 @@ A `map`.
6767 [n=[p='b' q=2] l={[p='a' q=1]} r={}]
6868```
6969
70−#### Discussion.
70+#### Discussion
7171
7272`my` is an alias for `my:nl`.
7373
@@ -88,7 +88,7 @@ A `set`.
8888
8989#### Source
9090
91−```
91+```hoon
9292 ++ sy
9393 si:nl
9494```
@@ -106,7 +106,7 @@ A `set`.
106106 [n='b' l={'a' 'c'} r={}]
107107```
108108
109−#### Discussion.
109+#### Discussion
110110
111111`sy` is an alias for `si:nl`.
112112
@@ -120,7 +120,7 @@ nouns.
120120
121121#### Source
122122
123−```
123+```hoon
124124 ++ nl
125125 |%
126126```
@@ -142,7 +142,7 @@ A list.
142142
143143#### Source
144144
145−```
145+```hoon
146146 ++ le
147147 |* a=(list)
148148 ^+ =< $
@@ -179,7 +179,7 @@ A map.
179179
180180#### Source
181181
182−```
182+```hoon
183183 ++ my
184184 |* a=(list (pair))
185185 => .(a ^+((le a) a))
@@ -210,7 +210,7 @@ A set.
210210
211211#### Source
212212
213−```
213+```hoon
214214 ++ si
215215 |* a=(list)
216216 => .(a ^+((le a) a))
@@ -244,7 +244,7 @@ A noun.
244244
245245#### Sources
246246
247−```
247+```hoon
248248 ++ snag
249249 |* [a=@ b=(list)]
250250 ?~ b
@@ -285,7 +285,7 @@ A list.
285285
286286#### Source
287287
288−```
288+```hoon
289289 ++ weld
290290 |* [a=(list) b=(list)]
291291 => .(a ^+((le a) a), b ^+((le b) b))
reference/library/2n.md → hoon/library/2n.mdrenamed+12−12
@@ -17,7 +17,7 @@ Build `f` such that `(f x) .= (b (a x))`.
1717
1818#### Source
1919
20−```
20+```hoon
2121 ++ cork |*([a=_|=(* **) b=gate] (corl b a))
2222```
2323
@@ -50,7 +50,7 @@ Build `f` such that
5050
5151#### Source
5252
53−```
53+```hoon
5454 ++ corl
5555 |* [a=gate b=_|=(* **)]
5656 =< +:|.((a (b))) :: span check
@@ -84,7 +84,7 @@ A gate.
8484
8585#### Source
8686
87−```
87+```hoon
8888 ++ curr
8989 |* [a=_|=(^ **) c=*}
9090 |* b=_+<+.a
@@ -121,7 +121,7 @@ A gate.
121121
122122#### Source
123123
124−```
124+```hoon
125125 ++ cury
126126 |* [a=_|=(^ **) b=*}
127127 |* c=_+<+.a
@@ -149,7 +149,7 @@ not.
149149
150150#### Source
151151
152−```
152+```hoon
153153 ++ hard
154154 |* han=gate
155155 |= fud=* ^- han
@@ -183,7 +183,7 @@ is not.
183183
184184#### Source
185185
186−```
186+```hoon
187187 ++ soft
188188 |* han=gate
189189 |= fud=* ^- (unit han)
@@ -228,7 +228,7 @@ An atom.
228228
229229#### Source
230230
231−```
231+```hoon
232232 ++ head |*(^ ,:+<-)
233233```
234234
@@ -262,7 +262,7 @@ A noun.
262262
263263#### Source
264264
265−```
265+```hoon
266266 ++ same |*(* +<)
267267```
268268
@@ -297,7 +297,7 @@ A `tang`.
297297
298298#### Source
299299
300−```
300+```hoon
301301 ++ slog
302302 =| pri=@
303303 |= a=tang ^+ same
@@ -334,7 +334,7 @@ A crash.
334334
335335#### Source
336336
337−```
337+```hoon
338338 ++ mean
339339 |= a=tang
340340 ^+ !!
@@ -367,7 +367,7 @@ A noun.
367367
368368#### Source
369369
370−```
370+```hoon
371371 ++ tail |*(^ ,:+<+)
372372```
373373
@@ -403,7 +403,7 @@ A flag.
403403
404404#### Source
405405
406−```
406+```hoon
407407 ++ test |=(^ =(+<- +<+))
408408```
409409
reference/library/2o.md → hoon/library/2o.mdrenamed+10−10
@@ -9,7 +9,7 @@ Mold generator. A `jar` is a `map` of `list`.
99
1010#### Source
1111
12−```
12+```hoon
1313 ++ jar |*([a=mold b=mold] (map a (list b)))
1414```
1515
@@ -37,7 +37,7 @@ Mold generator. A `jar` is a `map` of `list`.
3737
3838#### Discussion
3939
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)
4141
4242---
4343### `++jug`
@@ -46,7 +46,7 @@ Mold generator. A `jug` is a `map` of `set`.
4646
4747#### Source
4848
49−```
49+```hoon
5050 ++ jug |*([a=mold b=mold] (map a (set b)))
5151```
5252
@@ -77,7 +77,7 @@ Mold generator. A `jug` is a `map` of `set`.
7777
7878#### Discussion
7979
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)
8181
8282---
8383### `++map`
@@ -90,7 +90,7 @@ key-value pairs.
9090
9191#### Source
9292
93−```
93+```hoon
9494 ++ map |* [a=mold b=mold]
9595 %+ cork (tree (pair a b))
9696 |= c=(tree (pair a b)) ^+ c
@@ -110,7 +110,7 @@ key-value pairs.
110110
111111#### Discussion
112112
113−See also: [`by`](@/docs/reference/library/2i.md)
113+See also: [`by`](@/docs/hoon/library/2i.md)
114114
115115---
116116### `++qeu`
@@ -122,7 +122,7 @@ items.
122122
123123#### Source
124124
125−```
125+```hoon
126126 ++ qeu |*(a=mold (tree a))
127127```
128128
@@ -147,7 +147,7 @@ items.
147147
148148#### Discussion
149149
150−See also: [`qeu`](@/docs/reference/library/2k.md)
150+See also: [`qeu`](@/docs/hoon/library/2k.md)
151151
152152---
153153### `++set`
@@ -159,7 +159,7 @@ items.
159159
160160#### Source
161161
162−```
162+```hoon
163163 ++ set |* a=mold
164164 %+ cork (tree a)
165165 |= b=(tree a) ^+ b
@@ -181,6 +181,6 @@ items.
181181
182182#### Discussion
183183
184−See also: [`in`](@/docs/reference/library/2h.md)
184+See also: [`in`](@/docs/hoon/library/2h.md)
185185
186186---
reference/library/2p.md → hoon/library/2p.mdrenamed+4−4
@@ -19,7 +19,7 @@ A noun.
1919
2020#### Source
2121
22−```
22+```hoon
2323 ++ cue
2424 ~/ %cue
2525 |= a=@
@@ -74,7 +74,7 @@ An atom.
7474
7575#### Source
7676
77−```
77+```hoon
7878 ++ jam
7979 ~/ %jam
8080 |= a=*
@@ -139,7 +139,7 @@ A cell of two atoms.
139139
140140#### Source
141141
142−```
142+```hoon
143143 ++ mat
144144 ~/ %mat
145145 |= a=@
@@ -203,7 +203,7 @@ A cell of two atoms.
203203
204204#### Source
205205
206−```
206+```hoon
207207 ++ rub
208208 ~/ %rub
209209 |= [a=@ b=@]
reference/library/2q.md → hoon/library/2q.mdrenamed+13−13
@@ -13,7 +13,7 @@ consume `tape`s, which are lists of `char`.
1313
1414#### Source
1515
16−```
16+```hoon
1717 ++ char @tD
1818```
1919
@@ -37,7 +37,7 @@ atom of UTF-8 text.
3737
3838#### Source
3939
40−```
40+```hoon
4141 ++ cord @t
4242```
4343
@@ -65,7 +65,7 @@ atom of UTF-8 text.
6565Aura `@t` designates a Unicode atom, little-endian: the first character
6666in the text is the least-significant byte.
6767
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
6969from `tape` to `cord`.
7070
7171
@@ -80,7 +80,7 @@ which is a day atom and a time.
8080
8181#### Source
8282
83−```
83+```hoon
8484 ++ date [[a=? y=@ud] m=@ud t=tarp]
8585```
8686
@@ -100,7 +100,7 @@ which is a day atom and a time.
100100
101101#### Discussion
102102
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)
104104
105105---
106106### `++knot`
@@ -111,7 +111,7 @@ An atom type that only permits ASCII characters.
111111
112112#### Source
113113
114−```
114+```hoon
115115
116116 ++ knot @ta
117117```
@@ -136,7 +136,7 @@ traces.
136136
137137#### Source
138138
139−```
139+```hoon
140140 ++ tang (list tank)
141141```
142142
@@ -172,7 +172,7 @@ without back-steps at new lines.
172172
173173#### Source
174174
175−```
175+```hoon
176176 ++ tank $% [$leaf p=tape]
177177 $: $palm
178178 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
226226
227227#### Source
228228
229−```
229+```hoon
230230 ++ tape (list @tD)
231231```
232232
@@ -259,7 +259,7 @@ for precision.
259259
260260#### Source
261261
262−```
262+```hoon
263263 ++ tarp [d=@ud h=@ud m=@ud s=@ud f=(list @ux)]
264264```
265265
@@ -294,7 +294,7 @@ special syntax, `$`.
294294
295295#### Source
296296
297−```
297+```hoon
298298 ++ term @tas
299299```
300300
@@ -325,7 +325,7 @@ A list of `cord`s. A `wain` is used instead of a single `cord` with `\n`.
325325
326326#### Source
327327
328−```
328+```hoon
329329 ++ wain (list cord)
330330```
331331
@@ -348,7 +348,7 @@ A list of `tape`s. `wall` is used instead of a single `tape` with `\n`.
348348
349349#### Source
350350
351−```
351+```hoon
352352 ++ wall (list tape)
353353```
354354#### Examples
reference/library/3a.md → hoon/library/3a.mdrenamed+22−22
@@ -27,7 +27,7 @@ of `a` and `b`. Also produces `u` and `v` such that `au + bv = GCD(a, b)`.
2727
2828#### Source
2929
30−```
30+```hoon
3131 ++ egcd
3232 |= [a=@ b=@]
3333 =+ si
@@ -61,7 +61,7 @@ Container core for modular arithmetic functions.
6161
6262#### Source
6363
64−```
64+```hoon
6565 ++ fo
6666 ^?
6767 |_ a=@
@@ -88,7 +88,7 @@ An atom.
8888
8989#### Source
9090
91−```
91+```hoon
9292 ++ dif
9393 |= [b=@ c=@]
9494 (sit (sub (add a b) (sit c)))
@@ -125,7 +125,7 @@ An atom.
125125
126126#### Source
127127
128−```
128+```hoon
129129 ++ exp
130130 |= [b=@ c=@]
131131 ?: =(0 b)
@@ -178,7 +178,7 @@ An atom.
178178
179179#### Source
180180
181−```
181+```hoon
182182 ++ fra
183183 |= [b=@ c=@]
184184 (pro b (inv c))
@@ -220,7 +220,7 @@ An atom.
220220
221221#### Source
222222
223−```
223+```hoon
224224 ++ inv
225225 |= b=@
226226 =+ c=(dul:si u:(egcd b a) a)
@@ -267,7 +267,7 @@ An atom.
267267
268268#### Source
269269
270−```
270+```hoon
271271 ++ pro
272272 |= [b=@ c=@]
273273 (sit (mul b c))
@@ -302,7 +302,7 @@ An atom.
302302
303303#### Source
304304
305−```
305+```hoon
306306 ++ sit
307307 |= b=@
308308 (mod b a)
@@ -336,7 +336,7 @@ An atom.
336336
337337#### Source
338338
339−```
339+```hoon
340340 ++ sum
341341 |= [b=@ c=@]
342342 (sit (add b c))
@@ -362,7 +362,7 @@ Container core for signed integer functions.
362362
363363#### Source
364364
365−```
365+```hoon
366366 ++ si
367367 ^?
368368 |%
@@ -407,7 +407,7 @@ An atom.
407407
408408### Source
409409
410−```
410+```hoon
411411 ++ abs |=(a=@s (add (end 0 1 a) (rsh 0 1 a)))
412412```
413413
@@ -440,7 +440,7 @@ A signed integer.
440440
441441#### Source
442442
443−```
443+```hoon
444444 ++ dif |= [a=@s b=@s]
445445 (sum a (new !(syn b) (abs b)))
446446```
@@ -474,7 +474,7 @@ An atom.
474474
475475#### Source
476476
477−```
477+```hoon
478478 ++ dul |= [a=@s b=@]
479479 =+(c=(old a) ?:(-.c (mod +.c b) (sub b +.c)))
480480```
@@ -513,7 +513,7 @@ A signed atom.
513513
514514#### Source
515515
516−```
516+```hoon
517517 ++ fra |= [a=@s b=@s]
518518 (new =(0 (mix (syn a) (syn b))) (div (abs a) (abs b)))
519519```
@@ -552,7 +552,7 @@ A signed integer.
552552
553553#### Source
554554
555−```
555+```hoon
556556 ++ new |= [a=? b=@]
557557 `@s`?:(a (mul 2 b) ?:(=(0 b) 0 +((mul 2 (dec b)))))
558558```
@@ -591,7 +591,7 @@ A cell composed of a `term` and an atom.
591591
592592#### Source
593593
594−```
594+```hoon
595595 ++ old |=(a=@s [(syn a) (abs a)])
596596```
597597
@@ -620,7 +620,7 @@ Produces a signed integer by multiplying `a` and `b`.
620620
621621#### Source
622622
623−```
623+```hoon
624624 ++ pro |= [a=@s b=@s]
625625 (new =(0 (mix (syn a) (syn b))) (mul (abs a) (abs b)))
626626```
@@ -654,7 +654,7 @@ A signed integer.
654654
655655#### Source
656656
657−```
657+```hoon
658658 ++ rem |=([a=@s b=@s] (dif a (pro b (fra a b))))
659659```
660660
@@ -694,7 +694,7 @@ A signed integer.
694694
695695#### Source
696696
697−```
697+```hoon
698698 ++ sum |= [a=@s b=@s]
699699 =+ [c=(old a) d=(old b)]
700700 ?: -.c
@@ -737,7 +737,7 @@ An atom.
737737
738738#### Source
739739
740−```
740+```hoon
741741 ++ sun |=(a=@u (mul 2 a))
742742```
743743
@@ -781,7 +781,7 @@ An `term`.
781781
782782#### Source
783783
784−```
784+```hoon
785785 ++ syn |=(a=@s =(0 (end 0 1 a)))
786786```
787787
@@ -816,7 +816,7 @@ A signed integer.
816816
817817#### Source
818818
819−```
819+```hoon
820820 ++ cmp |= [a=@s b=@s]
821821 ^- @s
822822 ?: =(a b)
reference/library/3b.md → hoon/library/3b.mdrenamed+180−180
@@ -16,7 +16,7 @@ exponent, a signed decimal; and `a` to the significand, an unsigned integer.
1616
1717#### Source
1818
19−```
19+```hoon
2020 ++ fn
2121 $% [$f s=? e=@s a=@u]
2222 [$i s=?]
@@ -56,7 +56,7 @@ Valid values are a float (`$d`), an infinity (`$i`), or a not-a-number (`$n`).
5656`s` refers to sign, the `flag`s `&` or `|`; `e` to exponent, a signed decimal;
5757and `a` to the significand, an unsigned integer.
5858
59−```
59+```hoon
6060 ++ dn
6161 $% [$d s=? e=@s a=@u]
6262 [$i s=?]
@@ -90,7 +90,7 @@ not-a-number (`$n`).
9090
9191#### Source
9292
93−```
93+```hoon
9494 $% [$d a=? b=[c=@ [d=@ e=@] f=? i=@]]
9595 [$i a=?]
9696 [$n ~]
@@ -123,7 +123,7 @@ Container arm for floating-point arithmetic functions.
123123
124124#### Source
125125
126−```
126+```hoon
127127 ++ fl
128128 =+ ^- [[p=@u v=@s w=@u] r=$?($n $u $d $z $a) d=$?($d $f $i)]
129129 [[113 -16.494 32.765] %n %d]
@@ -151,7 +151,7 @@ An `fn`.
151151
152152#### Source
153153
154−```
154+```hoon
155155 ++ rou
156156 |= [a=[e=@s a=@u]] ^- fn (rau a &)
157157```
@@ -194,7 +194,7 @@ An `fn`.
194194
195195#### Source
196196
197−```
197+```hoon
198198 ++ rau
199199 |= [a=[e=@s a=@u] t=?] ^- fn
200200 ?- r
@@ -241,7 +241,7 @@ An `fn`.
241241
242242#### Source
243243
244−```
244+```hoon
245245 ++ add
246246 |= [a=[e=@s a=@u] b=[e=@s a=@u] e=?] ^- fn
247247 =+ q=(dif:si e.a e.b)
@@ -293,7 +293,7 @@ An `fn`.
293293
294294#### Source
295295
296−```
296+```hoon
297297 ++ sub
298298 |= [a=[e=@s a=@u] b=[e=@s a=@u] e=?] ^- fn
299299 =+ q=(dif:si e.a e.b)
@@ -347,7 +347,7 @@ An `fn`.
347347
348348#### Source
349349
350−```
350+```hoon
351351 ++ mul
352352 |= [a=[e=@s a=@u] b=[e=@s a=@u]] ^- fn
353353 (rou (sum:si e.a e.b) (^mul a.a a.b))
@@ -380,7 +380,7 @@ An `fn`.
380380
381381#### Source
382382
383−```
383+```hoon
384384 ++ div
385385 |= [a=[e=@s a=@u] b=[e=@s a=@u]] ^- fn
386386 =+ [ma=(met 0 a.a) mb=(met 0 a.b)]
@@ -415,7 +415,7 @@ An `fn`.
415415
416416#### Source
417417
418−```
418+```hoon
419419 ++ sqt
420420 |= [a=[e=@s a=@u]] ^- fn
421421 =. a
@@ -454,7 +454,7 @@ An `flag`.
454454
455455#### Source
456456
457−```
457+```hoon
458458 ++ lth
459459 |= [a=[e=@s a=@u] b=[e=@s a=@u]] ^- ?
460460 ?: =(e.a e.b) (^lth a.a a.b)
@@ -494,7 +494,7 @@ A `flag`.
494494
495495#### Source
496496
497−```
497+```hoon
498498 ++ equ
499499 |= [a=[e=@s a=@u] b=[e=@s a=@u]] ^- ?
500500 ?. =((ibl a) (ibl b)) |
@@ -531,7 +531,7 @@ A signed integer.
531531
532532#### Source
533533
534−```
534+```hoon
535535 ++ ibl
536536 |= [a=[e=@s a=@u]] ^- @s
537537 (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.
563563
564564#### Source
565565
566−```
566+```hoon
567567 ++ uni
568568 |= [a=[e=@s a=@u]]
569569 |- ?: =((end 0 1 a.a) 1) a
@@ -597,7 +597,7 @@ A cell of a signed integer and an unsigned integer.
597597
598598#### Sources
599599
600−```
600+```hoon
601601 ++ xpd
602602 |= [a=[e=@s a=@u]]
603603 =+ ma=(met 0 a.a)
@@ -654,7 +654,7 @@ An `fn`.
654654
655655#### Source
656656
657−```
657+```hoon
658658 ::
659659 :: central rounding mechanism
660660 :: can perform: floor, ceiling, smaller, larger,
@@ -746,7 +746,7 @@ A cell of a signed integer and an unsigned integer.
746746
747747#### Source
748748
749−```
749+```hoon
750750 ++ drg
751751 ~/ %drg
752752 |= [a=[e=@s a=@u]] ^- [@s @u]
@@ -829,7 +829,7 @@ An `fn`.
829829
830830#### Source
831831
832−```
832+```hoon
833833 ++ toj
834834 |= [a=[e=@s a=@u]] ^- fn
835835 ?. =((cmp:si e.a --0) -1) [%f & a]
@@ -871,7 +871,7 @@ A cell of a signed integer and an unsigned integer.
871871
872872#### Source
873873
874−```
874+```hoon
875875 ++ ned
876876 |= [a=fn] ^- [$f s=? e=@s a=@u]
877877 ?: ?=([$f *] a) a
@@ -915,7 +915,7 @@ An `fn`.
915915
916916#### Source
917917
918−```
918+```hoon
919919 ++ shf
920920 |= [a=fn b=@s]
921921 ?: |(?=([$n *] a) ?=([$i *] a)) a
@@ -952,7 +952,7 @@ An `fn`.
952952
953953#### Source
954954
955−```
955+```hoon
956956 ++ fli
957957 |= [a=fn] ^- fn
958958 ?-(-.a $f a(s !s.a), $i a(s !s.a), $n a)
@@ -980,7 +980,7 @@ Switches the rounding mode of `r:fl`.
980980
981981#### Source
982982
983−```
983+```hoon
984984 ++ swr ?+(r r $d %u, $u %d)
985985```
986986
@@ -1008,7 +1008,7 @@ Otherwise, a crash is produced.
10081008
10091009#### Source
10101010
1011−```
1011+```hoon
10121012 ++ prc ?>((gth p 1) p)
10131013```
10141014
@@ -1044,7 +1044,7 @@ The default value of `d` is `%d`.
10441044
10451045#### Source
10461046
1047−```
1047+```hoon
10481048 ++ den d
10491049```
10501050
@@ -1069,7 +1069,7 @@ Produces `v:fl`, the minimum exponent. The default minimum exponent is -16.494.
10691069
10701070#### Source
10711071
1072−```
1072+```hoon
10731073 ++ emn v
10741074```
10751075
@@ -1089,7 +1089,7 @@ Returns the maximum exponent of `fl`. The default maximum exponent is --16.271.
10891089
10901090#### Source
10911091
1092−```
1092+```hoon
10931093 ++ emx (sum:si emn (sun:si w))
10941094```
10951095
@@ -1112,7 +1112,7 @@ Produces the smallest possible denormalized float.
11121112
11131113#### Source
11141114
1115−```
1115+```hoon
11161116 ++ spd [e=emn a=1]
11171117```
11181118
@@ -1132,7 +1132,7 @@ Produces the smallest representable normal float.
11321132
11331133#### Source
11341134
1135−```
1135+```hoon
11361136 ++ spn [e=emn a=(bex (dec prc))]
11371137```
11381138
@@ -1152,7 +1152,7 @@ Produces the largest representable normal float.
11521152
11531153#### Source
11541154
1155−```
1155+```hoon
11561156 ++ lfn [e=emx a=(fil 0 prc 1)]
11571157```
11581158
@@ -1172,7 +1172,7 @@ Produces the sum of `emx:fl` plus `prc:fl`.
11721172
11731173#### Source
11741174
1175−```
1175+```hoon
11761176 ++ lfe (sum:si emx (sun:si prc)) :: 2^lfe is > than all
11771177```
11781178
@@ -1192,7 +1192,7 @@ Produces zero represented as a float.
11921192
11931193#### Source
11941194
1195−```
1195+```hoon
11961196 ++ zer [e=--0 a=0]
11971197 --
11981198 |%
@@ -1222,7 +1222,7 @@ An `fn`.
12221222
12231223#### Source
12241224
1225−```
1225+```hoon
12261226 ++ rou
12271227 |= [a=fn] ^- fn
12281228 ?. ?=([$f *] a) a
@@ -1265,7 +1265,7 @@ An `fn`.
12651265
12661266#### Source
12671267
1268−```
1268+```hoon
12691269 ++ syn
12701270 |= [a=fn] ^- ?
12711271 ?-(-.a $f s.a, $i s.a, $n &)
@@ -1298,7 +1298,7 @@ An `fn`.
12981298
12991299#### Sources
13001300
1301−```
1301+```hoon
13021302 ++ abs
13031303 |= [a=fn] ^- fn
13041304 ?: ?=([$f *] a) [%f & e.a a.a]
@@ -1334,7 +1334,7 @@ An `fn`.
13341334
13351335#### Source
13361336
1337−```
1337+```hoon
13381338 ++ add
13391339 |= [a=fn b=fn] ^- fn
13401340 ?: |(?=([$n *] a) ?=([$n *] b)) [%n ~]
@@ -1382,7 +1382,7 @@ An `fn`.
13821382
13831383#### Source
13841384
1385−```
1385+```hoon
13861386 ++ ead
13871387 |= [a=fn b=fn] ^- fn
13881388 ?: |(?=([$n *] a) ?=([$n *] b)) [%n ~]
@@ -1431,7 +1431,7 @@ An `fn`.
14311431
14321432#### Source
14331433
1434−```
1434+```hoon
14351435 ++ sub
14361436 |= [a=fn b=fn] ^- fn (add a (fli b))
14371437```
@@ -1462,7 +1462,7 @@ An `fn`.
14621462
14631463#### Source
14641464
1465−```
1465+```hoon
14661466 ++ mul
14671467 |= [a=fn b=fn] ^- fn
14681468 ?: |(?=([$n *] a) ?=([$n *] b)) [%n ~]
@@ -1529,7 +1529,7 @@ An `fn`.
15291529
15301530#### Divide
15311531
1532−```
1532+```hoon
15331533 ++ div
15341534 |= [a=fn b=fn] ^- fn
15351535 ?: |(?=([$n *] a) ?=([$n *] b)) [%n ~]
@@ -1564,7 +1564,7 @@ An `fn`.
15641564
15651565#### Source
15661566
1567−```
1567+```hoon
15681568 ++ fma
15691569 |= [a=fn b=fn c=fn] ^- fn
15701570 (add (emu a b) c)
@@ -1594,7 +1594,7 @@ An `fn`.
15941594
15951595#### Source
15961596
1597−```
1597+```hoon
15981598 ++ sqt
15991599 |= [a=fn] ^- fn
16001600 ?: ?=([$n *] a) [%n ~]
@@ -1627,7 +1627,7 @@ An `fn`.
16271627
16281628#### Source
16291629
1630−```
1630+```hoon
16311631 ++ inv
16321632 |= [a=fn] ^- fn
16331633 (div [%f & --0 1] a)
@@ -1669,7 +1669,7 @@ An `fn`.
16691669
16701670#### Source
16711671
1672−```
1672+```hoon
16731673 ++ sun
16741674 |= [a=@u] ^- fn
16751675 (rou [%f & --0 a])
@@ -1705,7 +1705,7 @@ An `fn`.
17051705
17061706#### Source
17071707
1708−```
1708+```hoon
17091709 ++ san
17101710 |= [a=@s] ^- fn
17111711 =+ b=(old:si a)
@@ -1742,7 +1742,7 @@ A `unit` of `flag`.
17421742
17431743#### Source
17441744
1745−```
1745+```hoon
17461746 ++ lth
17471747 |= [a=fn b=fn] ^- (unit ?)
17481748 ?: |(?=([$n *] a) ?=([$n *] b)) ~ :- ~
@@ -1788,7 +1788,7 @@ A `unit` of `flag`.
17881788
17891789#### Source
17901790
1791−```
1791+```hoon
17921792 ++ lte
17931793 |= [a=fn b=fn] ^- (unit ?)
17941794 %+ bind (lth b a) |= a=? !a
@@ -1833,7 +1833,7 @@ An `unit` of `flag`.
18331833
18341834#### Source
18351835
1836−```
1836+```hoon
18371837 ++ equ
18381838 |= [a=fn b=fn] ^- (unit ?)
18391839 ?: |(?=([$n *] a) ?=([$n *] b)) ~ :- ~
@@ -1875,7 +1875,7 @@ An `unit` of `flag`.
18751875
18761876#### Source
18771877
1878−```
1878+```hoon
18791879 ++ gte
18801880 |= [a=fn b=fn] ^- (unit ?) (lte b a)
18811881```
@@ -1913,7 +1913,7 @@ An `unit` of `flag`.
19131913
19141914#### Source
19151915
1916−```
1916+```hoon
19171917 ++ gth
19181918 |= [a=fn b=fn] ^- (unit ?) (lth b a)
19191919```
@@ -1946,7 +1946,7 @@ A `dn`.
19461946
19471947#### Source
19481948
1949−```
1949+```hoon
19501950 ++ drg
19511951 |= [a=fn] ^- dn
19521952 ?: ?=([$n *] a) [%n ~]
@@ -1979,7 +1979,7 @@ An `fn`.
19791979
19801980#### Source
19811981
1982−```
1982+```hoon
19831983 ++ grd
19841984 |= [a=dn] ^- fn
19851985 ?: ?=([$n *] a) [%n ~]
@@ -2018,7 +2018,7 @@ A `unit` of @s.
20182018
20192019#### Source
20202020
2021−```
2021+```hoon
20222022 ++ toi
20232023 |= [a=fn] ^- (unit @s)
20242024 =+ b=(toj a)
@@ -2051,7 +2051,7 @@ A `unit` of @s.
20512051
20522052#### Source
20532053
2054−```
2054+```hoon
20552055 ++ toj
20562056 |= [a=fn] ^- fn
20572057 ?. ?=([$f *] a) a
@@ -2092,7 +2092,7 @@ Container core for IEEE-754 formatting operations.
20922092
20932093#### Source
20942094
2095−```
2095+```hoon
20962096 ++ ff
20972097 |_ [[w=@u p=@u b=@s] r=$?($n $u $d $z $a)]
20982098```
@@ -2122,7 +2122,7 @@ Produces the sign bit of `++ff`.
21222122
21232123#### Source
21242124
2125−```
2125+```hoon
21262126 ++ sb (bex (^add w p))
21272127```
21282128
@@ -2142,7 +2142,7 @@ Produces the minimum possible exponent of `ff`.
21422142
21432143#### Source
21442144
2145−```
2145+```hoon
21462146 ++ me (dif:si (dif:si --1 b) (sun:si p))
21472147```
21482148
@@ -2163,7 +2163,7 @@ configuration of the `ff` core.
21632163
21642164#### Source
21652165
2166−```
2166+```hoon
21672167 ++ pa
21682168 %*(. fl p +(p), v me, w (^sub (bex w) 3), d %d, r r)
21692169```
@@ -2202,7 +2202,7 @@ A `unit` of @s.
22022202
22032203#### Source
22042204
2205−```
2205+```hoon
22062206 ++ sea
22072207 |= [a=@r] ^- fn
22082208 =+ [f=(cut 0 [0 p] a) e=(cut 0 [p w] a)]
@@ -2240,7 +2240,7 @@ A `@r`.
22402240
22412241#### Source
22422242
2243−```
2243+```hoon
22442244 ++ bit |= [a=fn] (bif (rou:pa a))
22452245```
22462246
@@ -2268,7 +2268,7 @@ A `flag`.
22682268
22692269#### Source
22702270
2271−```
2271+```hoon
22722272 ++ bif
22732273 |= [a=fn] ^- @r
22742274 ?: ?=([$i *] a)
@@ -2310,7 +2310,7 @@ A `flag`.
23102310
23112311#### Source
23122312
2313−```
2313+```hoon
23142314 ++ sig
23152315 |= [a=@r] ^- ?
23162316 =(0 (cut 0 [(^add p w) 1] a))
@@ -2340,7 +2340,7 @@ A signed integer.
23402340
23412341#### Source
23422342
2343−```
2343+```hoon
23442344 ++ exp
23452345 |= [a=@r] ^- @s
23462346 (dif:si (sun:si (cut 0 [p w] a)) b)
@@ -2372,7 +2372,7 @@ A `@r`, an IEEE float.
23722372
23732373#### Source
23742374
2375−```
2375+```hoon
23762376 ++ add
23772377 |= [a=@r b=@r]
23782378 (bif (add:pa (sea a) (sea b)))
@@ -2404,7 +2404,7 @@ A `@r`, an IEEE float.
24042404
24052405#### Source
24062406
2407−```
2407+```hoon
24082408 ++ sub
24092409 |= [a=@r b=@r]
24102410 (bif (sub:pa (sea a) (sea b)))
@@ -2436,7 +2436,7 @@ A `@r`, an IEEE float.
24362436
24372437#### Multiply
24382438
2439−```
2439+```hoon
24402440 ++ mul
24412441 |= [a=@r b=@r]
24422442 (bif (mul:pa (sea a) (sea b)))
@@ -2468,7 +2468,7 @@ A `@r`, an IEEE float.
24682468
24692469#### Source
24702470
2471−```
2471+```hoon
24722472 ++ div
24732473 |= [a=@r b=@r]
24742474 (bif (div:pa (sea a) (sea b)))
@@ -2503,7 +2503,7 @@ A `@r`, an IEEE float.
25032503
25042504#### Source
25052505
2506−```
2506+```hoon
25072507 ++ fma
25082508 |= [a=@r b=@r c=@r]
25092509 (bif (fma:pa (sea a) (sea b) (sea c)))
@@ -2533,7 +2533,7 @@ A `@r`, an IEEE float.
25332533
25342534#### Source
25352535
2536−```
2536+```hoon
25372537 ++ sqt
25382538 |= [a=@r]
25392539 (bif (sqt:pa (sea a)))
@@ -2565,7 +2565,7 @@ A `flag`.
25652565
25662566#### Source
25672567
2568−```
2568+```hoon
25692569 ++ lth
25702570 |= [a=@r b=@r] (fall (lth:pa (sea a) (sea b)) |)
25712571```
@@ -2599,7 +2599,7 @@ A `flag`.
25992599
26002600#### Source
26012601
2602−```
2602+```hoon
26032603 ++ lte
26042604 |= [a=@r b=@r] (fall (lte:pa (sea a) (sea b)) |)
26052605```
@@ -2633,7 +2633,7 @@ A `flag`.
26332633
26342634#### Source
26352635
2636−```
2636+```hoon
26372637 ++ equ
26382638 |= [a=@r b=@r] (fall (equ:pa (sea a) (sea b)) |)
26392639```
@@ -2667,7 +2667,7 @@ A `flag`.
26672667
26682668#### Source
26692669
2670−```
2670+```hoon
26712671 ++ gte
26722672 |= [a=@r b=@r] (fall (gte:pa (sea a) (sea b)) |)
26732673```
@@ -2701,7 +2701,7 @@ A `flag`.
27012701
27022702#### Source
27032703
2704−```
2704+```hoon
27052705 ++ gth
27062706 |= [a=@r b=@r] (fall (gth:pa (sea a) (sea b)) |)
27072707```
@@ -2733,7 +2733,7 @@ A `@r`, an IEEE float.
27332733
27342734#### Source
27352735
2736−```
2736+```hoon
27372737 ++ sun
27382738 |= [a=@u] (bit [%f & --0 a])
27392739```
@@ -2762,7 +2762,7 @@ A `@r`, an IEEE float.
27622762
27632763#### Source
27642764
2765−```
2765+```hoon
27662766 ++ san
27672767 |= [a=@s] (bit [%f (syn:si a) --0 (abs:si a)])
27682768```
@@ -2791,7 +2791,7 @@ A `flag` of `@s`.
27912791
27922792#### Source
27932793
2794−```
2794+```hoon
27952795 ++ toi
27962796 |= [a=@r] (toi:pa (sea a))
27972797```
@@ -2820,7 +2820,7 @@ A `dn`.
28202820
28212821#### Source
28222822
2823−```
2823+```hoon
28242824 ++ drg
28252825 |= [a=@r] (drg:pa (sea a))
28262826```
@@ -2852,7 +2852,7 @@ A `@r`, an IEEE float.
28522852
28532853#### Source
28542854
2855−```
2855+```hoon
28562856 ++ grd
28572857 |= [a=dn] (bif (grd:pa a))
28582858 --
@@ -2882,7 +2882,7 @@ A `dn`.
28822882
28832883#### Source
28842884
2885−```
2885+```hoon
28862886 ++ rlyd |= a=@rd ^- dn (drg:rd a)
28872887```
28882888
@@ -2910,7 +2910,7 @@ A `dn`.
29102910
29112911#### Source
29122912
2913−```
2913+```hoon
29142914 ++ rlys |= a=@rs ^- dn (drg:rs a)
29152915```
29162916
@@ -2938,7 +2938,7 @@ A `dn`.
29382938
29392939#### Source
29402940
2941−```
2941+```hoon
29422942 ++ rlyh |= a=@rh ^- dn (drg:rh a)
29432943```
29442944
@@ -2966,7 +2966,7 @@ A `dn`.
29662966
29672967#### Source
29682968
2969−```
2969+```hoon
29702970 ++ rlyq |= a=@rq ^- dn (drg:rq a)
29712971```
29722972
@@ -2994,7 +2994,7 @@ A a `@rd`, a double-precision float.
29942994
29952995#### Source
29962996
2997−```
2997+```hoon
29982998 ++ ryld |= a=dn ^- @rd (grd:rd a)
29992999```
30003000
@@ -3022,7 +3022,7 @@ A a `@rs`, a single-precision float.
30223022
30233023#### Source
30243024
3025−```
3025+```hoon
30263026 ++ ryls |= a=dn ^- @rs (grd:rs a)
30273027```
30283028
@@ -3053,7 +3053,7 @@ A a `@rh`, a half-precision float.
30533053
30543054#### Source
30553055
3056−```
3056+```hoon
30573057 ++ rylh |= a=dn ^- @rh (grd:rh a)
30583058```
30593059
@@ -3087,7 +3087,7 @@ A a `@rq`, a quad-precision float.
30873087
30883088#### Source
30893089
3090−```
3090+```hoon
30913091 ++ rylq |= a=dn ^- @rq (grd:rq a)
30923092```
30933093
@@ -3110,7 +3110,7 @@ down (`$d`), and round to zero (`$z`).
31103110
31113111#### Source
31123112
3113−```
3113+```hoon
31143114 ++ rd
31153115 ^?
31163116 ~% %rd +> ~
@@ -3127,7 +3127,7 @@ configuration of the `rd` core.
31273127
31283128#### Source
31293129
3130−```
3130+```hoon
31313131 ++ ma
31323132 %*(. ff w 11, p 52, b --1.023, r r)
31333133```
@@ -3148,7 +3148,7 @@ configuration of the `rd` core.
31483148
31493149Converts `a` from a double-precision binary float to `fn`.
31503150
3151−```
3151+```hoon
31523152 ++ sea :: @rd to fn
31533153 |= [a=@rd] (sea:ma a)
31543154```
@@ -3177,7 +3177,7 @@ A `@rd`, a double-precision float.
31773177
31783178#### Source
31793179
3180−```
3180+```hoon
31813181 ++ bit
31823182 |= [a=fn] ^- @rd (bit:ma a)
31833183```
@@ -3208,7 +3208,7 @@ A `@rd`.
32083208
32093209#### Source
32103210
3211−```
3211+```hoon
32123212 ++ add ~/ %add
32133213 |= [a=@rd b=@rd] ^- @rd
32143214 ~_ leaf+"rd-fail"
@@ -3241,7 +3241,7 @@ A `@rd`.
32413241
32423242#### Source
32433243
3244−```
3244+```hoon
32453245 ++ sub ~/ %sub
32463246 |= [a=@rd b=@rd] ^- @rd
32473247 ~_ leaf+"rd-fail"
@@ -3274,7 +3274,7 @@ A `@rd`.
32743274
32753275#### Source
32763276
3277−```
3277+```hoon
32783278 ++ mul ~/ %mul
32793279 |= [a=@rd b=@rd] ^- @rd
32803280 ~_ leaf+"rd-fail"
@@ -3307,7 +3307,7 @@ A `@rd`.
33073307
33083308#### Source
33093309
3310−```
3310+```hoon
33113311 ++ div ~/ %div
33123312 |= [a=@rd b=@rd] ^- @rd
33133313 ~_ leaf+"rd-fail"
@@ -3346,7 +3346,7 @@ A `@rd`.
33463346
33473347#### Source
33483348
3349−```
3349+```hoon
33503350 ++ fma ~/ %fma
33513351 |= [a=@rd b=@rd c=@rd] ^- @rd
33523352 ~_ leaf+"rd-fail"
@@ -3377,7 +3377,7 @@ A `@rd`.
33773377
33783378#### Source
33793379
3380−```
3380+```hoon
33813381 ++ sqt ~/ %sqt
33823382 |= [a=@rd] ^- @rd ~_ leaf+"rd-fail"
33833383 (sqt:ma a)
@@ -3409,7 +3409,7 @@ A `@rd`.
34093409
34103410#### Source
34113411
3412−```
3412+```hoon
34133413 ++ lth ~/ %lth
34143414 |= [a=@rd b=@rd]
34153415 ~_ leaf+"rd-fail"
@@ -3448,7 +3448,7 @@ A `@rd`.
34483448
34493449#### Source
34503450
3451−```
3451+```hoon
34523452 ++ lte ~/ %lte :: less-equals
34533453 |= [a=@rd b=@rd]
34543454 ~_ leaf+"rd-fail"
@@ -3487,7 +3487,7 @@ A `@rd`.
34873487
34883488#### Source
34893489
3490−```
3490+```hoon
34913491 ++ equ ~/ %equ
34923492 |= [a=@rd b=@rd]
34933493 ~_ leaf+"rd-fail"
@@ -3526,7 +3526,7 @@ A `@rd`.
35263526
35273527#### Source
35283528
3529−```
3529+```hoon
35303530 ++ gte ~/ %gte
35313531 |= [a=@rd b=@rd]
35323532 ~_ leaf+"rd-fail"
@@ -3565,7 +3565,7 @@ A `@rd`.
35653565
35663566#### Source
35673567
3568−```
3568+```hoon
35693569 ++ gth ~/ %gth
35703570 |= [a=@rd b=@rd]
35713571 ~_ leaf+"rd-fail"
@@ -3602,7 +3602,7 @@ A `@rd`.
36023602
36033603#### Source
36043604
3605−```
3605+```hoon
36063606 ++ sun |= [a=@u] ^- @rd (sun:ma a)
36073607```
36083608
@@ -3630,7 +3630,7 @@ A `@rd`.
36303630
36313631#### Source
36323632
3633−```
3633+```hoon
36343634 ++ san |= [a=@s] ^- @rd (san:ma a)
36353635```
36363636
@@ -3658,7 +3658,7 @@ A `flag`.
36583658
36593659#### Source
36603660
3661−```
3661+```hoon
36623662 ++ sig |= [a=@rd] ^- ? (sig:ma a)
36633663```
36643664
@@ -3686,7 +3686,7 @@ A `@s`.
36863686
36873687#### Source
36883688
3689−```
3689+```hoon
36903690 ++ exp |= [a=@rd] ^- @s (exp:ma a) :: get exponent
36913691```
36923692
@@ -3714,7 +3714,7 @@ A `unit` of `@s`.
37143714
37153715#### Source
37163716
3717−```
3717+```hoon
37183718 ++ toi |= [a=@rd] ^- (unit @s) (toi:ma a)
37193719```
37203720
@@ -3743,7 +3743,7 @@ A `dn`.
37433743
37443744#### Source
37453745
3746−```
3746+```hoon
37473747 ++ drg |= [a=@rd] ^- dn (drg:ma a)
37483748```
37493749
@@ -3771,7 +3771,7 @@ A `@rd`.
37713771
37723772#### Source
37733773
3774−```
3774+```hoon
37753775 ++ grd |= [a=dn] ^- @rd (grd:ma a) :: decimal float to @rd
37763776 --
37773777```
@@ -3795,7 +3795,7 @@ down (`$d`), and round to zero (`$z`).
37953795
37963796#### Source
37973797
3798−```
3798+```hoon
37993799 ++ rs
38003800 ~% %rs +> ~
38013801 ^?
@@ -3812,7 +3812,7 @@ configuration of the `rs` core.
38123812
38133813#### Source
38143814
3815−```
3815+```hoon
38163816 ++ ma
38173817 %*(. ff w 8, p 23, b --127, r r)
38183818```
@@ -3843,7 +3843,7 @@ An `fn`.
38433843
38443844#### Source
38453845
3846−```
3846+```hoon
38473847 ++ sea
38483848 |= [a=@rs] (sea:ma a)
38493849```
@@ -3872,7 +3872,7 @@ A `@rs`, a single-precision float.
38723872
38733873#### Source
38743874
3875−```
3875+```hoon
38763876 ++ bit
38773877 |= [a=fn] ^- @rs (bit:ma a)
38783878```
@@ -3903,7 +3903,7 @@ A `@rs`.
39033903
39043904#### Source
39053905
3906−```
3906+```hoon
39073907 ++ add ~/ %add
39083908 |= [a=@rs b=@rs] ^- @rs
39093909 ~_ leaf+"rs-fail"
@@ -3926,7 +3926,7 @@ Subtracts `a` from `b`.
39263926
39273927#### Source
39283928
3929−```
3929+```hoon
39303930 ++ sub ~/ %sub
39313931 |= [a=@rs b=@rs] ^- @rs
39323932 ~_ leaf+"rs-fail"
@@ -3959,7 +3959,7 @@ A `@rs`.
39593959
39603960#### Source
39613961
3962−```
3962+```hoon
39633963 ++ mul ~/ %mul
39643964 |= [a=@rs b=@rs] ^- @rs
39653965 ~_ leaf+"rs-fail"
@@ -3992,7 +3992,7 @@ A `@rs`.
39923992
39933993#### Source
39943994
3995−```
3995+```hoon
39963996 ++ div ~/ %div
39973997 |= [a=@rs b=@rs] ^- @rs
39983998 ~_ leaf+"rs-fail"
@@ -4028,7 +4028,7 @@ A `@rs`.
40284028
40294029#### Source
40304030
4031−```
4031+```hoon
40324032 ++ fma ~/ %fma
40334033 |= [a=@rs b=@rs c=@rs] ^- @rs
40344034 ~_ leaf+"rs-fail"
@@ -4059,7 +4059,7 @@ A `@rs`.
40594059
40604060#### Source
40614061
4062−```
4062+```hoon
40634063 ++ sqt ~/ %sqt
40644064 |= [a=@rs] ^- @rs
40654065 ~_ leaf+"rs-fail"
@@ -4092,7 +4092,7 @@ A `@rs`.
40924092
40934093#### Source
40944094
4095−```
4095+```hoon
40964096 ++ lth ~/ %lth
40974097 |= [a=@rs b=@rs]
40984098 ~_ leaf+"rs-fail"
@@ -4128,7 +4128,7 @@ A `@rs`.
41284128
41294129#### Source
41304130
4131−```
4131+```hoon
41324132 ++ lte ~/ %lte
41334133 |= [a=@rs b=@rs]
41344134 ~_ leaf+"rs-fail"
@@ -4164,7 +4164,7 @@ A `@rs`.
41644164
41654165#### Source
41664166
4167−```
4167+```hoon
41684168 ++ equ ~/ %equ
41694169 |= [a=@rs b=@rs]
41704170 ~_ leaf+"rs-fail"
@@ -4200,7 +4200,7 @@ A `@rs`.
42004200
42014201#### Source
42024202
4203−```
4203+```hoon
42044204 ++ gte ~/ %gte
42054205 |= [a=@rs b=@rs]
42064206 ~_ leaf+"rs-fail"
@@ -4236,7 +4236,7 @@ A `@rs`.
42364236
42374237#### Source
42384238
4239−```
4239+```hoon
42404240 ++ gth ~/ %gth
42414241 |= [a=@rs b=@rs]
42424242 ~_ leaf+"rs-fail"
@@ -4273,7 +4273,7 @@ A `@rs`.
42734273
42744274#### Source
42754275
4276−```
4276+```hoon
42774277 ++ sun |= [a=@u] ^- @rs (sun:ma a)
42784278```
42794279
@@ -4301,7 +4301,7 @@ A `@rs`.
43014301
43024302#### Source
43034303
4304−```
4304+```hoon
43054305 ++ san |= [a=@s] ^- @rs (san:ma a)
43064306```
43074307
@@ -4328,7 +4328,7 @@ A `flag`.
43284328
43294329#### Source
43304330
4331−```
4331+```hoon
43324332 ++ sig |= [a=@rs] ^- ? (sig:ma a)
43334333```
43344334
@@ -4359,7 +4359,7 @@ A signed integer.
43594359
43604360#### Source
43614361
4362−```
4362+```hoon
43634363 ++ exp |= [a=@rs] ^- @s (exp:ma a)
43644364```
43654365
@@ -4387,7 +4387,7 @@ A `unit` of `@s`.
43874387
43884388#### Source
43894389
4390−```
4390+```hoon
43914391 ++ toi |= [a=@rs] ^- (unit @s) (toi:ma a)
43924392```
43934393
@@ -4416,7 +4416,7 @@ A `dn`.
44164416
44174417#### Source
44184418
4419−```
4419+```hoon
44204420 ++ drg |= [a=@rs] ^- dn (drg:ma a)
44214421```
44224422
@@ -4444,7 +4444,7 @@ A `@rs`.
44444444
44454445#### Source
44464446
4447−```
4447+```hoon
44484448 ++ grd |= [a=dn] ^- @rs (grd:ma a)
44494449 --
44504450```
@@ -4468,7 +4468,7 @@ down (`$d`), and round to zero (`$z`).
44684468
44694469#### Source
44704470
4471−```
4471+```hoon
44724472 ++ rq
44734473 ~% %rq +> ~
44744474 ^?
@@ -4484,7 +4484,7 @@ configuration of the `rq` core.
44844484
44854485#### Source
44864486
4487−```
4487+```hoon
44884488 ++ ma
44894489 %*(. ff w 15, p 112, b --16.383, r r)
44904490```
@@ -4506,7 +4506,7 @@ An `fn`.
45064506
45074507#### Source
45084508
4509−```
4509+```hoon
45104510 ++ sea
45114511 |= [a=@rq] (sea:ma a)
45124512```
@@ -4535,7 +4535,7 @@ A `@rq`, a quad-precision float.
45354535
45364536#### Source
45374537
4538−```
4538+```hoon
45394539 ++ bit
45404540 |= [a=n] ^- @rq (bit:ma a)
45414541```
@@ -4566,7 +4566,7 @@ A `@rq`.
45664566
45674567#### Source
45684568
4569−```
4569+```hoon
45704570 ++ add ~/ %add
45714571 |= [a=@rq b=@rq] ^- @rq
45724572 ~_ leaf+"rq-fail"
@@ -4599,7 +4599,7 @@ A `@rq`.
45994599
46004600#### Source
46014601
4602−```
4602+```hoon
46034603 ++ sub ~/ %sub
46044604 |= [a=@rq b=@rq] ^- @rq
46054605 ~_ leaf+"rq-fail"
@@ -4635,7 +4635,7 @@ A `@rq`.
46354635
46364636#### Source
46374637
4638−```
4638+```hoon
46394639 ++ mul ~/ %mul
46404640 |= [a=@rq b=@rq] ^- @rq
46414641 ~_ leaf+"rq-fail"
@@ -4668,14 +4668,14 @@ A `@rq`.
46684668
46694669#### Source
46704670
4671−```
4671+```hoon
46724672 ++ div ~/ %div
46734673 |= [a=@rq b=@rq] ^- @rq
46744674 ~_ leaf+"rq-fail"
46754675 (div:ma a b)
46764676```
46774677
4678−#### examples
4678+#### Examples
46794679
46804680```
46814681 > (div:rq .~~~1.821e5 .~~~1.05102e3)
@@ -4704,7 +4704,7 @@ A `@rq`.
47044704
47054705#### Source
47064706
4707−```
4707+```hoon
47084708 ++ fma ~/ %fma
47094709 |= [a=@rq b=@rq c=@rq] ^- @rq
47104710 ~_ leaf+"rq-fail"
@@ -4735,14 +4735,14 @@ A `@rq`.
47354735
47364736#### Source
47374737
4738−```
4738+```hoon
47394739 ++ sqt ~/ %sqt
47404740 |= [a=@rq] ^- @rq
47414741 ~_ leaf+"rq-fail"
47424742 (sqt:ma a)
47434743```
47444744
4745−#### Source
4745+#### Examples
47464746
47474747```
47484748 > (sqt:rq .~~~6.2044e7)
@@ -4768,7 +4768,7 @@ A `@rq`.
47684768
47694769#### Source
47704770
4771−```
4771+```hoon
47724772 ++ lth ~/ %lth
47734773 |= [a=@rq b=@rq]
47744774 ~_ leaf+"rq-fail"
@@ -4805,7 +4805,7 @@ A `@rq`.
48054805
48064806#### Source
48074807
4808−```
4808+```hoon
48094809 ++ lte ~/ %lte
48104810 |= [a=@rq b=@rq]
48114811 ~_ leaf+"rq-fail"
@@ -4844,7 +4844,7 @@ A `@rq`.
48444844
48454845#### Source
48464846
4847−```
4847+```hoon
48484848 ++ equ ~/ %equ
48494849 |= [a=@rq b=@rq]
48504850 ~_ leaf+"rq-fail"
@@ -4880,7 +4880,7 @@ A `@rq`.
48804880
48814881#### Source
48824882
4883−```
4883+```hoon
48844884 ++ gte ~/ %gte
48854885 |= [a=@rq b=@rq]
48864886 ~_ leaf+"rq-fail"
@@ -4917,7 +4917,7 @@ A `@rq`.
49174917
49184918#### Source
49194919
4920−```
4920+```hoon
49214921 ++ gth ~/ %gth
49224922 |= [a=@rq b=@rq]
49234923 ~_ leaf+"rq-fail"
@@ -4954,7 +4954,7 @@ A `@rq`, a quad-precision float.
49544954
49554955#### Source
49564956
4957−```
4957+```hoon
49584958 ++ sun |= [a=@u] ^- @rq (sun:ma a)
49594959```
49604960
@@ -4982,7 +4982,7 @@ A `@rq`, a quad-precision float.
49824982
49834983#### Source
49844984
4985−```
4985+```hoon
49864986 ++ san |= [a=@s] ^- @rq (san:ma a)
49874987```
49884988
@@ -5010,7 +5010,7 @@ A `flag`.
50105010
50115011#### Source
50125012
5013−```
5013+```hoon
50145014 ++ sig |= [a=@rq] ^- ? (sig:ma a)
50155015```
50165016
@@ -5038,7 +5038,7 @@ A `@s`, a signed integer.
50385038
50395039#### Source
50405040
5041−```
5041+```hoon
50425042 ++ exp |= [a=@rq] ^- @s (exp:ma a)
50435043```
50445044
@@ -5066,7 +5066,7 @@ A `unit` of `@s`.
50665066
50675067#### Source
50685068
5069−```
5069+```hoon
50705070 ++ toi |= [a=@rq] ^- (unit @s) (toi:ma a)
50715071```
50725072
@@ -5098,7 +5098,7 @@ A `dn`.
50985098
50995099#### Source
51005100
5101−```
5101+```hoon
51025102 ++ drg |= [a=@rq] ^- dn (drg:ma a) :: @rq to decimal float
51035103```
51045104
@@ -5131,7 +5131,7 @@ A `@rq`, a quad-precision float.
51315131
51325132#### Source
51335133
5134−```
5134+```hoon
51355135 ++ grd |= [a=dn] ^- @rq (grd:ma a)
51365136 --
51375137```
@@ -5155,7 +5155,7 @@ down (`$d`), and round to zero (`$z`).
51555155
51565156#### Source
51575157
5158−```
5158+```hoon
51595159 ++ rh
51605160 ~% %rh +> ~
51615161 ^?
@@ -5172,7 +5172,7 @@ configuration of the `rh` core.
51725172
51735173#### Source
51745174
5175−```
5175+```hoon
51765176 ++ ma
51775177 %*(. ff w 5, p 10, b --15, r r)
51785178```
@@ -5194,7 +5194,7 @@ An `fn`.
51945194
51955195#### Source
51965196
5197−```
5197+```hoon
51985198 ++ sea
51995199 |= [a=@rh] (sea:ma a)
52005200```
@@ -5223,7 +5223,7 @@ A `@rh`, a half-precision float.
52235223
52245224#### Source
52255225
5226−```
5226+```hoon
52275227 ++ bit
52285228 |= [a=fn] ^- @rh (bit:ma a)
52295229```
@@ -5252,7 +5252,7 @@ A `@rh`.
52525252
52535253#### Source
52545254
5255−```
5255+```hoon
52565256 ++ add ~/ %add
52575257 |= [a=@rh b=@rh] ^- @rh
52585258 ~_ leaf+"rh-fail"
@@ -5285,7 +5285,7 @@ A `@rh`.
52855285
52865286#### Source
52875287
5288−```
5288+```hoon
52895289 ++ sub ~/ %sub
52905290 |= [a=@rh b=@rh] ^- @rh
52915291 ~_ leaf+"rh-fail"
@@ -5321,7 +5321,7 @@ A `@rh`.
53215321
53225322#### Source
53235323
5324−```
5324+```hoon
53255325 ++ mul ~/ %mul
53265326 |= [a=@rh b=@rh] ^- @rh
53275327 ~_ leaf+"rh-fail"
@@ -5354,7 +5354,7 @@ A `@rh`.
53545354
53555355#### Source
53565356
5357−```
5357+```hoon
53585358 ++ div ~/ %div
53595359 |= [a=@rh b=@rh] ^- @rh
53605360 ~_ leaf+"rh-fail"
@@ -5390,7 +5390,7 @@ A `@rh`.
53905390
53915391#### Source
53925392
5393−```
5393+```hoon
53945394 ++ fma ~/ %fma
53955395 |= [a=@rh b=@rh c=@rh] ^- @rh
53965396 ~_ leaf+"rh-fail"
@@ -5421,7 +5421,7 @@ A `@rh`.
54215421
54225422#### Source
54235423
5424−```
5424+```hoon
54255425 ++ sqt ~/ %sqt
54265426 |= [a=@rh] ^- @rh
54275427 ~_ leaf+"rh-fail"
@@ -5430,7 +5430,7 @@ A `@rh`.
54305430
54315431#### Source
54325432
5433−```
5433+```hoon
54345434 > (sqt:rh .~~6.24e4)
54355435 .~~2.498e2
54365436```
@@ -5454,7 +5454,7 @@ A `@rh`.
54545454
54555455#### Source
54565456
5457−```
5457+```hoon
54585458 ++ lth ~/ %lth
54595459 |= [a=@rh b=@rh]
54605460 ~_ leaf+"rh-fail"
@@ -5490,7 +5490,7 @@ A `@rh`.
54905490
54915491#### Source
54925492
5493−```
5493+```hoon
54945494 ++ lte ~/ %lte
54955495 |= [a=@rh b=@rh]
54965496 ~_ leaf+"rh-fail"
@@ -5529,7 +5529,7 @@ A `@rh`.
55295529
55305530#### Source
55315531
5532−```
5532+```hoon
55335533 ++ equ ~/ %equ
55345534 |= [a=@rh b=@rh]
55355535 ~_ leaf+"rh-fail"
@@ -5565,7 +5565,7 @@ A `@rh`.
55655565
55665566#### Source
55675567
5568−```
5568+```hoon
55695569 ++ gte ~/ %gte
55705570 |= [a=@rh b=@rh]
55715571 ~_ leaf+"rh-fail"
@@ -5602,7 +5602,7 @@ A `@rh`.
56025602
56035603#### Source
56045604
5605−```
5605+```hoon
56065606 ++ gth ~/ %gth
56075607 |= [a=@rh b=@rh]
56085608 ~_ leaf+"rh-fail"
@@ -5640,7 +5640,7 @@ A `@rs`, a single-precision float.
56405640
56415641#### Source
56425642
5643−```
5643+```hoon
56445644 ++ tos |= {a/@rh} (bit:rs (sea a))
56455645```
56465646
@@ -5668,7 +5668,7 @@ A `@rh`, a half-precision float.
56685668
56695669#### Source
56705670
5671−```
5671+```hoon
56725672 ++ fos |= {a/@rs} (bit (sea:rs a))
56735673```
56745674
@@ -5696,7 +5696,7 @@ A `@rh`, a half-precision float.
56965696
56975697#### Source
56985698
5699−```
5699+```hoon
57005700 ++ sun |= [a=@u] ^- @rh (sun:ma a)
57015701```
57025702
@@ -5724,7 +5724,7 @@ A `@rh`, a half-precision float.
57245724
57255725#### Source
57265726
5727−```
5727+```hoon
57285728 ++ san |= [a=@s] ^- @rh (san:ma a)
57295729```
57305730
@@ -5752,7 +5752,7 @@ A `flag`.
57525752
57535753#### Source
57545754
5755−```
5755+```hoon
57565756 ++ sig |= [a=@rh] ^- ? (sig:ma a)
57575757```
57585758
@@ -5780,7 +5780,7 @@ A `@s`, a signed integer.
57805780
57815781#### Source
57825782
5783−```
5783+```hoon
57845784 ++ exp |= [a=@rh] ^- @s (exp:ma a)
57855785```
57865786
@@ -5808,7 +5808,7 @@ A `unit` of `@s`.
58085808
58095809#### Source
58105810
5811−```
5811+```hoon
58125812 ++ toi |= [a=@rh] ^- (unit @s) (toi:ma a)
58135813```
58145814
@@ -5840,7 +5840,7 @@ A `dn`.
58405840
58415841#### Source
58425842
5843−```
5843+```hoon
58445844 ++ drg |= [a=@rh] ^- dn (drg:ma a)
58455845```
58465846
@@ -5873,7 +5873,7 @@ A `@rh`, a a half-precision float.
58735873
58745874#### Source
58755875
5876−```
5876+```hoon
58775877 ++ grd |= [a=dn] ^- @rh (grd:ma a)
58785878 --
58795879```
reference/library/3c.md → hoon/library/3c.mdrenamed+18−18
@@ -20,7 +20,7 @@ A cell of unsigned decimals.
2020
2121#### Source
2222
23−```
23+```hoon
2424 ++ yall
2525 |= day=@ud
2626 ^- [y=@ud m=@ud d=@ud]
@@ -82,7 +82,7 @@ An unsigned decimal.
8282
8383#### Source
8484
85−```
85+```hoon
8686 ++ yawn
8787 |= [yer=@ud mot=@ud day=@ud]
8888 ^- @ud
@@ -140,7 +140,7 @@ A `@d`.
140140
141141#### Source
142142
143−```
143+```hoon
144144 ++ year
145145 |= det=date
146146 ^- @da
@@ -176,7 +176,7 @@ A `tarp`.
176176
177177#### Source
178178
179−```
179+```hoon
180180 ++ yell
181181 |= now=@d
182182 ^- tarp
@@ -227,7 +227,7 @@ A flag.
227227
228228#### Source
229229
230−```
230+```hoon
231231 ++ yelp
232232 |= yer=@ud ^- ?
233233 &(=(0 (mod yer 4)) |(!=(0 (mod yer 100)) =(0 (mod yer 400))))
@@ -266,7 +266,7 @@ A `date`.
266266
267267#### Source
268268
269−```
269+```hoon
270270 ++ yore
271271 |= now=@da
272272 ^- date
@@ -303,7 +303,7 @@ A time atom, `@d`.
303303
304304#### Source
305305
306−```
306+```hoon
307307 ++ yule :: time atom
308308 |= rip=tarp
309309 ^- @d
@@ -356,7 +356,7 @@ Core whose arms contain constants for interacting with earth time.
356356
357357#### Source
358358
359−```
359+```hoon
360360 ++ yo
361361```
362362
@@ -375,7 +375,7 @@ An atom.
375375
376376#### Source
377377
378−```
378+```hoon
379379 |% ++ cet 36.524
380380```
381381
@@ -405,7 +405,7 @@ An atom.
405405
406406#### Source
407407
408−```
408+```hoon
409409 ++ day 86.400
410410```
411411
@@ -434,7 +434,7 @@ An atom.
434434
435435#### Source
436436
437−```
437+```hoon
438438 ++ era 146.097
439439```
440440
@@ -470,7 +470,7 @@ An atom.
470470
471471#### Source
472472
473−```
473+```hoon
474474 ++ hor 3.600
475475```
476476
@@ -498,7 +498,7 @@ An atom.
498498
499499#### Source
500500
501−```
501+```hoon
502502 ++ jes 106.751.991.084.417
503503```
504504
@@ -526,7 +526,7 @@ An atom.
526526
527527#### Source
528528
529−```
529+```hoon
530530 ++ mit 60
531531```
532532
@@ -552,7 +552,7 @@ A `list` of `@ud`
552552
553553#### Source
554554
555−```
555+```hoon
556556 ++ moh `(list @ud)`[31 28 31 30 31 30 31 31 30 31 30 31 ~]
557557```
558558
@@ -581,7 +581,7 @@ A `list` of `@ud`.
581581
582582#### Source
583583
584−```
584+```hoon
585585 ++ moy `(list @ud)`[31 29 31 30 31 30 31 31 30 31 30 31 ~]
586586```
587587
@@ -609,7 +609,7 @@ An atom.
609609
610610#### Source
611611
612−```
612+```hoon
613613 ++ qad 126.144.001
614614```
615615
@@ -634,7 +634,7 @@ An atom.
634634
635635#### Source
636636
637−```
637+```hoon
638638 ++ yer 31.536.000
639639```
640640
reference/library/3d.md → hoon/library/3d.mdrenamed+17−17
@@ -20,7 +20,7 @@ An atom.
2020
2121#### Source
2222
23−```
23+```hoon
2424 ++ shad |=(ruz=@ (shax (shax ruz)))
2525```
2626
@@ -37,7 +37,7 @@ An atom.
3737
3838Half SHA-256
3939
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
4141first and last halves of the 256-bit salted hash `shas`.
4242
4343#### Accepts
@@ -48,7 +48,7 @@ first and last halves of the 256-bit salted hash `shas`.
4848
4949#### Source
5050
51−```
51+```hoon
5252 ++ shaf :: half sha-256
5353 |= [sal=@ ruz=@]
5454 =+ haz=(shas sal ruz)
@@ -87,7 +87,7 @@ An atom.
8787
8888#### Source
8989
90−```
90+```hoon
9191 ++ shal
9292 ~/ %shal
9393 |= [len=@ ruz=@] ^- @
@@ -242,7 +242,7 @@ An atom.
242242
243243#### Source
244244
245−```
245+```hoon
246246 ++ sham
247247 |= yux=* ^- @uvH ^- @
248248 ?@ yux
@@ -278,7 +278,7 @@ An atom.
278278
279279#### Source
280280
281−```
281+```hoon
282282 ++ shan
283283 |= ruz=@
284284 =+ [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.
362362
363363Salted hash
364364
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)
366366is performed on `sal` and the product of `ruz` hashed with SHA-256. The product
367367of that logical operation is then itself hashed with SHA-256.
368368
@@ -374,7 +374,7 @@ of that logical operation is then itself hashed with SHA-256.
374374
375375#### Source
376376
377−```
377+```hoon
378378 ++ shas
379379 |= [sal=@ ruz=@]
380380 (shax (mix sal (shax ruz)))
@@ -411,7 +411,7 @@ An atom.
411411
412412#### Source
413413
414−```
414+```hoon
415415 ++ shaw
416416 |= [sal=@ len=@ ruz=@]
417417 (~(raw og (shas sal (mix len ruz))) len)
@@ -436,7 +436,7 @@ Produces an atom by hashing an atom `ruz` with SHA-256.
436436
437437#### Sources
438438
439−```
439+```hoon
440440 ++ shax
441441 ~/ %shax
442442 |= ruz=@ ^- @
@@ -468,7 +468,7 @@ the byte-length of the theoretical buffer represented by the atom.
468468
469469#### Source
470470
471−```
471+```hoon
472472 ++ shay
473473 ~/ %shay
474474 |= [len=@u ruz=@] ^- @
@@ -593,7 +593,7 @@ An atom.
593593
594594#### Source
595595
596−```
596+```hoon
597597 ++ shaz
598598 |= ruz=@ ^- @
599599 (shal [(met 3 ruz) ruz])
@@ -625,7 +625,7 @@ A core.
625625
626626#### Source
627627
628−```
628+```hoon
629629 ++ og
630630 ~/ %og
631631 |_ a=@
@@ -662,7 +662,7 @@ An atom.
662662
663663#### Source
664664
665−```
665+```hoon
666666 ++ rad
667667 |= b=@ ^- @
668668 =+ c=(raw (met 0 b))
@@ -704,7 +704,7 @@ A cell.
704704
705705#### Source
706706
707−```
707+```hoon
708708 ++ rads
709709 |= b=@
710710 =+ r=(rad b)
@@ -747,7 +747,7 @@ An atom.
747747
748748#### Source
749749
750−```
750+```hoon
751751 ++ raw
752752 ~/ %raw
753753 |= b=@ ^- @
@@ -790,7 +790,7 @@ parent core with `(raw b)`.
790790
791791#### Source
792792
793−```
793+```hoon
794794 ++ raws
795795 |= b=@
796796 =+ r=(raw b)
reference/library/3e.md → hoon/library/3e.mdrenamed

The content is the same.

reference/library/3f.md → hoon/library/3f.mdrenamed+20−20
@@ -12,7 +12,7 @@ Used in the `@p` phonetic base.
1212
1313#### Source
1414
15−```
15+```hoon
1616 ++ un
1717 |%
1818```
@@ -36,7 +36,7 @@ An atom.
3636
3737#### Source
3838
39−```
39+```hoon
4040 ++ wren
4141 |= pyn=@ ^- @
4242 =+ len=(met 3 pyn)
@@ -88,7 +88,7 @@ An atom.
8888
8989#### Source
9090
91−```
91+```hoon
9292 ++ wred
9393 |= cry=@ ^- @
9494 =+ len=(met 3 cry)
@@ -141,7 +141,7 @@ An atom.
141141
142142#### Source
143143
144−```
144+```hoon
145145 ++ xafo |=([a=@ b=@] +((mod (add (dec b) a) 255)))
146146```
147147
@@ -178,7 +178,7 @@ An atom.
178178
179179#### Source
180180
181−```
181+```hoon
182182 ++ xaro |=([a=@ b=@] +((mod (add (dec b) (sub 255 (mod a 255))) 255)))
183183```
184184
@@ -213,7 +213,7 @@ An atom.
213213
214214#### Source
215215
216−```
216+```hoon
217217 ++ zaft
218218 |= a=@D
219219 =+ ^= b
@@ -265,7 +265,7 @@ An atom.
265265
266266#### Source
267267
268−```
268+```hoon
269269 ++ zart :: reverse 255-sbox
270270 |= a=@D
271271 =+ ^= b
@@ -315,7 +315,7 @@ An atom.
315315
316316#### Source
317317
318−```
318+```hoon
319319 ++ zyft :: forward 256-sbox
320320 |= a=@D
321321 =+ ^= b
@@ -368,7 +368,7 @@ An atom.
368368
369369#### Source
370370
371−```
371+```hoon
372372 ++ zyrt :: reverse 256-sbox
373373 |= a=@D
374374 =+ ^= b
@@ -407,7 +407,7 @@ An atom.
407407
408408Reversible scrambling, v2
409409
410−```
410+```hoon
411411 ++ ob
412412 |%
413413```
@@ -434,7 +434,7 @@ An atom.
434434
435435#### Source
436436
437−```
437+```hoon
438438 ++ feen
439439 |= pyn=@ ^- @
440440 ?: &((gte pyn 0x1.0000) (lte pyn 0xffff.ffff))
@@ -484,7 +484,7 @@ An atom.
484484
485485#### Source
486486
487−```
487+```hoon
488488 ++ fend
489489 |= cry=@ ^- @
490490 ?: &((gte cry 0x1.0000) (lte cry 0xffff.ffff))
@@ -537,7 +537,7 @@ An atom.
537537
538538#### Source
539539
540−```
540+```hoon
541541 ++ fice :: adapted from
542542 |= nor=@ :: black and rogaway
543543 ^- @ :: "ciphers with
@@ -580,7 +580,7 @@ An atom.
580580
581581#### Source
582582
583−```
583+```hoon
584584 ++ teil :: reverse ++fice
585585 |= vip=@
586586 ^- @
@@ -609,7 +609,7 @@ An atom.
609609
610610Reverse Feistel-like cipher
611611
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
613613used as the round function. The inverse of `rund`.
614614
615615#### Accepts
@@ -626,7 +626,7 @@ A cell of two atoms.
626626
627627#### Source
628628
629−```
629+```hoon
630630 ++ rynd
631631 |= [n=@ l=@ r=@]
632632 ^- [@ @]
@@ -651,7 +651,7 @@ A cell of two atoms.
651651
652652Reverse single Feistel-like
653653
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))
655655is used as the round function. The inverse of `rynd`.
656656
657657#### Accepts
@@ -668,7 +668,7 @@ A cell of two atoms.
668668
669669#### Source
670670
671−```
671+```hoon
672672 ++ rund
673673 |= [n=@ l=@ r=@]
674674 ^- [@ @]
@@ -693,7 +693,7 @@ A cell of two atoms.
693693
694694Key list
695695
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).
697697
698698#### Produces
699699
@@ -701,7 +701,7 @@ A list of atoms of aura `@ux` (hexadecimal).
701701
702702#### Source
703703
704−```
704+```hoon
705705 ++ raku
706706 ^- (list @ux)
707707 :~ 0xb76d.5eed
reference/library/3g.md → hoon/library/3g.mdrenamed+17−17
@@ -13,7 +13,7 @@ and printed using `++so` and `++co` cores.
1313
1414#### Source
1515
16−```
16+```hoon
1717 ++ coin $% [$$ p=dime]
1818 [$blob p=*]
1919 [$many p=(list coin)]
@@ -51,14 +51,14 @@ and printed using `++so` and `++co` cores.
5151
5252Aura-atom pair
5353
54−Used in `++coin`. Convenience methods [`++scot`](@/docs/reference/library/4m.md) and
55−[`++scow`](@/docs/reference/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
54+Used in `++coin`. Convenience methods [`++scot`](@/docs/hoon/library/4m.md) and
55+[`++scow`](@/docs/hoon/library/4m.md) print dimes as `++cord` and `++tape`, respectively.
56+[`++slat`](@/docs/hoon/library/4m.md), [`++slav`](@/docs/hoon/library/4m.md), and [`++slaw`](@/docs/hoon/library/4m.md) are used
5757to parse atoms of specific auras.
5858
5959#### Source
6060
61−```
61+```hoon
6262 ++ dime [p=@ta q=@]
6363```
6464
@@ -78,7 +78,7 @@ Optional result `p` and parsing continuation `q`.
7878
7979#### Source
8080
81−```
81+```hoon
8282 ++ hair [p=@ud q=@ud]
8383```
8484
@@ -94,7 +94,7 @@ Optional result `p` and parsing continuation `q`.
9494
9595#### Discussion
9696
97−See also: [Section 2e](@/docs/reference/library/2e.md), `++rule`
97+See also: [Section 2e](@/docs/hoon/library/2e.md), `++rule`
9898
9999
100100---
@@ -106,7 +106,7 @@ A pair of two `@ud` used in parsing indicating line and column number.
106106
107107#### Source
108108
109−```
109+```hoon
110110 ++ hair [p=@ud q=@ud]
111111```
112112
@@ -135,7 +135,7 @@ Generates an `++edge` with a parsed result set to a specific type.
135135
136136#### Source
137137
138−```
138+```hoon
139139 ++ like |* a=gate
140140 |= b=_`*`[(hair) ~]
141141 :- p=(hair -.b)
@@ -169,7 +169,7 @@ Indicates parsing position `p`, and remaining text to be parsed `q`.
169169
170170#### Source
171171
172−```
172+```hoon
173173 ++ nail [p=hair q=tape]
174174```
175175
@@ -189,7 +189,7 @@ A list of `++knot`s. `++knot` is another name for `@ta`.
189189
190190#### Source
191191
192−```
192+```hoon
193193 ++ path (list knot)
194194```
195195
@@ -214,7 +214,7 @@ stack traces.
214214
215215#### Source
216216
217−```
217+```hoon
218218 ++ pint [p=[p=@ q=@] q=[p=@ q=@]]
219219```
220220
@@ -239,7 +239,7 @@ An empty parsing rule, but used to check that parsing rules match this with `_`.
239239
240240#### Source
241241
242−```
242+```hoon
243243 ++ rule _|=(nail *edge)
244244```
245245
@@ -259,7 +259,7 @@ The stack trace that is printed after crashing.
259259
260260#### Source
261261
262−```
262+```hoon
263263 ++ spot [p=path q=pint]
264264```
265265
@@ -282,7 +282,7 @@ or failure with an error report (`%2`).
282282
283283#### Source
284284
285−```
285+```hoon
286286 ++ tone $% [$0 p=*] :: success
287287 [$1 p=(list)] :: blocks
288288 [$2 p=(list [@ta *])] :: error report
@@ -330,7 +330,7 @@ or failure with a stack trace (`%2`).
330330
331331#### Source
332332
333−```
333+```hoon
334334 ++ toon $% [$0 p=*] :: success
335335 [$1 p=(list)] :: blocks
336336 [$2 p=(list tank)] :: stack trace
@@ -356,7 +356,7 @@ Pull result out of a `++edge`, or crash if there's no result.
356356
357357#### Source
358358
359−```
359+```hoon
360360 ++ wonk |*(veq=edge ?~(q.veq !! p.u.q.veq))
361361```
362362
reference/library/4a.md → hoon/library/4a.mdrenamed+5−5
@@ -13,7 +13,7 @@ contained arms.
1313
1414#### Source
1515
16−```
16+```hoon
1717 ~/ %po
1818 =+ :- ^= sis :: prefix syllables
1919 'dozmarbinwansamlitsighidfidlissogdirwacsabwissib\
@@ -69,7 +69,7 @@ A `unit`.
6969
7070#### Source
7171
72−```
72+```hoon
7373 ++ ind ~/ %ind
7474 |= a=@tas
7575 =+ b=0
@@ -107,7 +107,7 @@ A `unit` of an atom.
107107
108108#### Source
109109
110−```
110+```hoon
111111 ++ ins ~/ %ins
112112 |= a=@tas
113113 =+ b=0
@@ -148,7 +148,7 @@ An atom.
148148
149149#### Source
150150
151−```
151+```hoon
152152 ++ tod ~/ %tod
153153 |=(a=@ ?>((lth a 256) (cut 3 [(mul 3 a) 3] dex)))
154154```
@@ -192,7 +192,7 @@ An atom.
192192
193193#### Source
194194
195−```
195+```hoon
196196 ++ tos ~/ %tos
197197 |=(a=@ ?>((lth a 256) (cut 3 [(mul 3 a) 3] sis)))
198198```
reference/library/4b.md → hoon/library/4b.mdrenamed+32−32
@@ -5,7 +5,7 @@ template = "doc.html"
55+++
66### `++at`
77
8−```
8+```hoon
99 ++ at
1010 |_ a=@
1111```
@@ -16,7 +16,7 @@ XX document
1616
1717### `++r:at`
1818
19−```
19+```hoon
2020 ++ r
2121 ?: ?& (gte (met 3 a) 2)
2222 |-
@@ -38,7 +38,7 @@ XX document
3838
3939### `++rf:at`
4040
41−```
41+```hoon
4242 ++ rf `tape`[?-(a $& '&', $| '|', * !!) ~]
4343```
4444
@@ -47,7 +47,7 @@ XX document
4747
4848### `++rn:at`
4949
50−```
50+```hoon
5151 ++ rn `tape`[?>(=(0 a) '~') ~]
5252```
5353
@@ -55,7 +55,7 @@ XX document
5555
5656### `++rt:at`
5757
58−```
58+```hoon
5959 ++ rt `tape`['\'' (weld (mesc (trip a)) `tape`['\'' ~])]
6060```
6161
@@ -63,7 +63,7 @@ XX document
6363
6464### `++rta:at`
6565
66−```
66+```hoon
6767 ++ rta rt
6868```
6969
@@ -71,7 +71,7 @@ XX document
7171
7272### `++rtam:at`
7373
74−```
74+```hoon
7575 ++ rtam `tape`['%' (trip a)]
7676```
7777
@@ -79,7 +79,7 @@ XX document
7979
8080### `++rub:at`
8181
82−```
82+```hoon
8383 ++ rub `tape`['0' 'b' (rum 2 ~ |=(b/@ (add '0' b)))]
8484```
8585
@@ -87,7 +87,7 @@ XX document
8787
8888### `++rud:at`
8989
90−```
90+```hoon
9191 ++ rud (rum 10 ~ |=(b/@ (add '0' b)))
9292```
9393
@@ -95,7 +95,7 @@ XX document
9595
9696### `++rum:at`
9797
98−```
98+```hoon
9999 ++ rum
100100 |= {b/@ c/tape d/$-(@ @)}
101101 ^- tape
@@ -118,7 +118,7 @@ XX document
118118
119119### `++rup:at`
120120
121−```
121+```hoon
122122 ++ rup
123123 =+ b=(met 3 a)
124124 ^- tape
@@ -147,7 +147,7 @@ XX document
147147
148148### `++ruv:at`
149149
150−```
150+```hoon
151151 ++ ruv
152152 ^- tape
153153 :+ '0'
@@ -168,7 +168,7 @@ XX document
168168
169169### `++rux:at`
170170
171−```
171+```hoon
172172 ++ rux `tape`['0' 'x' (rum 16 ~ |=(b/@ (add b ?:((lth b 10) 48 87))))]
173173 --
174174 :::::::::::::::::::::::::::::::::::::::::::::::::::::: ::
@@ -198,7 +198,7 @@ A `++tape`.
198198
199199#### Source
200200
201−```
201+```hoon
202202 ++ cass :: lowercase
203203 |= vib/tape
204204 ^- tape
@@ -235,7 +235,7 @@ A `++cord`.
235235
236236#### Source
237237
238−```
238+```hoon
239239 ++ crip |=(a=tape `@t`(rap 3 a)) :: tape to cord
240240```
241241
@@ -270,7 +270,7 @@ A `++tape`.
270270
271271#### Source
272272
273−```
273+```hoon
274274 ++ cuss :: uppercase
275275 |= vib/tape
276276 ^- tape
@@ -307,7 +307,7 @@ A `++tape`.
307307
308308#### Source
309309
310−```
310+```hoon
311311 ++ mesc :: ctrl code escape
312312 |= vib/tape
313313 ^- tape
@@ -351,7 +351,7 @@ A `++tape`.
351351
352352#### Source
353353
354−```
354+```hoon
355355 ++ runt :: prepend repeatedly
356356 |= [[a/@ b/@] c/tape]
357357 ^- tape
@@ -390,7 +390,7 @@ A `(unit @)`.
390390
391391#### Source
392392
393−```
393+```hoon
394394 ++ sand :: atom sanity
395395 |= a/@ta
396396 |= b/@ ^- (unit @)
@@ -427,7 +427,7 @@ A boolean.
427427
428428#### Source
429429
430−```
430+```hoon
431431 ++ sane :: atom sanity
432432 |= a/@ta
433433 |= b/@ ^- ?
@@ -494,7 +494,7 @@ An atom.
494494
495495#### Source
496496
497−```
497+```hoon
498498 |= a/@t ^- @
499499 =+ b=(end 3 1 a)
500500 ~| %bad-utf8
@@ -533,7 +533,7 @@ A cell of `++tape`s, `p` and `q`.
533533
534534#### Source
535535
536−```
536+```hoon
537537 ++ trim :: 31-bit nonzero
538538 |= key/@
539539 =+ syd=0xcafe.babe
@@ -572,7 +572,7 @@ A `++tape`.
572572
573573#### Source
574574
575−```
575+```hoon
576576 ++ trip :: cord to tape
577577 ~/ %trip
578578 |= a/@ ^- tape
@@ -611,7 +611,7 @@ A `++list` of codepoints `@c`.
611611
612612#### Source
613613
614−```
614+```hoon
615615 ++ tuba :: utf8 to utf32 tape
616616 |= a/tape
617617 ^- (list @c)
@@ -646,7 +646,7 @@ A `++tape`.
646646
647647#### Source
648648
649−```
649+```hoon
650650 ++ tufa :: utf32 to utf8 tape
651651 |= a=(list @c)
652652 ^- tape
@@ -657,7 +657,7 @@ A `++tape`.
657657
658658#### Examples
659659
660−```
660+```hoon
661661 > (tufa ~[~-~44f. ~-. ~-~442. ~-~443. ~-~442.])
662662 "я тут"
663663 > (tufa ((list @c) ~[%a %b 0xb1 %c]))
@@ -683,7 +683,7 @@ A `++cord`.
683683
684684#### Source
685685
686−```
686+```hoon
687687 ++ tuft :: utf32 to utf8 text
688688 |= a/@c
689689 ^- @t
@@ -741,7 +741,7 @@ A `@c`, UTF-32 codepoint.
741741
742742#### Source
743743
744−```
744+```hoon
745745 ++ turf :: utf8 to utf32
746746 |= a/@t
747747 ^- @c
@@ -798,7 +798,7 @@ A `++span` (`@ta`).
798798
799799#### Source
800800
801−```
801+```hoon
802802 ++ wack :: coin format
803803 |= a/@ta
804804 ^- @ta
@@ -846,7 +846,7 @@ A `++span` `@ta`.
846846
847847#### Source
848848
849−```
849+```hoon
850850 ++ wick :: knot format
851851 |= a/@
852852 ^- (unit @ta)
@@ -894,7 +894,7 @@ A `++cord`.
894894
895895#### Source
896896
897−```
897+```hoon
898898 ++ woad :: cord format
899899 |= a/@ta
900900 ^- @t
@@ -955,7 +955,7 @@ A `++span` (`@ta`).
955955
956956#### Source
957957
958−```
958+```hoon
959959 ++ wood :: cord format
960960 |= a/@t
961961 ^- @ta
reference/library/4c.md → hoon/library/4c.mdrenamed+8−8
@@ -15,7 +15,7 @@ Pretty-printing engine that accepts a `++tank` sample and contains arms that per
1515
1616#### Produces
1717
18−```
18+```hoon
1919 ++ re
2020 |_ tac/tank
2121```
@@ -44,7 +44,7 @@ A `++tape`.
4444
4545#### Source
4646
47−```
47+```hoon
4848 ++ ram
4949 ^- tape
5050 ?- -.tac
@@ -89,7 +89,7 @@ A `++wall` (`++list` of `++tapes`).
8989
9090#### Source
9191
92−```
92+```hoon
9393 ++ win
9494 |= {tab/@ edg/@}
9595 =+ lug=`wall`~
@@ -191,7 +191,7 @@ A `++wall` (list of `++tape`s).
191191
192192#### Source
193193
194−```
194+```hoon
195195 ++ rig
196196 |= hom/tape
197197 ^- wall
@@ -229,7 +229,7 @@ Render `++tape`. Internal to `++win`.
229229
230230#### Produces
231231
232−```
232+```hoon
233233 ++ wig
234234 |= hom/tape
235235 ^- wall
@@ -252,7 +252,7 @@ Render `++tape`. Internal to `++win`.
252252---
253253### `++show`
254254
255−```
255+```hoon
256256 ++ show :: XX deprecated, use span
257257 |= vem/*
258258 |^ ^- tank
@@ -315,7 +315,7 @@ XX document
315315
316316### `++shep`
317317
318−```
318+```hoon
319319 ++ shep
320320 |= {fom/@ gar/*}
321321 ^- tank
@@ -339,7 +339,7 @@ XX document
339339
340340### `++shop`
341341
342−```
342+```hoon
343343 ++ shop
344344 |= {aug/* vel/$-(a/@ tape)}
345345 ^- tank
reference/library/4d.md → hoon/library/4d.mdrenamed+2−2
@@ -22,7 +22,7 @@ A `hair`.
2222
2323#### Source
2424
25−```
25+```hoon
2626 ++ last |= [zyc=hair naz=hair]
2727 ^- hair
2828 ?: =(p.zyc p.naz)
@@ -66,7 +66,7 @@ A hair.
6666
6767#### Source
6868
69−```
69+```hoon
7070 ++ lust |= [weq=char naz=hair]
7171 ^- hair
7272 ?:(=(`@`10 weq) [+(p.naz) 1] [p.naz +(q.naz)])
reference/library/4e.md → hoon/library/4e.mdrenamed+10−10
@@ -27,7 +27,7 @@ A `++rule`.
2727
2828#### Source
2929
30−```
30+```hoon
3131 ++ bend :: conditional comp
3232 ~/ %bend
3333 |* raq/_|*({a/* b/*} [~ u=[a b]])
@@ -94,7 +94,7 @@ A `++rule`.
9494
9595#### Source
9696
97−```
97+```hoon
9898 ++ comp
9999 ~/ %comp
100100 |* raq/_|*({a/* b/*} [a b]) :: arbitrary compose
@@ -139,7 +139,7 @@ An `++edge`.
139139
140140#### Source
141141
142−```
142+```hoon
143143 ++ fail |=(tub/nail [p=p.tub q=~]) :: never parse
144144```
145145
@@ -177,7 +177,7 @@ result.
177177
178178#### Source
179179
180−```
180+```hoon
181181 ++ glue :: add rule
182182 ~/ %glue
183183 |* bus/rule
@@ -223,7 +223,7 @@ connect `vex` with the following `++rule`.
223223
224224#### Source
225225
226−```
226+```hoon
227227 ++ less :: no first and second
228228 |* {vex/edge sab/rule}
229229 ?~ q.vex
@@ -267,7 +267,7 @@ ignoring the result of the first and producing the result of the second.
267267
268268#### Source
269269
270−```
270+```hoon
271271 ++ pfix :: discard first rule
272272 ~/ %pfix
273273 (comp |*({a/* b/*} b))
@@ -305,7 +305,7 @@ more detailed explanation.
305305
306306#### Source
307307
308−```
308+```hoon
309309 ++ plug :: first then second
310310 ~/ %plug
311311 |* {vex/edge sab/rule}
@@ -353,7 +353,7 @@ following rule `sab`. See also: the monad applicator ;\~
353353
354354#### Source
355355
356−```
356+```hoon
357357 ++ pose :: first or second
358358 ~/ %pose
359359 |* {vex/edge sab/rule}
@@ -402,7 +402,7 @@ result of the first and discarding the result of the second.
402402
403403#### Source
404404
405−```
405+```hoon
406406 ++ sfix :: discard second rule
407407 ~/ %sfix
408408 (comp |*({a/* b/*} a))
@@ -439,7 +439,7 @@ connect `vex` with the following `++rule`.
439439
440440#### Source
441441
442−```
442+```hoon
443443 ++ simu :: first and second
444444 |* {vex/edge sab/rule}
445445 ?~ q.vex
reference/library/4f.md → hoon/library/4f.mdrenamed+26−26
@@ -20,7 +20,7 @@ A `++rule`.
2020
2121#### Source
2222
23−```
23+```hoon
2424 ++ bass
2525 |* {wuc/@ tyd/rule}
2626 %+ cook
@@ -64,7 +64,7 @@ A `++rule`.
6464
6565#### Source
6666
67−```
67+```hoon
6868 ++ boss
6969 |* {wuc/@ tyd/rule}
7070 %+ cook
@@ -109,7 +109,7 @@ An `++edge`.
109109
110110#### Source
111111
112−```
112+```hoon
113113 ++ cold :: replace w+ constant
114114 ~/ %cold
115115 |* {cus/* sef/rule}
@@ -152,7 +152,7 @@ An `++rule`.
152152
153153#### Source
154154
155−```
155+```hoon
156156 ++ cook :: apply gate
157157 ~/ %cook
158158 |* {poq/gate sef/rule}
@@ -200,7 +200,7 @@ A `++rule`.
200200
201201#### Source
202202
203−```
203+```hoon
204204 ++ easy :: always parse
205205 ~/ %easy
206206 |* huf=*
@@ -243,7 +243,7 @@ A `++rule`.
243243
244244#### Source
245245
246−```
246+```hoon
247247 ++ full :: parse to end
248248 |* sef=_rule
249249 |= tub=nail
@@ -285,7 +285,7 @@ A `++rule`.
285285
286286#### Source
287287
288−```
288+```hoon
289289 ++ funk :: add to tape first
290290 |* {pre/tape sef/rule}
291291 |= tub/nail
@@ -324,7 +324,7 @@ A `++rule`.
324324
325325#### Source
326326
327−```
327+```hoon
328328 ++ here :: place-based apply
329329 ~/ %here
330330 |* {hez/_|=({a/pint b/*} [a b]) sef/rule}
@@ -371,7 +371,7 @@ A `++rule`.
371371
372372#### Source
373373
374−```
374+```hoon
375375 ++ ifix
376376 |* {fel/{rule rule} hof/rule}
377377 ~! +<
@@ -409,7 +409,7 @@ An `++edge`.
409409
410410#### Source
411411
412−```
412+```hoon
413413 ++ jest :: match a cord
414414 |= daf/@t
415415 |= tub/nail
@@ -462,7 +462,7 @@ A `++rule`.
462462
463463#### Source
464464
465−```
465+```hoon
466466 ++ just :: XX redundant, jest
467467 ~/ %just :: match a char
468468 |= daf/char
@@ -516,7 +516,7 @@ A `++rule`.
516516
517517#### Source
518518
519−```
519+```hoon
520520 ++ knee :: callbacks
521521 |* {gar/* sef/_|.(*rule)}
522522 |= tub/nail
@@ -570,7 +570,7 @@ A `++rule`.
570570
571571#### Source
572572
573−```
573+```hoon
574574 ++ mask :: match char in set
575575 ~/ %mask
576576 |= bud/(list char)
@@ -620,7 +620,7 @@ A `++rule`.
620620
621621#### Source
622622
623−```
623+```hoon
624624 ++ more
625625 |* {bus/rule fel/rule}
626626 ;~(pose (most bus fel) (easy ~))
@@ -660,7 +660,7 @@ A `++rule`.
660660
661661#### Source
662662
663−```
663+```hoon
664664 ++ most
665665 |* {bus/rule fel/rule}
666666 ;~(plug fel (star ;~(pfix bus fel)))
@@ -699,7 +699,7 @@ An `++edge`.
699699
700700#### Source
701701
702−```
702+```hoon
703703 ++ next :: consume a char
704704 |= tub/nail
705705 ^- (like char)
@@ -739,7 +739,7 @@ A `++rule`.
739739
740740#### Source
741741
742−```
742+```hoon
743743 ++ plus |*(fel/rule ;~(plug fel (star fel)))
744744```
745745
@@ -778,7 +778,7 @@ A `++rule`.
778778
779779#### Source
780780
781−```
781+```hoon
782782 ++ sear :: conditional cook
783783 |* {pyq/$-(* (unit)) sef/rule}
784784 |= tub/nail
@@ -822,7 +822,7 @@ A `++rule`.
822822
823823#### Source
824824
825−```
825+```hoon
826826 ++ shim :: match char in range
827827 ~/ %shim
828828 |= {les/@ mos/@}
@@ -871,7 +871,7 @@ A `++rule`.
871871
872872#### Source
873873
874−```
874+```hoon
875875 ++ slug
876876 |* raq/_|*({a/* b/*} [a b])
877877 |* {bus/rule fel/rule}
@@ -909,7 +909,7 @@ A `++rule`.
909909
910910#### Source
911911
912−```
912+```hoon
913913 ++ stag :: add a label
914914 ~/ %stag
915915 |* {gob/* sef/rule}
@@ -949,7 +949,7 @@ Parser modifier: parse `++list` of matches.
949949
950950#### Produces
951951
952−```
952+```hoon
953953 ++ star :: 0 or more times
954954 |* fel/rule
955955 (stir `(list _(wonk *fel))`~ |*({a/* b/*} [a b]) fel)
@@ -996,7 +996,7 @@ Add faces `[p q]` to range-parser pairs in a list.
996996
997997#### Source
998998
999−```
999+```hoon
10001000 ++ stet
10011001 |* leh/(list {?(@ {@ @}) rule})
10021002 |-
@@ -1035,7 +1035,7 @@ Add faces `[p q]` to range-parser pairs in a list.
10351035
10361036Switch by first
10371037
1038−```
1038+```hoon
10391039 ++ stew :: switch by first char
10401040 ~/ %stew
10411041 |* leh/(list {p/?(@ {@ @}) q/rule}) :: char+range keys
@@ -1111,7 +1111,7 @@ A rule.
11111111
11121112#### Source
11131113
1114−```
1114+```hoon
11151115 ++ stir
11161116 ~/ %stir
11171117 |* {rud/* raq/_=>(~ |*({a/* b/*} [a b])) fel/rule}
@@ -1156,7 +1156,7 @@ A `++rule`.
11561156
11571157#### Source
11581158
1159−```
1159+```hoon
11601160 ++ stun :: parse several times
11611161 |* {lig/{@ @} fel/rule}
11621162 |= tub/nail
reference/library/4g.md → hoon/library/4g.mdrenamed+4−4
@@ -22,7 +22,7 @@ The value of the parse result, or crash.
2222
2323#### Source
2424
25−```
25+```hoon
2626 ++ rash |*({naf/@ sab/rule} (scan (trip naf) sab)) ::
2727```
2828
@@ -67,7 +67,7 @@ The value of the parse result, or null.
6767
6868#### Source
6969
70−```
70+```hoon
7171 ++ rush |*({naf/@ sab/rule} (rust (trip naf) sab))
7272```
7373
@@ -111,7 +111,7 @@ A `(unit ,@t)`
111111
112112#### Source
113113
114−```
114+```hoon
115115 ++ rust |* {los/tape sab/rule}
116116 =+ vex=((full sab) [[1 1] los])
117117 ?~(q.vex ~ [~ u=p.u.q.vex])
@@ -151,7 +151,7 @@ Either a `++tape` or a crash.
151151
152152#### Source
153153
154−```
154+```hoon
155155 ++ scan |* {los/tape sab/rule}
156156 =+ vex=((full sab) [[1 1] los])
157157 ?~ q.vex
reference/library/4h.md → hoon/library/4h.mdrenamed+34−34
@@ -11,7 +11,7 @@ Parses ASCII character 32, space.
1111
1212#### Source
1313
14−```
14+```hoon
1515 ++ ace (just ' ')
1616```
1717
@@ -42,7 +42,7 @@ Parses ASCII character 124, the vertical bar.
4242
4343#### Source
4444
45−```
45+```hoon
4646 ++ bar (just '|')
4747```
4848
@@ -69,12 +69,12 @@ Parses ASCII character 124, the vertical bar.
6969Parse backslash
7070
7171Parses 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
7373character, `\`.
7474
7575#### Source
7676
77−```
77+```hoon
7878 ++ bas (just '\\')
7979```
8080
@@ -107,7 +107,7 @@ Parses ASCII character 36, the dollar sign.
107107
108108#### Source
109109
110−```
110+```hoon
111111 ++ buc (just '$')
112112```
113113
@@ -137,7 +137,7 @@ Parses ASCII character 95, the underscore.
137137
138138#### Source
139139
140−```
140+```hoon
141141 ++ cab (just '_')
142142```
143143
@@ -167,7 +167,7 @@ Parses ASCII character 37, the percent sign.
167167
168168#### Source
169169
170−```
170+```hoon
171171 ++ cen (just '%')
172172```
173173
@@ -197,7 +197,7 @@ Parses ASCII character 58, the colon
197197
198198#### Source
199199
200−```
200+```hoon
201201 ++ col (just ':')
202202```
203203
@@ -226,7 +226,7 @@ Parses ASCII character 44, the comma.
226226
227227#### Source
228228
229−```
229+```hoon
230230 ++ com (just ',')
231231```
232232
@@ -256,7 +256,7 @@ Parses ASCII character 34, the double quote.
256256
257257#### Source
258258
259−```
259+```hoon
260260 ++ doq (just '"')
261261```
262262
@@ -291,7 +291,7 @@ Parses ASCII character 46, the period.
291291
292292#### Source
293293
294−```
294+```hoon
295295 ++ dot (just '.')
296296```
297297
@@ -321,7 +321,7 @@ Parses ASCII character 47, the forward slash.
321321
322322#### Source
323323
324−```
324+```hoon
325325 ++ fas (just '/')
326326```
327327
@@ -348,7 +348,7 @@ Parses ASCII character 60, the less-than sign.
348348
349349#### Source
350350
351−```
351+```hoon
352352 ++ gal (just '<')
353353```
354354
@@ -378,7 +378,7 @@ Parses ASCII character 62, the greater-than sign.
378378
379379#### Source
380380
381−```
381+```hoon
382382 ++ gar (just '>')
383383```
384384
@@ -408,7 +408,7 @@ Parses ASCII character 35, the number sign.
408408
409409#### Source
410410
411−```
411+```hoon
412412 ++ hax (just '#')
413413```
414414
@@ -435,7 +435,7 @@ Parses ASCII character 45, the hyphen.
435435
436436#### Source
437437
438−```
438+```hoon
439439 ++ hep (just '-')
440440```
441441
@@ -464,7 +464,7 @@ interpolation. To parse either of them, they must be escaped.
464464
465465#### Source
466466
467−```
467+```hoon
468468 ++ kel (just '{')
469469```
470470
@@ -493,7 +493,7 @@ interpolation. To parse either of them, they must be escaped.
493493
494494#### Source
495495
496−```
496+```hoon
497497 ++ ker (just '}')
498498```
499499
@@ -520,7 +520,7 @@ Parses ASCII character 94, the caret.
520520
521521#### Source
522522
523−```
523+```hoon
524524 ++ ket (just '^')
525525```
526526
@@ -546,7 +546,7 @@ Parses ASCII character 43, the plus sign.
546546
547547#### Source
548548
549−```
549+```hoon
550550 ++ lus (just '+')
551551```
552552
@@ -576,7 +576,7 @@ Parses ASCII character 38, the ampersand.
576576
577577#### Source
578578
579−```
579+```hoon
580580 ++ pam (just '&')
581581```
582582
@@ -606,7 +606,7 @@ Parses ASCII character 64, the "at" sign.
606606
607607#### Source
608608
609−```
609+```hoon
610610 ++ pat (just '@')
611611```
612612
@@ -636,7 +636,7 @@ Parses ASCII character 40, the left parenthesis.
636636
637637#### Source
638638
639−```
639+```hoon
640640 ++ pel (just '(')
641641```
642642
@@ -663,7 +663,7 @@ Parses ASCII character 41, the right parenthesis.
663663
664664#### Source
665665
666−```
666+```hoon
667667 ++ per (just ')')
668668```
669669
@@ -690,7 +690,7 @@ Parses ASCII character 91, the left square bracket.
690690
691691#### Source
692692
693−```
693+```hoon
694694 ++ sel (just '[')
695695```
696696
@@ -717,7 +717,7 @@ Parses ASCII character 59, the semicolon.
717717
718718#### Source
719719
720−```
720+```hoon
721721 ++ sem (just ';')
722722```
723723
@@ -744,7 +744,7 @@ Parses ASCII character 93, the right square bracket.
744744
745745#### Source
746746
747−```
747+```hoon
748748 ++ ser (just ']')
749749```
750750
@@ -771,7 +771,7 @@ Parses ASCII character 126, the tilde.
771771
772772#### Source
773773
774−```
774+```hoon
775775 ++ sig (just '~')
776776```
777777
@@ -799,7 +799,7 @@ Parses ASCII character 39, soq. Note the extra '' is to escape the first
799799
800800#### Source
801801
802−```
802+```hoon
803803 ++ soq (just '\'')
804804```
805805
@@ -826,7 +826,7 @@ Parses ASCII character 42, the asterisk.
826826
827827#### Source
828828
829−```
829+```hoon
830830 ++ tar (just '*')
831831```
832832
@@ -857,7 +857,7 @@ accent").
857857
858858#### Source
859859
860−```
860+```hoon
861861 ++ tec (just '`') :: backTiCk
862862```
863863
@@ -887,7 +887,7 @@ Parses ASCII character 61, the equals sign.
887887
888888#### Source
889889
890−```
890+```hoon
891891 ++ tis (just '=')
892892```
893893
@@ -913,7 +913,7 @@ Parses ASCII character 63, the question mark.
913913
914914#### Source
915915
916−```
916+```hoon
917917 ++ wut (just '?')
918918```
919919
@@ -940,7 +940,7 @@ Parses ASCII character 33, the exclamation point zap.
940940
941941#### Source
942942
943−```
943+```hoon
944944 ++ zap (just '!')
945945```
946946
reference/library/4i.md → hoon/library/4i.mdrenamed+37−37
@@ -11,7 +11,7 @@ Parse alphabetic characters, both upper and lowercase.
1111
1212#### Source
1313
14−```
14+```hoon
1515 ++ alf ;~(pose low hig) :: alphabetic
1616```
1717
@@ -38,7 +38,7 @@ Parse alphanumeric characters - both alphabetic characters and numbers.
3838
3939#### Source
4040
41−```
41+```hoon
4242 ++ aln ;~(pose low hig nud) :: alphanumeric
4343```
4444
@@ -65,7 +65,7 @@ Parse alphanumeric strings and hep, "-".
6565
6666#### Source
6767
68−```
68+```hoon
6969 ++ alp ;~(pose low hig nud hep) :: alphanumeric and -
7070```
7171
@@ -93,7 +93,7 @@ Parse the hep and lus axis syntax.
9393
9494#### Source
9595
96−```
96+```hoon
9797 ++ bet ;~(pose (cold 2 hep) (cold 3 lus)) :: axis syntax - +
9898```
9999
@@ -117,7 +117,7 @@ Parse a tape of binary (0s and 1s) and produce its atomic representation.
117117
118118#### Source
119119
120−```
120+```hoon
121121 ++ bin (bass 2 (most gon but)) :: binary to atom
122122```
123123
@@ -147,7 +147,7 @@ Parse a single binary digit.
147147
148148#### Source
149149
150−```
150+```hoon
151151 ++ but (cook |=(a=@ (sub a '0')) (shim '0' '1')) :: binary digit
152152```
153153
@@ -176,7 +176,7 @@ Parse a single octal digit.
176176
177177#### Source
178178
179−```
179+```hoon
180180 ++ cit (cook |=(a=@ (sub a '0')) (shim '0' '7')) :: octal digit
181181```
182182
@@ -205,7 +205,7 @@ Parse a decimal number to an atom.
205205
206206#### Source
207207
208−```
208+```hoon
209209 ++ dem (bass 10 (most gon dit)) :: decimal to atom
210210```
211211
@@ -232,7 +232,7 @@ Parse a single decimal digit.
232232
233233#### Source
234234
235−```
235+```hoon
236236 ++ dit (cook |=(a=@ (sub a '0')) (shim '0' '9')) :: decimal digit
237237```
238238
@@ -257,7 +257,7 @@ Dot followed by an optional gap, used with numbers.
257257
258258#### Source
259259
260−```
260+```hoon
261261 ++ dog ;~(plug dot gay) ::
262262```
263263
@@ -282,7 +282,7 @@ Phonetic base phrase separator
282282
283283#### Source
284284
285−```
285+```hoon
286286 ++ doh ;~(plug ;~(plug hep hep) gay) ::
287287```
288288
@@ -310,7 +310,7 @@ Parse phep, `--`, to null, `~`.
310310
311311#### Source
312312
313−```
313+```hoon
314314 ++ dun (cold ~ ;~(plug hep hep)) :: -- (phep) to ~
315315```
316316
@@ -334,7 +334,7 @@ Parse stet, `==`, to null `~`.
334334
335335#### Source
336336
337−```
337+```hoon
338338 ++ duz (cold ~ ;~(plug tis tis)) :: == (stet) to ~
339339```
340340
@@ -358,7 +358,7 @@ Whitespace component, either newline or space.
358358
359359#### Source
360360
361−```
361+```hoon
362362 ++ gah (mask [`@`10 ' ' ~]) :: newline or ace
363363```
364364
@@ -395,7 +395,7 @@ Separates tall runes
395395
396396#### Source
397397
398−```
398+```hoon
399399 ++ gap (cold ~ ;~(plug gaq (star ;~(pose vul gah)))) :: plural whitespace
400400```
401401
@@ -409,7 +409,7 @@ Two spaces, a newline, or comment.
409409
410410#### Source
411411
412−```
412+```hoon
413413 ++ gaq ;~ pose :: end of line
414414 (just `@`10)
415415 ;~(plug gah ;~(pose gah vul))
@@ -428,7 +428,7 @@ Terran whitespace.
428428
429429#### Source
430430
431−```
431+```hoon
432432 ++ gaw (cold ~ (star ;~(pose vul gah))) :: classic white
433433```
434434
@@ -442,7 +442,7 @@ Optional gap.
442442
443443#### Source
444444
445−```
445+```hoon
446446 ++ gay ;~(pose gap (easy ~)) ::
447447```
448448
@@ -455,7 +455,7 @@ Parse long numbers - Numbers which wrap around the shell with the line
455455
456456#### Source
457457
458−```
458+```hoon
459459 ++ gon ;~(pose ;~(plug bas gay fas) (easy ~)) :: long numbers \ /
460460```
461461
@@ -479,7 +479,7 @@ Parse the axis gal and gar axis syntax.
479479
480480#### Source
481481
482−```
482+```hoon
483483 ++ gul ;~(pose (cold 2 gal) (cold 3 gar)) :: axis syntax < >
484484```
485485
@@ -503,7 +503,7 @@ Parse any hexadecimal number to an atom.
503503
504504#### Source
505505
506−```
506+```hoon
507507 ++ hex (bass 16 (most gon hit)) :: hex to atom
508508```
509509
@@ -535,7 +535,7 @@ Parse a single uppercase letter.
535535
536536#### Source
537537
538−```
538+```hoon
539539 ++ hig (shim 'A' 'Z') :: uppercase
540540```
541541
@@ -565,7 +565,7 @@ Parse a single hexadecimal digit.
565565
566566#### Source
567567
568−```
568+```hoon
569569 ++ hit ;~ pose :: hex digits
570570 dit
571571 (cook |=(a=char (sub a 87)) (shim 'a' 'f'))
@@ -604,7 +604,7 @@ A `++rule`.
604604
605605#### Source
606606
607−```
607+```hoon
608608 ++ inde |* sef/rule :: indentation block
609609 |= nail ^+ (sef)
610610 =+ [har tap]=[p q]:+<
@@ -654,7 +654,7 @@ Parse a single lowercase letter.
654654
655655#### Source
656656
657−```
657+```hoon
658658 ++ low (shim 'a' 'z') :: lowercase
659659```
660660
@@ -681,7 +681,7 @@ Parse a hexbyte.
681681
682682#### Source
683683
684−```
684+```hoon
685685 ++ mes %+ cook :: hexbyte
686686 |=({a/@ b/@} (add (mul 16 a) b))
687687 ;~(plug hit hit)
@@ -708,7 +708,7 @@ Parse Letters and `-`.
708708
709709#### Source
710710
711−```
711+```hoon
712712 ++ nix (boss 256 (star ;~(pose aln cab))) ::
713713```
714714
@@ -733,7 +733,7 @@ Parse a numeric character - A number.
733733
734734#### Source
735735
736−```
736+```hoon
737737 ++ nud (shim '0' '9') :: numeric
738738```
739739
@@ -759,7 +759,7 @@ Parse any printable character.
759759
760760#### Source
761761
762−```
762+```hoon
763763 ++ prn ;~(less (just `@`127) (shim 32 256))
764764```
765765
@@ -785,7 +785,7 @@ Parse an individual character to its cord atom representation.
785785
786786#### Source
787787
788−```
788+```hoon
789789 ++ qit ;~ pose :: chars in a cord
790790 ;~(less bas soq prn)
791791 ;~(pfix bas ;~(pose bas soq mes)) :: escape chars
@@ -823,7 +823,7 @@ Parse an individual character to its cord atom representation.
823823
824824#### Source
825825
826−```
826+```hoon
827827 ++ qit ;~ pose :: chars in a cord
828828 ;~(less bas soq prn)
829829 ;~(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.
863863
864864#### Source
865865
866−```
866+```hoon
867867 ++ qut ;~ pose :: cord
868868 ;~ less soqs
869869 (ifix [soq soq] (boss 256 (more gon qit)))
@@ -903,7 +903,7 @@ Parse a triple-single quote, used for multiline strings.
903903
904904#### Source
905905
906−```
906+```hoon
907907 ++ soz ;~(plug soq soq soq) :: delimiting '''
908908```
909909
@@ -927,7 +927,7 @@ A term: a letter(lowercase), followed by letters, numbers, or `-`.
927927
928928#### Source
929929
930−```
930+```hoon
931931 ++ sym
932932 %+ cook
933933 |=(a=tape (rap 3 ^-((list ,@) a)))
@@ -956,7 +956,7 @@ Axis syntax parser
956956
957957#### Source
958958
959−```
959+```hoon
960960 ++ ven ;~ (comp |=({a/@ b/@} (peg a b))) :: +>- axis syntax
961961 bet
962962 =+ hom=`?`|
@@ -997,7 +997,7 @@ Parse a standard base64 digit.
997997
998998#### Source
999999
1000−```
1000+```hoon
10011001 ++ vit :: base64 digit
10021002 ;~ pose
10031003 (cook |=(a/@ (sub a 65)) (shim 'A' 'Z'))
@@ -1028,7 +1028,7 @@ Comments to null
10281028
10291029#### Source
10301030
1031−```
1031+```hoon
10321032 ++ vul %+ cold ~ :: comments
10331033 ;~ plug col col
10341034 (star prn)
reference/library/4j.md → hoon/library/4j.mdrenamed+56−56
@@ -11,7 +11,7 @@ A core containing numeric parser primitives.
1111
1212#### Source
1313
14−```
14+```hoon
1515 ++ ab
1616 |%
1717```
@@ -41,7 +41,7 @@ A an atom. XX
4141
4242#### Source
4343
44−```
44+```hoon
4545 ++ bix (bass 16 (stun [2 2] six))
4646```
4747
@@ -75,7 +75,7 @@ An atom.
7575
7676#### Source
7777
78−```
78+```hoon
7979 ++ hif (boss 256 ;~(plug tip tiq (easy ~)))
8080```
8181
@@ -107,7 +107,7 @@ An atom. XX
107107
108108#### Source
109109
110−```
110+```hoon
111111 ++ huf %+ cook
112112 |=([a/@ b/@] (wred:un ~(zug mu ~(zag mu [a b]))))
113113 ;~(plug hif ;~(pfix hep hif))
@@ -143,7 +143,7 @@ An atom. XX
143143
144144#### Source
145145
146−```
146+```hoon
147147 ++ hyf (bass 0x1.0000.0000 ;~(plug huf ;~(pfix hep huf) (easy ~)))
148148```
149149
@@ -174,7 +174,7 @@ An atom.
174174
175175#### Source
176176
177−```
177+```hoon
178178 ++ pev (bass 32 ;~(plug sev (stun [0 4] siv)))
179179```
180180
@@ -210,7 +210,7 @@ Up to five @uw (base 64) digits.
210210
211211#### Source
212212
213−```
213+```hoon
214214 ++ pew (bass 64 ;~(plug sew (stun [0 4] siw)))
215215```
216216
@@ -245,7 +245,7 @@ Parsing `++rule`. Parses exactly five base-32 digits.
245245
246246#### Source
247247
248−```
248+```hoon
249249 ++ piv (bass 32 (stun [5 5] siv))
250250```
251251
@@ -273,7 +273,7 @@ Parsing `++rule`. Parses exactly five base-64 digits.
273273
274274#### Source
275275
276−```
276+```hoon
277277 ++ piw (bass 64 (stun [5 5] siw))
278278```
279279
@@ -303,7 +303,7 @@ a leading zero.
303303
304304#### Source
305305
306−```
306+```hoon
307307 ++ qeb (bass 2 ;~(plug seb (stun [0 3] sib)))
308308```
309309
@@ -339,7 +339,7 @@ without a leading zero.
339339
340340#### Source
341341
342−```
342+```hoon
343343 ++ qex (bass 16 ;~(plug sex (stun [0 3] hit)))
344344```
345345
@@ -372,7 +372,7 @@ Parsing `++rule`. Parses exactly four binary digits.
372372
373373#### Source
374374
375−```
375+```hoon
376376 ++ qib (bass 2 (stun [4 4] sib))
377377```
378378
@@ -402,7 +402,7 @@ Parsing `++rule`. Parses exactly four hexadecimal digits.
402402
403403#### Source
404404
405−```
405+```hoon
406406 ++ qix (bass 16 (stun [4 4] six))
407407```
408408
@@ -432,7 +432,7 @@ Parsing `++rule`. Parses the number 1.
432432
433433#### Source
434434
435−```
435+```hoon
436436 ++ seb (cold 1 (just '1'))
437437```
438438
@@ -463,7 +463,7 @@ Parsing `++rule`. Parses a nonzero decimal digit.
463463
464464#### Source
465465
466−```
466+```hoon
467467 ++ sed (cook |=(a/@ (sub a '0')) (shim '1' '9'))
468468```
469469
@@ -491,7 +491,7 @@ Parsing `++rule`. Parses a nonzero base-32 digit
491491
492492#### Source
493493
494−```
494+```hoon
495495 ++ sev ;~(pose sed sov)
496496```
497497
@@ -519,7 +519,7 @@ Parsing `++rule`. Parses a nonzero base-64 digit
519519
520520#### Source
521521
522−```
522+```hoon
523523 ++ sew ;~(pose sed sow)
524524```
525525
@@ -547,7 +547,7 @@ Parsing `++rule`. Parses a nonzero hexadecimal digit.
547547
548548#### Source
549549
550−```
550+```hoon
551551 ++ sex ;~(pose sed sox)
552552```
553553
@@ -575,7 +575,7 @@ Parsing `++rule`. Parses a binary digit.
575575
576576#### Source
577577
578−```
578+```hoon
579579 ++ sib (cook |=(a/@ (sub a '0')) (shim '0' '1'))
580580```
581581
@@ -602,7 +602,7 @@ Parsing `++rule`. Parses a decimal digit.
602602
603603#### Source
604604
605−```
605+```hoon
606606 ++ sid (cook |=(a/@ (sub a '0')) (shim '0' '9'))
607607```
608608
@@ -627,7 +627,7 @@ Parsing `++rule`. Parses a base-32 digit.
627627
628628#### Source
629629
630−```
630+```hoon
631631 ++ siv ;~(pose sid sov)
632632```
633633
@@ -652,7 +652,7 @@ Parsing `++rule`. Parses a base-64 digit.
652652
653653#### Source
654654
655−```
655+```hoon
656656 ++ siw ;~(pose sid sow)
657657```
658658
@@ -677,7 +677,7 @@ Parsing `++rule`. Parses a hexadecimal digit.
677677
678678#### Source
679679
680−```
680+```hoon
681681 ++ six ;~(pose sid sox)
682682```
683683
@@ -702,7 +702,7 @@ Parsing `++rule`. Parses a base-32 letter.
702702
703703#### Source
704704
705−```
705+```hoon
706706 ++ sov (cook |=(a/@ (sub a 87)) (shim 'a' 'v'))
707707```
708708
@@ -726,7 +726,7 @@ Parsing `++rule`. Parses a base-64 letter/symbol.
726726
727727#### Source
728728
729−```
729+```hoon
730730 ++ sow ;~ pose
731731 (cook |=(a/@ (sub a 87)) (shim 'a' 'z'))
732732 (cook |=(a/@ (sub a 29)) (shim 'A' 'Z'))
@@ -756,7 +756,7 @@ Parsing `++rule`. Parses a hexadecimal letter.
756756
757757#### Source
758758
759−```
759+```hoon
760760 ++ sox (cook |=(a/@ (sub a 87)) (shim 'a' 'f'))
761761```
762762
@@ -782,7 +782,7 @@ leading zero.
782782
783783#### Source
784784
785−```
785+```hoon
786786 ++ ted (bass 10 ;~(plug sed (stun [0 2] sid)))
787787```
788788
@@ -815,7 +815,7 @@ syllable.
815815
816816#### Source
817817
818−```
818+```hoon
819819 ++ tip (sear |=(a/@ (ins:po a)) til)
820820```
821821
@@ -844,7 +844,7 @@ syllable.
844844
845845#### Source
846846
847−```
847+```hoon
848848 ++ tiq (sear |=(a/@ (ind:po a)) til)
849849
850850```
@@ -871,7 +871,7 @@ Parsing `++rule`. Parses exactly three decimal digits.
871871
872872#### Source
873873
874−```
874+```hoon
875875 ++ tid (bass 10 (stun [3 3] sid))
876876```
877877
@@ -899,7 +899,7 @@ Parsing `++rule`. Parses exactly three lowercase letters.
899899
900900#### Source
901901
902−```
902+```hoon
903903 ++ til (boss 256 (stun [3 3] low))
904904```
905905
@@ -929,7 +929,7 @@ Parsing rule. Parses characters from an atom of the span odor `@ta`.
929929
930930#### Source
931931
932−```
932+```hoon
933933 ++ urs %+ cook
934934 |=(a/tape (rap 3 ^-((list @) a)))
935935 (star ;~(pose nud low hep dot sig cab))
@@ -959,7 +959,7 @@ for cab, `_`.
959959
960960#### Source
961961
962−```
962+```hoon
963963 ++ urt %+ cook
964964 |=(a/tape (rap 3 ^-((list @) a)))
965965 (star ;~(pose nud low hep dot sig))
@@ -987,7 +987,7 @@ byte.
987987
988988#### Source
989989
990−```
990+```hoon
991991 ++ voy ;~(pfix bas ;~(pose bas soq bix))
992992```
993993
@@ -1014,7 +1014,7 @@ A core containing top-level atom parsers.
10141014
10151015#### Source
10161016
1017−```
1017+```hoon
10181018 ++ ag
10191019 |%
10201020```
@@ -1042,7 +1042,7 @@ Parser modifier. Parses 0 or the sample rule `fel`.
10421042
10431043#### Source
10441044
1045−```
1045+```hoon
10461046 ++ ape |*(fel/rule ;~(pose (cold 0 (just '0')) fel))
10471047```
10481048
@@ -1067,7 +1067,7 @@ Parsing rule. Parses a binary number without a leading zero.
10671067
10681068#### Source
10691069
1070−```
1070+```hoon
10711071 ++ bay (ape (bass 16 ;~(plug qeb:ab (star ;~(pfix dog qib:ab)))))
10721072```
10731073
@@ -1092,7 +1092,7 @@ Parsing rule. Parses a `@is`, an IPv6 address.
10921092
10931093#### Source
10941094
1095−```
1095+```hoon
10961096 ++ bip =+ tod=(ape qex:ab)
10971097 (bass 0x1.0000 ;~(plug tod (stun [7 7] ;~(pfix dog tod))))
10981098```
@@ -1120,7 +1120,7 @@ Parsing rule. Parses a decimal number that includes dot separators.
11201120
11211121#### Source
11221122
1123−```
1123+```hoon
11241124 ++ dem (ape (bass 1.000 ;~(plug ted:ab (star ;~(pfix dog tid:ab)))))
11251125```
11261126
@@ -1147,7 +1147,7 @@ Parsing rule. Parses a decimal number without a leading zero.
11471147
11481148#### Source
11491149
1150−```
1150+```hoon
11511151 ++ dim (ape (bass 10 ;~(plug sed:ab (star sid:ab))))
11521152```
11531153
@@ -1175,7 +1175,7 @@ Parsing rule. Parses a decmial number with leading zeroes.
11751175
11761176#### Source
11771177
1178−```
1178+```hoon
11791179 ++ dum (bass 10 (plus sid:ab))
11801180```
11811181
@@ -1204,7 +1204,7 @@ Parsing rule. Parses an atom of odor `@p`, the phonetic base.
12041204
12051205#### Source
12061206
1207−```
1207+```hoon
12081208 ++ fed ;~ pose
12091209 (bass 0x1.0000.0000.0000.0000 (most doh hyf:ab))
12101210 huf:ab
@@ -1246,7 +1246,7 @@ Parsing rule. Parses a hexadecimal number
12461246
12471247#### Source
12481248
1249−```
1249+```hoon
12501250 ++ hex (ape (bass 0x1.0000 ;~(plug qex:ab (star ;~(pfix dog qix:ab)))))
12511251```
12521252
@@ -1277,7 +1277,7 @@ Parsing rule. Parses an IPv4 address.
12771277
12781278#### Source
12791279
1280−```
1280+```hoon
12811281 ++ lip =+ tod=(ape ted:ab)
12821282 (bass 256 ;~(plug tod (stun [3 3] ;~(pfix dog tod))))
12831283```
@@ -1307,7 +1307,7 @@ Parsing rule. Parses a Base-32 number with dot separators.
13071307
13081308#### Source
13091309
1310−```
1310+```hoon
13111311 ++ viz (ape (bass 0x200.0000 ;~(plug pev:ab (star ;~(pfix dog piv:ab)))))
13121312```
13131313
@@ -1332,7 +1332,7 @@ Parsing rule. Parses a raw base-32 string.
13321332
13331333#### Source
13341334
1335−```
1335+```hoon
13361336 ++ vum (bass 32 (plus siv:ab))
13371337```
13381338
@@ -1357,7 +1357,7 @@ Parsing rule. Parses a base-64 number.
13571357
13581358#### Source
13591359
1360−```
1360+```hoon
13611361 ++ wiz (ape (bass 0x4000.0000 ;~(plug pew:ab (star ;~(pfix dog piw:ab)))))
13621362 --
13631363 ::
@@ -1389,7 +1389,7 @@ relationship between a destroyer and its cruiser.
13891389
13901390#### Source
13911391
1392−```
1392+```hoon
13931393 ++ mu
13941394 |_ [top/@ bot/@]
13951395```
@@ -1421,7 +1421,7 @@ destroyer.
14211421
14221422#### Source
14231423
1424−```
1424+```hoon
14251425 ++ zag [p=(end 4 1 (add top bot)) q=bot]
14261426```
14271427
@@ -1453,7 +1453,7 @@ destroyer.
14531453
14541454#### Source
14551455
1456−```
1456+```hoon
14571457 ++ zig [p=(end 4 1 (add top (sub 0x1.0000 bot))) q=bot]
14581458```
14591459
@@ -1483,7 +1483,7 @@ destroyer name.
14831483
14841484#### Source
14851485
1486−```
1486+```hoon
14871487 ++ zug (mix (lsh 4 1 top) bot)
14881488```
14891489
@@ -1511,7 +1511,7 @@ A door containing arms that render digits at bases 10, 16, 32, and
15111511
15121512#### Source
15131513
1514−```
1514+```hoon
15151515 ++ ne
15161516 |_ tig/@
15171517```
@@ -1539,7 +1539,7 @@ Renders a decimal digit as an atom of an ACII byte value.
15391539
15401540#### Source
15411541
1542−```
1542+```hoon
15431543 ++ d (add tig '0')
15441544```
15451545
@@ -1567,7 +1567,7 @@ Renders a hexadecimal digit as an atom of an ASCII byte value.
15671567
15681568#### Source
15691569
1570−```
1570+```hoon
15711571 ++ x ?:((gte tig 10) (add tig 87) d)
15721572```
15731573
@@ -1595,7 +1595,7 @@ Renders a base-32 digit as an atom of an ASCII byte value.
15951595
15961596#### Source
15971597
1598−```
1598+```hoon
15991599 ++ v ?:((gte tig 10) (add tig 87) d)
16001600```
16011601
@@ -1626,7 +1626,7 @@ Renders a base-64 digit as an atom of an ASCII byte value.
16261626
16271627#### Source
16281628
1629−```
1629+```hoon
16301630 ++ w ?:(=(tig 63) '~' ?:(=(tig 62) '-' ?:((gte tig 36) (add tig 29) x)))
16311631 --
16321632 ::
reference/library/4k.md → hoon/library/4k.mdrenamed+4−4
@@ -17,7 +17,7 @@ A door that contains arms that operate on the sample coin `lot`.
1717
1818#### Source
1919
20−```
20+```hoon
2121 ++ co !.
2222 ~% %co ..co ~
2323 =< |_ lot/coin
@@ -51,7 +51,7 @@ Renders a coin `lot` as a tape prepended to the sample tape `rom`.
5151
5252#### Source
5353
54−```
54+```hoon
5555 ++ rear |=(rom/tape =>(.(rex rom) rend))
5656```
5757
@@ -78,7 +78,7 @@ Renders a coin `lot` as a span.
7878
7979#### Source
8080
81−```
81+```hoon
8282 ++ rent `@ta`(rap 3 rend)
8383```
8484
@@ -107,7 +107,7 @@ Renders a coin `lot` as a tape.
107107
108108#### Source
109109
110−```
110+```hoon
111111 ++ rend
112112 ^- tape
113113 ?: ?=($blob -.lot)
reference/library/4l.md → hoon/library/4l.mdrenamed+11−11
@@ -15,7 +15,7 @@ Core containing arms that parse `++coin`.
1515
1616#### Source
1717
18−```
18+```hoon
1919 ++ so
2020 |%
2121```
@@ -42,7 +42,7 @@ producing a `++dime`.
4242
4343#### Source
4444
45−```
45+```hoon
4646 ++ bisk
4747 ;~ pose
4848 ;~ pfix (just '0')
@@ -83,7 +83,7 @@ and `@t`, producing a `++dime`.
8383
8484#### Source
8585
86−```
86+```hoon
8787 ++ crub
8888 ~+
8989 ;~ pose
@@ -274,7 +274,7 @@ corresponding `++coin` parser.
274274
275275#### Source
276276
277−```
277+```hoon
278278 ++ nuck
279279 ~/ %nuck |= a/nail %. a
280280 %+ knee *coin |. ~+
@@ -330,7 +330,7 @@ formatting).
330330
331331#### Source
332332
333−```
333+```hoon
334334 ++ nusk
335335 (sear |=(a/@ta (rush (wick a) nuck)) urt:ab)
336336```
@@ -363,7 +363,7 @@ prefixes.
363363
364364#### Source
365365
366−```
366+```hoon
367367 ++ perd
368368 ;~ pose
369369 (stag ~ zust)
@@ -398,7 +398,7 @@ Parsing rule. Parses a number into a `++dime` float.
398398
399399#### Source
400400
401−```
401+```hoon
402402 ++ royl
403403 ~+
404404 =+ ^= moo
@@ -463,7 +463,7 @@ XX still not fully functional
463463
464464Intermediate parsed float convereter
465465
466−```
466+```hoon
467467 ++ royl-cell
468468 |= rn
469469 ^- dn
@@ -488,7 +488,7 @@ Parsing rule. Parses a signed number into a `++dime`.
488488
489489#### Source
490490
491−```
491+```hoon
492492 ++ tash
493493 ~+
494494 =+ ^= neg
@@ -531,7 +531,7 @@ Parsing rule. Parses coins after a leading sig, `~`.
531531
532532#### Source
533533
534−```
534+```hoon
535535 ++ twid
536536 ;~ pose
537537 (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`
570570
571571#### Source
572572
573−```
573+```hoon
574574 ++ zust
575575 ;~ pose
576576 (stag %is bip:ag)
reference/library/4m.md → hoon/library/4m.mdrenamed+10−10
@@ -19,7 +19,7 @@ A `cord`.
1919
2020#### Source
2121
22−```
22+```hoon
2323 ++ scot |=(mol/dime ~(rent co %$ mol))
2424```
2525
@@ -62,7 +62,7 @@ A `tape`.
6262
6363#### Source
6464
65−```
65+```hoon
6666 ++ scow |=(mol/dime ~(rend co %$ mol))
6767```
6868#### Examples
@@ -99,7 +99,7 @@ A `gate`.
9999
100100#### Source
101101
102−```
102+```hoon
103103 ++ slat |=(mod/@tas |=(txt/@ta (slaw mod txt)))
104104```
105105
@@ -137,7 +137,7 @@ The atom of a `(unit @)` from `++slaw`, or crash.
137137
138138#### Source
139139
140−```
140+```hoon
141141 ++ slav |=([mod/@tas txt/@ta] (need (slaw mod txt)))
142142```
143143
@@ -181,7 +181,7 @@ A `(unit @)`.
181181
182182#### Source
183183
184−```
184+```hoon
185185 ++ slaw
186186 ~/ %slaw
187187 |= {mod/@tas txt/@ta}
@@ -229,7 +229,7 @@ A `(unit coin)`.
229229
230230#### Source
231231
232−```
232+```hoon
233233 ++ slay
234234 |= txt/@ta ^- (unit coin)
235235 =+ ^= vex
@@ -290,7 +290,7 @@ A `tank`.
290290
291291#### Source
292292
293−```
293+```hoon
294294 ++ smyt :: pretty print path
295295 |= bon/path ^- tank
296296 :+ %rose [['/' ~] ['/' ~] ~]
@@ -335,7 +335,7 @@ A `cord`.
335335
336336#### Source
337337
338−```
338+```hoon
339339 ++ spat |=(pax/path (crip (spud pax))) :: path to cord
340340```
341341
@@ -368,7 +368,7 @@ A `tape`.
368368
369369#### Source
370370
371−```
371+```hoon
372372 ++ spud |=(pax/path ~(ram re (smyt pax))) :: path to tape
373373```
374374
@@ -402,7 +402,7 @@ A `path`, or crash.
402402
403403#### Source
404404
405−```
405+```hoon
406406 ++ stab :: parse cord to path
407407 =+ fel=;~(pfix fas (more fas urs:ab))
408408 |=(zep/@t `path`(rash zep fel))
reference/library/4n.md → hoon/library/4n.mdrenamed+7−7
@@ -23,7 +23,7 @@ The `++unit` of a noun.
2323
2424#### Source
2525
26−```
26+```hoon
2727 ++ mack
2828 |= {sub/* fol/*}
2929 ^- (unit)
@@ -72,7 +72,7 @@ A `++tone`.
7272
7373#### Source
7474
75−```
75+```hoon
7676 ++ mink
7777 ~/ %mink
7878 |= {{sub/* fol/*} gul/$-({* *} (unit (unit)))}
@@ -196,7 +196,7 @@ The `++unit` of a noun.
196196
197197#### Source
198198
199−```
199+```hoon
200200 ++ mock
201201 |= {{sub/* fol/*} gul/$-({* *} (unit (unit)))}
202202 (mook (mink [sub fol] gul))
@@ -245,7 +245,7 @@ A `++toon`.
245245
246246#### Source
247247
248−```
248+```hoon
249249 ++ mong
250250 |= {{gat/* sam/*} gul/$-({* *} (unit (unit)))}
251251 ^- toon
@@ -297,7 +297,7 @@ A `++toon`.
297297
298298#### Source
299299
300−```
300+```hoon
301301 ++ mook
302302 |= ton/tone
303303 ^- toon
@@ -369,7 +369,7 @@ XX
369369
370370#### Source
371371
372−```
372+```hoon
373373 ++ mule :: typed virtual
374374 ~/ %mule
375375 |* taq/_|.(**)
@@ -422,7 +422,7 @@ Either a noun or a `++list` of `++tank`.
422422
423423#### Source
424424
425−```
425+```hoon
426426 ++ mute :: untyped virtual
427427 |= taq/_^?(|.(**))
428428 ^- (each * (list tank))
reference/library/4o.md → hoon/library/4o.mdrenamed+30−30
@@ -9,7 +9,7 @@ Biblical names in hoon are primarily aliases for the compiler.
99
1010#### Source
1111
12−```
12+```hoon
1313 ++ abel typo :: original sin: type
1414```
1515
@@ -32,7 +32,7 @@ commonly used in urbit.
3232
3333#### Source
3434
35−```
35+```hoon
3636 ++ aura ,@ta :: atom format
3737```
3838
@@ -56,7 +56,7 @@ right and `0` left.
5656
5757#### Source
5858
59−```
59+```hoon
6060 ++ axis ,@ :: tree address
6161```
6262
@@ -84,7 +84,7 @@ boolean or null labelled with an odor.
8484
8585#### Source
8686
87−```
87+```hoon
8888 ++ base ?([%atom p=odor] %noun %cell %bean %null) :: axils, @ * ^ ? ~
8989```
9090
@@ -113,7 +113,7 @@ Boolean
113113
114114#### Source
115115
116−```
116+```hoon
117117 ++ bean ,? :: 0=&=yes, 1=|=no
118118```
119119
@@ -140,7 +140,7 @@ Used to build tapes internally.
140140
141141#### Source
142142
143−```
143+```hoon
144144 ++ beer $|(@ [~ p=hoon]) :: simple embed
145145```
146146
@@ -163,7 +163,7 @@ Used internally.
163163
164164#### Source
165165
166−```
166+```hoon
167167 ++ beet $| @ :: advanced embed
168168 $% [%a p=hoon] :: take tape
169169 [%b p=hoon] :: take manx
@@ -185,7 +185,7 @@ and `"{major}.{minor}"` version number.
185185
186186#### Source
187187
188−```
188+```hoon
189189 ++ chum $? lef=term :: jet name
190190 [std=term kel=@] :: kelvin version
191191 [ven=term pro=term kel=@] :: vendor and product
@@ -217,7 +217,7 @@ intermediate step within Section 2fB. Converted by `++core` to %core type.
217217
218218#### Source
219219
220−```
220+```hoon
221221 ++ coil $: p=?(%gold %iron %lead %zinc) :: core type
222222 q=type ::
223223 r=[p=?(~ ^) q=(map term foot)] ::
@@ -234,7 +234,7 @@ Cases of arms by variance model.
234234
235235#### Source
236236
237−```
237+```hoon
238238 ++ foot $% [%ash p=hoon] :: dry arm, geometric
239239 [%elm p=hoon] :: wet arm, generic
240240 [%oak ~] :: XX not used
@@ -264,7 +264,7 @@ See also: `++ap`, `++ut`
264264
265265### `++limb`
266266
267−```
267+```hoon
268268 ++ limb $|(term $%([%& p=axis] [%| p=@ud q=term])) ::
269269```
270270
@@ -274,7 +274,7 @@ Reference into subject by name/axis
274274
275275See also: section 2fC-2fD
276276
277−```
277+```hoon
278278 > (ream '^^$')
279279 [%cnzz p=~[[%.n p=2 q=%$]]]
280280 > (limb &2:(ream '^^$'))
@@ -291,7 +291,7 @@ XX move to `++ut`
291291
292292#### Source
293293
294−```
294+```hoon
295295 ++ line ,[p=[%leaf p=odor q=@] q=tile] :: %kelp case
296296```
297297
@@ -318,7 +318,7 @@ XX move to `++ut`
318318
319319### `++metl`
320320
321−```
321+```hoon
322322 ++ metl ?(%gold %iron %zinc %lead) :: core variance
323323```
324324
@@ -337,7 +337,7 @@ Virtual machine. See Nock.
337337
338338#### Source
339339
340−```
340+```hoon
341341 ++ nock $& [p=nock q=nock] :: autocons
342342 [%3 p=nock] :: cell test
343343 [%4 p=nock] :: increment
@@ -365,7 +365,7 @@ Virtual machine. See Nock.
365365
366366### `++noun`
367367
368−```
368+```hoon
369369 ++ noun ,* :: any noun
370370```
371371
@@ -381,7 +381,7 @@ Used nowhere XX
381381
382382### `++null`
383383
384−```
384+```hoon
385385 ++ null ,~ :: null, nil, etc
386386```
387387
@@ -404,7 +404,7 @@ Type and location of core-shaped thing? XX Compiler Internals
404404
405405#### Source
406406
407−```
407+```hoon
408408 ++ port $: p=axis ::
409409 $= q ::
410410 $% [%& p=type] ::
@@ -434,7 +434,7 @@ besides numbers and lowercase letters are permitted.
434434
435435#### Source
436436
437−```
437+```hoon
438438 ++ span ,@ta :: text-atom (ASCII)
439439```
440440
@@ -466,7 +466,7 @@ XX move to `++ut`
466466
467467#### Source
468468
469−```
469+```hoon
470470 ++ tiki :: test case
471471```
472472
@@ -509,7 +509,7 @@ XX move to `++ut` and rune doc (for \^= examples)
509509
510510#### Source
511511
512−```
512+```hoon
513513 ++ toga :: face control
514514 [2 p=toga q=toga] :: cell toga
515515 == ::
@@ -550,7 +550,7 @@ Similar to `++toon`, but stack trace is not yet rendered.
550550
551551#### Source
552552
553−```
553+```hoon
554554 ++ tone $% [%0 p=*] :: success
555555```
556556
@@ -599,7 +599,7 @@ An XML template tree.
599599
600600#### Source
601601
602−```
602+```hoon
603603 ++ tuna :: tagflow
604604 [%d p=hoon] :: dynamic list
605605 [%e p=hoon q=(list tuna)] :: element
@@ -628,7 +628,7 @@ a `++tusk`.
628628
629629#### Source
630630
631−```
631+```hoon
632632 ++ tusk (list hoon) ::
633633```
634634
@@ -667,7 +667,7 @@ a `++tyke`, where the `=` are inferred from your current path.
667667
668668#### Source
669669
670−```
670+```hoon
671671 ++ tyke (list (unit hoon)) ::
672672```
673673
@@ -692,7 +692,7 @@ context when upating.
692692
693693#### Source
694694
695−```
695+```hoon
696696 ++ typo type :: old type
697697```
698698
@@ -712,7 +712,7 @@ Associative list of `++term` `++hoon`, used in jet hint processing.
712712
713713#### Source
714714
715−```
715+```hoon
716716 ++ tyre (list ,[p=term q=hoon]) ::
717717```
718718
@@ -726,7 +726,7 @@ with.
726726
727727#### Source
728728
729−```
729+```hoon
730730 ++ vase ,[p=type q=*] :: type-value pair
731731```
732732
@@ -748,7 +748,7 @@ Used to convert from previously-typed data during reboot.
748748
749749#### Source
750750
751−```
751+```hoon
752752 ++ vise ,[p=typo q=*] :: old vase
753753```
754754
@@ -762,7 +762,7 @@ See also: `++typo`, `++seer`
762762
763763### `++wing`
764764
765−```
765+```hoon
766766 ++ wing (list limb) ::
767767```
768768
reference/library/5a.md → hoon/library/5a.mdrenamed

The content is the same.

reference/library/5b.md → hoon/library/5b.mdrenamed

The content is the same.

reference/library/5c.md → hoon/library/5c.mdrenamed

The content is the same.

reference/library/5d.md → hoon/library/5d.mdrenamed

The content is the same.

reference/library/5e.md → hoon/library/5e.mdrenamed

The content is the same.

reference/library/5f.md → hoon/library/5f.mdrenamed+9−9
@@ -12,7 +12,7 @@ An XML name (tag name or attribute name) with an optional namespace. Parsed by
1212
1313#### Source
1414
15−```
15+```hoon
1616 ++ mane $@(@tas [@tas @tas]) :: XML name/space
1717```
1818
@@ -40,7 +40,7 @@ Parsed by `++apex` within `++apex:de-xml:html` in `zuse.hoon`, rendered by `++ap
4040
4141#### Source
4242
43−```
43+```hoon
4444 ++ manx {g/marx c/marl} :: XML node
4545```
4646
@@ -59,7 +59,7 @@ A list of `++manx`.
5959
6060#### Source
6161
62−```
62+```hoon
6363 ++ marl (list manx) :: XML node list
6464```
6565
@@ -76,7 +76,7 @@ Implicitly produced by `++chrd` within `++chrd:de-xml:html`
7676
7777#### Source
7878
79−```
79+```hoon
8080 ++ mars {t/{n/$$ a/{i/{n/$$ v/tape} t/$~}} c/$~} :: XML cdata
8181```
8282
@@ -96,7 +96,7 @@ Parsed by `++attr:de-xml:html` in `zuse.hoon`, rendered by `++attr:en-xml:html`
9696
9797#### Source
9898
99−```
99+```hoon
100100 ++ mart (list {n/mane v/tape}) :: XML attributes
101101```
102102
@@ -113,7 +113,7 @@ A `++marx` is a pair of a tag name, `++mane` and a list of attributes,
113113
114114#### Source
115115
116−```
116+```hoon
117117 ++ marx {n/mane a/mart} :: XML tag
118118```
119119
@@ -130,7 +130,7 @@ Used primarily in crypto.
130130
131131#### Source
132132
133−```
133+```hoon
134134 ++ pass @ :: public key
135135```
136136
@@ -144,7 +144,7 @@ Used primarily in crypto.
144144
145145#### Source
146146
147−```
147+```hoon
148148 ++ ring @ :: private key
149149```
150150
@@ -158,7 +158,7 @@ The `@da` odor designates an absolute date atom.
158158
159159#### Source
160160
161−```
161+```hoon
162162 ++ time @da :: galactic time
163163```
164164
reference/library/5g.md → hoon/library/5g.mdrenamed

The content is the same.

reference/library/_index.md → hoon/library/_index.mdrenamed

The content is the same.

hoon/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>
reference/library/zuse.md → hoon/library/zuse.mdrenamed

The content is the same.

learn/hoon/style.md → hoon/style.mdrenamed+21−21
@@ -28,19 +28,19 @@ and avoid terminators when the content has a fixed structure.
2828For example, the wide form `=+(a b)` could be written in tall form
2929as
3030
31−```
31+```hoon
3232 =+ a
3333 b
3434```
3535
3636or
3737
38−```
38+```hoon
3939 =+ a b
4040```
4141
4242These 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
4444forms are regular. All code within a wide form is wide.
4545Almost all code has both wide and tall forms, the exception
4646being named cores.
@@ -76,21 +76,21 @@ across the page.
7676
7777With one child:
7878
79−```
79+```hoon
8080 !:
8181 a
8282```
8383
8484With two:
8585
86−```
86+```hoon
8787 =+ a
8888 b
8989```
9090
9191With three:
9292
93−```
93+```hoon
9494 ?: a
9595 b
9696 c
@@ -98,7 +98,7 @@ With three:
9898
9999With four (the maximum rune fanout):
100100
101−```
101+```hoon
102102 :^ a
103103 b
104104 c
@@ -115,7 +115,7 @@ Variable sequences can have an arbitrary number of elements, so
115115they can't self-terminate. They are terminated by a `==` marker.
116116The sequence, or its variable part, is indented and vertical:
117117
118−```
118+```hoon
119119 :* a
120120 b
121121 c
@@ -125,7 +125,7 @@ The sequence, or its variable part, is indented and vertical:
125125Another representation wastes a line, but saves an indent. Use
126126this only for very long sequences:
127127
128−```
128+```hoon
129129 :*
130130 a
131131 b
@@ -140,7 +140,7 @@ looks better for this particular code.
140140
141141Kingside format:
142142
143−```
143+```hoon
144144 ?+ x default
145145 %foo 99
146146 %foobar ?: y
@@ -152,7 +152,7 @@ Kingside format:
152152
153153Queenside format:
154154
155−```
155+```hoon
156156 ?+ x
157157 default
158158 ::
@@ -173,7 +173,7 @@ as demonstrated above.
173173We sometimes end up with multiple terminators on separate lines,
174174two or more spaces apart. These lines can be collapsed:
175175
176−```
176+```hoon
177177 ?+ x default
178178 %foo 99
179179 37 36
@@ -217,7 +217,7 @@ more spaces, newlines, or comments are one gap.
217217Hoon suggests "breathing comments." There should always be an
218218empty comment line between a comment and the line **below** it:
219219
220−```
220+```hoon
221221 :: look, code
222222 ::
223223 this.is.code
@@ -229,7 +229,7 @@ empty comment line between a comment and the line **below** it:
229229Sometimes dense code does need air on both sides. Also
230230legitimate:
231231
232−```
232+```hoon
233233 :: look, code
234234 ::
235235 this.is.code
@@ -289,7 +289,7 @@ optional whitespace; then `::`; then two spaces; then a parsed
289289line of **lowercase** ASCII whose syntax depends on the comment
290290type. Like this:
291291
292−```
292+```hoon
293293 :: $foo: the definition of a foo
294294```
295295
@@ -297,7 +297,7 @@ A complex formal comment is the headline; then an empty line;
297297then an udon body with paragraphs broken by empty lines, indented
298298four spaces, in ASCII mixed case:
299299
300−```
300+```hoon
301301 :: $foo: the definition of a foo
302302 ::
303303 :: The source of the word "foo" is lost in history. Some
@@ -318,7 +318,7 @@ but with a line-length summary/headline.
318318A feature headline is `::`, then two spaces, then a qualified
319319location, then `:`, then a freeform string. Like:
320320
321−```
321+```hoon
322322 :: $foo: a the definition of a foo
323323 ::
324324 +$ foo [head=@ tail=^]
@@ -334,7 +334,7 @@ resolve to any data value) it becomes the chapter description.
334334Product comments describe the product of the expression below.
335335The headline is a string in parentheses:
336336
337−```
337+```hoon
338338 :: (a very strange $foo indeed)
339339 ::
340340 make:a:strange:foo
@@ -361,7 +361,7 @@ For example, let's fix `[%wtcl p=hoon q=hoon r=hoon]`. Let's
361361make it... `[%wtcl if=hoon then=hoon else=hoon]`. Then we
362362could write flow comments as follows:
363363
364−```
364+```hoon
365365 ?: :: if, it's it winter
366366 ::
367367 is-winter
@@ -389,7 +389,7 @@ probably help us document them, anyway.
389389Sometimes, just for cosmetic reasons, we like to raise the
390390comment on the first leg of a rune up above the parent:
391391
392−```
392+```hoon
393393 :: if, it's it winter
394394 ::
395395 ?: is-winter
@@ -403,7 +403,7 @@ comment on the first leg of a rune up above the parent:
403403
404404This can make flow comments collide, as in "else, if," below:
405405
406−```
406+```hoon
407407 :: if, it's winter
408408 ::
409409 ?: is-winter
reference/hoon-errors.md → hoon/troubleshooting.mdrenamed+14−14
@@ -1,6 +1,6 @@
11+++
2−title = "Hoon Errors"
3−weight = 6
2+title = "Troubleshooting Hoon"
3+weight = 5
44template = "doc.html"
55+++
66Ideally your Hoon works perfectly the first time. But...
@@ -20,10 +20,10 @@ a correct Hoon file. These values are always correct.
2020Usually, the line and column tell you everything you need to
2121know. But the worst-case scenario for a syntax error is that,
2222somewhere above, you've confused Hoon's tall form by using the
23−wrong fanout for a rune. For example, `%+` ([**cenlus**](@/docs/reference/hoon-expressions/rune/cen.md#cenlus),
23+wrong fanout for a rune. For example, `%+` ([**cenlus**](@/docs/hoon/hoon-expressions/rune/cen.md#cenlus),
2424a function call whose sample is a cell) has three subhoons:
2525
26−```
26+```hoon
2727%+ foo
2828 bar
2929baz
@@ -31,7 +31,7 @@ baz
3131
3232But if you make a mistake and write
3333
34−```
34+```hoon
3535%+ foo
3636bar
3737```
@@ -100,13 +100,13 @@ means you tried to pound a square peg into a round hole.
100100What was the peg and what was the hole? Hoon doesn't tell you by
101101default, because moral fiber, and also because in too many cases
102102trivial errors lead to large intimidating dumps. However, you
103−can use the `~!` rune ([**sigzap**](@/docs/reference/hoon-expressions/rune/sig.md#sigzap)) to print the type of
103+can use the `~!` rune ([**sigzap**](@/docs/hoon/hoon-expressions/rune/sig.md#sigzap)) to print the type of
104104any hoon in your stack trace.
105105
106106For instance, you wrote `(foo bar)` and got a `nest-fail`. Change
107107your code to be:
108108
109−```
109+```hoon
110110~! bar
111111~! +6.foo
112112(foo bar)
@@ -130,7 +130,7 @@ function.
130130
131131These are errors caused by type inference in pattern matching.
132132`mint-vain` means this hoon is never executed. `mint-lost` means
133−there's a case in a `?-` ([**wuthep**](@/docs/reference/hoon-expressions/rune/wut.md#wuthep)) that isn't handled.
133+there's a case in a `?-` ([**wuthep**](@/docs/hoon/hoon-expressions/rune/wut.md#wuthep)) that isn't handled.
134134
135135## Runtime crashes
136136
@@ -144,9 +144,9 @@ infinite loop will time out either too slowly or too fast). The
144144stack trace will show what your code was doing when interrupted.
145145
146146The counterpart of `~!` for runtime crashes is `~|`
147−([**sigbar**](@/docs/reference/hoon-expressions/rune/sig.md#sigbar)):
147+([**sigbar**](@/docs/hoon/hoon-expressions/rune/sig.md#sigbar)):
148148
149−```
149+```hoon
150150~| foo
151151(foo bar)
152152```
@@ -160,19 +160,19 @@ The worst possibility, of course, is that your code runs but does
160160the wrong thing. This is relatively unusual in a typed
161161functional language, but it still happens.
162162
163−`~&` ([**sigpam**](@/docs/reference/hoon-expressions/rune/sig.md#sigpam)) is Hoon's debugging printf.
163+`~&` ([**sigpam**](@/docs/hoon/hoon-expressions/rune/sig.md#sigpam)) is Hoon's debugging printf.
164164This pretty-prints its argument:
165165
166−```
166+```hoon
167167~& foo
168168(foo bar)
169169```
170170
171171will 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/hoon/hoon-expressions/rune/sig.md#sigwut)), which prints only if a condition is
173173true:
174174
175−```
175+```hoon
176176~? =(37 (lent foo)) foo
177177(foo bar)
178178```
hoon/workbook/_index.mdnew file+16
@@ -0,0 +1,16 @@
1++++
2+title = "Hoon Workbook"
3+weight = 2
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+The Workbook is the place to sharpen your Hoon skills. Each entry in the
8+Workbook is a code walkthrough followed by exercises.
9+
10+- The [Digits](@/docs/hoon/workbook/digits.md) example demonstrates how to decompose a number into a list of its digits.
11+
12+- The [Magic 8-Ball](@/docs/hoon/workbook/eightball.md) example emulates everyone's favorite decision-making machine.
13+
14+- The [Traffic-light](@/docs/hoon/workbook/traffic-light.md) example demonstrates how to creates a state machine in Hoon.
15+
16+- The [Bomb-defusing](@/docs/hoon/workbook/bomb.md) exercise shows how to program, well, a bomb-defusing scenario.
learn/hoon/workbook/bomb.md → hoon/workbook/bomb.mdrenamed+2−2
@@ -27,7 +27,7 @@ a tape `bomb defused`. If any of the rules were broken, it should output the
2727tape `boom`.
2828
2929
30−```
30+```hoon
3131!:
3232:- %say
3333|= [* [cuts=(list tape) ~] ~]
@@ -106,7 +106,7 @@ rules above we have specified when you cut a wire, which of the other wires you
106106cannot cut. This required some reformulating of the rules given to use at the
107107start, but it is much simpler to work with.
108108
109−```
109+```hoon
110110++ defuse
111111 |= cuts=(list tape)
112112 =| bad=(list tape)
learn/hoon/workbook/digits.md → hoon/workbook/digits.mdrenamed+8−8
@@ -6,7 +6,7 @@ template = "doc.html"
66Let's write a generator that takes a `@ud` (unsigned decimal) and returns a list
77of its digits.
88
9−```
9+```hoon
1010!:
1111:- %say
1212|= [* [n=@ud ~] ~]
@@ -21,10 +21,10 @@ of its digits.
2121==
2222```
2323
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
2525need some "boilerplate" code in the format of `[%say [%noun "data"]]`:
2626
27−```
27+```hoon
2828:- %say
2929|= [* [n=@ud ~] ~]
3030:- %noun
@@ -42,7 +42,7 @@ print the value we are creating. In this case, we use the generic `%noun`.
4242
4343The tail of our second cell is the product of the rest of the program.
4444
45−```
45+```hoon
4646=| lis=(list @ud)
4747```
4848
@@ -50,7 +50,7 @@ We use the above code to construct a `list` of `@ud` by cutting up the `@ud` we
5050got passed and so we add a face onto that type. This list is empty until we
5151manipulate it further.
5252
53−```
53+```hoon
5454|- ^+ lis
5555?: (lte n 0)
5656 lis
@@ -63,7 +63,7 @@ to produce. A sibling of the `^-` rune, `^+` is distinct because it is for
6363casting _by example_. It takes type information from an _instance_ of that type.
6464It's useful when using a complicated type.
6565
66−```
66+```hoon
6767?: (lte n 0)
6868 lis
6969```
@@ -72,7 +72,7 @@ It's useful when using a complicated type.
7272true that `n` is less than or equal to `0`, we simply return `lis`. Otherwise,
7373we branch to the following operations:
7474
75−```
75+```hoon
7676%= $
7777 n (div n 10)
7878 lis (mod n 10)^lis
@@ -96,7 +96,7 @@ Together, these operations will pull each digit out of `n` and put it into a
9696the value, and `mod` will store the actual discarded digit. To visualize this
9797complementarity, let's run some operations in the dojo:
9898
99−```
99+```hoon
100100> (div 146 10)
10110114
102102
learn/hoon/workbook/eightball.md → hoon/workbook/eightball.mdrenamed+8−8
@@ -8,7 +8,7 @@ Magic 8-Ball, producing a randomized response with each run.
88
99Save the code below as `eightball.hoon` in your `/gen` directory.
1010
11−```
11+```hoon
1212!:
1313:- %say
1414|= [[* eny=@uv *] *]
@@ -43,7 +43,7 @@ Save the code below as `eightball.hoon` in your `/gen` directory.
4343
4444Let's go through our code in chunks so that we might more easily understand it.
4545
46−```
46+```hoon
4747!:
4848```
4949
@@ -51,7 +51,7 @@ We start with the `!:` rune to enable a full stack trace for any errors. This
5151is good practice whenever developing something in Hoon.
5252
5353
54−```
54+```hoon
5555:- %say
5656|= [[* eny=@uv *] *]
5757:- %noun
@@ -59,7 +59,7 @@ is good practice whenever developing something in Hoon.
5959
6060To make our program produce a random result, we need entropy. To get entropy,
6161we 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
6363the template that is followed for all `%say` generators.
6464
6565`:- %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
7979to print the generator's outputted value. The tail of this cell is that value
8080itself, produced by the rest of our program.
8181
82−```
82+```hoon
8383^- tape
8484```
8585
8686Above is a cast statement that requires the non-`mark` component of our cell to
8787be of the `tape` type. If it's not, the program doesn't compile.
8888
89−```
89+```hoon
9090=/ answers=(list tape)
9191 :~ "It is certain."
9292 "It is decidedly so."
@@ -127,7 +127,7 @@ elements are the `tape`s that are selected as the 8-Ball's responses.
127127
128128`==` terminates our list. `:~` expressions are always closed in this way.
129129
130−```
130+```hoon
131131=/ rng ~(. og eny)
132132=/ val (rad:rng (lent answers))
133133```
@@ -144,7 +144,7 @@ Is the upper bound that we give it. In this case, the upper bound is the number
144144of elements in `answers`, obtained by using the `lent` standard-library arm. We
145145store the random result in `val`.
146146
147−```
147+```hoon
148148(snag val answers)
149149```
150150
learn/hoon/workbook/traffic-light.md → hoon/workbook/traffic-light.mdrenamed+10−10
@@ -6,7 +6,7 @@ template = "doc.html"
66Let's create a state machine in Hoon that models the functionality of a traffic
77light. Save the code below as `traffic.hoon` in your `/gen` directory.
88
9−```
9+```hoon
1010:- %say
1111|= *
1212:- %noun
@@ -29,18 +29,18 @@ light. Save the code below as `traffic.hoon` in your `/gen` directory.
2929
3030Let's look at the code piece-by-piece.
3131
32−```
32+```hoon
3333:- %say
3434|= *
3535:- %noun
3636```
3737
3838Here'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
4040it allows us to run the generator without any arguments. It's otherwise not
4141relevant to the functionality of our program.
4242
43−```
43+```hoon
4444=+ |%
4545 ++ state ?(%red %yellow %green)
4646 --
@@ -60,7 +60,7 @@ Having new types in a separate core is a common idiom in Hoon programs that allo
6060the compiler to do [constant folding](https://en.wikipedia.org/wiki/Constant_folding),
6161which improves performance.
6262
63−```
63+```hoon
6464=/ current-state=state %red
6565```
6666
@@ -69,7 +69,7 @@ the arm in previous code chunk - and gives it a default value. Because we are
6969putting this noun into the subject, it will be available for use in the
7070`traffic-light` core we are about to create.
7171
72−```
72+```hoon
7373=+ ^= traffic-light
7474 |%
7575 ++ look current-state
@@ -97,7 +97,7 @@ We first produce a core with one arm named `$`. That `$` arm will produce a new
9797core with `current-state` changed to match the `s` provided when it was called.
9898How does this work?
9999
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
101101applies the wing expression on the left of it to the noun to the right of it.
102102`$` is the arm of the core. Then by using the wing expression `+>`, which means
103103"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
105105lists changes to the core we would like to make as we produce a new one. You
106106will often see `+>.$` used in this way.
107107
108−```
108+```hoon
109109=+ a=traffic-light
110110=+ b=traffic-light
111111```
@@ -115,7 +115,7 @@ noun to the head of the subject. In this case, we are adding two nouns, one with
115115the face `a` and a second with the face `b`. These two nouns will be copies of
116116the `traffic-light` core, with all the bits we previously created.
117117
118−```
118+```hoon
119119=. a (set.a %yellow)
120120```
121121
@@ -123,7 +123,7 @@ the `traffic-light` core, with all the bits we previously created.
123123and give that the argument of `%yellow`. Remember that we are actually producing
124124a new core in the gate, so we have to then assign that back to the face `a`.
125125
126−```
126+```hoon
127127[current-state.a current-state.b]
128128```
129129
learn/_index.mddeleted−27
@@ -1,27 +0,0 @@
1−+++
2−title = "Learn"
3−weight = 4
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−+++
7−Tutorials and explanations for all the components of Urbit.
8−
9−## [Arvo](@/docs/learn/arvo/_index.md)
10−
11−Arvo is a clean-slate system software stack defined as a deterministic computer. An encrypted P2P network, %ames, runs on a functional operating system, Arvo, written in a strict, typed functional language, Hoon, which compiles itself to a combinator interpreter, Nock, whose spec gzips to 340 bytes.
12−
13−## [Hoon](@/docs/learn/hoon/_index.md)
14−
15−Hoon is a high-level, statically typed, functional programming language, custom-designed for use with Urbit. For a functional language it has a surprisingly imperative style, and mastering it doesn't require knowing any advanced mathematics.
16−
17−The [Hoon Tutorial](@/docs/learn/hoon/hoon-tutorial/_index.md) is the best place to start if you want to learn Urbit.
18−
19−## [Nock](@/docs/learn/nock/_index.md)
20−
21−Nock 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.
22−
23−## [Vere](@/docs/learn/vere/_index.md)
24−
25−The Nock runtime system, written in C.
26−
27−Keep reading if you're planning to work on the Urbit interpreter, you're a language implementation geek, or you don't really understand anything until you've seen the actual structs.
learn/hoon/workbook/_index.mddeleted−16
@@ -1,16 +0,0 @@
1−+++
2−title = "Hoon Workbook"
3−weight = 2
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−+++
7−The Workbook is the place to sharpen your Hoon skills. Each entry in the
8−Workbook is a code walkthrough followed by exercises.
9−
10−- The [Digits](@/docs/learn/hoon/workbook/digits.md) example demonstrates how to decompose a number into a list of its digits.
11−
12−- The [Magic 8-Ball](@/docs/learn/hoon/workbook/eightball.md) example emulates everyone's favorite decision-making machine.
13−
14−- The [Traffic-light](@/docs/learn/hoon/workbook/traffic-light.md) example demonstrates how to creates a state machine in Hoon.
15−
16−- The [Bomb-defusing](@/docs/learn/hoon/workbook/bomb.md) exercise shows how to program, well, a bomb-defusing scenario.
learn/nock/_index.md → nock/_index.mdrenamed+4−4
@@ -8,18 +8,18 @@ template = "sections/docs/chapters.html"
88
99Nock 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.
1010
11−## [Nock Definition](@/docs/learn/nock/definition.md)
11+## [Nock Definition](@/docs/nock/definition.md)
1212
1313The Nock specification.
1414
15−## [An explanation of Nock](@/docs/learn/nock/explanation.md)
15+## [An explanation of Nock](@/docs/nock/explanation.md)
1616
1717A comprehensive walkthrough of the Nock spec.
1818
19−## [Nock by hand](@/docs/learn/nock/example.md)
19+## [Nock by hand](@/docs/nock/example.md)
2020
2121Learn Nock by example.
2222
23−## [Nock Implementations](@/docs/learn/nock/implementations.md)
23+## [Nock Implementations](@/docs/nock/implementations.md)
2424
2525The many ways that Nock has been implemented.
learn/nock/definition.md → nock/definition.mdrenamed+2
@@ -2,7 +2,9 @@
22title = "Nock Definition"
33weight = 1
44template = "doc.html"
5+aliases = ["/docs/nock/definition/"]
56+++
7+
68Nock is a Turing-complete function that maps a cell
79`[subject formula]` to a noun `product`, where `subject` is the
810data, `formula` is the code, and `product` is the result.
learn/nock/example.md → nock/example.mdrenamed+1−1
@@ -249,7 +249,7 @@ could also write this subject as
249249and we see readily that `a` is at slot `7`, `b` `6`, `l` `2`.
250250With this subject, we need to express the Hoon loop body
251251
252−```
252+```hoon
253253?: =(a +(b)) :: line 4
254254 b :: line 5
255255$(b +(b)) :: line 6
learn/nock/explanation.md → nock/explanation.mdrenamed

The content is the same.

learn/nock/implementations.md → nock/implementations.mdrenamed+8−8
@@ -33,7 +33,7 @@ We use a C implementation for our Nock interpreter. But building a Nock interpre
3333
3434The actual production Nock interpreter. Note gotos for tail-call elimination,
3535and 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).
3737```
3838/* _n_nock_on(): produce .*(bus fol). Do not virtualize.
3939*/
@@ -1128,7 +1128,7 @@ tar a = Left "*a"
11281128
11291129## Hoon
11301130
1131−```
1131+```hoon
11321132|= {sub/* fol/*}
11331133^- *
11341134?< ?=(@ fol)
@@ -1179,7 +1179,7 @@ tar a = Left "*a"
11791179
11801180From [Joe Bryan](https://github.com/joemfb/nock.js/blob/master/nock.js):
11811181
1182−```
1182+```js
11831183(function (self, factory) {
11841184 'use strict'
11851185
@@ -1538,7 +1538,7 @@ From [Joe Bryan](https://github.com/joemfb/nock.js/blob/master/nock.js):
15381538
15391539From [James Tauber](https://github.com/jtauber/pynock/blob/master/nock.py):
15401540
1541−```
1541+```py
15421542#!/usr/bin/env python3
15431543
15441544# []
@@ -1627,7 +1627,7 @@ def tar(noun):
16271627
16281628From [T.J. Corcoran](https://github.com/TJamesCorcoran/nock/blob/master/nock.rb):
16291629
1630−```
1630+```ruby
16311631def str_to_tree(str)
16321632 arr = []
16331633 str.scan(/\+|\=|\?|\/|\*|\[|\]|\d+/).each do |token|
@@ -1760,7 +1760,7 @@ end
17601760
17611761From [Steve Randy Waldman](https://github.com/swaldman/nnnock/blob/master/src/main/scala/com/mchange/sc/v1/nnnock/package.scala):
17621762
1763−```
1763+```scala
17641764package object nnnock {
17651765
17661766 sealed trait Noun;
@@ -1842,7 +1842,7 @@ package object nnnock {
18421842
18431843From [Kohányi Róbert](https://github.com/kohanyirobert/snock/blob/master/snock.ss):
18441844
1845−```
1845+```scheme
18461846(import (rnrs (6)))
18471847
18481848(define (i a) a)
@@ -1962,7 +1962,7 @@ From [Kohányi Róbert](https://github.com/kohanyirobert/snock/blob/master/snock
19621962
19631963## Swift
19641964
1965−```
1965+```swift
19661966import Foundation
19671967// 1 :: A noun is an atom or a cell.
19681968// 2 :: An atom is a natural number.
reference/_index.mddeleted−25
@@ -1,25 +0,0 @@
1−+++
2−title = "Reference"
3−weight = 5
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−+++
7−Various reference documents are stored here, particularly for Hoon, but also for other parts of the system.
8−
9−## [The Arvo Glossary](@/docs/reference/arvo-glossary.md)
10−
11−Urbit is known for introducing a great deal of new terminology. The glossary will
12−help demystify our jargon.
13−
14−## [The Cheat Sheet](@/docs/reference/cheat-sheet.md)
15−
16−The cheat sheet is a compact document for looking up Hoon runes.
17−
18−## [Hoon Expressions](@/docs/reference/hoon-expressions/_index.md)
19−
20−This section contains more comprehensive reference materials for Hoon runes and other expressions, describing their exact
21−semantics and syntax.
22−
23−## [Standard Library](@/docs/reference/library/_index.md)
24−
25−This section documents the gates and mold-builders of the Hoon standard library.
reference/hoon-expressions/rune/_index.mddeleted−71
@@ -1,71 +0,0 @@
1−+++
2−title = "Runes"
3−weight = 2
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−+++
7−Runes are a way to form expressions in Hoon.
8−
9−## Non-Rune Expressions
10−
11−### [Constants](@/docs/reference/hoon-expressions/rune/constants.md)
12−
13−Hoon uses runes to form expressions, but not all expressions have runes in them. First, we have constant expressions (and also expressions that would be constant, but that they allow for interpolations).
14−
15−### [Limbs and Wings](@/docs/reference/hoon-expressions/limb/_index.md)
16−
17−Limb and wing expressions also lack runes.
18−
19−## Runes Proper
20−
21−### [`. dot` (Nock)](@/docs/reference/hoon-expressions/rune/dot.md)
22−
23−Runes used for carrying out Nock operations in Hoon.
24−
25−### [`! zap` (wild)](@/docs/reference/hoon-expressions/rune/zap.md)
26−
27−Wildcard category. Expressions that don't fit anywhere else go here.
28−
29−### [`= tis` (Subject Modification)](@/docs/reference/hoon-expressions/rune/tis.md)
30−
31−Runes used to modify the subject.
32−
33−### [`? wut` (Conditionals)](@/docs/reference/hoon-expressions/rune/wut.md)
34−
35−Runes used for branching on conditionals.
36−
37−### [`| bar` (Cores)](@/docs/reference/hoon-expressions/rune/bar.md)
38−
39−Runes used to produce cores.
40−
41−### [`+ lus` (Arms)](@/docs/reference/hoon-expressions/rune/lus.md)
42−
43−Runes used to define arms in a core.
44−
45−### [`: col` (Cells)](@/docs/reference/hoon-expressions/rune/col.md)
46−
47−Runes used to produce cells, which are pairs of nouns.
48−
49−### [`% cen` (Calls)](@/docs/reference/hoon-expressions/rune/cen.md)
50−
51−Runes used for making function calls in Hoon.
52−
53−### [`^ ket` (Casts)](@/docs/reference/hoon-expressions/rune/ket.md)
54−
55−Runes that let us adjust types without violating type constraints.
56−
57−### [`$ buc` (Structures)](@/docs/reference/hoon-expressions/rune/buc.md)
58−
59−Runes used for defining custom types.
60−
61−### [`; mic` (Make)](@/docs/reference/hoon-expressions/rune/mic.md)
62−
63−Miscellaneous useful macros.
64−
65−### [`~ sig` (Hints)](@/docs/reference/hoon-expressions/rune/sig.md)
66−
67−Runes that use Nock `11` to pass non-semantic info to the interpreter.
68−
69−### [`--`, `==` (Terminators)](@/docs/reference/hoon-expressions/rune/terminators.md)
70−
71−Runes used to terminate expressions.
using/_index.mddeleted−18
@@ -1,18 +0,0 @@
1−+++
2−title = "Using"
3−weight = 2
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−+++
7−This section contains guides to using your urbit.
8−
9−- [Creating a Development Ship](creating-a-development-ship) will show you how to set up the environment for coding on Urbit.
10−- [Creating a Comet](creating-a-comet) will show you how to create a comet: quick, disposable 128-bit identities on the Urbit network.
11−- [Admin and Operation](admin) is a guide to the basic commands used to interact with your ship.
12−- [Messaging](messaging) tells you how to use Talk, our chat system.
13−- [Shell](shell) is a guide to using Dojo, our command-line interface.
14−- [Introduction to the Filesystem](filesystem) explains the basics of using use Clay, our revision-control filesystem.
15−- [Source Layout](layout) walks you through the various directories of the Arvo operating system.
16−- [Sail](sail) is a guide to Sail: Hoon markup that's used to build web pages with XML.
17−- [Udon](udon) is a guide to Udon, which is our take on Markdown.
18−- [Generators](generators) will explain how to use the "generator," a kind of file that's the easiest way to run Hoon programs.
using/admin.mddeleted−213
@@ -1,213 +0,0 @@
1−+++
2−title = "Admin and Operations"
3−weight = 2
4−template = "doc.html"
5−+++
6−Your urbit (also called your _ship_) is a persistent Unix process that you
7−mainly control from the console. For some things, a browser will also work.
8−
9−## Shutdown
10−
11−You can turn your urbit off with `Ctrl-d` from the Talk or Dojo prompts.
12−
13−You can force-quit your urbit with `Ctrl-z` from anywhere.
14−
15−## Restart
16−
17−To restart your urbit simply pass the name of your pier:
18−
19−```
20−$ urbit some-planet
21−```
22−
23−or
24−
25−```
26−$ urbit comet
27−```
28−
29−## Logging
30−
31−To log an urbit's command line output to a file, use `script`:
32−
33−```
34−$ script urbit.log urbit your-urbit
35−```
36−
37−## Moving your pier
38−
39−Piers are designed to be portable, but it _must_ be done while the urbit
40−is turned off. Urbit networking is stateful, so you can't run two copies
41−of the same urbit in two places.
42−
43−To move a pier, simply move the contents of the directory it lives in.
44−To keep these files as small as possible we usually use the `--sparse`
45−option in `tar`. With a pier `your-urbit/`, something like this should work:
46−
47−```
48−tar -Scvzf ~/your-urbit.tar.gz ~/your-urbit/
49−scp your-old-server:~/your-urbit.tar.gz your-new-server:~
50−```
51−
52−Then to unzip it, on your other Unix server, run:
53−
54−```
55−tar xfvz your-urbit.tar.gz
56−```
57−
58−Delete the tar file, and, after installing Urbit on your new server,
59−start your urbit back up with:
60−
61−```
62−urbit your-urbit
63−```
64−
65−## Console
66−
67−Your Urbit terminal is separated into two parts: the prompt (the bottom
68−line) and the record (everything above that). The record is shared; all
69−the output from all the apps in your command set appears in it. The
70−prompt is multiplexed.
71−
72−In the CLI, Urbit apps can process your input before you hit return. To
73−see this in action try entering `)` as the first character at the Dojo
74−prompt. Since there is no Dojo command or Hoon expression that starts
75−with ')', the Dojo rejects it.
76−
77−`Ctrl-x` - Switches the prompt between running console apps.
78−
79−`Ctrl-c` - Crash current event. Processed at the Unix layer and prints a stack.
80−trace.
81−
82−`Ctrl-d` - From Talk or Dojo, stops your Urbit process.
83−
84−`Ctrl-z` - Stops the Urbit process from _anywhere_.
85−
86−`↑` / `↓` - History navigation.
87−
88−`Backspace` - Interrupts running commands. For example, if you have begun a multiline Hoon expression and then press backspace, it will discard the already-written code, or if you press backspace while a request is still pending it will cancel it and print `! cancel /hand`.
89−
90−The following emacs-style key bindings are available:
91−
92−```
93−Ctrl-a Cursor to beginning of the line (Home)
94−Ctrl-b Cursor one character backward (left-arrow)
95−Ctrl-e Cursor to the end of the line (End)
96−Ctrl-f Cursor one character forward (right-arrow)
97−Ctrl-g Beep; cancel reverse-search
98−Ctrl-k Kill to end of line
99−Ctrl-l Clear the screen
100−Ctrl-n Next line in history (down-arrow)
101−Ctrl-p Previous line in history (up-arrow)
102−Ctrl-r Reverse-search
103−Ctrl-t Transpose characters
104−Ctrl-u Kill to beginning of line
105−Ctrl-y Yank from kill buffer
106−```
107−
108−Full coverage of the Urbit shell, the Dojo is covered in the
109−[Shell walkthrough](@/docs/using/shell.md).
110−
111−## Web
112−
113−On startup Urbit tries to bind to `localhost:80`. If you're already
114−running something on port `80` -- such as any other HTTP server, or another urbit -- you'll find the urbit
115−that you just started on `8080`, `8081`, and so on. For planets only, we also proxy web
116−domains through Urbit's own servers. Any planet `~your-urbit` is also at
117−`your-urbit.arvo.network`, but only after you [set up DNS](../dns-proxying).
118−
119−Your urbit serves a simple homepage from `http://localhost` or
120−`https://your-urbit.arvo.network` that should be self-explanatory. Since
121−our HTTPS isn't audited / battle tested, we just call it "secure" HTTPS.
122−You can find that on `8443`. Or `8444` (and so on) if you're already
123−running something on `8443`.
124−
125−## Moons {#moons}
126−
127−Planets can spawn moons, which are meant for connected devices: phones, smart
128−TVs, digital thermostats. The basic idea is: your planet runs permanently in a
129−data center somewhere and moons run on all your devices. Each planet can issue
130−~4 billion (`2^32`) moons.
131−
132−To generate a random moon from your planet, run:
133−
134−```
135−~sampel-palnet:dojo> +moon
136−moon: ~faswep-navred-sampel-palnet
137−\/~.0wd.rZU67.3jSny.z1vda.7sr-s.EL1Jt.-76Nj.ugXxY.g6-Bx.HvKZl.G53oV.hPnXe.7U3E3.J4CEe.MEVuq.~08Nt\/
138− .zNT0K.k-Ab~.Nn90d.OZ2fT.-XlQQ.Cfrkf.y6~K0.2Do09.EaE3W.BSK--.5Q~9N.y3QIP.eokH-.T6lwz.gg8MX.7LU5
139− x.DJROE.IzQsy.OXOLr.IOE3a.-QI40.H5ukK.Cw-u4.uxE-y.V-o1F.Q84g0.effP0.de01g.600g1
140−\/ \/
141−```
142−
143−You must manually edit the output of `+moon` to get
144−the correct format for the `<key>`:
145−
146−- strip out the `\/`
147−
148−- combine into one line, omitting spaces
149−
150−- trim the leading `~.`
151−
152−`<key>` would be `0wd.rZU67.3jSny.z1vda ... <snip> ... effP0.de01g.600g1`
153−in this example.
154−
155−Put `<key>` in a file and that file becomes `<keyfile>`.
156−
157−Another way of generating `<keyfile>` is:
158−
159−```
160−~sampel-palnet:dojo> @moon/key +moon
161−moon: ~faswep-navred-sampel-palnet
162−```
163−
164−`<keyfile>` will be at `path/to/sampel-palnet/.urb/put/moon.key`
165−and does not need editing to be used with the `-k` option.
166−
167−You can use the resulting output in the same installation flow from the
168−[Booting a Ship](@/docs/getting-started/booting-a-ship.md) guide, following the same scheme as for booting a planet. That scheme is:
169−
170−```
171−$ urbit -w <moonname> -G <key> -c <piername>
172−```
173−
174−or
175−
176−```
177−$ urbit -w <moonname> -k <keyfile> -c <piername>
178−```
179−
180−The `-c <piername>` argument is not required, but it is recommended; otherwise,
181−the resulting directory is a rather unwieldy moon name.
182−
183−Here's how an example moon might be booted:
184−
185−```
186−$ urbit -w faswep-navred-sampel-palnet -G <key> -c mymoon
187−```
188−
189−or
190−
191−```
192−$ urbit -w faswep-navred-sampel-palnet -k <keyfile> -c mymoon
193−```
194−
195−Moons are automatically synced to their parent `%kids` desk, and can control
196−applications on their parent planet using `|link`. You can read more about
197−those operations in the [filesystem](@/docs/using/filesystem.md) and [console](@/docs/using/shell.md)
198−walkthroughs, respectively.
199−
200−
201−## Continuity breaches
202−
203−While the Urbit network is in this alpha state, we sometimes have to
204−reboot the whole network. This happens either when major changes need
205−to be shipped or we hit a bug that can't be fixed over the air.
206−
207−Because Urbit networking is stateful we call this a _continuity breach_.
208−Everything has to be restarted from scratch. Your pier will continue to
209−function after we have breached, but it wont connect to the rest of the
210−Urbit network.
211−
212−When this happens, back up any files you'd like to save, shut down your
213−urbit and recreate it (as if you were starting for the first time).
using/arvo-network-dns.mddeleted−52
@@ -1,52 +0,0 @@
1−+++
2−title = "Arvo.network DNS"
3−weight = 2
4−template = "doc.html"
5−+++
6−
7−We have a system that lets you request a domain name for your ship in the form of `ship.arvo.network`, where `ship` is your ship's name minus the `~`. This allows users to access their ships remotely using Landscape, our graphical web interface.
8−
9−Stars and planets follow the same process DNS proxying process, and galaxies have their own requirements. Moons and comets are not supported.
10−
11−## Planets and Stars
12−
13−For a planet or star's DNS proxying request to be made and fulfilled, they must be hosting their ship someplace with a public IP address, and its HTTP server must be listening on port 80.
14−
15−To get `ship.arvo.network` on a planet or star, you must set up DNS routing with its parent ship by starting the `:dns` app.
16−To do so, simply run this command in your ship's Dojo:
17−
18−```
19−> :dns|request
20−```
21−
22−You'll then be prompted to enter the public IP address of your ship. You can also pass the IP address as an argument, using the .0.0.0.0 (`@if`) syntax. For example:
23−
24−```
25−> :dns|request .1.2.3.4
26−```
27−
28−`:dns`, running locally, will make an HTTP request to that IP address on port 80 to confirm that it is itself available at that IP and port. If that fails, you'll receive a `%bail-early` message in `:talk`; this request will retry a few times. If the self-check is successful, the request is relayed to `~zod`, and you'll receive a message saying, `request for DNS sent to ~zod`. Once `~zod` has acknowledged receipt of the request, your local `:dns` app will send a `:talk` message saying `awaiting response from ~zod`.
29−
30−The request will be picked up shortly, and the `ship.arvo.network` DNS record will be set to the given IP address. Once that's setup, `~zod` will be notified, and `~zod` will, in turn, notify your ship. That ship will now try to verify that it can reach itself on `ship.arvo.network` over port 80. If it can't, it'll send a message saying `unable to access via ship.arvo.network`. If it can, it will configure itself with that domain, and say `confirmed access via ship.arvo.network`.
31−
32−Great! You're set up now. Try accessing your `ship.arvo.network` in your browser to use Landscape; we recommend using Chrome or Brave.
33−
34−## Galaxies
35−
36−Galaxies are already required to have separate DNS entry at galaxy.urbit.org. There's no automated process for getting that binding, so if you're a galaxy-holder, get in touch with us at support@urbit.org.
37−
38−There is a command for galaxies that will try to re-use their already-necessary Ames DNS entry for HTTPS:
39−
40−```
41−> :dns|auto
42−```
43−
44−This will make HTTP-requests to self-check availability over `galaxy.$AMES-DOMAIN` (currently galaxy.urbit.org), where `galaxy` is the galaxy's name minus the `~`.
45−
46−Otherwise, `:dns|auto` works the same as `:dns|ip` does with stars and planets: if it's available or unavailable, talk messages, and so on.
47−
48−## More Information
49−
50−Configuring a ship's domain causes the `:acme` app to request an HTTPS certificate for that domain from LetsEncrypt. Note that LetsEncrypt also requires that the HTTP server be listening on port 80. If the certificate request fails, `:acme` will send a `:talk` message with an explanation. Once the certificate is successfully retrieved, `:acme` will install it, causing the HTTP servers to restart. A secure server will be started on port 443 (the HTTPS default) if it's available. Otherwise, it will try 8443, and then increment to the next port until it can successfully bind one.
51−
52−The built-in logic for listening on port 80 similar. Urbit tries to bind port 80; if it cannot, it tries 8080, then increments until it can bind a port. Port 80 is available to unprivileged process on recent version of macOS. Otherwise, the process needs to either be run as root, or be given special permission (CAP\_NET_BIND on Linux).
using/creating-a-comet.mddeleted−29
@@ -1,29 +0,0 @@
1−+++
2−title = "Creating a Comet"
3−weight = 1
4−template = "doc.html"
5−+++
6−
7−**Comets** are urbits whose names are 128-bits or 16 syllables, such as:
8−
9−`~dasres-ragnep-lislyt-ribpyl--mosnyx-bisdem-nidful-marzod`
10−
11−Comet names aren't quite as memorable as others, but they're disposable identities that anyone can make for free to join the live network.
12−
13−## Booting a Comet
14−
15−To boot your comet, go into the command line and run the following command from the directory that was created during Urbit installation:
16−
17−```
18−$ urbit -c mycomet
19−```
20−
21−This will take a few minutes and will spin out a bunch of boot messages. Toward the end, you'll see something like:
22−
23−```
24−ames: on localhost, UDP 31337.
25−http: live (insecure, public) on 8080
26−http: live ("secure", public) on 8443
27−http: live (insecure, loopback) on 12321
28−~dasres_marzod:dojo>
29−```
using/creating-a-development-ship.mddeleted−69
@@ -1,69 +0,0 @@
1−+++
2−title = "Creating a Development Ship"
3−weight = 0
4−template = "doc.html"
5−+++
6−
7−To do work with Hoon and with the system, we recommended using a "fake" ship -- one not connected to the network.
8−
9−Because such a ship has no presence on the network, you don't need an Azimuth identity for its purposes. You just need to have [installed our software](@/docs/getting-started/installing-urbit.md).
10−
11−To create a fake ship named `~zod`, run the command below. You can replace `zod` with any valid Urbit ship-name.
12−
13−```
14−urbit -F zod
15−```
16−
17−Now you should see a block of boot messages, starting with the Urbit version number. Welcome!
18−
19−## Basic Operations
20−
21−Welcome to your ship! There's a few things you should do to become oriented.
22−
23−### The Dojo
24−
25−Let's try out the Dojo, the Arvo command line and Hoon REPL:
26−
27−```
28−~sample-planet:dojo> (add 2 2)
29−```
30−
31−Should produce:
32−
33−```
34−> (add 2 2)
35−4
36−```
37−
38−Good.
39−
40−### Mounting
41−
42−Your ship's filesystem being "mounted" means that its filesystem can be interacted with through Unix. This makes things much easier for you.
43−
44−The Arvo filesystem isn't mounted to Unix by default. Switch to the Dojo prompt and run:
45−
46−```
47−~sample-planet:dojo> |mount %
48−```
49−
50−This should produce:
51−
52−```
53−> |mount %
54−>=
55−```
56−
57−which indicates that the command was processed.
58−
59−`|mount %` will cause a `home/` directory to appear inside your _pier_ folder in Unix (the "pier" is our shorthand for the directory whose name corresponds to your Azimuth point). Changes to these files can be committed to your pier by running `|commit %home` once you're done.
60−
61−### Shutting Down and Restarting
62−
63−You can turn your ship off with `ctrl-d` from the Talk or Dojo prompts.
64−
65−To restart your ship, simply pass the name of your pier:
66−
67−```
68−urbit some-planet
69−```
using/filesystem.mddeleted−471
@@ -1,471 +0,0 @@
1−+++
2−title = "Filesystem"
3−weight = 5
4−template = "doc.html"
5−+++
6−Urbit has its own revision-controlled filesystem, Clay. Clay is a typed, global,
7−referentially transparent namespace. An easy way to think about it is like typed
8−`git`.
9−
10−The most common way to use Clay is to mount a Clay node in a Unix directory. The mounted directory is always at the root of your
11−pier directory.
12−
13−## Quickstart
14−
15−This quick-start guide will walk you through some common commands. Follow along
16−using your Dojo. When you get a `>=` message after entering a command, this means
17−that the command was successful.
18−
19−When developing it's a good idea to use a separate desk. Create a `%sandbox`
20−desk based on the `%home` desk:
21−
22−```
23−~your-urbit:dojo> |merge %sandbox ~your-urbit %home
24−```
25−
26−Running `our` produces your ship-name, meaning that you can run the following
27−command instead of typing out the entire thing. Useful for comets, due to their
28−very long names.
29−
30−```
31−~your-urbit:dojo> |merge %sandbox our %home
32−```
33−
34−Most of the time we want to use Clay from Unix. Mount the entire contents of
35−your `sandbox` desk to Unix:
36−
37−```
38−~your-urbit:dojo> |mount /=sandbox=
39−```
40−
41−To explore the filesystem from inside Urbit `+ls` and `+cat` are useful. `+ls`
42−displays files in the current directory, and `+cat` displays the contents of
43−a file.
44−
45−We can use `%` to mean "current directory." The result of the command below
46−is just like using `ls` in a Unix terminal.
47−
48−```
49−~your-urbit:dojo> +ls %
50−```
51−
52−Notice how `+cat %` does the same thing. That's because everything in Clay,
53−including directories, is a file.
54−
55−Let's explore the `/web` directory of the `%sandbox` desk.
56−
57−```
58−~your-urbit:dojo> +ls /=sandbox=/web
59−```
60−
61−Let's see the contents of `/=sandbox=/web/404/hoon`:
62−
63−```
64−~your-urbit:dojo> +cat /=sandbox=/web/404/hoon
65−```
66−
67−Now let's navigate to `/web` on `%sandbox` using `=dir`, which is like `cd` in Unix.
68−
69−```
70−~your-urbit:dojo> =dir /=sandbox=/web
71−```
72−
73−You'll notice that your prompt is now
74−`~your-urbit:dojo/=/sandbox/~2018.10.2..00.35.44..d7e8/web>`.
75−
76−```
77−~your-urbit:dojo/=/sandbox/~2018.10.2..00.35.44..d7e8/web> +ls %
78−```
79−
80−To change back to our home directory, we use `=dir` without any path.
81−
82−```
83−~your-urbit:dojo/=/sandbox/~2018.10.2..00.35.44..d7e8/web> =dir
84−```
85−
86−Sync from your friend `~some-ship`'s `%experiment` desk to your
87−`%sandbox` desk:
88−
89−```
90−~your-urbit:dojo> |sync %sandbox ~some-ship %experiment
91−```
92−
93−If and when your sync is successful, you will receive a message:
94−
95−```
96−activated sync from %experiment on ~some-ship to %sandbox
97−```
98−
99−The ship that you sync from will get their own message indicating that you're
100−both connected as peers:
101−
102−```
103−; ~your-urbit is your neighbor.
104−```
105−
106−---
107−
108−## Manual
109−
110−### Paths
111−
112−A path in Clay is a list of URL-safe text, restricted to the characters
113−`[a z]`,`[0 9]`, `.`, `-`, `_`, and `~`. Formally this is a `(list knot)`,
114−meaning that each segment, delineated by `/`, is of the `knot` ASCII-text type.
115−In other words, paths are expressed as `/foo/bar/baz`. File extensions are
116−separated from file names with `/`, not `.`. Extensions are syntactically
117−identical to subdirectories, except that they must terminate the path.
118−
119−Paths begin with a piece of data called a `beak`. A beak is formally a
120−`(p=ship q=desk r=case)`; it has three components, and might look like
121−`/~dozbud-namsep/home/11`.
122−
123−The first `beak` component is `ship`, which is, as you might guess, the name of
124−an Urbit ship. The second component is `desk`, which is a workspace meant to
125−contain other directories; the default desk is `%home`. The third component is
126−`case`, which represents version information in various ways: date and time;
127−a version sequence, which is a value incremented by one whenever a file on the
128−given `desk` is modified; or an arbitrary plaintext label.
129−
130−You can find what your `beak` is at any given moment by
131−typing `%` in the Dojo and looking at the first three results.
132−
133−We use `beak`s because, unlike the current internet, the Urbit network uses a
134−global namespace. That means that a file named `example.hoon` in the `/gen`
135−directory on the `%home` desk of your ship `~lodleb-ritrul` would have a
136−universal address to anyone else on the network:
137−`/~lodleb-ritrul/home/186/gen/example/hoon`. That, of
138−course, doesn't mean that everyone on the network has privileges to access that
139−path.
140−
141−The structure that combines a `beak` with further path information is called a
142−`beam`.
143−
144−#### Relative paths
145−
146−The `%` command, which we gestured at in the above section, represents the
147−**relative path**, which is the path where you are currently working. If your
148−working directory is just your home desk, indicated by the
149−prompt `~your-planet:dojo>`, then running the command below will print your
150−working directory's `beam` information: your `beak`, and a `~` that represents
151−the empty list since no path is present.
152−
153−```
154−~your-urbit:dojo> %
155−```
156−
157−`%`s can be stacked to indicate one level further up in the hierarchy for each
158−additional `%`. Try the following command:
159−
160−```
161−~your-planet:dojo> %%%
162−```
163−
164−You'll probably notice that it only has your ship name and the empty list. The
165−two additional `%`s abandoned the `case` and the `desk` information by moving
166−up twice the hierarchy.
167−
168−There are no local relative paths. `/foo/bar` must be written as
169−`%/foo/bar`.
170−
171−#### Substitution
172−
173−You don't need to write out the explicit path every time you want to reference
174−somewhere outside of your working directory. You can substitute `=` for the
175−segments of a path.
176−
177−Recall that a full address in the the Urbit namespace is a `beam`: the
178−`/ship/desk/case/path`. If you've switched to another desk before, you're
179−already familiar with substitution syntax:
180−
181−```
182−~your-urbit:dojo> =dir /=sandbox=
183−```
184−
185−The above command substitutes uses substitution to use your current `ship` and
186−`case`; only the `desk` argument, which is located between the other two, is
187−given something new. Without substitution, you would need to write:
188−
189−```
190−~your-urbit:dojo> =dir /~your-urbit/home/85
191−```
192−
193−Substitutions work the same way in `beak`s (the `ship/desk/case` part) and
194−paths. For example, if you are in the `/gen` directory, you can reference a file
195−in the `/app` directory like below. (`+cat` displays the contents of a file).
196−
197−```
198−~your-urbit:dojo> =dir %/gen
199−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen> +cat /===/app/curl/hoon
200−```
201−
202−Note what was substituted out, and note that we don't need to separate `=` with
203−`/`.
204−
205−If we changed our working directory to something called `/gen/gmail`, we could
206−access a file called
207−
208−```
209−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen> =dir %/gmail
210−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/gmail> +cat /===/app/=/split/hoon
211−```
212−
213−Because both paths share a directory named `/gmail` at the same position in the
214−address hierarchy -- which, if you recall, is just a `list` -- the above command
215−works!
216−
217−We can do the same thing between desks. If `%sandbox` has been merged with
218−`%home`, the following command will produce the same results as the above
219−command.
220−
221−```
222−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/gmail> +cat /=sandbox=/app/=/split/hoon
223−```
224−
225−Most commonly this is used to avoid having to know the current revision
226−number in the `dojo`: `/~lodleb-ritrul/home/~2018.10.2..00.35.44..d7e8/gen/example/hoon`
227−
228−#### Changing directories
229−
230−Change the working directory with `=dir`. It's our equivalent of the Unix `cd`.
231−
232−For example, the syntax to navigate to `/home/gen/ask` is:
233−
234−```
235−~your-urbit:dojo> =dir /=home=/gen/ask
236−```
237−
238−This command will turn your prompt into something like this:
239−
240−```
241−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/ask>
242−```
243−
244−Using `=dir` without anything else uses the null path, which returns you to
245−your home desk.
246−
247−```
248−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen/ask> =dir
249−```
250−
251−Your dojo prompt will turn back into `~your-urbit:dojo>`.
252−
253−To go up levels in the path hierarchy, recall the relative path expression
254−`%`. Stacking them represents another level higher in the hierarchy than
255−the current working directory for each `%` beyond the initial. The command below
256−brings you one level up:
257−
258−```
259−~your-urbit:dojo> =dir %/gen
260−~your-urbit:dojo/=/=/~2018.10.2..00.35.44..d7e8/gen> =dir %%
261−```
262−
263−### Revision-control
264−
265−#### Mount
266−
267−Syntax: `|mount /clay/path [Unix-name]`
268−
269−Mount the `clay-path` at the Unix mount point `Unix-name`.
270−
271−**Examples:**
272−
273−```
274−|mount %/web
275−```
276−
277−Mounts `%/web` to `/web` inside your pier directory.
278−
279−```
280−|mount %/gen generators
281−```
282−
283−Mounts `%/gen` to `/generators` inside your pier directory.
284−
285−#### Unmount
286−
287−```
288−|unmount [clay-path || Unix-name]
289−```
290−
291−Unmount the path or name from Unix.
292−
293−**Examples:**
294−
295−```
296−|unmount %/web
297−```
298−
299−Unmounts the path `%/web` from whatever name it was mounted as.
300−
301−```
302−|unmount %generators
303−```
304−
305−Unmounts the Unix path `/generators`.
306−
307−#### Merge
308−
309−```
310−|merge desk beak[, =gem strategy]
311−```
312−
313−Merges a `beak` into a `desk` using an optional merge `strategy`.
314−
315−A `beak` is a ship-desk-case triple, encoded as a
316−path(`/~dozbud/home/2`)
317−
318−**Examples:**
319−
320−```
321−|merge %home-work /=home=, =gem %fine
322−```
323−
324−Merge `/=home=` into `%home-work` using merge strategy `%fine`.
325−
326−```
327−|merge %examples ~wacbex-ribmex %examples
328−```
329−
330−Merge the `%examples` desk from `~waxbex-ribmex`
331−
332−#### Sync
333−
334−```
335−|sync desk plot [plot-desk]
336−```
337−
338−Subscribe to continuous updates from remote `plot` on local `desk`.
339−`plot-desk` can specify the remote `desk` name. When omitted it is
340−defaulted to being the same as `desk`. Non-comet urbits have
341−`|sync %home ~parent %kids` automatically set up (where `~parent` is the
342−planet that issued a moon, the star that issued a planet, or the galaxy
343−that issued a star).
344−
345−**Examples:**
346−
347−```
348−|sync %home-local ~dozbud %home
349−
350−|sync %home ~doznec
351−```
352−
353−#### Unsync
354−
355−```
356−|unsync desk plot [plot-desk]
357−```
358−
359−Unsubscribe from updates from remote `plot` on local `desk` with
360−optional `plot-desk`. Arguments must match original `|sync` command.
361−
362−Example:
363−
364−```
365−|unsync %home-local ~dozbud %home
366−```
367−
368−#### Label
369−
370−```
371−|label desk name`
372−```
373−
374−Label the current version of `desk` `name`.
375−
376−Example:
377−
378−```
379−|label %home release
380−```
381−
382−### Merge strategies
383−
384−`%init` - Used if it's the first commit to a desk. Also can be used to
385−"reinitialize" a desk -- revision numbers keep going up, but the new
386−revision isn't necessarily a descendent of the previously numbered
387−version, allowing merges to be rerun.
388−
389−`%this` - Keep what's in Bob's desk, but join the ancestry.
390−
391−`%that` - take what's in Alice's desk, but join the ancestry. This is
392−the reverse of `%this`. This is different from `%init` because the new
393−commit has both sides in its ancestry.
394−
395−`%fine` - "fast-forward" merge. This succeeds if and only if one head is in the
396−ancestry of the other.
397−
398−`%meet`, `%mate`, and `%meld` - find the most recent common ancestor to
399−use as our merge base.
400−
401−A `%meet` merge only succeeds if the changes from the merge base to
402−Alice's head (hereafter, "Alice's changes") are in different files than
403−Bob's changes. In this case, the parents are both Alice's and Bob's
404−heads, and the data is the merge base plus Alice's changed files plus
405−Bob's changed files.
406−
407−A `%mate` merge attempts to merge changes to the same file when both
408−Alice and Bob change it. If the merge is clean, we use it; otherwise, we
409−fail. A merge between different types of changes -- for example,
410−deleting a file vs changing it -- is always a conflict. If we succeed,
411−the parents are both Alice's and Bob's heads, and the data is the merge
412−base plus Alice's changed files plus Bob's changed files plus the merged
413−files.
414−
415−A `%meld` merge will succeed even if there are conflicts. If there are
416−conflicts in a file, then we use the merge base's version of that file,
417−and we produce a set of files with conflicts. The parents are both
418−Alice's and Bob's heads, and the data is the merge base plus Alice's
419−changed files plus Bob's changed files plus the successfully merged
420−files plus the merge base's version of the conflicting files.
421−
422−`%auto` - meta-strategy. Check to see if Bob's desk exists, and if it
423−doesn't we use an `%init` merge. Otherwise, we progressively try
424−`%fine`, `%meet`, and `%mate` until one succeeds. If none succeed, we
425−merge Bob's desk into a scratch desk. Then, we merge Alice's desk into
426−the scratch desk with the `%meld` option to force the merge. Finally, we
427−annotate any conflicts, if we know how.
428−
429−### Manipulation
430−
431−#### +cat
432−
433−Syntax: `+cat path [path ...]`
434−
435−Similar to Unix `cat`. `+cat` takes one or more `path`s, and prints their
436−contents. If that `path` is a file, the contents of the file is printed. If the
437−`path` terminates in a directory, the list of names at that path is produced.
438−
439−#### +ls
440−
441−Syntax: `+ls path`
442−
443−Similar to Unix `ls`. `+ls` takes a single `path`.
444−
445−Produces a list of names at the `path`.
446−
447−```
448−~your-urbit:dojo> +cat %/our/home/gen/curl/hoon
449−```
450−
451−#### |rm
452−
453−Syntax: `|rm path`
454−
455−Remove the data at `path`. `path` must be a path to actual node, not a
456−'directory'
457−
458−#### |cp
459−
460−Syntax: `|cp to from`
461−
462−Copy the file at `from` into the path `to`.
463−
464−#### |mv
465−
466−Syntax: `|mv to from`
467−
468−Move the file at `from` into the path `to`.
469−
470−In Clay, `|mv` is just a shorthand for `|cp` then `|rm`. The `|rm`
471−doesn't happen unless the `|cp` succeeds.
using/messaging.mddeleted−680
@@ -1,680 +0,0 @@
1−+++
2−title = "Messaging"
3−weight = 2
4−template = "doc.html"
5−+++
6−
7−Talk is the built-in frontend for the Urbit messaging and notifications
8−protocol, Hall. Today we use Hall to chat and coordinate, but it's really
9−a general purpose piece of infrastructure.
10−
11−For the time being come join us in `~dopzod/urbit-help` by using the
12−'quickstart' section below. `~dopzod` is the host ship, and `/urbit-help` is the
13−channel on that ship.
14−
15−Today, Hall is sort of like a distributed, encrypted Slack that can be
16−used from the CLI and the browser. There’s no central Hall server.
17−Any urbit can host one.
18−
19−Hall is a general purpose tool for both aggregating and publishing
20−streams of messages. Applications can use Hall as their transport
21−protocol, API connectors can push disparate data sources into Hall,
22−and so on. There are lots of things a distributed message protocol can
23−be used for that we haven't even thought of.
24−
25−Here we'll be discussing how to operate the default CLI frontend, Talk,
26−to send and receive messages. For a more in-depth look at Hall's internals,
27−take a look at its [documentation](@/docs/learn/arvo/hall.md).
28−
29−## Quickstart
30−
31−The most common uses of Talk right now are communicating over a public chat channel called `~dopzod/urbit-help` and sending direct messages. Everyone is more than welcome in `~dopzod/urbit-help`. It's the place to get help, ask questions and chat about Urbit in general.
32−
33−There are two ways of using Talk: from the terminal running the Urbit process, or through the Landscape web UI available at `http://localhost/~~/landscape`.
34−
35−If you're using Landscape for the first time, you'll need to enter a code to gain access. You can obtain this code by running `+code` from the Dojo.
36−
37−### Joining a Channel
38−
39−In Hall, a medium for a message is called a _circle_. There are four types of circles, but we for now we'll be dealing with the _channel_: a publicly accessible chatroom for general use. We'll discuss the other three kinds in the [manual](#manual) section.
40−
41−Let's join the `~dopzod/urbit-help` channel. Use `ctrl-x` to switch from Dojo to Talk.
42−
43−Then:
44−
45−```
46−~your-urbit:talk> ;join ~dopzod/urbit-help
47−```
48−
49−Scrolling down your terminal window, you'll probably see the playback of
50−previous `~dopzod/urbit-help` messages that you missed.
51−
52−Post a line to `~dopzod/urbit-help:`
53−
54−```
55−~your-urbit:talk= Hello, world!
56−```
57−
58−You'll see your message printed below messages from others that came before it:
59−
60−```
61−~your-urbit= Hello, world!
62−```
63−
64−### Subscribing to a Channel in Landscape
65−
66−In Landscape, you can always navigate to a channel by opening the menu, or using the shortcut `cmd-k`, then typing `go ~host-urbit/channel-name`. However, if you want to see messages in your inbox, you'll need to join from the Talk terminal.
67−
68−Again, that's:
69−
70−```
71−;join ~dopzod/urbit-help
72−```
73−
74−Now, navigate to `localhost/~~/landscape`. You should see recent messages under the "Recent" tab, and if you navigate to the "All" tab, you should see your subscription to `~dopzod/urbit-help` under "Chats".
75−
76−### Direct Messaging
77−
78−To send a direct message to someone, first set your audience:
79−
80−```
81−~your-urbit:talk= ;~talsur-todres
82−```
83−
84−You'll see your prompt change:
85−
86−```
87−~your-urbit:talk[~talsur-todres]
88−```
89−
90−Now you and `~talsur-todres` can exchange messages directly.
91−
92−```
93−~your-urbit:talk[~talsur-todres] Hey buddy!
94−```
95−
96−To set your audience back to `~dopzod/urbit-help`:
97−
98−```
99−~your-urbit:talk[~talsur-todres] ;~dopzod/urbit-help
100−```
101−
102−You'll see your prompt change back:
103−
104−```
105−~your-urbit:talk=
106−```
107−
108−You can also use the ASCII "glyph" assigned to your `~dopzod/urbit-help` circle as a shortcut:
109−
110−```
111−~your-urbit:talk[~talsur-todres] ;=
112−~your-urbit:talk=
113−```
114−
115−(Your ship may have a different glyph than `=` for your circle)
116−
117−Use `;leave` to unsubscribe from a channel:
118−
119−```
120−~your-urbit:talk= ;leave ~dopzod/urbit-help
121−```
122−
123−The web UI ships as compiled JavaScript on your urbit, but has its own
124−source repo [here](https://github.com/urbit/talk).
125−
126−Last, let's create a channel we can invite some friends to:
127−
128−```
129−~your-urbit:talk= ;create channel %my-channel 'Some description.'
130−```
131−
132−Now you can tell your friends to `;join ~your-urbit/my-channel`.
133−
134−---
135−
136−## Manual
137−
138−Hall's design is similar in spirit to
139−[NNTP](https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol),
140−the underlying protocol for Usenet.
141−
142−Our design is pretty simple: Hall messages are called _posts_. Posts
143−go to _circles_. Any urbit can host or subscribe to any number of circles.
144−
145−There are four kinds of circles: a write-only `%mailbox` for direct
146−messages, an invite-only `%village` for private conversation, a read-only
147−`%journal` for curated content, and a public-access `%channel` for
148−general use.
149−
150−### Posts
151−
152−A post can be a variety of different data structures. Let's look at the
153−ones you can use from within Talk: lines, URLs, Hoon and replies.
154−
155−#### Lines
156−
157−A line is simply a string of text. Depending on the filtering rules set
158−by the circle's host, these may or may not include uppercase and Unicode
159−characters (see [filter](#filter)).
160−
161−If the line starts with `@`, it's an action (like `/me` in IRC).
162−
163−```
164−~your-urbit:talk= @sends a message.
165−```
166−
167−will print as
168−
169−```
170−~your-urbit sends a message.
171−```
172−
173−#### URLs
174−
175−A URL is any valid URL.
176−
177−```
178−~your-urbit:talk= https://example.com/
179−```
180−
181−#### Hoon
182−
183−You can use Talk to evaluate Hoon code and share the result with everyone in a
184−Hall circle. To do so, preface your Hoon with `#`.
185−
186−```
187−~your-urbit:talk= #(add 2 2)
188−```
189−
190−will print as
191−
192−```
193−~your-urbit# (add 2 2)
194−4
195−```
196−
197−#### Replies
198−
199−To indicate what you're saying is in direct response to a specific message, select the message (see Activating Lines below) and type your response.
200−
201−```
202−~some-urbit= Hello! How are you?
203−~your-urbit:talk= ; Well, thanks!
204−```
205−
206−will print as
207−
208−```
209−~your-urbit=^ Well, thanks!
210−```
211−
212−### Activating Lines
213−
214−A line number identifying the **subsequent** line is displayed every 5
215−lines.
216−
217−```
218−---------[0]
219−~your-urbit= This is my message.
220−~your-urbit= This is another message.
221−~your-urbit sends a message.
222−~your-urbit/ http://example.com/
223−~your-urbit# (add 2 2)
224− 4
225−---------[5]
226−~your-urbit=^ That's my message!
227−```
228−
229−You can use a line number to **activate** a line:
230−
231−```
232−~your-urbit:talk= ;5
233−```
234−
235−which prints the number, line identifier, timestamp, sender, audience,
236−and contents:
237−
238−```
239−? 0
240−0v3.hl51p.jhege.amhec.vb37r.3rejr at ~2016.6.24..04.48.21..a235
241−~your-urbit to ~another-urbit
242−in reply to: ~your-urbit:
243−> This is my message.
244−That's my message!
245−```
246−
247−If information got truncated — like what happens for long URLs or expressions,
248−or if there's additional information available — as is the case with
249−replies and attachments (e.g. stack traces) — activating the message will show
250−you all the details.
251−
252−You can also activate the most recent line with `;`, the second-most recent
253−with `;;`, and so on.
254−
255−### Creating and managing circles
256−
257−As mentioned before, any urbit can host any number of circles. Existing circles
258−can be deleted or modified with various commands. All commands in this section
259−shoild be sent from the `talk>` prompt.
260−
261−#### Create
262−
263−Syntax: `;create [type] %name 'description'`
264−
265−Creates and joins a circle, where `[type]` is any of the following:
266−- `channel`: public circle. Has a blacklist for write control.
267−- `village`: invite-only circle.
268−- `journal`: publicly readable, invite-only for writing.
269−- `mailbox`: publicly writeable, can only be read by its host.
270−
271−Let's create an example mailbox:
272−
273−```
274−sampel-palnet:talk> ;create mailbox %coolbox 'cool messages only'
275−```
276−
277−Something like this should print:
278−
279−```
280−--------------| ;create mailbox %coolbox 'cool messages only'
281−--------------| :: onn %coolbox
282−--------------| bound '>' {[hos=~sampel-palnet nom=%coolbox]}
283−--------------| %coolbox: see ~sampel-palnet hear
284−--------------| new > %coolbox
285−--------------| %coolbox: cap: cool messages only
286−--------------| %coolbox: fit: caps:Y unic:✔
287−```
288−
289−###### Delete
290−
291−Syntax: `;delete %name 'optional reason'`
292−
293−Deletes a circle. If a reason is specified, that gets sent to all
294−subscribers before the circle gets deleted.
295−
296−To delete our example above:
297−
298−```
299−sampel-palnet:talk> ;delete %coolbox 'people sent uncool messages'
300−```
301−
302−#### Change Description
303−
304−Syntax: `;depict %name 'description'`
305−
306−Changes the description of an existing circle `%name`.
307−
308−For example:
309−
310−```
311−sampel-palnet:talk> ;depict %coolbox 'cool messages only. NO EXCEPTIONS.'
312−```
313−
314−
315−#### Filter
316−
317−Syntax: `;filter %name [capitals] [unicode]`
318−
319−Configures the message filter for circle `%name`: whether to allow
320−capital and/or unicode characters. `y`/`&`/`true` for allowed,
321−`n`/`|`/`false` for disallowed.
322−
323−So, to allow capital letters and disallow unicode in the circle `%coolbox`:
324−
325−```
326−sampel-palnet:talk> ;filter %coolbox & |
327−```
328−or
329−```
330−sampel-palnet:talk> ;filter %coolbox y n
331−```
332−
333−And we get the output:
334−
335−```
336−--------------| ;filter %coolbox & |
337−--------------| %coolbox: fit: caps:Y unic:n
338−```
339−
340−#### Invite
341−
342−Syntax: `;invite %name ~someone`
343−
344−Invites someone into your circle `%name`. If they were previously banished,
345−removes them from the blacklist.
346−Can also invite multiple ships at once, `~comma, ~separated`.
347−
348−For example:
349−
350−```
351−~sampel-palnet:talk> ;invite %coolbox ~lodleb-ritrul
352−```
353−
354−#### Banish
355−
356−Syntax: `;banish %name ~someone`
357−
358−Removes someone from your circle `%name`. If they were previously invited,
359−removes them from the whitelist.
360−Can also banish multiple ships at once, `~comma, ~separated`.
361−
362−#### Source
363−
364−Syntax: `;source %name ~other/circle`
365−
366−Adds `~other/circle` as a source for circle `%name`. This causes all
367−messages sent to `~other/circle` to also appear in `%name`.
368−
369−For example:
370−
371−```
372−~sampel-palnet:talk> ;source %coolbox ~marzod/urbit-help
373−```
374−
375−#### Unsource
376−
377−Syntax: `;unsource %name ~other/circle`
378−
379−Removes `~other/circle` as a source for circle `%name`.
380−
381−For example:
382−
383−```
384−~sampel-palnet:talk> ;unsource %coolbox ~marzod/urbit-help
385−```
386−
387−### Circle Membership
388−
389−If you have joined a circle, you can make this information publicly
390−available to help others find that circle as well.
391−
392−#### Show Membership
393−
394−Syntax: `;show ~some/circle`
395−
396−Adds a circle to your public membership list on your Hall profile. Hall profiles
397−are not used yet.
398−
399−#### Hide Membership
400−
401−Syntax: `;hide ~some/circle`
402−
403−Removes a circle from your public membership list on your Hall profile. Hall
404−profiles are not used yet.
405−
406−### Status
407−
408−You'll see status notifications when people enter or leave circles you're
409−subscribed to.
410−
411−#### Notifications Off
412−
413−Syntax: `;set quiet`
414−
415−Turn off status (and config) notifications.
416−
417−#### Notifications On
418−
419−Syntax: `;unset quiet`
420−
421−Turn on status (and config) notifications.
422−
423−#### Who
424−
425−Syntax: `;who`
426−
427−List everyone in all your subscribed circles. Optionally specify a
428−specific circle to list members of just those: `;who ~some/circle`
429−
430−For example:
431−
432−```
433−~sampel-palnet:talk> ;who ~marzod/urbit-help
434−```
435−
436−#### Attend
437−
438−Syntax: `;attend ~some/circle [presence]`
439−
440−Manually set your presence to show up as one of the following. (In the
441−future, a sufficiently advanced client can automatically set these for
442−you.)
443−
444−- `talk` - typing
445−- `hear` - listening
446−- `idle` - inactive
447−- `gone` - not present
448−
449−For example:
450−
451−```
452−~sampel-palnet:talk> ;attend ~marzod/urbit-help idle
453−```
454−
455−#### Set Display Name
456−
457−Syntax: `;name ~some/circle 'my handle'`
458−
459−Set a handle ("name") for yourself in a specific circle. It will display
460−to users who have done `;set nicks`, but gets truncated if it's longer
461−than 14 characters.
462−
463−## Audience
464−
465−An audience consists of one or more messaging targets. These can be
466−circles or ships. (In the latter case, it's secretly the `~ship/inbox`
467−circle.)
468−
469−### Circle Glyphs
470−
471−Glyphs are found at the end of your prompt to as a quick indicator of where
472−your messages will be sent.
473−
474−Glyphs are assigned by circle hash out of the following list:
475−
476−```
477−> = + - } ) , . " ' ^ $ % & @
478−```
479−
480−Alphanumeric characters and `|#;:*~_` are reserved; all others (the
481−above list, and `\/!?({<`) can be manually assigned.
482−
483−For example, `-` the glyph at the end of the prompt below might indicates that
484−messages sent from this prompt will go to some circle with that glyph:
485−
486−```
487−~sampel-palnet:talk-
488−```
489−
490−To see what circle is bound to a glyph, use the `;what` command followed by the
491−glyph in question, or use `;what` without specifying a glyph to see all of your
492−subscriptions which are bound to glyphs. For example, to see `=`:
493−
494−```
495−~sampel-palnet:talk> ;what =
496−~dopzod/urbit-help
497−```
498−
499−To see all of your glyph-bound subscriptions:
500−
501−```
502−~sampel-palnet:talk> ;what
503−> ~paldev/numismatic-forum
504−. ~middev/ny-martians
505−= ~dopzod/urbit-help
506−```
507−
508−Not every audience has a glyph, however. When the audience doesn't have a glyph,
509−such as in the case of direct-messaging a ship, we see their name at the end of
510−the prompt instead. Here we're talking directly to `~dannum-mitryl`:
511−
512−```
513−~sampel-palnet:talk[~dannum-mitryl]
514−```
515−
516−#### Bind
517−
518−Syntax: `;bind [glyph] /circle-name`
519−
520−Assigns the chosen glyph to a circle owned by your ship.
521−
522−For example:
523−
524−```
525−~sampel-palnet:talk> ;bind + /my-circle
526−```
527−
528−#### Unbind
529−
530−Syntax: `;unbind [glyph] /circle-name`
531−
532−Unassigns the chosen glyph from a circle owned by your ship.
533−
534−For example:
535−
536−```
537−~sampel-palnet:talk> ;unbind + /my-circle
538−```
539−
540−### Prefixes
541−
542−Received posts are prefixed with a glyph to let you know what the
543−audience is. You can activate an individual post to see the full
544−audience.
545−
546−There are a few special-purpose glyphs:
547−
548−- `|` - Informational messages
549−- `:` - Posts directly to you
550−- `;` - Posts to you and others (a multiparty conversation)
551−- `*` - Posts to a complex audience that doesn't directly include you.
552−
553−
554−### Configuration
555−
556−#### Set Audience
557−
558−`;~ship/circle`
559−
560−Set audience to `~ship/circle`.
561−
562−#### Set Audience by Glyph
563−
564−Syntax: `;[glyph]`
565−
566−Set audience to the circle previously bound to the chosen glyph.
567−
568−#### Set Audience to Ship
569−
570−syntax `;~ship`
571−
572−Set audience to another ship.
573−
574−#### Set Audience to Own Circle
575−
576−Syntax: `;%circle`
577−
578−Set audience to a circle on your own ship
579−
580−#### Set Audience + Send Message
581−
582−Syntax: `;~dannum-mitryl this is a private message`
583−
584−Set the audience and send a post in the same line. This works for all of the
585−above audience commands.
586−
587−Your audience is configured with regard to the following rules (in order):
588−
589−- if you manually set the audience, that audience.
590−- if you activated a post, the post you activated.
591−- audience of the last post sent.
592−
593−### Local nicknames
594−
595−#### See Nicknames
596−
597−Syntax: `;nick`
598−
599−List all local nicknames.
600−
601−#### Find Nickname
602−
603−Syntax: `;nick ~some-urbit`
604−
605−Look up a nickname using the known ship-name.
606−
607−#### Reverse Find Nickname
608−
609−syntax: `;nick plato`
610−
611−Find a ship's name using its nickname.
612−
613−#### Set Nickname
614−
615−Syntax: `;nick ~some-urbit plato`
616−
617−Create a new nickname.
618−
619−#### Clear Nickname
620−
621−Syntax: `;nick ~some-urbit ~`
622−
623−Clear an assigned nickname.
624−
625−#### Display Nicks, Not Ship-Names
626−
627−Syntax: `;set nicks`
628−
629−Show nicknames instead of ship-names. If no local nickname is set, uses
630−that user's handle. If the user has no handle, just the urbit name.
631−
632−#### Display Ship-Names, Not Nicks
633−
634−Syntax: `;unset nicks`
635−
636−Show ship-names instead of nicknames.
637−
638−Nicknames and handles longer than 14 character will be truncated in
639−output. Nicknames are strictly local - like the names on entries in a
640−phonebook.
641−
642−### Miscellaneous configuration
643−
644−#### Show Timestamps
645−
646−Syntax: `;set showtime`
647−
648−Show the timestamp for each message.
649−
650−#### Hide Timestamps
651−
652−Syntax: `;unset showtime`
653−
654−Stop showing the timestamp for each message.
655−
656−#### Change Time Zone
657−
658−Syntax: `;set timezone [+/-][hours]`
659−
660−Adjust the display of the timestamps to a specific timezone. Relative to UTC.
661−
662−#### Sound Notification On
663−
664−Syntax: `;set notify`
665−
666−Emit a terminal bell sound if your six-syllable ship name is mentioned in
667−a message.
668−
669−#### Sound Notification Off
670−
671−Syntax `;unset notify`
672−
673−Do not notify when your ship name is mentioned.
674−
675−#### Set Width
676−
677−Syntax: `;set width [number]`
678−
679−Set the rendering width of `:talk` to a specific number of characters.
680−(Minimum of 30.)
using/operating-a-star.mddeleted−49
@@ -1,49 +0,0 @@
1−+++
2−title = "Operating a Star"
3−weight = 6
4−template = "doc.html"
5−+++
6−A _ship_ is an instance of the Arvo operating system that is used as a personal server on the Arvo network. Stars are a type of ship that act as infrastructure for the Arvo network. In the Arvo ship-hierarchy, stars are below galaxies and above planets.
7−
8−Parallel to the Arvo network is Azimuth, the Urbit identity system that uses the Ethereum blockchain. All ships must boot with a corresponding _point_ -- an Azimuth identity -- to use the Arvo network.
9−
10−Important star operations happen on both the Arvo side and the Azimuth side. On the Arvo side, these operations come in the form of Dojo commands. On the Azimuth side, operations happen by making changes to smart-contracts on the blockchain via a point.
11−
12−## Powers of a Star
13−
14−Stars are above planets in the network hierarchy in the sense that each star sponsors some number of planets: stars discover peers for planets, route packets for planets, provide DNS routing for planets, and push software updates to planets. A star that fulfills this is called the **sponsor** of planets that receive such services from the star; those planets, in turn, are called **dependents** of that star.
15−
16−Stars are also the "parents" of planets. A new planet comes into existence only when spawned by a parent star. A parent planet is the sponsor of its children planets by default. This can change if a planet chooses to find a new sponsor (see the "Escaping a Sponsor" section below).
17−
18−Planets must have a sponsor star to use most features of the Arvo network. A planet cannot boot without a sponsor, and cannot make new connections to peers as long as it is not connected to a sponsor. Planets without a sponsor will still be able to message discovered peers until any such peers change their IP addresses.
19−
20−## Responsibilities
21−
22−Like with real-life infrastructure, the operation of Arvo infrastructure comes with unique responsibilities. For reasons stated above, stars should be always be online on a reliable cloud service, such as Amazon Web Services or Google Cloud Platform. These systems have layers of redundancies that make them much more resilient than local machines, so stars hosted on the cloud are unlikely to leave their dependents in the dark.
23−
24−## Operations
25−
26−Below are some handy operations for the use and maintenance of your star.
27−
28−### arvo.network DNS Records
29−
30−We have a system that lets users request a domain name for their star under `arvo.network`, in the form of `shipname.arvo.network`, where `shipname` is their ship's name, so that it can be accessed remotely via our Landscape web interface. To find out how to do this, take a look at the [DNS Proxying](../dns-proxying) documentation.
31−
32−### Maintaining Connectivity
33−
34−Occasionally, your star might lose network connectivity due to a known timer issue or by falling out of sync with the Ethereum blockchain. When this happens, there are a few things to try:
35−
36−1. Enter the `|bonk` command in the Dojo to reset the timer and restore connectivity.
37−2. Run `|start %eth-manage`, then `:eth-manage %look-ethnode` to ensure that your star is synced up to the latest block.
38−
39−When in doubt, contact [support@urbit.org](mailto:support@urbit.org).
40−
41−### Escaping a Sponsor
42−
43−Planets are, of course, able to change sponsors. To do this, they must request that a different star takes them on as a dependent and that star must accept the request. Planets cannot emancipate themselves from a sponsor without having a new sponsor lined up.
44−
45−All of these actions happen on Azimuth. There will be Bridge functionality to handle these actions in the future, but for now users will need to interact directly with the contracts with MetaMask, through services such as [Etherscan.io](https://etherscan.io/address/ecliptic.eth#writeContract). A sketch of the process is listed below; for now, only the Ethereum-savvy should act on these steps.
46−
47−+ The planet calls the `escape` function in the Ecliptic contract and writes the resulting data to the blockchain.
48−+ If the chosen star wants to become the planet's sponsor, it calls the `adopt` function in the Ecliptic contract.
49−+ The Arvo network notices the change, and the operation is complete.
using/shell.mddeleted−440
@@ -1,440 +0,0 @@
1−+++
2−title = "Shell"
3−weight = 4
4−template = "doc.html"
5−+++
6−The Dojo is our shell; it processes system commands and returns output. It's a
7−good place to quickly experiment with Urbit. On the surface the Dojo is just a
8−Hoon REPL. On the inside, the Dojo is a system for operating on and transforming
9−data in Urbit.
10−
11−
12−## Quickstart
13−
14−You can use the Dojo to run arbitrary Hoon code, as well as non-Hoon system
15−commands.
16−
17−### Math
18−
19−Evaluate a Hoon expression (whitespace matters):
20−
21−```
22−~your-urbit:dojo> (add 2 2)
23−~your-urbit:dojo> %+ add 2 2
24−```
25−
26−Tall-form Hoon may require multiple lines:
27−
28−```
29−~your-urbit:dojo> %+ add
30−~your-urbit:dojo< 2
31−~your-urbit:dojo< 2
32−```
33−
34−Hoon uses something called [the subject](@/docs/learn/hoon/hoon-tutorial/the-subject-and-its-legs.md).
35−The Dojo has its own subject, and that's where Hoon's equivalent of variables,
36−called faces, are stored.
37−
38−Use `=var` to save faces to the Dojo subject.
39−
40−```
41−~your-urbit:dojo> =foo (add 2 2)
42−```
43−
44−Note, however, that `=var` is Dojo syntax, not Hoon syntax. You cannot bind a
45−face in a `.hoon` file in this way.
46−
47−### System Commands
48−
49−Use `=dir` to set the current working directory:
50−
51−```
52−~your-urbit:dojo> =dir %/web
53−```
54−
55−(`%` represents your current directory. For a complete explanation on urbit
56−paths, see the [filesystem section](@/docs/using/filesystem.md))
57−
58−Generators (files in `/gen`) are run with `+`:
59−
60−```
61−~your-urbit:dojo> +hello 'world'
62−```
63−
64−Save output to a file in `%clay` with `*`:
65−
66−```
67−~your-urbit:dojo> *some/file/path/hoon 'hello world'
68−```
69−
70−Run system commands from `:hood`, like `reload`, using `|`:
71−
72−```
73−~your-urbit:dojo> |reload %eyre
74−```
75−
76−## Generators
77−
78−Generators are short Hoon scripts, saved as `.hoon` files in the `/gen`
79−directory. Many Dojo commands exist in the form of generators. The syntax for
80−running a generator is `+genname` for a generator saved as `genname.hoon`.
81−
82−### +cat
83−
84−Accepts a path and displays the file. Similar to Unix `cat`.
85−
86−```
87−~your-urbit:dojo> +cat %/gen/curl/hoon
88−```
89−
90−### +code
91−
92−Generates a code that is used to remotely log into your ship. No
93−arguments.
94−
95−```
96−~your-urbit:dojo> +code
97−```
98−
99−### +curl
100−
101−Retrives data from a URL. Accepts a `tape`. Similar to Unix `curl`.
102−
103−```
104−~your-urbit:dojo> +curl "http://nyt.com"
105−```
106−
107−### +hello
108−
109−Just prints the argument. Accepts a `@ta`.
110−
111−```
112−~your-urbit:dojo> +hello 'mars'
113−```
114−
115−### +ls
116−
117−Similar to Unix `ls`. Accepts a path.
118−
119−```
120−~your-urbit:dojo> +ls %/web
121−~your-urbit:dojo> +ls /~talsur-todres/home/2/web/notes
122−```
123−
124−### +moon
125−
126−Generates a random moon from a planet. No arguments.
127−
128−```
129−~your-urbit:dojo> +moon
130−```
131−
132−### +solid
133−
134−Compile the current state of the kernel and output a
135−noun. Usually downloaded to a file in unix. No arguments.
136−
137−```
138−~your-urbit:dojo> .urbit/pill +solid
139−```
140−
141−### +test
142−
143−Testrunner. Can test multiple generators at once, conventionally ones
144−in the `/test` folder. Takes a path.
145−
146−```
147−~your-urbit:dojo> +test /lib
148−```
149−
150−### +ticket
151−
152−Generate a ticket for an urbit ship. Takes an urbit name (`@p`).
153−
154−
155−```
156−~your-urbit:dojo> +ticket ~talsur-todres-your-urbit
157−```
158−
159−### +tree
160−
161−Generate a recursive directory listing. Takes a path.
162−
163−```
164−~your-urbit:dojo> +tree %/web
165−```
166−
167−## Hood
168−
169−The hood is the system daemon. See `gen/hood` and `app/hood`.
170−
171−`|hi` - Sends a direct message. Sort of like Unix `write`. Accepts
172−an urbit name (`@p`) and a string (`tape`, which is text wrapped with double-quotes).
173−
174−```
175−~your-urbit:dojo> |hi ~binzod "you there?"
176−```
177−
178−`|link` / `|unlink` - Link / unlink a remote app. Accepts an
179−Urbit name and an app name.
180−
181−```
182−~your-urbit:dojo> |link ~talsur-todres %octo
183−```
184−
185−`|mass` - Prints the current memory usage of all the kernel modules.
186−No arguments.
187−
188−```
189−~your-urbit:dojo> |mass
190−```
191−
192−`|reload` - Reloads a kernel module (vane) from source. Accepts any
193−number of vane names.
194−
195−```
196−~your-urbit:dojo> |reload %clay %eyre
197−```
198−
199−`|reset` - Reloads `hoon.hoon` and all modules. No arguments.
200−
201−```
202−~your-urbit:dojo> |reset
203−```
204−
205−`|start` - Starts an app. Accepts an app name.
206−
207−```
208−~your-urbit:dojo> |start %curl
209−```
210−
211−---
212−
213−## Manual
214−
215−## Sources and sinks
216−
217−A Dojo command is either a **source** or a **sink**. A source is just something
218−that can be printed to your console or the result of some computation. A
219−sink is an **effect**: a change to the filesystem, a network message, a
220−change to your environment, or typed message to an app.
221−
222−Sources can be chained together, but we can only produce one effect per
223−command.
224−
225−### Sinks
226−
227−#### `=` - Set variable
228−
229−Set any environment variable:
230−
231−```
232−~your-urbit:dojo> =foo 42
233−~your-urbit:dojo> (add 2 foo)
234−
235−44
236−```
237−
238−Make sure to note that `=var` is Dojo syntax, not Hoon syntax. You cannot bind a
239−variable in a `.hoon` file in this way.
240−
241−#### Special Variables
242−
243−There are a few special variables that the Dojo maintains.
244−
245−#### `:` - Send to app
246−
247−`:app` goes to a local `app`, `:~ship/app` goes to the `app` on `~ship`.
248−
249−Send a `helm-hi` message to `hood`:
250−
251−```
252−~your-urbit:dojo> :hood &helm-hi 'hi'
253−```
254−
255−Apps usually expect marked data, so `&` is often used here.
256−
257−#### `*` - Save in `%clay`
258−
259−Save a new `.udon` ([Udon](@/docs/using/sail-and-udon.md)) file in `web`:
260−
261−```
262−~your-urbit:dojo> *%/web/foo/udon '# hello'
263−```
264−
265−The last component of the path is expected to be the mark (or mime
266−type).
267−
268−#### `.` - Export to Unix
269−
270−Export a noun to Unix with `.`:
271−
272−```
273−~your-urbit:dojo> .foo/bar/baz (add 2 2)
274−```
275−
276−Which creates a file at `pier/.urb/put/foo/bar.baz`.
277−
278−This is very often used with `+solid`:
279−
280−```
281−~your-urbit:dojo> .urbit/pill +solid
282−```
283−
284−Which outputs a new `urbit.pill` to `pier/.urb/put/urbit.pill`
285−
286−### Sources
287−
288−#### `&` - Mark conversion
289−
290−Convert between marks using `&`, with the destination mark first. You can stack multiple mark conversions together, and some marks can only be converted to specific other marks. In this example, [Udon](@/docs/using/sail-and-udon.md#udon) is converted to `&hymn` (a mark which supplies the `html`, `head`, `body` and closing tags) first, before being converted to HTML:
291−
292−```
293−~your-urbit:dojo>&html &hymn &udon ';h1#hello: hello'
294−'<html><head></head><body><h1 id="hello">hello</h1></body></html>'
295−```
296−
297−Performing a conversion straight from Udon to the `&hymn` mark reveals a bit more about its mark conversion:
298−
299−```
300−~your-urbit:dojo>&hymn &udon ';h1#hello: hello'
301−[[%html ~] [[%head ~] ~] [[%body ~] [g=[n=%h1 a=~[[n=%id v="hello"]]] c=~[[g=[n=%$ a=~[[n=%$ v="hello"]]] c=~]]] ~] ~]
302−```
303−
304−As does converting straight from Udon to HTML:
305−
306−```
307−~your-urbit:dojo>&html &udon ';h1#hello: hello'
308−';h1#hello: hello'
309−```
310−
311−#### `_` - Run a function
312−
313−Use `_` to run a gate (or function):
314−
315−Write an arbitrary function and pass data to it:
316−
317−```
318−~your-urbit:dojo> _|=([a=@] (mul a 3)) 3
319−9
320−```
321−
322−Use a function to get the status code from an http request:
323−
324−```
325−~your-urbit:dojo> _|=([p=@ud q=* r=*] p) +http://google.com
326−301
327−```
328−
329−#### `+` `-` - HTTP requests
330−
331−`+http[s]://example.com` - sends a GET request
332−
333−`+http[s]://example.com &json [%s 'hi']` - sends a POST request with the
334−JSON `"hi"` in the body.
335−
336−`-http[s]://example.com &json [%s 'hi']` - sends a PUT request with the
337−JSON `"hi"` in the body.
338−
339−Note that the first of these is a source while the last two are sinks.
340−
341−#### `+` - Generators
342−
343−Generators are simple Hoon scripts loaded from the filesystem. They live
344−in `gen/`.
345−
346−An example of a generator that is built into your urbit is `+code`. It produces
347−the code needed to log into your ship remotely.
348−
349−```
350−~your-urbit:dojo> +code
351−fintyr-haldet-fassev-solhex
352−```
353−
354−### Variables
355−
356−You can use `=` to set an environment variable in Dojo, but there are
357−a few reserved names that have special uses.
358−
359−#### dir
360−
361−Current working `%clay` desk and revision. Read / write.
362−
363−**Examples:**
364−
365−```
366−~your-urbit:dojo> =dir %/web
367−~your-urbit:dojo> +ls %
368−404/hoon docs/ dojo/hoon lib/ listen/hoon md static/udon talk/ testing/udon tree/main/ unmark/ womb/
369−```
370−
371−#### lib
372−
373−Current set of libraries (`/lib`) in your environment. Can be set
374−with `/+`. Read / write.
375−
376−**Examples:**
377−
378−```
379−~your-urbit:dojo> /+ number-to-words
380−```
381−Now we can use arms from lib/number-to-words.hoon
382−```
383−~your-urbit:dojo> (to-words:eng-us:number-to-words 123.456)
384−```
385−
386−#### sur
387−
388−Current set of structures (`/sur`) in your environment. Can be set
389−with `/-`. Read / write.
390−
391−**Examples:**
392−
393−```
394−~your-urbit:dojo> /- sole
395−```
396−Now we can use arms in sur/sole.hoon.
397−```
398−~your-urbit:dojo> `sole-effect:sole`[%bel ~]
399−```
400−
401−#### now
402−
403−The current (128-bit `@da`) time. Read-only.
404−
405−**Example:**
406−
407−```
408−~your-urbit:dojo> now
409−~2016.3.21..21.10.57..429a
410−```
411−
412−#### our
413−
414−The current urbit ship. Read-only.
415−
416−**Example:**
417−
418−```
419−~your-urbit:dojo> our
420−~your-urbit
421−```
422−
423−#### eny
424−
425−512 bits of entropy. Read-only.
426−
427−**Example:**
428−
429−```
430−~your-urbit:dojo> eny
431−\/0vnt.d474o.gpahj.jcf3o.448fh.2lamb.82ljm.8ol8u.b02vi.mrvvp.b7et2.knb7m.l8he\/
432− 8.8qb9s.drm36.77n9b.a0qst.30g03.l5lb5.nvsbc.v39tn
433−\/
434−```
435−
436−## Troubleshooting
437−
438−If you encounter `%dy-edit-busy` while entering commands, it is
439−because your Dojo is blocked on a timer or an HTTP request. Type backspace
440−and your Dojo will end the blocked command.
learn/vere/_index.md → vere/_index.mdrenamed+5−5
@@ -10,26 +10,26 @@ Keep reading if you're planning to work on the Urbit interpreter, you're a
1010language implementation geek, or you don't really understand anything until
1111you've seen the actual structs.
1212
13−## [C runtime system](@/docs/learn/vere/runtime.md)
13+## [C runtime system](@/docs/vere/runtime.md)
1414
1515The Urbit interpreter is built on a Nock runtime system written
1616in C, `u3`. This section is a relatively complete description.
1717
18−## [c3: C in Urbit](@/docs/learn/vere/c.md)
18+## [c3: C in Urbit](@/docs/vere/c.md)
1919
2020Under `u3` is the simple `c3` layer, which is just how we write C
2121in Urbit.
2222
23−## [u3: Land of nouns](@/docs/learn/vere/nouns.md)
23+## [u3: Land of nouns](@/docs/vere/nouns.md)
2424
2525The division between `c3` and `u3` is that you could theoretically
2626imagine using `c3` as just a generic C environment. Anything to do
2727with nouns is in `u3`.
2828
29−## [u3: API overview by prefix](@/docs/learn/vere/api.md)
29+## [u3: API overview by prefix](@/docs/vere/api.md)
3030
3131A walkthrough of each of the `u3` modules.
3232
33−## [How to write a jet](@/docs/learn/vere/jetting.md)
33+## [How to write a jet](@/docs/vere/jetting.md)
3434
3535A jetting guide by for new Urbit developers.
learn/vere/api.md → vere/api.mdrenamed+18−18
@@ -10,7 +10,7 @@ functions are commented, but the comments may be cryptic.
1010
1111To start `u3`, run
1212
13−```
13+```c
1414/* u3m_boot(): start the u3 system.
1515*/
1616 void
@@ -30,7 +30,7 @@ complete, should be run (a) virtualized and (b) in an inner road.
3030These are slightly different things, but at the highest level we
3131bundle them together for your convenience, in `u3m_soft()`:
3232
33−```
33+```c
3434/* u3m_soft(): system soft wrapper. unifies unix and nock errors.
3535**
3636** Produces [%$ result] or [%error (list tank)].
@@ -219,7 +219,7 @@ numbering itself on process initialization. This structure -
219219which embeds function pointers to all the jets - is defined
220220in `j/tree.c`. The data structures:
221221
222−```
222+```c
223223 /* u3j_harm: driver arm.
224224 */
225225 typedef struct _u3j_harm {
@@ -253,7 +253,7 @@ in `j/tree.c`. The data structures:
253253Warm and cold state is **per road**. In other words, as we nest
254254roads, we also nest jet state. The jet state in the road is:
255255
256−```
256+```c
257257 struct { // jet dashboard
258258 u3p(u3h_root) har_p; // warm state
259259 u3_noun das; // cold state
@@ -263,7 +263,7 @@ roads, we also nest jet state. The jet state in the road is:
263263In case you understand Hoon, `das` (cold state) is a `++dash`,
264264and `har_p` (warm state) is a map from battery to `++calx`:
265265
266−```
266+```hoon
267267 ++ bane ,@tas :: battery name
268268 ++ bash ,@uvH :: label hash
269269 ++ bosh ,@uvH :: local battery hash
@@ -321,7 +321,7 @@ above, which we want to annotate it with.
321321
322322A clue is a triple of name, parent, and hooks:
323323
324−```
324+```hoon
325325++ clue (trel chum nock (list (pair term nock)))
326326```
327327
@@ -442,7 +442,7 @@ There are two cases for a jet-propelled core - either the entire
442442core is a static constant, or it isn't. Hence the definition
443443of `corp`:
444444
445−```
445+```hoon
446446++ corp (each core batt) :: parent or static
447447```
448448
@@ -613,7 +613,7 @@ instructions.
613613These allocators are **not compatible**. For 32-bit alignment
614614as used in nouns, call
615615
616−```
616+```c
617617 /* u3a_walloc(): allocate storage measured in words.
618618 */
619619 void*
@@ -632,7 +632,7 @@ as used in nouns, call
632632
633633For full alignment, call:
634634
635−```
635+```c
636636 /* u3a_malloc(): aligned storage measured in bytes.
637637 */
638638 void*
@@ -701,7 +701,7 @@ programming language which didn't talk funny and was retarded,
701701`u3n_slam_on()` would call a function on an argument.) We could
702702write it most simply as:
703703
704−```
704+```c
705705 u3_noun
706706 u3n_slam_on(u3_noun gat, u3_noun sam)
707707 {
@@ -718,7 +718,7 @@ Simpler is `u3n_kick_on(u3_noun gat)`, which slams a gate (or,
718718more generally, a **trap** - because sample structure is not even
719719needed here) without changing its sample:
720720
721−```
721+```c
722722 u3_noun
723723 u3n_kick_on(u3_noun gat, u3_noun sam)
724724 {
@@ -758,7 +758,7 @@ to a `fly` is a `++path`, just a list of text `span`.
758758
759759`mock` functions produce a `++toon`. Fully elaborated:
760760
761−```
761+```hoon
762762 ++ noun ,* :: any noun
763763 ++ path (list ,@ta) :: namespace path
764764 ++ span ,@ta :: text-atom (ASCII)
@@ -796,7 +796,7 @@ In any case, the simplest `mock` functions are `u3n_nock_un()`
796796and `u3n_slam_un()`. These provide exception control without
797797any namespace change, as you can see by the code:
798798
799−```
799+```c
800800 /* u3n_nock_un(): produce .*(bus fol), as ++toon.
801801 */
802802 u3_noun
@@ -917,7 +917,7 @@ Each `u3z` function comes with a `c3_m` mote which disambiguates
917917the function mapping key to value. For Nock itself, use 0. For
918918extra speed, small tuples are split out in C; thus, find with
919919
920−```
920+```c
921921 u3_weak u3z_find(c3_m, u3_noun);
922922 u3_weak u3z_find_2(c3_m, u3_noun, u3_noun);
923923 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
926926
927927and save with
928928
929−```
929+```c
930930 u3_noun u3z_save(c3_m, u3_noun, u3_noun);
931931 u3_noun u3z_save_2(c3_m, u3_noun, u3_noun, u3_noun);
932932 u3_noun u3z_save_3(c3_m, u3_noun, u3_noun, u3_noun, u3_noun);
@@ -936,7 +936,7 @@ and save with
936936where the value is the last argument. To eliminate duplicate
937937nouns, there is also
938938
939−```
939+```c
940940 u3_noun
941941 u3z_uniq(u3_noun);
942942```
@@ -958,7 +958,7 @@ An Arvo kernel - or at least, a core that compiles with the Arvo
958958interface - is part of the global `u3` state. What is an Arvo
959959core? Slightly pseudocoded:
960960
961−```
961+```hoon
962962 ++ arvo
963963 |%
964964 ++ come |/ {yen/@ ova/(list ovum) nyf/pone} :: 11
@@ -1031,7 +1031,7 @@ you're not writing the next event system. There are only two.
10311031calling Hoon kernel functions by name. Even more conveniently,
10321032we tend to call `u3v_do()` with these convenient aliases:
10331033
1034−```
1034+```c
10351035 #define u3do(txt_c, arg) u3v_do(txt_c, arg)
10361036 #define u3dc(txt_c, a, b) u3v_do(txt_c, u3nc(a, b))
10371037 #define u3dt(txt_c, a, b, c) u3v_do(txt_c, u3nt(a, b, c))
learn/vere/c.md → vere/c.mdrenamed+3−3
@@ -20,7 +20,7 @@ First, it's generally acknowledged that underspecified integer
2020types are C's worst disaster. C99 fixed this, but the `stdint`
2121types are wordy and annoying. We've replaced them with:
2222
23−```
23+```c
2424 /* Good integers.
2525 */
2626 typedef uint64_t c3_d; // double-word
@@ -87,7 +87,7 @@ hard to relearn. And of course, when in doubt, comment it.
8787Variables take pseudo-Hungarian suffixes, matching in general the
8888suffix of the integer type:
8989
90−```
90+```c
9191c3_w wor_w; // 32-bit word
9292```
9393
@@ -98,7 +98,7 @@ variables. C structure variables take a `_u` suffix.
9898
9999The code (from `defs.h`) tells the story:
100100
101−```
101+```c
102102 # define c3y 0
103103 # define c3n 1
104104
learn/vere/jetting.md → vere/jetting.mdrenamed+31−31
@@ -111,7 +111,7 @@ Feel free to use `~&` liberally! (Just remove them when you're done).
111111
112112Let's use the three to jet some code. Starting with this example:
113113
114−```
114+```hoon
115115 ++ aaa
116116 ...
117117 ++ bbb
@@ -175,12 +175,12 @@ For each jet you will write one `u3we()` function and one `u3qe()` function.
175175
176176- 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.
177177
178− ```
178+ ```c
179179 u3_noun u3we_xxx(u3_noun);
180180 ```
181181- 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.
182182
183− ```
183+ ```c
184184 u3_noun u3qe_yyy(u3_atom, u3_atom);
185185 u3_noun u3qe_zzz(u3_noun, u3_noun, u3_atom, u3_atom);
186186 ```
@@ -194,7 +194,7 @@ In the Hoon code we hinted some leaf node functions (`ccc` in our example) and t
194194
195195We need to replicate this structure in C. Here's example C code to jet our above example Hoon:
196196
197−```
197+```c
198198 // 1: register a C func u3we_ccc()
199199 static u3j_harm _143_hex_hobo_reco_d[] =
200200 {
@@ -271,13 +271,13 @@ hinting in Hoon).
271271
272272The line in section 2
273273
274−```
274+```c
275275 { "ccc", _143_hex_hobo_ccc_a },
276276```
277277
278278looks very similar to the line in section 3
279279
280−```
280+```c
281281 { "bbb", 0, _143_hex_hobo_bbb_d },
282282```
283283
@@ -331,7 +331,7 @@ To unpack the sample
331331
332332We use the function `u3r_mean()` to do this, thusly:
333333
334−```
334+```c
335335 u3_noun arg_a, arg_b, arg_c ... ;
336336
337337 u3r_mean(cor,
@@ -388,7 +388,7 @@ N.B. in our fprintf()s we're using both \n and \r to achieve line feed
388388because Urbit uses ncurses to control the screen and it changes the
389389default behavior you may be used to (where \n accomplishes both).
390390
391−```
391+```c
392392 c3_o ret;
393393 u3_noun sample;
394394 ret = u3r_mean(cor, u3x_sam_1, &sample, 0);
@@ -414,7 +414,7 @@ default behavior you may be used to (where \n accomplishes both).
414414
415415If the Hoon that you're jetting looks like this
416416
417−```
417+```hoon
418418 ++ make-k
419419 ~/ %make-k
420420 =, mimes:html
@@ -423,7 +423,7 @@ If the Hoon that you're jetting looks like this
423423
424424In the C code you'd fetch them out of the payload with
425425
426−```
426+```c
427427 u3r_mean(cor,
428428 u3x_sam_2, & arg_aaa,
429429 u3x_sam_5, & arg_bbb,
@@ -438,7 +438,7 @@ sample.
438438
439439You could - IN THEORY - inspect / pretty-print the noun by calling
440440
441−```
441+```c
442442 u3m_p("description", cor); :: DO NOT DO THIS !!!
443443```
444444
@@ -447,7 +447,7 @@ entire context - the whole enchilada.
447447
448448Do instead, perhaps,
449449
450−```
450+```c
451451 c3_o ret;
452452 u3_noun sample;
453453
@@ -461,19 +461,19 @@ After our C function pulls out the arguments it needs to type check them.
461461
462462If `arg_a` is supposed to be a atom, trust but verify:
463463
464−```
464+```c
465465 u3ud(arg_a); // checks for atomicity; alias for u3a_is_atom()
466466```
467467
468468If it's supposed to be a cell:
469469
470−```
470+```c
471471 u3du(arg_a); // checks for cell-ness
472472```
473473
474474There are other tests you might need to use
475475
476−```
476+```c
477477 u3a_is_cat()
478478 u3a_is_dog()
479479
@@ -485,7 +485,7 @@ All of these rests return Hoon loobeans (yes/no vs true / false), so
485485check return values vs `c3n` / `c3y`. If any of these `u3_mean()`, `u3ud()`
486486etc return u3n you have an error and should return
487487
488−```
488+```c
489489 return u3m_bail(c3__exit);
490490```
491491
@@ -504,32 +504,32 @@ A `u3_noun` will want to be further disassembled into atoms.
504504A `u3_atom` represents a simple number, but the implementation may or
505505may not be simple. If the value held in the atom is 31 bits or less,
506506it'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) )
508508
509509You don't want to get bogged down in the details of this -- you just
510510want to get data out of your atoms.
511511
512512If you know that the data fits in 32 bits or less, you can use
513513
514−```
514+```c
515515 u3r_word(c3_w a_w, u3_atom b);
516516```
517517
518518If it is longer than 32 bits, use
519519
520−```
520+```c
521521 u3r_words(c3_w a_w, c3_w b_w, c3_w* c_w, u3_atom d);
522522```
523523
524524or
525525
526−```
526+```c
527527 u3r_bytes(c3_w a_w, c3_w b_w, c3_y* c_y, u3_atom d)
528528```
529529
530530If you need to get the size
531531
532−```
532+```c
533533 u3r_met(3, a);
534534```
535535
@@ -539,13 +539,13 @@ Now we move on to return semantics.
539539
540540First, you can transfer raw values into nouns using
541541
542−```
542+```c
543543 u3_noun u3i_words(c3_w a_w, const c3_w* b_w)
544544```
545545
546546and you can build cells out of nouns using
547547
548−```
548+```c
549549 u3nc(); // pair
550550 u3nt(); // triple
551551 u3nq(); // quad
@@ -555,7 +555,7 @@ There are two facets here: (i) data format, (ii) memory allocation.
555555
556556Regarding data format, if the Hoon is expected to return a single atom (e.g. if the Hoon looks like this:)
557557
558−```
558+```hoon
559559 ++ make-k
560560 ~/ %make-k
561561 |= [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
565565
566566then your C code - at least when you're stubbing it out - can do something like
567567
568−```
568+```c
569569 return(123);
570570```
571571
572572Or, if you want to create an atom more formally, you can build it like this
573573
574−```
574+```c
575575 // this variable is on the stack and will disappear
576576 unsigned char nonce32[32];
577577
@@ -585,7 +585,7 @@ Or, if you want to create an atom more formally, you can build it like this
585585
586586If, on the other hand, your Hoon looks like
587587
588−```
588+```hoon
589589 ++ ecdsa-raw-sign :: generate signature
590590 ~/ %ecdsa-raw-sign
591591 |= [has=@uvI prv=@]
@@ -595,7 +595,7 @@ If, on the other hand, your Hoon looks like
595595
596596ending your C code with
597597
598−```
598+```c
599599 return(123);
600600```
601601
@@ -603,7 +603,7 @@ is wrong and will result in a dojo error because you are returning a single atom
603603
604604Instead do one of these:
605605
606−```
606+```c
607607 return(u3nc(a, b)); // for two atoms
608608 return(u3nt(a, b, c)); // for three atoms
609609 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
613613at the definitions of these three functions and you will see that they
614614are just recursive calls to the cell constructor `u3i_cell()` e.g.
615615
616−```
616+```c
617617 u3i_cell(a, u3i_cell(b, u3i_cell(c, d));
618618```
619619
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).
621621
622622## Compile the C code
623623
learn/vere/nouns.md → vere/nouns.mdrenamed+6−6
@@ -50,7 +50,7 @@ bit is reserved. Bit `29` is `1` if the noun is a cell, `0` if
5050it's an atom. Bits `28` through `0` are a word pointer into the
5151loom - see below. The structures are:
5252
53−```
53+```c
5454 typedef struct {
5555 c3_w mug_w;
5656 c3_w len_w;
@@ -116,7 +116,7 @@ There are two semantic patterns, `transfer` and `retain`. In
116116`transfer` semantics, the caller "gives" a use count to the
117117callee, which "gives back" any return. For instance, if I have
118118
119−```
119+```c
120120 {
121121 u3_noun foo = u3i_string("foobar");
122122 u3_noun bar;
@@ -136,7 +136,7 @@ point a `u3z()` is required.
136136On the other hand, if `u3f_futz()` has `retain` semantics, we
137137need to write
138138
139−```
139+```c
140140 {
141141 u3_noun foo = u3i_string("foobar");
142142 u3_noun bar;
@@ -369,7 +369,7 @@ done it because we haven't needed to.
369369Within the interpreter, your code can run either in the surface
370370road or in a deep road. You can test this by testing
371371
372−```
372+```c
373373 (&u3H->rod_u == u3R)
374374```
375375
@@ -404,7 +404,7 @@ event queue. Let's see how this happens.
404404
405405You produce an exception with
406406
407−```
407+```c
408408 /* u3m_bail(): bail out. Does not return.
409409 **
410410 ** Bail motes:
@@ -461,7 +461,7 @@ To point to non-noun C structs on the loom, we use a `u3_post`,
461461which is just a loom word offset. A macro lets us declare this
462462as if it was a pointer:
463463
464−```
464+```c
465465 typedef c3_w u3_post;
466466 #define u3p(type) u3_post
467467```
learn/vere/runtime.md → vere/runtime.mdrenamed+2
@@ -2,7 +2,9 @@
22title = "C Runtime System"
33weight = 1
44template = "doc.html"
5+aliases = ["docs/about/runtime/"]
56+++
7+
68The Urbit interpreter is built on a Nock runtime system written
79in C, `u3`. This section is a relatively complete description.
810