on master help sign in
link fixes
commitb8322d25201278cd7db26077a6c6a11dbef8a191 authorRobert <robert@Roberts-MacBook-Pro.local> dateThu 10 Oct 2019, 15:13 (7 years ago) parentf3ca521
74 files changed+604−1455
concepts/azimuth.md+1−1 reference/arvo-glossary.md+28−28 reference/cheat-sheet.md+1−1 reference/hoon-errors.md+22−22 reference/hoon-expressions/_index.md+5−5 reference/hoon-expressions/advanced.md+1−1 reference/hoon-expressions/basic.md+1−1 reference/hoon-expressions/irregular.md+19−20 reference/hoon-expressions/limb/_index.md+2−2 reference/hoon-expressions/rune/_index.md+15−15 reference/hoon-expressions/rune/bar.md+68−68 reference/hoon-expressions/rune/buc.md+9−9 reference/hoon-expressions/rune/cen.md+65−65 reference/hoon-expressions/rune/ket.md+17−17 reference/hoon-expressions/rune/mic.md+3−3 reference/hoon-expressions/rune/tis.md+28−28 reference/hoon-expressions/rune/wut.md+28−28 reference/library/1b.md+1−1 reference/library/1c.md+13−13 reference/library/2c.md+37−37 reference/library/2d.md+6−6 reference/library/2e.md+6−6 reference/library/2f.md+10−10 reference/library/2h.md+19−19 reference/library/2i.md+25−25 reference/library/2o.md+10−10 reference/library/2q.md+13−13 reference/library/3d.md+17−17 reference/library/3f.md+20−20 reference/library/3g.md+17−17 reference/library/4h.md+34−34 tutorials/_index.md+4−4 tutorials/arvo/_index.md+9−9 tutorials/arvo/ford.md+1−1 tutorials/arvo/glossary.md−850 tutorials/hoon-tutorial/workbook/_index.md−17 tutorials/hoon-tutorial/_index.md → tutorials/hoon/_index.md+3−3 tutorials/hoon-tutorial/ackermann.md → tutorials/hoon/ackermann.md tutorials/hoon-tutorial/arms-and-cores.md → tutorials/hoon/arms-and-cores.md tutorials/hoon-tutorial/atoms-auras-and-simple-cell-types.md → tutorials/hoon/atoms-auras-and-simple-cell-types.md+1−1 tutorials/hoon-tutorial/bank-account.md → tutorials/hoon/bank-account.md tutorials/hoon-tutorial/caesar.md → tutorials/hoon/caesar.md tutorials/hoon-tutorial/conditionals.md → tutorials/hoon/conditionals.md tutorials/hoon-tutorial/doors.md → tutorials/hoon/doors.md tutorials/hoon-tutorial/egg-timer.md → tutorials/hoon/egg-timer.md tutorials/hoon-tutorial/fibonacci.md → tutorials/hoon/fibonacci.md tutorials/hoon-tutorial/gall.md → tutorials/hoon/gall.md tutorials/hoon-tutorial/gates.md → tutorials/hoon/gates.md tutorials/hoon-tutorial/generators.md → tutorials/hoon/generators.md tutorials/hoon-tutorial/hoon-syntax.md → tutorials/hoon/hoon-syntax.md+7−7 tutorials/hoon-tutorial/iron-polymorphism.md → tutorials/hoon/iron-polymorphism.md tutorials/hoon-tutorial/lead-polymorphism.md → tutorials/hoon/lead-polymorphism.md tutorials/hoon-tutorial/libraries.md → tutorials/hoon/libraries.md tutorials/hoon-tutorial/list-of-numbers.md → tutorials/hoon/list-of-numbers.md+1−1 tutorials/hoon-tutorial/lists.md → tutorials/hoon/lists.md tutorials/hoon-tutorial/molds.md → tutorials/hoon/molds.md tutorials/hoon-tutorial/nouns.md → tutorials/hoon/nouns.md tutorials/hoon-tutorial/recursion.md → tutorials/hoon/recursion.md+1−1 tutorials/hoon-tutorial/setup.md → tutorials/hoon/setup.md+1−1 tutorials/hoon-tutorial/structures-and-complex-types.md → tutorials/hoon/structures-and-complex-types.md+1−1 tutorials/hoon-tutorial/style.md → tutorials/hoon/style.md+1−1 tutorials/hoon-tutorial/the-subject-and-its-legs.md → tutorials/hoon/the-subject-and-its-legs.md tutorials/hoon-tutorial/trees-sets-and-maps.md → tutorials/hoon/trees-sets-and-maps.md tutorials/hoon-tutorial/type-checking-and-type-inference.md → tutorials/hoon/type-checking-and-type-inference.md tutorials/hoon-tutorial/type-polymorphism.md → tutorials/hoon/type-polymorphism.md tutorials/hoon/workbook/_index.md+17 tutorials/hoon-tutorial/workbook/bomb.md → tutorials/hoon/workbook/bomb.md tutorials/hoon-tutorial/workbook/digits.md → tutorials/hoon/workbook/digits.md+1−1 tutorials/hoon-tutorial/workbook/eightball.md → tutorials/hoon/workbook/eightball.md+1−1 tutorials/hoon-tutorial/workbook/traffic-light.md → tutorials/hoon/workbook/traffic-light.md+2−2 tutorials/nock/_index.md+4−4 tutorials/nock/implementations.md+1−1 tutorials/vere/_index.md+5−5 tutorials/vere/jetting.md+2−2
concepts/azimuth.md+1−1
@@ -1,7 +1,7 @@
11+++
22title = "Azimuth"
33weight = 4
4−template = "doc.html"."
4+template = "doc.html"
55aliases = ["/docs/learn/azimuth"]
66+++
77Azimuth 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.
reference/arvo-glossary.md+28−28
@@ -68,7 +68,7 @@ their effects happen like so:
6868Arvo is located in `/home/sys/arvo.hoon` within your urbit.
6969
7070More in-depth information on Arvo can be found
71−[`here`](@/docs/arvo/_index.md).
71+[`here`](@/docs/tutorials/arvo/_index.md).
7272
7373Below are Arvo modules, which are called "vanes".
7474
@@ -81,7 +81,7 @@ Below are Arvo modules, which are called "vanes".
8181 Ames is located in `/home/sys/vane/ames.hoon` within your urbit.
8282
8383 More in-depth information on Ames can be found
84− [`here`](@/docs/arvo/ames.md).
84+ [`here`](@/docs/tutorials/arvo/ames.md).
8585
8686#### Behn
8787
@@ -106,7 +106,7 @@ Below are Arvo modules, which are called "vanes".
106106 Basic information on using Clay can be found
107107 [`here`](@/operations.md). An in-depth explanation
108108 of the architecture can be found
109− [`here`](@/docs/arvo/clay.md).
109+ [`here`](@/docs/tutorials/arvo/clay.md).
110110
111111#### Dill
112112
@@ -125,7 +125,7 @@ Below are Arvo modules, which are called "vanes".
125125 Dill is located at `/home/sys/vane/dill.hoon` within your urbit.
126126
127127 More in-depth information on Dill can be found
128− [`here`](@/docs/arvo/dill.md).
128+ [`here`](@/docs/tutorials/arvo/dill.md).
129129
130130#### Eyre
131131
@@ -139,7 +139,7 @@ Below are Arvo modules, which are called "vanes".
139139 Eyre is located at `/home/sys/vane/eyre.hoon` within your urbit.
140140
141141 More in-depth information on Eyre can be found
142− [`here`](@/docs/arvo/eyre.md).
142+ [`here`](@/docs/tutorials/arvo/eyre.md).
143143
144144#### Ford
145145
@@ -154,7 +154,7 @@ Below are Arvo modules, which are called "vanes".
154154 Ford is located at `/home/sys/vane/ford.hoon` within your urbit.
155155
156156 More in-depth information on Ford can be found
157− [`here`](@/docs/arvo/ford.md).
157+ [`here`](@/docs/tutorials/arvo/ford.md).
158158
159159#### Gall
160160
@@ -170,7 +170,7 @@ Below are Arvo modules, which are called "vanes".
170170 Gall is located at `/home/sys/vane/gall.hoon` within your urbit.
171171
172172 More in-depth information on Gall can be found
173− [`here`](@/docs/arvo/gall.md).
173+ [`here`](@/docs/tutorials/arvo/gall.md).
174174
175175### atom
176176
@@ -190,7 +190,7 @@ An atom type is _warm_ or _cold_ based on whether the constant exists.
190190
191191 If the constant is `[~ atom]`, its only legal value is `atom`.
192192
193−_See [basic types](@/docs/hoon/hoon-expressions/basic.md)_
193+_See [basic types](@/docs/reference/hoon-expressions/basic.md)_
194194
195195### aura
196196
@@ -246,7 +246,7 @@ Aura Meaning Example Literal Syntax
246246 @ux unsigned hexadecimal 0x5f5.e138
247247```
248248
249−You can find the list of all auras [here](@/docs/hoon/hoon-expressions/rune/constants.md).
249+You can find the list of all auras [here](@/docs/reference/hoon-expressions/rune/constants.md).
250250
251251### blocksize
252252
@@ -310,7 +310,7 @@ translate to cores in Hoon.
310310
311311 The data-containing tail of a core.
312312
313−_See [basic types](@/docs/hoon/hoon-expressions/basic.md)._
313+_See [basic types](@/docs/reference/hoon-expressions/basic.md)._
314314
315315### Dojo
316316
@@ -330,7 +330,7 @@ with this functionality learn what syntax is kosher.
330330
331331A desk is independently revision-controlled branch of urbit filesystem.
332332
333−_See [filesystem](@/operations.md#filesystem) and [Clay](@/docs/arvo/clay.md)._
333+_See [filesystem](@/operations.md#filesystem) and [Clay](@/docs/tutorials/clay.md)._
334334
335335### duct
336336
@@ -356,7 +356,7 @@ In the above example, `a` is the face and `2` is the value.
356356Hoon has no scope or symbol-table; there is only the subject. To "declare" a
357357"variable" is to construct a new subject: `[name=value old-subject]`.
358358
359−_See [advanced types](@/docs/hoon/hoon-expressions/advanced.md)_.
359+_See [advanced types](@/docs/reference/hoon-expressions/advanced.md)_.
360360
361361
362362### flag
@@ -368,7 +368,7 @@ _no_.
368368
369369A _gate_ is a [core](#core) with one [arm](#arm) -- Hoon's closest
370370analog to a function. To call a gate on an argument, replace the sample
371−(at [tree address](@/docs/hoon/hoon-expressions/limb/limb.md) `+6`
371+(at [tree address](@/docs/reference/hoon-expressions/limb/limb.md) `+6`
372372in the core) with the argument, and then compute the arm.
373373
374374The payload of a gate has a shape of `[sample context]`.
@@ -381,8 +381,8 @@ The payload of a gate has a shape of `[sample context]`.
381381
382382 The subject in which the gate was defined.
383383
384−_See [basic types](@/docs/hoon/hoon-expressions/basic.md),
385−[`%-` ("cenhep")](@/docs/hoon/hoon-expressions/rune/cen.md#cenhep) (the
384+_See [basic types](@/docs/reference/hoon-expressions/basic.md),
385+[`%-` ("cenhep")](@/docs/reference/hoon-expressions/rune/cen.md#cenhep) (the
386386[rune](#rune) for calling a `gate`)._
387387
388388### generator
@@ -433,7 +433,7 @@ _Hall_ is the Urbit communication back-end. It’s a messaging bus that can work
433433with clients of all sorts. [`:talk`](#talk), the built-in chat client, is one
434434such app that uses Hall.
435435
436−_More information on Hall can be found [here](@/docs/arvo/hall.md)._
436+_More information on Hall can be found [here](@/docs/tutorials/arvo/hall.md)._
437437
438438#### circle
439439
@@ -456,7 +456,7 @@ to Nock.
456456
457457The Hoon source file is located in `/home/sys/hoon.hoon` within your urbit.
458458
459−_More information can be found in the [hoon](@/docs/hoon/_index.md) section._
459+_More information can be found in the [hoon](@/docs/tutorials/hoon/_index.md) section._
460460
461461#### Mint
462462
@@ -499,7 +499,7 @@ The result should be:
499499[%clls p=[%sand p=%ud q=12] q=[%sand p=%ud q=7] r=[%rock p=%tas q=97]]
500500```
501501
502−See [expression reference](@/docs/hoon/hoon-expressions/rune/_index.md) for the full list of hoons.
502+See [expression reference](@/docs/reference/hoon-expressions/rune/_index.md) for the full list of hoons.
503503
504504### irregular form
505505
@@ -507,7 +507,7 @@ Irregular forms are alternative ways of writing Hoon expressions, alternatives
507507to the digraphic runes such as `:~`. Irregular forms are usually more compact
508508than regular forms.=
509509
510−_See [irregular forms](@/docs/hoon/hoon-expressions/irregular.md)._
510+_See [irregular forms](@/docs/reference/hoon-expressions/irregular.md)._
511511
512512### jet
513513
@@ -520,7 +520,7 @@ so inefficiently. Nock, for example, can’t decrement (reduce a number by one)
520520except by starting building a loop that starts from zero and increments to a
521521number just below.
522522
523−_See [API overview](@/docs/vere/api.md)._
523+_See [API overview](@/docs/reference/vere/api.md)._
524524
525525### lark
526526
@@ -570,7 +570,7 @@ found, the result is the product of the arm.
570570 a search path into the subject, composed of
571571 limbs. Search occurs from right to left (`a.b` means `b` within `a`).
572572
573−_See [Limbs and wings](@/docs/hoon/hoon-expressions/limb/_index.md)_
573+_See [Limbs and wings](@/docs/reference/hoon-expressions/limb/_index.md)_
574574
575575### move
576576
@@ -610,7 +610,7 @@ Urbit's low-level programming language. Nock is functional and typeless.
610610
611611 a noun - the result of evaluating a formula against a subject.
612612
613−_See the [Nock definition](@/docs/nock/definition.md)._
613+_See the [Nock definition](@/docs/reference/nock/definition.md)._
614614
615615### mark
616616
@@ -636,7 +636,7 @@ properties of the type of a compatible core). The default is `gold`
636636- `zinc`: _covariant_
637637- `iron`: _contravariant_
638638
639−_See [advanced types](@/docs/hoon/hoon-expressions/advanced.md)_.
639+_See [advanced types](@/docs/reference/hoon-expressions/advanced.md)_.
640640
641641### ship
642642
@@ -725,10 +725,10 @@ _See [mold hoons](/docs/hoon/hoon-expressions/rune/buc/)._
725725A Hoon _rune_ is a pair of ASCII symbols used to begin a
726726[Hoon expression](#a-hoon).
727727
728−For example, the rune [`?:`](@/docs/hoon/hoon-expressions/rune/wut.md#wutcol) is
728+For example, the rune [`?:`](@/docs/reference/hoon-expressions/rune/wut.md#wutcol) is
729729Hoon's most common conditional, a branch on a boolean test. The first
730730symbol in a rune represents a family of related runes. For example, the
731−[`?` family](@/docs/hoon/hoon-expressions/rune/wut.md) are all conditionals.
731+[`?` family](@/docs/reference/hoon-expressions/rune/wut.md) are all conditionals.
732732
733733The result of parsing a Hoon source expression&mdash;the rune, followed
734734by its respective children&mdash;into an AST node is simply called
@@ -764,7 +764,7 @@ Tall hoons can contain flat hoons, but not vice versa. All irregular
764764forms are flat.
765765
766766_See [hoon concept](#a-hoon),
767−[expressions](@/docs/hoon/hoon-expressions/rune/_index.md).
767+[expressions](@/docs/reference/hoon-expressions/rune/_index.md).
768768
769769### Sail
770770
@@ -775,7 +775,7 @@ _Sail_ is the Hoon markup language for XML.
775775To _scry_ means to request data from the Arvo namespace and bring it
776776to userspace.
777777
778−_See [.^ (dot-ket)](@/docs/hoon/hoon-expressions/rune/dot.md#dotket)._
778+_See [.^ (dot-ket)](@/docs/reference/hoon-expressions/rune/dot.md#dotket)._
779779
780780### slot
781781
@@ -816,7 +816,7 @@ of the simpler built-in types.
816816 If `nest` produces no, the Hoon programmer will receive a `nest-fail`
817817 error. This is one of the most commons errors in Hoon programming.
818818
819− _See [advanced types](@/docs/hoon/hoon-expressions/advanced.md)_ and [troubleshooting](@/docs/arvo/ship-troubleshooting.md).
819+ _See [advanced types](@/docs/reference/hoon-expressions/advanced.md)_ and [troubleshooting](@/docs/tutorials/ship-troubleshooting.md).
820820
821821
822822### Unit
reference/cheat-sheet.md+1−1
@@ -12,7 +12,7 @@ hand. So above is a download link to a Hoon cheatsheet .pdf. It's missing a
1212few of the literal syntaxes, but it covers the most common ones.
1313
1414This doesn't list any of the Ford runes, although there is now at least
15−some documentation for those [here](@/docs/arvo/ford.md).
15+some documentation for those [here](@/docs/tutorials/arvo/ford.md).
1616
1717The following runes also exist, but are currently undocumented and not listed in
1818the cheat sheet:
reference/hoon-errors.md+22−22
@@ -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/hoon/hoon-expressions/rune/cen.md#cenlus),
24−a function call whose sample is a cell) has three subhoons:
23+wrong fanout for a rune. For example, `%+` ([**cenlus**](@/docs/reference/hoon-expressions/rune/cen.md#cenlus),
24+a function call whose sample is a cell) has three subreferences:
2525
26−```hoon
26+```reference
2727%+ foo
2828 bar
2929baz
@@ -31,17 +31,17 @@ baz
3131
3232But if you make a mistake and write
3333
34−```hoon
34+```reference
3535%+ foo
3636bar
3737```
3838
39−the parser will eat the next hoon below and try to treat it as a
39+the parser will eat the next reference below and try to treat it as a
4040part of the `%+`. This can cause a cascading error somewhere
4141below, usually stopped by a `==` or `--`.
4242
4343When this happens, don't panic! Binary search actually works
44−quite well. Any hoon can be stubbed out as `!!`. Find the
44+quite well. Any reference can be stubbed out as `!!`. Find the
4545prefix of your file that compiles, then work forward until
4646the actual error appears.
4747
@@ -53,12 +53,12 @@ Now your code parses but doesn't compile.
5353
5454Your first step should be to put a `!:` ("zapcol") rune at the
5555top of the file. This is like calling the C compiler with `-g`;
56−it tells the Hoon compiler to generate tracing hoons.
56+it tells the Hoon compiler to generate tracing references.
5757
5858Bear in mind that `!:` breaks tail-call optimization. This is a
5959bug, but a relatively low-priority bug. `!.` turns off `!:`.
60−Note that `!:` and `!.` are hoon-level, not file-level; you can
61−wrap any hoon in either.
60+Note that `!:` and `!.` are reference-level, not file-level; you can
61+wrap any reference in either.
6262
6363### Error trace
6464
@@ -74,7 +74,7 @@ If you have `!:` on, you'll see an error trace, like
7474nest-fail
7575```
7676
77−The bottom of this trace is the line and column of the hoon which
77+The bottom of this trace is the line and column of the reference which
7878failed to compile, then the cause of the error (`nest-fail`).
7979
8080Hoon does not believe in inundating you with possibly irrelevant
@@ -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/hoon/hoon-expressions/rune/sig.md#sigzap)) to print the type of
104−any hoon in your stack trace.
103+can use the `~!` rune ([**sigzap**](@/docs/reference/hoon-expressions/rune/sig.md#sigzap)) to print the type of
104+any reference in your stack trace.
105105
106106For instance, you wrote `(foo bar)` and got a `nest-fail`. Change
107107your code to be:
108108
109−```hoon
109+```reference
110110~! bar
111111~! +6.foo
112112(foo bar)
@@ -122,15 +122,15 @@ In other words, "undeclared variable."
122122
123123The most common subspecies of `find` error is `find.$`, meaning
124124the empty name `$` was not found. This often happens when you
125−use a hoon that does not produce a gate/mold, as a gate/mold. For
125+use a reference that does not produce a gate/mold, as a gate/mold. For
126126instance, `(foo bar)` will give `find.$` if `foo` is not actually a
127127function.
128128
129129### `mint-vain` and `mint-lost`
130130
131131These are errors caused by type inference in pattern matching.
132−`mint-vain` means this hoon is never executed. `mint-lost` means
133−there's a case in a `?-` ([**wuthep**](@/docs/hoon/hoon-expressions/rune/wut.md#wuthep)) that isn't handled.
132+`mint-vain` means this reference 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.
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/hoon/hoon-expressions/rune/sig.md#sigbar)):
147+([**sigbar**](@/docs/reference/hoon-expressions/rune/sig.md#sigbar)):
148148
149−```hoon
149+```reference
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/hoon/hoon-expressions/rune/sig.md#sigpam)) is Hoon's debugging printf.
163+`~&` ([**sigpam**](@/docs/reference/hoon-expressions/rune/sig.md#sigpam)) is Hoon's debugging printf.
164164This pretty-prints its argument:
165165
166−```hoon
166+```reference
167167~& foo
168168(foo bar)
169169```
170170
171171will always print `foo` every time it executes. A variant is
172−`~?` ([**sigwut**](@/docs/hoon/hoon-expressions/rune/sig.md#sigwut)), which prints only if a condition is
172+`~?` ([**sigwut**](@/docs/reference/hoon-expressions/rune/sig.md#sigwut)), which prints only if a condition is
173173true:
174174
175−```hoon
175+```reference
176176~? =(37 (lent foo)) foo
177177(foo bar)
178178```
reference/hoon-expressions/_index.md+5−5
@@ -7,22 +7,22 @@ aliases = ["/docs/reference/hoon-expressions/"]
77+++
88Documentation for Hoon expressions.
99
10−## [Runes](@/docs/hoon/hoon-expressions/rune/_index.md)
10+## [Runes](@/docs/reference/hoon-expressions/rune/_index.md)
1111
1212Runes are a way to form expressions in Hoon. Their exact semantics and
1313
14−## [Limbs and Wings](@/docs/hoon/hoon-expressions/limb/_index.md)
14+## [Limbs and Wings](@/docs/reference/hoon-expressions/limb/_index.md)
1515
1616Limbs and wings are ways to extract data from the subject.
1717
18−## [Basic Types](@/docs/hoon/hoon-expressions/basic.md)
18+## [Basic Types](@/docs/reference/hoon-expressions/basic.md)
1919
2020A simplified explanation of of the Hoon type system.
2121
22−## [Advanced Types](@/docs/hoon/hoon-expressions/advanced.md)
22+## [Advanced Types](@/docs/reference/hoon-expressions/advanced.md)
2323
2424A more comprehensive explanation of the Hoon type system, covering aliasing and polymorphism.
2525
26−## [Irregular Forms](@/docs/hoon/hoon-expressions/irregular.md)
26+## [Irregular Forms](@/docs/reference/hoon-expressions/irregular.md)
2727
2828Alternative syntaxes for Hoon runes.
reference/hoon-expressions/advanced.md+1−1
@@ -191,7 +191,7 @@ limb, we just search the type depth-first.
191191If a name is in the `p.p` map, it's an alias. (An alias is defined using the
192192`=*` rune.) The map contains a `(unit hoon)`; if the unit is full, the name
193193resolves to that hoon (compiled against the `q` type). If the unit is empty,
194−the name is blocked / skipped (see [limb](@/docs/hoon/hoon-expressions/limb/limb.md) for what
194+the name is blocked / skipped (see [limb](@/docs/reference/hoon-expressions/limb/limb.md) for what
195195this means).
196196
197197If a name is in the `q.p` map, it's a bridge. (A bridge is defined using the
reference/hoon-expressions/basic.md+1−1
@@ -32,7 +32,7 @@ including both faces and arm names. (See Chapter 1 of the Hoon tutorial for an
3232introduction to name resolution.)
3333
3434As noted, this is a simplified version of `type`. We undo and
35−explain the simplifications in the [advanced types](@/docs/hoon/hoon-expressions/advanced.md)
35+explain the simplifications in the [advanced types](@/docs/reference/hoon-expressions/advanced.md)
3636section.
3737
3838```hoon
reference/hoon-expressions/irregular.md+19−20
@@ -17,7 +17,7 @@ Anything Nock can do, Hoon can do also.
1717
1818### .+ dotlus
1919
20−[docs](@/docs/hoon/hoon-expressions/rune/dot.md#dotlus) \\+
20+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/dot.md#dottis) \\=
28+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/mic.md#miccol) \\:
40+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/col.md#colhep) \\[\\]\\^\\+\\\`\\~
52+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/tis.md#tisgal) \\:
74+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/bar.md) \\$
82+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/cen.md#centis) \\(\\)
100+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/cen.md#censig) \\~
108+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/cen.md#cenhep) \\(\\)
116+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/buc.md#bucwut) \\?
130+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/buc.md#buccab) \\_
138+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/wut.md#wutzap) \\!
150+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/wut.md#wutpam) \\&
158+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/wut.md#wutbar) \\|
166+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/ket.md#kethep) \\\`
178+[docs](@/docs/reference/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/hoon/hoon-expressions/rune/ket.md#kettis) \\=
186+[docs](@/docs/reference/hoon-expressions/rune/ket.md#kettis) \\=
187187`[%ktts p=toga q=value]`: name a value.
188188
189189R: `^=(p q)`
@@ -193,14 +193,13 @@ I: `p=q`
193193
194194### Trivial molds
195195
196−\\*\\^\\?
197−
198196- `*` noun.
199197- `@` atom.
200198- `^` cell.
201199- `?` loobean.
202200- `~` null.
203201
202+
204203### Values
205204
206205\\~\\-\\.\\&\\|
@@ -210,7 +209,7 @@ I: `p=q`
210209- `|` loobean false.
211210- `%a` constant `a`, where `a` can be an ((ir)regularly defined) atom or a symbol.
212211
213−See [%sand](@/docs/hoon/hoon-expressions/rune/constants.md#warm) for other irregular definitions of atoms.
212+See [%sand](@/docs/reference/hoon-expressions/rune/constants.md#warm) for other irregular definitions of atoms.
214213
215214### List addressing
216215
@@ -219,7 +218,7 @@ See [%sand](@/docs/hoon/hoon-expressions/rune/constants.md#warm) for other irreg
219218
220219### Limbs
221220
222−[docs](@/docs/hoon/hoon-expressions/limb/limb.md) \\+\\.\\^
221+[docs](@/docs/reference/hoon-expressions/limb/limb.md) \\+\\.\\^
223222`[%limb p=(each @ud [p=@ud q=@tas])]`: attribute of subject.
224223
225224- `+15` is slot 15
reference/hoon-expressions/limb/_index.md+2−2
@@ -9,10 +9,10 @@ One feature Hoon lacks: a context that isn't a first-class value. Hoon has no
99concept of scope, environment, etc. An expression has exactly one data source,
1010the **subject**, a noun like any other.
1111
12−## [Limbs](@/docs/hoon/hoon-expressions/limb/limb.md)
12+## [Limbs](@/docs/reference/hoon-expressions/limb/limb.md)
1313
1414A limb is used to resolve to a piece of data in the subject. A wing is thus a resolution path into the subject.
1515
16−## [Wings](@/docs/hoon/hoon-expressions/limb/wing.md)
16+## [Wings](@/docs/reference/hoon-expressions/limb/wing.md)
1717
1818In Hoon we use 'wings' to extract information from the subject. A wing is a list of limbs (including a trivial list of one limb).
reference/hoon-expressions/rune/_index.md+15−15
@@ -9,64 +9,64 @@ Runes are a way to form expressions in Hoon.
99
1010## Non-Rune Expressions
1111
12−### [Constants](@/docs/hoon/hoon-expressions/rune/constants.md)
12+### [Constants](@/docs/reference/hoon-expressions/rune/constants.md)
1313
1414Hoon 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).
1515
16−### [Limbs and Wings](@/docs/hoon/hoon-expressions/limb/_index.md)
16+### [Limbs and Wings](@/docs/reference/hoon-expressions/limb/_index.md)
1717
1818Limb and wing expressions also lack runes.
1919
2020## Runes Proper
2121
22−### [`. dot` (Nock)](@/docs/hoon/hoon-expressions/rune/dot.md)
22+### [`. dot` (Nock)](@/docs/reference/hoon-expressions/rune/dot.md)
2323
2424Runes used for carrying out Nock operations in Hoon.
2525
26−### [`! zap` (wild)](@/docs/hoon/hoon-expressions/rune/zap.md)
26+### [`! zap` (wild)](@/docs/reference/hoon-expressions/rune/zap.md)
2727
2828Wildcard category. Expressions that don't fit anywhere else go here.
2929
30−### [`= tis` (Subject Modification)](@/docs/hoon/hoon-expressions/rune/tis.md)
30+### [`= tis` (Subject Modification)](@/docs/reference/hoon-expressions/rune/tis.md)
3131
3232Runes used to modify the subject.
3333
34−### [`? wut` (Conditionals)](@/docs/hoon/hoon-expressions/rune/wut.md)
34+### [`? wut` (Conditionals)](@/docs/reference/hoon-expressions/rune/wut.md)
3535
3636Runes used for branching on conditionals.
3737
38−### [`| bar` (Cores)](@/docs/hoon/hoon-expressions/rune/bar.md)
38+### [`| bar` (Cores)](@/docs/reference/hoon-expressions/rune/bar.md)
3939
4040Runes used to produce cores.
4141
42−### [`+ lus` (Arms)](@/docs/hoon/hoon-expressions/rune/lus.md)
42+### [`+ lus` (Arms)](@/docs/reference/hoon-expressions/rune/lus.md)
4343
4444Runes used to define arms in a core.
4545
46−### [`: col` (Cells)](@/docs/hoon/hoon-expressions/rune/col.md)
46+### [`: col` (Cells)](@/docs/reference/hoon-expressions/rune/col.md)
4747
4848Runes used to produce cells, which are pairs of nouns.
4949
50−### [`% cen` (Calls)](@/docs/hoon/hoon-expressions/rune/cen.md)
50+### [`% cen` (Calls)](@/docs/reference/hoon-expressions/rune/cen.md)
5151
5252Runes used for making function calls in Hoon.
5353
54−### [`^ ket` (Casts)](@/docs/hoon/hoon-expressions/rune/ket.md)
54+### [`^ ket` (Casts)](@/docs/reference/hoon-expressions/rune/ket.md)
5555
5656Runes that let us adjust types without violating type constraints.
5757
58−### [`$ buc` (Structures)](@/docs/hoon/hoon-expressions/rune/buc.md)
58+### [`$ buc` (Structures)](@/docs/reference/hoon-expressions/rune/buc.md)
5959
6060Runes used for defining custom types.
6161
62−### [`; mic` (Make)](@/docs/hoon/hoon-expressions/rune/mic.md)
62+### [`; mic` (Make)](@/docs/reference/hoon-expressions/rune/mic.md)
6363
6464Miscellaneous useful macros.
6565
66−### [`~ sig` (Hints)](@/docs/hoon/hoon-expressions/rune/sig.md)
66+### [`~ sig` (Hints)](@/docs/reference/hoon-expressions/rune/sig.md)
6767
6868Runes that use Nock `11` to pass non-semantic info to the interpreter.
6969
70−### [`--`, `==` (Terminators)](@/docs/hoon/hoon-expressions/rune/terminators.md)
70+### [`--`, `==` (Terminators)](@/docs/reference/hoon-expressions/rune/terminators.md)
7171
7272Runes used to terminate expressions.
reference/hoon-expressions/rune/bar.md+68−68
@@ -2,7 +2,7 @@
22title = "Cores | ('bar')"
33weight = 7
44template = "doc.html"
5−aliases = ["docs/reference/hoon-expressions/rune/bar/"]
5+aliases = ["docs/reference/reference-expressions/rune/bar/"]
66+++
77Core expressions produce cores. A core is a cell of `[battery payload]`.
88The `battery` is code, a battery of Nock formulas. The `payload` is the data
@@ -22,12 +22,12 @@ Produce a **door** (a core with a sample).
2222
2323Regular:
2424
25−```hoon
25+```reference
2626|_ a=spec
27−++ b=term c=hoon
28−++ d=term e=hoon
27+++ b=term c=reference
28+++ d=term e=reference
2929 ...
30−++ f=term g=hoon
30+++ f=term g=reference
3131--
3232```
3333
@@ -49,13 +49,13 @@ The context of the door is the subject of the `|_` expression.
4949
5050##### Expands to
5151
52−```hoon
52+```reference
5353=| a=spec
5454|%
55−++ b=term c=hoon
56−++ d=term e=hoon
55+++ b=term c=reference
56+++ d=term e=reference
5757 ...
58−++ f=term g=hoon
58+++ f=term g=reference
5959--
6060```
6161
@@ -68,7 +68,7 @@ Calling a door is like calling a gate except the caller also needs
6868to 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)`.
6969
7070Because 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
71−is an irregular form for `%~($ foo baz)`, [%~](/docs/hoon/hoon-expressions/rune/cen#sig).
71+is an irregular form for `%~($ foo baz)`, [%~](/docs/reference/hoon-expressions/rune/cen#sig).
7272
7373##### Examples
7474
@@ -87,7 +87,7 @@ A trivial door:
8787
8888A more interesting door, from the kernel library:
8989
90−```hoon
90+```reference
9191++ ne
9292 |_ tig=@
9393 ++ d (add tig '0')
@@ -112,12 +112,12 @@ Produce a core, `[battery payload]`.
112112
113113Regular:
114114
115−```hoon
115+```reference
116116|%
117−++ a=term b=hoon
118−++ c=term d=hoon
117+++ a=term b=reference
118+++ c=term d=reference
119119 ...
120−++ e=term f=hoon
120+++ e=term f=reference
121121--
122122```
123123
@@ -172,14 +172,14 @@ Produce a gate with a custom sample.
172172
173173Regular:
174174
175−```hoon
176−|: a=hoon b=hoon
175+```reference
176+|: a=reference b=hoon
177177```
178178
179179AST:
180180
181181```
182−[%brcl p=hoon q=hoon]
182+[%brcl p=reference q=hoon]
183183```
184184
185185##### Semantics
@@ -188,7 +188,7 @@ AST:
188188
189189##### Expands to
190190
191−```hoon
191+```reference
192192=> ^~ a
193193 |. b
194194```
@@ -220,14 +220,14 @@ Produce a trap (a core with one arm `$`).
220220
221221Regular:
222222
223−```hoon
224−|. a=hoon
223+```reference
224+|. a=reference
225225```
226226
227227AST:
228228
229229```
230−[%brdt p=hoon]
230+[%brdt p=reference]
231231```
232232
233233Semantics:
@@ -238,8 +238,8 @@ The payload of the core is the subject of the `|.` expression.
238238
239239##### Expands to
240240
241−```hoon
242−|% ++ $ a=hoon
241+```reference
242+|% ++ $ a=reference
243243--
244244```
245245
@@ -278,7 +278,7 @@ A more interesting trap:
278278Note that we can use `$()` to recurse back into the
279279trap, since it's a core with an `$` arm.
280280
281−> `$(...)` expands to `%=($ ...)` (["centis"](/docs/hoon/hoon-expressions/rune/cen#centis)).
281+> `$(...)` expands to `%=($ ...)` (["centis"](/docs/reference/hoon-expressions/rune/cen#centis)).
282282
283283### |- "barhep"
284284
@@ -288,14 +288,14 @@ Produce a trap (a core with one arm `$`) and evaluate it.
288288
289289Regular:
290290
291−```hoon
292−|- a=hoon
291+```reference
292+|- a=reference
293293```
294294
295295AST:
296296
297297```
298−[%brhp p=hoon]
298+[%brhp p=reference]
299299```
300300
301301##### Semantics
@@ -304,15 +304,15 @@ A `|-` expression produces a core with one arm named `$` and immediately evaluat
304304
305305##### Expands to
306306
307−```hoon
308−=<($ |.(a=hoon))
307+```reference
308+=<($ |.(a=reference))
309309```
310310
311311##### Discussion
312312
313313The `|-` 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 `$()`.
314314
315−> `$(...)` expands to `%=($ ...)` (["centis"](/docs/hoon/hoon-expressions/rune/cen#centis)).
315+> `$(...)` expands to `%=($ ...)` (["centis"](/docs/reference/hoon-expressions/rune/cen#centis)).
316316
317317##### Examples
318318
@@ -344,12 +344,12 @@ Produce a core whose battery includes a `$` arm and compute the latter.
344344
345345Regular:
346346
347−```hoon
348−|^ a=hoon
349−++ b=term c=hoon
350−++ d=term e=hoon
347+```reference
348+|^ a=reference
349+++ b=term c=reference
350+++ d=term e=reference
351351 ...
352−++ f=term g=hoon
352+++ f=term g=reference
353353--
354354```
355355
@@ -358,7 +358,7 @@ Note: The `++` rune may be replaced with any other rune in the `+` family.
358358AST:
359359
360360```
361−[%brkt p=hoon q=(map term tome)]
361+[%brkt p=reference q=(map term tome)]
362362```
363363
364364##### Semantics
@@ -367,13 +367,13 @@ A `|^` expression produces a multi-arm core whose battery includes a `$` arm, wh
367367
368368##### Expands to
369369
370−```hoon
370+```reference
371371=> |%
372− ++ $ a=hoon
373− ++ b=term c=hoon
374− ++ d=term e=hoon
372+ ++ $ a=reference
373+ ++ b=term c=reference
374+ ++ d=term e=reference
375375 ...
376− ++ f=term g=hoon
376+ ++ f=term g=reference
377377 --
378378$
379379```
@@ -403,14 +403,14 @@ Produce an iron gate.
403403
404404Regular:
405405
406−```hoon
407−|~ a=spec b=hoon
406+```reference
407+|~ a=spec b=reference
408408```
409409
410410AST:
411411
412412```
413−[%brsg p=spec q=hoon]
413+[%brsg p=spec q=reference]
414414```
415415
416416##### Semantics
@@ -419,13 +419,13 @@ A `|~` expression produces an iron gate. `a` defines the sample, and `b` define
419419
420420##### Expands to
421421
422−```hoon
422+```reference
423423^| |=(a b)
424424```
425425
426426##### Discussion
427427
428−See [this discussion of core variance models](@/docs/hoon/hoon-expressions/advanced.md)
428+See [this discussion of core variance models](@/docs/reference/hoon-expressions/advanced.md)
429429
430430##### Examples
431431
@@ -442,14 +442,14 @@ Produce a wet gate (one-armed core with sample).
442442
443443Regular:
444444
445−```hoon
446−|* a=spec b=hoon
445+```reference
446+|* a=spec b=reference
447447```
448448
449449AST:
450450
451451```
452−[%brtr p=spec q=hoon]
452+[%brtr p=spec q=reference]
453453```
454454
455455##### Semantics
@@ -458,7 +458,7 @@ A `|*` expression produces a wet gate. `a` defines the gate's sample, and `b` i
458458
459459##### Expands to
460460
461−```hoon
461+```reference
462462=| a
463463|@
464464++ $
@@ -479,7 +479,7 @@ you know what you're doing.
479479Just as with a [gate](#bartis), we can recurse back into a wet gate
480480with `$()`.
481481
482−> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/hoon/hoon-expressions/rune/cen.md#centis)).
482+> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/reference/hoon-expressions/rune/cen.md#centis)).
483483
484484##### Examples
485485
@@ -508,14 +508,14 @@ Produce a gate (a one-armed core with a sample).
508508
509509Regular:
510510
511−```hoon
512−|= a=spec b=hoon
511+```reference
512+|= a=spec b=reference
513513```
514514
515515AST:
516516
517517```
518−[%brts p=spec q=hoon]
518+[%brts p=spec q=reference]
519519```
520520
521521##### Definition
@@ -526,9 +526,9 @@ The product of a `|=` expression is a dry **gate**, i.e., a Hoon function.
526526
527527##### Expands to
528528
529−```hoon
529+```reference
530530=| a=spec
531−|% ++ $ b=hoon
531+|% ++ $ b=reference
532532--
533533```
534534
@@ -538,7 +538,7 @@ Dry gates are used for the vast majority of ordinary functions in Hoon.
538538
539539A gate is a core with one arm named `$`, so we can recurse back into it with `$()`.
540540
541−> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/hoon/hoon-expressions/rune/cen.md#centis)).
541+> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/reference/hoon-expressions/rune/cen.md#centis)).
542542
543543##### Examples
544544
@@ -568,12 +568,12 @@ Produce a 'wet' core `[battery payload]`.
568568
569569Regular:
570570
571−```hoon
571+```reference
572572|@
573−++ a=term b=hoon
574−++ c=term d=hoon
573+++ a=term b=reference
574+++ c=term d=reference
575575 ...
576−++ e=term f=hoon
576+++ e=term f=reference
577577--
578578```
579579
@@ -591,7 +591,7 @@ A `|@` expression produces a 'wet' core whose payload is the expression's subjec
591591
592592##### Discussion
593593
594−The `|@` rune is just like the `|%` rune except that instead of producing a 'dry' core, it produces a 'wet' one. This allows for type polymorphism of its arms, using 'genericity'. See [Advanced types](@/docs/hoon/hoon-expressions/advanced.md).
594+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).
595595
596596### |? "barwut"
597597
@@ -601,14 +601,14 @@ Produce a lead trap.
601601
602602Regular:
603603
604−```hoon
605−|? a=hoon
604+```reference
605+|? a=reference
606606```
607607
608608AST:
609609
610610```
611−[%brwt p=hoon]
611+[%brwt p=reference]
612612```
613613
614614##### Semantics
@@ -617,13 +617,13 @@ A `|?` expression produces a lead trap (i.e., a lead core with one arm named `$`
617617
618618##### Expands to
619619
620−```hoon
620+```reference
621621^? |. a
622622```
623623
624624##### Discussion
625625
626−See this [discussion of the core variance model](@/docs/hoon/hoon-expressions/advanced.md).
626+See this [discussion of the core variance model](@/docs/reference/hoon-expressions/advanced.md).
627627
628628##### Examples
629629
reference/hoon-expressions/rune/buc.md+9−9
@@ -2,7 +2,7 @@
22title = "Structures $ ('buc')"
33weight = 12
44template = "doc.html"
5−aliases = ["docs/reference/hoon-expressions/rune/buc/"]
5+aliases = ["docs/reference/reference-expressions/rune/buc/"]
66+++
77The `$` family of runes is used for defining custom types. Strictly speaking,
88these runes are used to produce 'structures'. A structure is a compile-time
@@ -54,11 +54,11 @@ Irregular: `*` makes `%noun`, `^` makes `%cell`, `?` makes
5454
5555### $_ "buccab"
5656
57−`[%bscb p=hoon]`: structure that normalizes to an example.
57+`[%bscb p=reference]`: structure that normalizes to an example.
5858
5959##### Expands to
6060
61−```hoon
61+```reference
6262|=(* p)
6363```
6464
@@ -159,7 +159,7 @@ Irregular (structure mode): `[a b c]` is `$:(a b c)`.
159159
160160##### Expands to
161161
162−```hoon
162+```reference
163163$_ ^|
164164|=(p $:q)
165165```
@@ -217,7 +217,7 @@ Regular: **2-fixed**.
217217
218218### $~ "bucsig"
219219
220−`[%bssg p=hoon q=spec]`: define a custom type default value
220+`[%bssg p=reference q=spec]`: define a custom type default value
221221
222222## Product
223223
@@ -231,15 +231,15 @@ The product of `p`.
231231
232232Regular: **2-fixed**.
233233
234−```hoon
235−$~ p=hoon q=spec
234+```reference
235+$~ p=reference q=spec
236236```
237237
238238`p` defines the default value, and `q` defines everything else about the structure.
239239
240240##### Discussion
241241
242−You should make sure that the product type of `p` nests under `q`. You can check the default value of some structure (custom type) `r` with `*r`. (See the [`^*` rune](@/docs/hoon/hoon-expressions/rune/ket.md#kettar).)
242+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).)
243243
244244Do not confuse the `$~` rune with the constant type for null, `$~`. (The latter uses older Hoon syntax that is still accepted. Preferably it would be `%~`.)
245245
@@ -321,7 +321,7 @@ Example:
321321
322322##### Expands to
323323
324−```hoon
324+```reference
325325|= *
326326^=(p %-(q +6))
327327```
reference/hoon-expressions/rune/cen.md+65−65
@@ -2,7 +2,7 @@
22title = "Calls % ('cen')"
33weight = 10
44template = "doc.html"
5−aliases = ["docs/reference/hoon-expressions/rune/cen/"]
5+aliases = ["docs/reference/reference-expressions/rune/cen/"]
66+++
77The `%` family of runes is used for making 'function calls' in Hoon. To be more precise, these runes evaluate the `$` arm in cores, usually after modifying the sample. (The default sample is replaced with the input values given in the call.)
88
@@ -18,25 +18,25 @@ Resolve a wing with changes, preserving type.
1818
1919Regular, tall:
2020
21−```hoon
21+```reference
2222%_ a=wing
23− b=wing c=hoon
24− d=wing e=hoon
23+ b=wing c=reference
24+ d=wing e=reference
2525 ...
26− f=wing g=hoon
26+ f=wing g=reference
2727==
2828```
2929
3030Regular, flat:
3131
32−```hoon
33−%_(a=wing b=wing c=hoon, d=wing e=hoon, ...)
32+```reference
33+%_(a=wing b=wing c=reference, d=wing e=hoon, ...)
3434```
3535
3636AST:
3737
3838```
39−[%cncb p=wing q=(list (pair wing hoon))]
39+[%cncb p=wing q=(list (pair wing reference))]
4040```
4141
4242##### Semantics
@@ -45,7 +45,7 @@ A `%_` expression resolves to the value of the subject at wing `a`, but modified
4545
4646##### Expands to
4747
48−```hoon
48+```reference
4949^+(a %=(a b c, d e, ...))
5050```
5151
@@ -53,7 +53,7 @@ A `%_` expression resolves to the value of the subject at wing `a`, but modified
5353
5454`%_` is different from `%=` because `%=` can change the type of a wing with mutations. `%_` preserves the wing type.
5555
56−See [how wings are resolved](@/docs/hoon/hoon-expressions/limb/_index.md).
56+See [how wings are resolved](@/docs/reference/hoon-expressions/limb/_index.md).
5757
5858##### Examples
5959
@@ -81,19 +81,19 @@ Call a gate with many arguments.
8181
8282Regular:
8383
84−```hoon
85−%: a=hoon
86− b=hoon
87− c=hoon
84+```reference
85+%: a=reference
86+ b=reference
87+ c=reference
8888 ...
89− d=hoon
89+ d=reference
9090==
9191```
9292
9393AST:
9494
9595```
96−[%cncl p=hoon q=(list hoon)]
96+[%cncl p=reference q=(list hoon)]
9797```
9898
9999##### Semantics
@@ -106,7 +106,7 @@ When `%:` is used in tall-form syntax, the series of expressions after `p` must
106106
107107##### Examples
108108
109−```hoon
109+```reference
110110> %: add 22 33 ==
11111155
112112
@@ -135,14 +135,14 @@ Call a gate (function), inverted.
135135
136136Regular:
137137
138−```hoon
139−%. a=hoon b=hoon
138+```reference
139+%. a=reference b=hoon
140140```
141141
142142AST:
143143
144144```
145−[%cndt p=hoon q=hoon]
145+[%cndt p=reference q=hoon]
146146```
147147
148148##### Semantics
@@ -151,8 +151,8 @@ The `%.` rune is for evaluating the `$` arm of a gate, i.e., calling a function.
151151
152152##### Expands to
153153
154−```hoon
155−%-(b=hoon a=hoon)
154+```reference
155+%-(b=reference a=hoon)
156156```
157157
158158##### Discussion
@@ -176,20 +176,20 @@ Call a gate (function).
176176
177177Regular:
178178
179−```hoon
180−%- a=hoon b=hoon
179+```reference
180+%- a=reference b=hoon
181181```
182182
183183Irregular:
184184
185−```hoon
186−(a=hoon b=hoon)
185+```reference
186+(a=reference b=hoon)
187187```
188188
189189AST:
190190
191191```
192−[%cnhp p=hoon q=hoon]
192+[%cnhp p=reference q=hoon]
193193```
194194
195195##### Semantics
@@ -198,14 +198,14 @@ This rune is for evaluating the `$` arm of a gate, i.e., calling a gate as a fun
198198
199199##### Expands to
200200
201−```hoon
201+```reference
202202%~($ a b)
203203```
204204
205205##### Discussion
206206
207−`%-` is used to call a function; `a` is the function ([`gate`](@/docs/hoon/hoon-expressions/rune/bar.md#bartis),
208−`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).
207+`%-` is used to call a function; `a` is the function ([`gate`](@/docs/reference/hoon-expressions/rune/bar.md#bartis),
208+`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).
209209
210210##### Examples
211211
@@ -225,21 +225,21 @@ Call gate with triple sample.
225225
226226Regular:
227227
228−```hoon
229−%^ a=hoon b=hoon c=hoon d=hoon
228+```reference
229+%^ a=reference b=hoon c=hoon d=hoon
230230```
231231
232232AST:
233233
234234```
235−[%cnkt p=hoon q=hoon r=hoon s=hoon]
235+[%cnkt p=reference q=hoon r=hoon s=hoon]
236236```
237237
238238
239239##### Expands to
240240
241−```hoon
242−%-(a=hoon [b=hoon c=hoon d=hoon])
241+```reference
242+%-(a=reference [b=hoon c=hoon d=hoon])
243243```
244244
245245##### Examples
@@ -259,14 +259,14 @@ Call gate with a cell sample.
259259
260260Regular:
261261
262−```hoon
263−%+ a=hoon b=hoon c=hoon
262+```reference
263+%+ a=reference b=hoon c=hoon
264264```
265265
266266AST:
267267
268268```
269−[%cnls p=hoon q=hoon r=hoon]
269+[%cnls p=reference q=hoon r=hoon]
270270```
271271
272272##### Semantics
@@ -275,8 +275,8 @@ A `%+` expression is for calling a gate with a cell sample. `a` is the gate to
275275
276276##### Expands to
277277
278−```hoon
279−%-(a=hoon [b=hoon c=hoon])
278+```reference
279+%-(a=reference [b=hoon c=hoon])
280280```
281281
282282##### Examples
@@ -296,12 +296,12 @@ Evaluate an arm in a door.
296296
297297Regular:
298298
299−```hoon
300−%~ a=wing b=hoon
301− c=hoon
302− d=hoon
299+```reference
300+%~ a=wing b=reference
301+ c=reference
302+ d=reference
303303 ...
304− e=hoon
304+ e=reference
305305==
306306```
307307
@@ -313,7 +313,7 @@ Irregular:
313313AST:
314314
315315```
316−[%cnsg p=wing q=hoon r=(list hoon)]
316+[%cnsg p=wing q=reference r=(list hoon)]
317317```
318318
319319##### Semantics
@@ -324,11 +324,11 @@ A `%~` expression evaluates the arm of a door (i.e., a core with a sample). `a`
324324
325325`%~` 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)`.
326326
327−See also [`|_`](@/docs/hoon/hoon-expressions/rune/bar.md#barcab).
327+See also [`|_`](@/docs/reference/hoon-expressions/rune/bar.md#barcab).
328328
329329##### Examples
330330
331−```hoon
331+```reference
332332> =mycore |_ a=@
333333 ++ plus-two (add 2 a)
334334 ++ double (mul 2 a)
@@ -348,19 +348,19 @@ Evaluate an expression, then resolve a wing with changes.
348348
349349Regular:
350350
351−```hoon
352−%* a=wing b=hoon
353− c=wing d=hoon
354− e=wing f=hoon
351+```reference
352+%* a=wing b=reference
353+ c=wing d=reference
354+ e=wing f=reference
355355 ...
356− g=wing h=hoon
356+ g=wing h=reference
357357==
358358```
359359
360360AST:
361361
362362```
363−[%cntr p=wing q=hoon r=(list (pair wing hoon))]
363+[%cntr p=wing q=reference r=(list (pair wing hoon))]
364364```
365365
366366##### Semantics
@@ -369,13 +369,13 @@ A `%*` expression evaluates some arbitrary Hoon expression, `b`, and then resolv
369369
370370##### Expands to
371371
372−```hoon
373−=+ b=hoon
372+```reference
373+=+ b=reference
374374%= a=wing
375− c=wing d=hoon
376− e=wing f=hoon
375+ c=wing d=reference
376+ e=wing f=reference
377377 ...
378− g=wing h=hoon
378+ g=wing h=reference
379379==
380380```
381381
@@ -411,12 +411,12 @@ Resolve a wing with changes.
411411
412412Regular:
413413
414−```hoon
414+```reference
415415%= a=wing
416− b=wing c=hoon
417− d=wing e=hoon
416+ b=wing c=reference
417+ d=wing e=reference
418418 ...
419− f=wing g=hoon
419+ f=wing g=reference
420420==
421421```
422422
@@ -427,7 +427,7 @@ Irregular:
427427AST:
428428
429429```
430−[%cnts p=wing q=(list (pair wing hoon))]
430+[%cnts p=wing q=(list (pair wing reference))]
431431```
432432
433433##### Semantics
@@ -452,7 +452,7 @@ a wing, we would just be mutating `+6` within the core that defines the
452452
453453Here's that again in tall form:
454454
455−```hoon
455+```reference
456456=+ foo
457457=> %= +2
458458 +6 baz
reference/hoon-expressions/rune/ket.md+17−17
@@ -2,7 +2,7 @@
22title = "Casts ^ ('ket')"
33weight = 11
44template = "doc.html"
5−aliases = ["docs/reference/hoon-expressions/rune/ket/"]
5+aliases = ["docs/reference/reference-expressions/rune/ket/"]
66+++
77[`^-` ("kethep")](#kethep), [`^+` ("ketlus")](#ketlus), and
88[`^=` ("kettis")](#kettis) let us adjust types without violating type
@@ -15,7 +15,7 @@ it never allows invalid nests, it sometimes rejects valid nests.
1515
1616### ^| "ketbar"
1717
18−`[%ktbr p=hoon]`: convert a gold core to an iron core (contravariant).
18+`[%ktbr p=reference]`: convert a gold core to an iron core (contravariant).
1919
2020##### Produces
2121
@@ -87,11 +87,11 @@ ford: %ride failed to execute:
8787
8888### ^. "ketdot"
8989
90−`[%ktdt p=hoon q=hoon]`: typecast on value produced by passing `q` to `p`.
90+`[%ktdt p=reference q=hoon]`: typecast on value produced by passing `q` to `p`.
9191
9292##### Expands to
9393
94−```hoon
94+```reference
9595^+(%:(p q) q)
9696```
9797
@@ -99,8 +99,8 @@ ford: %ride failed to execute:
9999
100100Regular: **2-fixed**.
101101
102−```hoon
103−^. p=hoon q=hoon
102+```reference
103+^. p=reference q=hoon
104104```
105105
106106##### Discussion
@@ -128,11 +128,11 @@ mint-vain
128128
129129### ^- "kethep"
130130
131−`[%kthp p=spec q=hoon]`: typecast by explicit type label.
131+`[%kthp p=spec q=reference]`: typecast by explicit type label.
132132
133133##### Expands to
134134
135−```hoon
135+```reference
136136^+(^*(p) q)
137137```
138138
@@ -172,7 +172,7 @@ infinite loop in the compiler).
172172
173173### ^+ "ketlus"
174174
175−`[%ktls p=hoon q=hoon]`: typecast by inferred type.
175+`[%ktls p=reference q=hoon]`: typecast by inferred type.
176176
177177##### Produces
178178
@@ -191,7 +191,7 @@ Regular: **2-fixed**.
191191
192192### ^& "ketpam"
193193
194−`[%ktpm p=hoon]`: convert a core to a zinc core (covariant).
194+`[%ktpm p=reference]`: convert a core to a zinc core (covariant).
195195
196196##### Produces
197197
@@ -203,7 +203,7 @@ Regular: **1-fixed**.
203203
204204##### Discussion
205205
206−A zinc core has a read-only sample and an opaque context. See [Advanced types](@/docs/hoon/hoon-expressions/advanced.md).
206+A zinc core has a read-only sample and an opaque context. See [Advanced types](@/docs/reference/hoon-expressions/advanced.md).
207207
208208##### Examples
209209
@@ -244,7 +244,7 @@ ford: %ride failed to compute type:
244244
245245### ^~ "ketsig"
246246
247−`[%ktsg p=hoon]`: fold constant at compile time.
247+`[%ktsg p=reference]`: fold constant at compile time.
248248
249249##### Produces
250250
@@ -276,7 +276,7 @@ A default value (i.e., 'bunt value') of the type `p`.
276276
277277Regular: **1-fixed**.
278278
279−```hoon
279+```reference
280280^* p=spec
281281```
282282
@@ -288,7 +288,7 @@ Irregular: `*p`.
288288
289289Regular:
290290
291−```hoon
291+```reference
292292> ^* @
2932930
294294
@@ -304,7 +304,7 @@ Regular:
304304
305305Irregular:
306306
307−```hoon
307+```reference
308308> *@
3093090
310310
@@ -317,7 +317,7 @@ Irregular:
317317
318318### ^= "kettis"
319319
320−`[%ktts p=skin q=hoon]`: Bind name to a value.
320+`[%ktts p=skin q=reference]`: Bind name to a value.
321321
322322##### Produces
323323
@@ -353,7 +353,7 @@ a=1
353353
354354### ^? "ketwut"
355355
356−`[%ktwt p=hoon]`: convert any core to a lead core (bivariant).
356+`[%ktwt p=reference]`: convert any core to a lead core (bivariant).
357357
358358##### Produces
359359
reference/hoon-expressions/rune/mic.md+3−3
@@ -81,7 +81,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
8181
8282tl;dr -- `;+` converts a `manx` to a `marl`.
8383
84−`;+` is a Sail rune. Sail is a part of Hoon used for creating and operating on nouns that represent XML nodes. With the appropriate rendering pipeline, a Sail document can be used to generate a static website. See the [Sail tutorial](@/docs/arvo/sail-and-udon.md).
84+`;+` 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/tutorials/sail-and-udon.md).
8585
8686In Sail a single XML node is represented by a `manx`. A single `<p>` node `manx` can be produced in the following way:
8787
@@ -295,7 +295,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
295295
296296##### Discussion
297297
298−`;*` is a Sail rune. Sail is a part of Hoon used for creating and operating on nouns that represent XML nodes. With the appropriate rendering pipeline, a Sail document can be used to generate a static website. See the [Sail tutorial](@/docs/arvo/sail-and-udon.md).
298+`;*` 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/tutorials/sail-and-udon.md).
299299
300300If 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.
301301
@@ -347,7 +347,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
347347
348348##### Discussion
349349
350−`;=` is a Sail rune. Sail is a part of Hoon used for creating and operating on nouns that represent XML nodes. With the appropriate rendering pipeline, a Sail document can be used to generate a static website. See the [Sail tutorial](@/docs/arvo/sail-and-udon.md).
350+`;=` 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/tutorials/sail-and-udon.md).
351351
352352In Sail a single XML node is represented by a `manx`. A single `<p>` node `manx` can be produced in the following way:
353353
reference/hoon-expressions/rune/tis.md+28−28
@@ -2,7 +2,7 @@
22title = "Change Subject = ('tis')"
33weight = 5
44template = "doc.html"
5−aliases = ["/docs/reference/hoon-expressions/rune/tis/"]
5+aliases = ["/docs/reference/reference-expressions/rune/tis/"]
66+++
77These runes modify the subject. (Or more precisely, they
88evaluate at least one of their subexpressions with a modified subject.)
@@ -26,7 +26,7 @@ different situations. Hence the whole family of `=` runes.
2626
2727### => "tisgar"
2828
29−`[%tsgr p=hoon q=hoon]`: compose two expressions.
29+`[%tsgr p=reference q=hoon]`: compose two expressions.
3030
3131##### Produces
3232
@@ -49,11 +49,11 @@ Regular: **2-fixed**.
4949### =| "tisbar"
5050
5151
52−`[%tsbr p=spec q=hoon]`: combine a default type value with the subject.
52+`[%tsbr p=spec q=reference]`: combine a default type value with the subject.
5353
5454##### Expands to
5555
56−```hoon
56+```reference
5757=+(*p q)
5858```
5959
@@ -80,11 +80,11 @@ Speaking more loosely, `=|` usually "declares a variable" which is "uninitialize
8080
8181### =: "tiscol"
8282
83−`[%tscl p=(list (pair wing hoon)) q=hoon]`: change multiple legs in the subject.
83+`[%tscl p=(list (pair wing reference)) q=hoon]`: change multiple legs in the subject.
8484
8585##### Expands to
8686
87−```hoon
87+```reference
8888=>(%_(. p) q)
8989```
9090
@@ -109,7 +109,7 @@ This rune is like `=.`, but for modifying the values of multiple legs of the sub
109109
110110### =, "tiscom"
111111
112−`[%tscm p=hoon q=hoon]`: expose namespace
112+`[%tscm p=reference q=hoon]`: expose namespace
113113
114114`p` evaluates to a noun with some namespace. From within `q` you may access `p`'s names without a wing path (i.e., you can use face `b` rather than `b.p`). This is especially useful for calling arms from an imported library core or for calling arms from a stdlib core repeatedly.
115115
@@ -144,11 +144,11 @@ With a dojo-defined face:
144144
145145### =. "tisdot"
146146
147−`[%tsdt p=wing q=hoon r=hoon]`: change one leg in the subject.
147+`[%tsdt p=wing q=reference r=hoon]`: change one leg in the subject.
148148
149149##### Expands to
150150
151−```hoon
151+```reference
152152=>(%_(. p q) r)
153153```
154154
@@ -159,7 +159,7 @@ Regular: **3-fixed**.
159159##### Discussion
160160
161161Technically the `=.` rune doesn't change the subject. It creates
162−a new subject just like the old one except for a changed value at `p`. Note that the mutation uses [`%_` ("cencab")](@/docs/hoon/hoon-expressions/rune/cen.md#cencab), so the type at `p` doesn't change. Trying to change the value type results in a `nest-fail`.
162+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`.
163163
164164##### Examples
165165
@@ -180,11 +180,11 @@ nest-fail
180180
181181### =- "tishep"
182182
183−`[%tshp p=hoon q=hoon]`: combine a new noun with the subject, inverted.
183+`[%tshp p=reference q=hoon]`: combine a new noun with the subject, inverted.
184184
185185##### Expands to
186186
187−```hoon
187+```reference
188188=>([q .] p)
189189```
190190
@@ -209,12 +209,12 @@ Regular: **2-fixed**.
209209
210210### =^ "tisket"
211211
212−`[%tskt p=skin q=wing r=hoon s=hoon]`: pin the head of a pair; change
212+`[%tskt p=skin q=wing r=reference s=hoon]`: pin the head of a pair; change
213213a leg with the tail.
214214
215215##### Expands to
216216
217−```hoon
217+```reference
218218=/(p -.r =.(q +.r s))
219219```
220220
@@ -249,11 +249,11 @@ random number, so we use `=^`:
249249
250250### =< "tisgal"
251251
252−`[%tsgl p=hoon q=hoon]`: compose two expressions, inverted.
252+`[%tsgl p=reference q=hoon]`: compose two expressions, inverted.
253253
254254##### Expands to
255255
256−```hoon
256+```reference
257257=>(q p)
258258```
259259
@@ -287,11 +287,11 @@ Irregular: `foo:baz` is `=<(foo baz)`.
287287### =+ "tislus"
288288
289289
290−`[%tsls p=hoon q=hoon]`: combine a new noun with the subject.
290+`[%tsls p=reference q=hoon]`: combine a new noun with the subject.
291291
292292##### Expands to
293293
294−```hoon
294+```reference
295295=>([p .] q)
296296```
297297
@@ -309,11 +309,11 @@ Loosely speaking, `=+` is the simplest way of "declaring a variable."
309309
310310### =; "tismic"
311311
312−`[%tsmc p=skin q=hoon r=hoon]`: combine a named noun with the subject, possibly with type annotation; inverted order.
312+`[%tsmc p=skin q=reference r=hoon]`: combine a named noun with the subject, possibly with type annotation; inverted order.
313313
314314##### Expands to
315315
316−```hoon
316+```reference
317317=/(p r q)
318318```
319319
@@ -338,25 +338,25 @@ Regular: **3-fixed**.
338338
339339### =/ "tisfas"
340340
341−`[%tsfs p=skin q=hoon r=hoon]`: combine a named noun with the subject, possibly with type annotation.
341+`[%tsfs p=skin q=reference r=hoon]`: combine a named noun with the subject, possibly with type annotation.
342342
343343##### Expands to
344344
345345**if `p` is a name**, (e.g. `a`):
346346
347−```hoon
347+```reference
348348=+(^=(p q) r)
349349```
350350
351351**if `p` is a name with a type** (e.g., `a=@`):
352352
353−```hoon
353+```reference
354354=+(^-(p q) r)
355355```
356356
357357### Desugaring
358358
359−```hoon
359+```reference
360360?@ p
361361 =+ p=q
362362 r
@@ -388,7 +388,7 @@ Regular: **3-fixed**.
388388### =~ "tissig"
389389
390390
391−`[%tssg p=(list hoon)]`: compose many expressions.
391+`[%tssg p=(list reference)]`: compose many expressions.
392392
393393##### Produces
394394
@@ -423,7 +423,7 @@ Regular: **running**.
423423
424424### =* "tistar"
425425
426−`[%tstr p=term q=hoon r=hoon]`: define an alias.
426+`[%tstr p=term q=reference r=hoon]`: define an alias.
427427
428428##### Produces
429429
@@ -456,11 +456,11 @@ The difference between aliasing and pinning is that pinning changes the subject,
456456
457457### =? "tiswut"
458458
459−`[$tswt p=wing q=hoon r=hoon s=hoon]`: conditionally change one leg in the subject.
459+`[$tswt p=wing q=reference r=hoon s=hoon]`: conditionally change one leg in the subject.
460460
461461##### Expands to
462462
463−```hoon
463+```reference
464464=. p ?:(q r p)
465465s
466466```
reference/hoon-expressions/rune/wut.md+28−28
@@ -2,7 +2,7 @@
22title = "Conditionals ? ('wut')"
33weight = 6
44template = "doc.html"
5−aliases = ["docs/reference/hoon-expressions/rune/wut/"]
5+aliases = ["docs/reference/reference-expressions/rune/wut/"]
66+++
77Hoon has the usual program control branches. It also has the usual logical
88operators: AND `?&`, OR `?|`, and NOT `?!`. It also has a `?=` rune that tests
@@ -22,7 +22,7 @@ for expressions which expand to `?:`.
2222The test does not have to be a single `?=`; the compiler can
2323analyze arbitrary boolean logic ([`?&` ("wutpam")](#wutpam),
2424[`?|` ("wutbar")](#wutbar), [`?!` ("wutzap")](#wutzap)) with full
25−short-circuiting. Equality tests ([`.=` ("dottis")](@/docs/hoon/hoon-expressions/rune/dot.md#dottis)) are **not**
25+short-circuiting. Equality tests ([`.=` ("dottis")](@/docs/reference/hoon-expressions/rune/dot.md#dottis)) are **not**
2626analyzed.
2727
2828If the compiler detects that the branch is degenerate (only one
@@ -32,11 +32,11 @@ side is taken), it fails with an error.
3232
3333### ?> "wutgar"
3434
35−`[%wtgr p=hoon q=hoon]`: positive assertion.
35+`[%wtgr p=reference q=hoon]`: positive assertion.
3636
3737##### Expands to
3838
39−```hoon
39+```reference
4040?.(p !! q)
4141```
4242
@@ -70,19 +70,19 @@ nest-fail
7070
7171### ?| "wutbar"
7272
73−`[%wtbr p=(list hoon)]`: logical OR.
73+`[%wtbr p=(list reference)]`: logical OR.
7474
7575##### Expands to
7676
7777**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
7878
79−```hoon
79+```reference
8080?:(a & ?:(b & ?:(c & ?:(... ?:(z & |)))))
8181```
8282
8383##### Desugaring
8484
85−```hoon
85+```reference
8686|-
8787?~ p
8888 |
@@ -109,7 +109,7 @@ Irregular: `|(foo bar baz)` is `?|(foo bar baz)`.
109109
110110### ?: "wutcol" {#wutcol}
111111
112−`[%wtcl p=hoon q=hoon r=hoon]`: branch on a boolean test.
112+`[%wtcl p=reference q=hoon r=hoon]`: branch on a boolean test.
113113
114114##### Produces
115115
@@ -157,11 +157,11 @@ Note also that all other branching expressions reduce to `?:`.
157157
158158### ?. "wutdot"
159159
160−`[%wtdt p=hoon q=hoon r=hoon]`: branch on a boolean test, inverted.
160+`[%wtdt p=reference q=hoon r=hoon]`: branch on a boolean test, inverted.
161161
162162##### Expands to
163163
164−```hoon
164+```reference
165165?:(p r q)
166166```
167167
@@ -200,7 +200,7 @@ As is usual with inverted forms, use `?.` when the yes-case expression is much t
200200
201201**Pseudocode**: `a`, `b`, `c`, ... as elements of `q`:
202202
203−```hoon
203+```reference
204204?: ?=(p.a p) q.a
205205?: ?=(p.b p) q.b
206206?: ?=(p.c p) q.c
@@ -210,7 +210,7 @@ As is usual with inverted forms, use `?.` when the yes-case expression is much t
210210
211211##### Desugaring
212212
213−```hoon
213+```reference
214214|-
215215?. q
216216 ~|(%mint-lost !!)
@@ -256,12 +256,12 @@ will throw `mint-vain`.
256256
257257### ?^ "wutket"
258258
259−`[%wtkt p=wing q=hoon r=hoon]`: branch on whether a wing
259+`[%wtkt p=wing q=reference r=hoon]`: branch on whether a wing
260260of the subject is a cell.
261261
262262##### Expands to
263263
264−```hoon
264+```reference
265265?:(?=(^ p) q r)
266266```
267267
@@ -289,11 +289,11 @@ The type of the wing, `p`, must not be known to be either an atom or a cell, or
289289
290290### ?< "wutgal"
291291
292−`[%wtgl p=hoon q=hoon]`: negative assertion.
292+`[%wtgl p=reference q=hoon]`: negative assertion.
293293
294294##### Expands to
295295
296−```hoon
296+```reference
297297?:(p !! q)
298298```
299299
@@ -327,14 +327,14 @@ nest-fail
327327
328328### ?+ "wutlus"
329329
330−`[%wtls p=wing q=hoon r=(list (pair spec hoon))]`: switch against
330+`[%wtls p=wing q=reference r=(list (pair spec hoon))]`: switch against
331331a union, with a default.
332332
333333##### Expands to
334334
335335**Pseudocode**: `a`, `b`, `c`, ... as elements of `r`:
336336
337−```hoon
337+```reference
338338?: ?=(p.a p) q.a
339339?: ?=(p.b p) q.b
340340?: ?=(p.c p) q.c
@@ -344,7 +344,7 @@ q
344344
345345##### Desugaring
346346
347−```hoon
347+```reference
348348|-
349349?. r
350350 q
@@ -384,19 +384,19 @@ If there is a case that is never taken you'll get a `mint-vain` error.
384384
385385### ?& "wutpam"
386386
387−`[%wtpm p=(list hoon)]`: logical AND.
387+`[%wtpm p=(list reference)]`: logical AND.
388388
389389##### Expands to
390390
391391**Pseudocode**: `a`, `b`, `c`, ... as elements of `p`:
392392
393−```hoon
393+```reference
394394?.(a | ?.(b | ?.(c | ?.(... ?.(z | &)))))
395395```
396396
397397##### Desugaring
398398
399−```hoon
399+```reference
400400|-
401401?~ p
402402 &
@@ -423,11 +423,11 @@ Irregular: `&(foo bar baz)` is `?&(foo bar baz)`.
423423
424424### ?~ "wutsig"
425425
426−`[%wtsg p=wing q=hoon r=hoon]`: branch on whether a wing of the subject is null.
426+`[%wtsg p=wing q=reference r=hoon]`: branch on whether a wing of the subject is null.
427427
428428##### Expands to
429429
430−```hoon
430+```reference
431431?:(?=($~ p) q r)
432432```
433433
@@ -486,11 +486,11 @@ A common error is `find.$`, meaning `p` is not a type.
486486
487487### ?@ "wutvat"
488488
489−`[%wtpt p=wing q=hoon r=hoon]`: branch on whether a wing of the subject is an atom.
489+`[%wtpt p=wing q=reference r=hoon]`: branch on whether a wing of the subject is an atom.
490490
491491##### Expands to
492492
493−```hoon
493+```reference
494494?:(?=(@ p) q r)
495495```
496496
@@ -518,11 +518,11 @@ The type of the wing, `p`, must not be known to be either an atom or a cell, or
518518
519519### ?! "wutzap"
520520
521−`[%wtzp p=hoon]`: logical NOT.
521+`[%wtzp p=reference]`: logical NOT.
522522
523523##### Expands to
524524
525−```hoon
525+```reference
526526.=(| p)
527527```
528528
reference/library/1b.md+1−1
@@ -4,7 +4,7 @@ weight = 2
44template = "doc.html"
55aliases = ["/docs/reference/library/1b"]
66+++
7−Check out the Nock [explanation](@/docs/nock/_index.md) for more
7+Check out the Nock [explanation](@/docs/tutorials/nock/_index.md) for more
88information on the tree-addressing system.
99
1010### `++cap`
reference/library/1c.md+13−13
@@ -12,7 +12,7 @@ Atom representing block size. A block of size `a` has a bitwidth of `2^a`.
1212
1313#### Source
1414
15−```hoon
15+```reference
1616 ++ bloq @
1717```
1818
@@ -63,7 +63,7 @@ A `bloq` of 3 has a bitwidth of 8. (2^3 bits; can represent 256 values.)
6363
6464And so on.
6565
66−See the [bit arithmetic](@/docs/hoon/library/2c.md) section for operations that use `bloq`s.
66+See the [bit arithmetic](@/docs/reference/library/2c.md) section for operations that use `bloq`s.
6767
6868---
6969
@@ -104,7 +104,7 @@ product noun. If used dryly as a type, the subject must have a sample type of
104104
105105#### Source
106106
107−```hoon
107+```reference
108108 ++ gate
109109 $-(* *)
110110```
@@ -143,7 +143,7 @@ homogenous type.
143143
144144#### Source
145145
146−```hoon
146+```reference
147147 ++ list
148148 |*(a=mold $@($~ (lest a)))
149149```
@@ -177,7 +177,7 @@ A mold generator. Puts face of `p` on the passed-in mold.
177177
178178#### Source
179179
180−```hoon
180+```reference
181181 ++ lone
182182 |*(a=mold [p=a])
183183```
@@ -210,7 +210,7 @@ A mold generator. Produces a tuple of two of the types passed in.
210210
211211#### Source
212212
213−```hoon
213+```reference
214214 ++ pair
215215 |*([a=mold b=mold] [p=a q=b])
216216```
@@ -235,7 +235,7 @@ A mold generator. A `list` without the faces `i` and `t`.
235235
236236#### Source
237237
238−```hoon
238+```reference
239239 ++ pole
240240 |*(a=mold $@($~ [a (pole a)]))
241241```
@@ -261,7 +261,7 @@ A mold generator. Produces a tuple of four of the types passed in.
261261
262262#### Source
263263
264−```hoon
264+```reference
265265 ++ qual
266266 |* [a=mold b=mold c=mold d=mold]
267267 [p=a q=b r=c s=d]
@@ -286,7 +286,7 @@ A mold generator. Produces a tuple of a `list` of `a` and the mold of `b`.
286286
287287#### Source
288288
289−```hoon
289+```reference
290290 ++ quip
291291 |*([a=mold b=mold] [(list a) b])
292292```
@@ -315,7 +315,7 @@ A trap is a core with one arm `$`.
315315
316316#### Source
317317
318−```hoon
318+```reference
319319 ++ trap
320320 |*(a=mold _|?(*a))
321321```
@@ -344,7 +344,7 @@ left/right sub `tree` of the same type. Pretty-printed with `{}`.
344344
345345#### Source
346346
347−```hoon
347+```reference
348348 ++ tree
349349 |*(a=mold $@($~ [n=a l=(tree a) r=(tree a)]))
350350```
@@ -366,7 +366,7 @@ A mold generator. A mold of the tuple of the three types passed in.
366366
367367#### Source
368368
369−```hoon
369+```reference
370370 ++ trel
371371 |*([a=mold b=mold c=mold] [p=a q=b r=c])
372372```
@@ -392,7 +392,7 @@ type that was passed in.
392392
393393#### Source
394394
395−```hoon
395+```reference
396396 ++ unit
397397 |*(a=mold $@($~ [$~ u=a]))
398398```
reference/library/2c.md+37−37
@@ -20,7 +20,7 @@ An atom.
2020
2121#### Source
2222
23−```hoon
23+```reference
2424 ++ bex
2525 ~/ %bex
2626 |= a=@
@@ -53,7 +53,7 @@ value.
5353
5454#### Accepts
5555
56−`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
56+`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
5757
5858`b` is a `list` of length-value pairs, `p` and `q`.
5959
@@ -63,7 +63,7 @@ An atom.
6363
6464#### Source
6565
66−```hoon
66+```reference
6767 ++ can
6868 ~/ %can
6969 |= [a=bloq b=(list [p=@ q=@])]
@@ -110,7 +110,7 @@ atom.
110110
111111#### Accepts
112112
113−`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
113+`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
114114
115115`b` is an atom.
116116
@@ -122,7 +122,7 @@ An atom.
122122
123123#### Source
124124
125−```hoon
125+```reference
126126 ++ cat
127127 ~/ %cat
128128 |= [a=bloq b=@ c=@]
@@ -173,7 +173,7 @@ Slices `c` blocks of size `a` that are positioned `b` blocks from the end of
173173
174174#### Accepts
175175
176−`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
176+`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
177177
178178`b` is an atom.
179179
@@ -187,7 +187,7 @@ An atom.
187187
188188#### Source
189189
190−```hoon
190+```reference
191191 ++ cut
192192 ~/ %cut
193193 |= [a=bloq [b=@u c=@u] d=@]
@@ -232,7 +232,7 @@ Produces an atom by taking the last `b` blocks of size `a` from `c`.
232232
233233#### Accepts
234234
235−`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
235+`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
236236
237237`b` is an atom.
238238
@@ -245,7 +245,7 @@ An atom.
245245
246246#### Source
247247
248−```hoon
248+```reference
249249 ++ end
250250 ~/ %end
251251 |= [a=bloq b=@u c=@]
@@ -299,7 +299,7 @@ Produces an atom by repeating `c` for `b` blocks of size `a`.
299299
300300#### Accepts
301301
302−`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
302+`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
303303
304304`b` is an atom.
305305
@@ -311,7 +311,7 @@ An atom.
311311
312312#### Source
313313
314−```hoon
314+```reference
315315 ++ fil
316316 |= [a=bloq b=@u c=@]
317317 =+ n=0
@@ -351,7 +351,7 @@ Produces an atom by left-shifting `c` by `b` blocks of size `a`.
351351
352352#### Accepts
353353
354−`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
354+`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
355355
356356`b` is an atom.
357357
@@ -363,7 +363,7 @@ An atom.
363363
364364#### Source
365365
366−```hoon
366+```reference
367367 ++ lsh
368368 ~/ %lsh
369369 |= [a=bloq b=@u c=@]
@@ -402,13 +402,13 @@ Computes the number of blocks of size `a` in `b`, producing an atom.
402402
403403#### Accepts
404404
405−`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
405+`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
406406
407407`b` is an atom.
408408
409409#### Source
410410
411−```hoon
411+```reference
412412 ++ met
413413 ~/ %met
414414 |= [a=bloq b=@]
@@ -448,7 +448,7 @@ Concatenates a list of atoms `b` using block size `a`, producing an atom.
448448
449449#### Accepts
450450
451−`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
451+`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
452452
453453`b` is a `list` of atoms.
454454
@@ -458,7 +458,7 @@ An atom.
458458
459459#### Source
460460
461−```hoon
461+```reference
462462 ++ rap
463463 ~/ %rap
464464 |= [a=bloq b=(list @)]
@@ -509,7 +509,7 @@ Produces an atom by assembling a list of atoms `b` using block size `a`.
509509
510510#### Accepts
511511
512−`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
512+`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
513513
514514`b` is a list of atoms.
515515
@@ -519,7 +519,7 @@ An atom.
519519
520520#### Source
521521
522−```hoon
522+```reference
523523 ++ rep
524524 ~/ %rep
525525 |= [a=bloq b=(list @)]
@@ -574,7 +574,7 @@ Produces a list of atoms from the bits of `b` using block size `a`.
574574
575575#### Accepts
576576
577−`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
577+`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
578578
579579`b` is an atom.
580580
@@ -584,7 +584,7 @@ A list of atoms.
584584
585585#### Source
586586
587−```hoon
587+```reference
588588 ++ rip
589589 ~/ %rip
590590 |= [a=bloq b=@]
@@ -634,7 +634,7 @@ Right-shifts `c` by `b` blocks of size `a`, producing an atom.
634634
635635#### Accepts
636636
637−`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
637+`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
638638
639639`b` is an atom.
640640
@@ -646,7 +646,7 @@ An atom.
646646
647647#### Source
648648
649−```hoon
649+```reference
650650 ++ rsh
651651 ~/ %rsh
652652 |= [a=bloq b=@u c=@]
@@ -702,7 +702,7 @@ reversing the block order of `b` using block size `a`.
702702
703703#### Accepts
704704
705−`a` is a block size (see [`++bloq`](@/docs/hoon/library/1c.md)).
705+`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
706706
707707`b` is an atom.
708708
@@ -712,7 +712,7 @@ An atom
712712
713713#### Source
714714
715−```hoon
715+```reference
716716 ++ swp |=([a=bloq b=@] (rep a (flop (rip a b))))
717717```
718718
@@ -753,7 +753,7 @@ An atom.
753753
754754#### Source
755755
756−```hoon
756+```reference
757757 ++ xeb
758758 ~/ %xeb
759759 |= a=@
@@ -797,7 +797,7 @@ Core that contains arms for `bloq` and modular integer operations.
797797
798798#### Source
799799
800−```hoon
800+```reference
801801 |_ a=bloq
802802```
803803
@@ -821,7 +821,7 @@ A `@s`
821821
822822#### Source
823823
824−```hoon
824+```reference
825825 ++ dif |=([b=@ c=@] (sit (sub (add out (sit b)) (sit c))))
826826```
827827
@@ -862,7 +862,7 @@ Inverts the order of the modular field.
862862
863863#### Accepts
864864
865−`b` is a `bloq`. (see [`++bloq`](@/docs/hoon/library/1c.md))
865+`b` is a `bloq`. (see [`++bloq`](@/docs/reference/library/1c.md))
866866
867867#### Produces
868868
@@ -870,7 +870,7 @@ An atom.
870870
871871#### Source
872872
873−```hoon
873+```reference
874874 ++ inv |=(b=@ (sub (dec out) (sit b)))
875875```
876876
@@ -905,7 +905,7 @@ Reverses bytes within a block.
905905
906906#### Accepts
907907
908−`b` is a `bloq`. (see [`++bloq`](@/docs/hoon/library/1c.md))
908+`b` is a `bloq`. (see [`++bloq`](@/docs/reference/library/1c.md))
909909
910910#### Produces
911911
@@ -913,7 +913,7 @@ An atom.
913913
914914#### Source
915915
916−```hoon
916+```reference
917917 ++ net |= b=@ ^- @
918918 => .(b (sit b))
919919 ?: (lte a 3)
@@ -1002,7 +1002,7 @@ An atom.
10021002
10031003#### Source
10041004
1005−```hoon
1005+```reference
10061006 ++ out (bex (bex a))
10071007```
10081008
@@ -1057,7 +1057,7 @@ An atom.
10571057
10581058#### Source
10591059
1060−```hoon
1060+```reference
10611061 ++ rol |= [b=bloq c=@ d=@] ^- @
10621062 =+ e=(sit d)
10631063 =+ f=(bex (sub a b))
@@ -1107,7 +1107,7 @@ An atom.
11071107
11081108#### Source
11091109
1110−```hoon
1110+```reference
11111111 ++ ror |= [b=bloq c=@ d=@] ^- @
11121112 =+ e=(sit d)
11131113 =+ f=(bex (sub a b))
@@ -1156,7 +1156,7 @@ An atom.
11561156
11571157#### Source
11581158
1159−```hoon
1159+```reference
11601160 ++ sit |=(b=@ (end a 1 b))
11611161```
11621162
@@ -1219,7 +1219,7 @@ An atom.
12191219
12201220#### Source
12211221
1222−```hoon
1222+```reference
12231223 ++ sum |=([b=@ c=@] (sit (add b c)))
12241224```
12251225
reference/library/2d.md+6−6
@@ -22,7 +22,7 @@ An atom.
2222
2323#### Source
2424
25−```hoon
25+```reference
2626 ++ con
2727 ~/ %con
2828 |= [a=@ b=@]
@@ -117,7 +117,7 @@ An atom.
117117
118118#### Source
119119
120−```hoon
120+```reference
121121 ++ dis
122122 ~/ %dis
123123 |= [a=@ b=@]
@@ -205,7 +205,7 @@ An atom.
205205
206206#### Source
207207
208−```hoon
208+```reference
209209 ++ mix
210210 ~/ %mix
211211 |= [a=@ b=@]
@@ -281,7 +281,7 @@ of `c`.
281281
282282#### Accepts
283283
284−`a` is a block size (see [`bloq`](@/docs/hoon/library/1c.md)).
284+`a` is a block size (see [`bloq`](@/docs/reference/library/1c.md)).
285285
286286`b` is an atom.
287287
@@ -293,7 +293,7 @@ An atom.
293293
294294#### Source
295295
296−```hoon
296+```reference
297297 ++ not |= [a=bloq b=@ c=@]
298298 (mix c (dec (bex (mul b (bex a)))))
299299```
@@ -327,7 +327,7 @@ number's `0`s into `1`s, and vice versa.
327327
328328In Hoon, we ask for a little more information to use `not`, because binary
329329numbers have a number of implicit leading zeroes differently depending on on
330−their [block size](@/docs/hoon/library/1c.md). Decimal `7`, for example, is `0b111` in binary, and
330+their [block size](@/docs/reference/library/1c.md). Decimal `7`, for example, is `0b111` in binary, and
331331has one implicit zero in the context of a block of size `2`, which has a
332332bitwidth of 4. Let's try `not` on `7` with a single block of size `2`.
333333
reference/library/2e.md+6−6
@@ -9,7 +9,7 @@ aliases = ["/docs/reference/library/2e"]
99FNV scrambler
1010
1111Hashes an atom with the 32-bit FNV non-cryptographic hash algorithm. Multiplies
12−`a` by the prime number 16,777,619 and then takes the [block](@/docs/hoon/library/2c.md) of size
12+`a` by the prime number 16,777,619 and then takes the [block](@/docs/reference/library/2c.md) of size
13135 off the product's end, producing an atom.
1414
1515#### Accepts
@@ -22,7 +22,7 @@ An atom.
2222
2323#### Source
2424
25−```hoon
25+```reference
2626 ++ fnv |=(a=@ (end 5 1 (mul 16.777.619 a)))
2727```
2828
@@ -58,7 +58,7 @@ An atom.
5858
5959#### Source
6060
61−```hoon
61+```reference
6262 ++ mug
6363 ~/ %mug
6464 |= a=*
@@ -109,7 +109,7 @@ Standard MurmurHash3
109109Implementation of the 32-bit
110110[MurmurHash3](https://en.wikipedia.org/wiki/MurmurHash#Algorithm)
111111non-cryptographic hash algorithm. Takes `a` as the seed, `b` as the key length
112−in [blocks](@/docs/hoon/library/2c.md) of size 3, and `c` as the key, producing an atom.
112+in [blocks](@/docs/reference/library/2c.md) of size 3, and `c` as the key, producing an atom.
113113
114114#### Accepts
115115
@@ -125,7 +125,7 @@ An atom.
125125
126126#### Source
127127
128−```hoon
128+```reference
129129 ++ muk
130130 ~% %muk ..muk ~
131131 =+ ~(. fe 5)
@@ -236,7 +236,7 @@ An atom.
236236
237237#### Source
238238
239−```hoon
239+```reference
240240 ++ mum
241241 ~/ %mum
242242 |= a=*
reference/library/2f.md+10−10
@@ -22,7 +22,7 @@ A flag.
2222
2323#### Source
2424
25−```hoon
25+```reference
2626 ++ aor
2727 ~/ %aor
2828 |= [a=* b=*]
@@ -92,7 +92,7 @@ A flag.
9292
9393#### Source
9494
95−```hoon
95+```reference
9696 ++ dor
9797 ~/ %dor
9898 |= [a=* b=*]
@@ -131,7 +131,7 @@ A flag.
131131
132132#### Discussion
133133
134−If `a` and `b` are both atoms, `dor` is equivalent to [`lte`](@/docs/hoon/library/1a.md). If they're
134+If `a` and `b` are both atoms, `dor` is equivalent to [`lte`](@/docs/reference/library/1a.md). If they're
135135cells, `dor` recurses on the heads, and then if the heads are the same it checks
136136the tails.
137137
@@ -148,7 +148,7 @@ Computes whether of `(mug a)` and `(mug b)` are in ascending numeric order,
148148producing a flag. If the `mug` hashes are equal, `a` and `b` are compared by
149149`dor` instead.
150150
151−[`mug`](@/docs/hoon/library/2e.md) is the the 31-bit nonzero FNV-1a hash algorithm.
151+[`mug`](@/docs/reference/library/2e.md) is the the 31-bit nonzero FNV-1a hash algorithm.
152152
153153#### Accepts
154154
@@ -162,7 +162,7 @@ A flag.
162162
163163#### Source
164164
165−```hoon
165+```reference
166166 ++ gor
167167 ~/ %gor
168168 |= [a=* b=*]
@@ -243,7 +243,7 @@ A flag.
243243
244244#### Source
245245
246−```hoon
246+```reference
247247 ++ hor
248248 ~/ %hor
249249 |= [a=* b=*]
@@ -297,7 +297,7 @@ A flag.
297297#### Discussion
298298
299299Sets (+set, +in) use `hor` for their horizontal order and `vor` for their
300−vertical order. See [`apt:in`](@/docs/hoon/library/2h.md) to see how a set verifies its correctness.
300+vertical order. See [`apt:in`](@/docs/reference/library/2h.md) to see how a set verifies its correctness.
301301`vor` is used to verify.
302302
303303---
@@ -320,7 +320,7 @@ A flag.
320320
321321#### Source
322322
323−```hoon
323+```reference
324324 ++ lor
325325 ~/ %lor
326326 |= [a=* b=*]
@@ -378,7 +378,7 @@ Computes whether the double-hashes `(mug (mug a))` and `(mug (mug b))` are in
378378ascending numeric order, producing a flag. If the double-`mug` hashes are
379379equal, `a` and `b` are compared by `dor` instead.
380380
381−[`mug`](@/docs/hoon/library/2e.md) is the the 31-bit nonzero FNV-1a hash algorithm.
381+[`mug`](@/docs/reference/library/2e.md) is the the 31-bit nonzero FNV-1a hash algorithm.
382382
383383
384384#### Accepts
@@ -393,7 +393,7 @@ A flag.
393393
394394#### Source
395395
396−```hoon
396+```reference
397397 ++ vor
398398 ~/ %vor
399399 |= [a=* b=*]
reference/library/2h.md+19−19
@@ -17,7 +17,7 @@ A `set`.
1717
1818#### Source
1919
20−```hoon
20+```reference
2121 ++ in
2222 ~/ %in
2323 |_ a=(set)
@@ -49,7 +49,7 @@ A flag.
4949
5050#### Source
5151
52−```hoon
52+```reference
5353 +- all
5454 ~/ %all
5555 |* b=$-(* ?)
@@ -91,7 +91,7 @@ A flag.
9191
9292#### Source
9393
94−```hoon
94+```reference
9595 +- any
9696 ~/ %any
9797 |* b=$-(* ?)
@@ -131,7 +131,7 @@ A flag.
131131
132132#### Source
133133
134−```hoon
134+```reference
135135 +- apt
136136 =| [l=(unit) r=(unit)]
137137 |- ^- ?
@@ -164,7 +164,7 @@ A flag.
164164
165165#### Discussion
166166
167−See section [`2f`](@/docs/hoon/library/2f.md) for more information on noun ordering.
167+See section [`2f`](@/docs/reference/library/2f.md) for more information on noun ordering.
168168
169169---
170170### `+-bif:in`
@@ -185,7 +185,7 @@ A cell of two sets.
185185
186186#### Source
187187
188−```hoon
188+```reference
189189 +- bif
190190 ~/ %bif
191191 |* b=*
@@ -238,7 +238,7 @@ A set.
238238
239239#### Source
240240
241−```hoon
241+```reference
242242 +- del
243243 ~/ %del
244244 |* b=*
@@ -293,7 +293,7 @@ A set.
293293
294294#### Source
295295
296−```hoon
296+```reference
297297 +- dif
298298 ~/ %dif
299299 |* b=_a
@@ -348,7 +348,7 @@ The `unit` of an atom.
348348
349349#### Source
350350
351−```hoon
351+```reference
352352 +- dig
353353 |= b=*
354354 =+ c=1
@@ -383,7 +383,7 @@ The `unit` of an atom.
383383
384384#### Discussion
385385
386−For more on the tree addressing system, see section [1b](@/docs/hoon/library/1b.md).
386+For more on the tree addressing system, see section [1b](@/docs/reference/library/1b.md).
387387
388388---
389389### `+-gas:in`
@@ -404,7 +404,7 @@ A `set`.
404404
405405#### Source
406406
407−```hoon
407+```reference
408408 +- gas
409409 ~/ %gas
410410 |= b=(list _?>(?=(^ a) n.a))
@@ -448,7 +448,7 @@ A flag.
448448
449449#### Source
450450
451−```hoon
451+```reference
452452 +- has
453453 ~/ %has
454454 |* b=*
@@ -493,7 +493,7 @@ A `set`.
493493
494494#### Source
495495
496−```hoon
496+```reference
497497 +- int
498498 ~/ %int
499499 |* b=_a
@@ -544,7 +544,7 @@ A `set`.
544544
545545#### Source
546546
547−```hoon
547+```reference
548548 +- put
549549 ~/ %put
550550 |* b=*
@@ -597,7 +597,7 @@ A noun.
597597
598598#### Source
599599
600−```hoon
600+```reference
601601 +- rep :: replace by product
602602 |* b=_|=([* *] +<+)
603603 |-
@@ -636,7 +636,7 @@ A set.
636636
637637#### Source
638638
639−```hoon
639+```reference
640640 +- run
641641 ~/ %run
642642 |* b=gate
@@ -675,7 +675,7 @@ A list.
675675
676676#### Source
677677
678−```hoon
678+```reference
679679 +- tap
680680 ~/ %tap
681681 |= b=(list _?>(?=(^ a) n.a))
@@ -717,7 +717,7 @@ A set.
717717
718718#### Source
719719
720−```hoon
720+```reference
721721 +- uni
722722 ~/ %uni
723723 |* b=_a
@@ -775,7 +775,7 @@ An atom.
775775
776776#### Source
777777
778−```hoon
778+```reference
779779 +- wyt :: size of set
780780 |- ^- @
781781 ?~(a 0 +((add $(a l.a) $(a r.a))))
reference/library/2i.md+25−25
@@ -17,7 +17,7 @@ contained arms inherit its sample map, `a`.
1717
1818#### Source
1919
20−```hoon
20+```reference
2121 ++ by
2222 ~/ %by
2323 =| a=(tree (pair))
@@ -61,7 +61,7 @@ A flag.
6161
6262#### Source
6363
64−```hoon
64+```reference
6565 +- all
6666 ~/ %all
6767 |* b=$-(* ?)
@@ -106,7 +106,7 @@ A flag.
106106
107107#### Source
108108
109−```hoon
109+```reference
110110 +- any
111111 ~/ %any
112112 |* b=$-(* ?)
@@ -146,7 +146,7 @@ A flag.
146146
147147#### Source
148148
149−```hoon
149+```reference
150150 +- apt
151151 =| [l=(unit) r=(unit)]
152152 |- ^- ?
@@ -176,7 +176,7 @@ A flag.
176176
177177#### Discussion
178178
179−See section [`2f`](@/docs/hoon/library/2f.md) for more information on noun ordering.
179+See section [`2f`](@/docs/reference/library/2f.md) for more information on noun ordering.
180180
181181### `+-bif:by`
182182
@@ -198,7 +198,7 @@ A cell of two maps.
198198
199199#### Source
200200
201−```hoon
201+```reference
202202 +- bif
203203 ~/ %bif
204204 |* [b=* c=*]
@@ -245,7 +245,7 @@ A map.
245245
246246#### Source
247247
248−```hoon
248+```reference
249249 +- def
250250 |* b=_a
251251 ^- (map _p:node (pair (unit _q:node) (unit _q:node)))
@@ -272,7 +272,7 @@ A cell of maps.
272272
273273#### Source
274274
275−```hoon
275+```reference
276276 +- dep
277277 |* b=_a
278278 ^+ [p=a q=a]
@@ -310,7 +310,7 @@ A map.
310310
311311#### Source
312312
313−```hoon
313+```reference
314314 +- del
315315 ~/ %del
316316 |* b=*
@@ -356,7 +356,7 @@ A unit.
356356
357357#### Source
358358
359−```hoon
359+```reference
360360 +- dig
361361 |= b=*
362362 =+ c=1
@@ -395,7 +395,7 @@ A map.
395395
396396#### Source
397397
398−```hoon
398+```reference
399399 +- gas
400400 ~/ %gas
401401 |* b=(list [p=* q=*])
@@ -435,7 +435,7 @@ A unit.
435435
436436#### Source
437437
438−```hoon
438+```reference
439439 +- get
440440 ~/ %get
441441 |= b=*
@@ -483,7 +483,7 @@ A noun.
483483
484484#### Source
485485
486−```hoon
486+```reference
487487 +- got
488488 |* b=*
489489 (need (get b))
@@ -522,7 +522,7 @@ A flag.
522522
523523#### Source
524524
525−```hoon
525+```reference
526526 +- has
527527 ~/ %has
528528 |* b=*
@@ -561,7 +561,7 @@ A map.
561561
562562#### Source
563563
564−```hoon
564+```reference
565565 +- int
566566 ~/ %int
567567 |* b=_a
@@ -633,7 +633,7 @@ A map.
633633
634634#### Assert and Add
635635
636−```hoon
636+```reference
637637 +- mar
638638 |* [b=_?>(?=(^ a) p.n.a) c=(unit ,_?>(?=(^ a) q.n.a))]
639639 ?~ c
@@ -676,7 +676,7 @@ A map.
676676
677677#### Source
678678
679−```hoon
679+```reference
680680 +- put
681681 ~/ %put
682682 |* [b=* c=*]
@@ -737,7 +737,7 @@ A noun.
737737
738738#### Source
739739
740−```hoon
740+```reference
741741 +- rep
742742 |* b=_|=([* *] +<+)
743743 |-
@@ -772,7 +772,7 @@ A cell of nouns.
772772
773773#### Source
774774
775−```hoon
775+```reference
776776 +- rib
777777 |* [b=* c=gate]
778778 |- ^+ [b a]
@@ -812,7 +812,7 @@ A map.
812812
813813#### Source
814814
815−```hoon
815+```reference
816816 +- run
817817 |* b=gate
818818 |-
@@ -851,7 +851,7 @@ A map.
851851
852852#### Source
853853
854−```hoon
854+```reference
855855 +- rut
856856 |* b=gate
857857 |-
@@ -885,7 +885,7 @@ A list.
885885
886886#### Source
887887
888−```hoon
888+```reference
889889 +- tap
890890 =< $
891891 ~/ %tap
@@ -930,7 +930,7 @@ A map.
930930
931931#### Source
932932
933−```hoon
933+```reference
934934 +- uni
935935 ~/ %uni
936936 |* b=_a
@@ -991,7 +991,7 @@ A noun.
991991
992992#### Source
993993
994−```hoon
994+```reference
995995 +- urn
996996 |* b=$-({* *} *)
997997 |-
@@ -1033,7 +1033,7 @@ An atom.
10331033
10341034#### Source
10351035
1036−```hoon
1036+```reference
10371037 +- wyt
10381038 |- ^- @
10391039 ?~(a 0 +((add $(a l.a) $(a r.a))))
reference/library/2o.md+10−10
@@ -10,7 +10,7 @@ Mold generator. A `jar` is a `map` of `list`.
1010
1111#### Source
1212
13−```hoon
13+```reference
1414 ++ jar |*([a=mold b=mold] (map a (list b)))
1515```
1616
@@ -38,7 +38,7 @@ Mold generator. A `jar` is a `map` of `list`.
3838
3939#### Discussion
4040
41−See also: [`ja`](@/docs/hoon/library/2j.md), [`by`](@/docs/hoon/library/2i.md), [`map`](@/docs/hoon/library/2i.md), [`list`](@/docs/hoon/library/2b.md)
41+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)
4242
4343---
4444### `++jug`
@@ -47,7 +47,7 @@ Mold generator. A `jug` is a `map` of `set`.
4747
4848#### Source
4949
50−```hoon
50+```reference
5151 ++ jug |*([a=mold b=mold] (map a (set b)))
5252```
5353
@@ -78,7 +78,7 @@ Mold generator. A `jug` is a `map` of `set`.
7878
7979#### Discussion
8080
81−See also: [`ja`](@/docs/hoon/library/2j.md), [`by`](@/docs/hoon/library/2i.md), [`set`](@/docs/hoon/library/2h.md)
81+See also: [`ja`](@/docs/reference/library/2j.md), [`by`](@/docs/reference/library/2i.md), [`set`](@/docs/reference/library/2h.md)
8282
8383---
8484### `++map`
@@ -91,7 +91,7 @@ key-value pairs.
9191
9292#### Source
9393
94−```hoon
94+```reference
9595 ++ map |* [a=mold b=mold]
9696 %+ cork (tree (pair a b))
9797 |= c=(tree (pair a b)) ^+ c
@@ -111,7 +111,7 @@ key-value pairs.
111111
112112#### Discussion
113113
114−See also: [`by`](@/docs/hoon/library/2i.md)
114+See also: [`by`](@/docs/reference/library/2i.md)
115115
116116---
117117### `++qeu`
@@ -123,7 +123,7 @@ items.
123123
124124#### Source
125125
126−```hoon
126+```reference
127127 ++ qeu |*(a=mold (tree a))
128128```
129129
@@ -148,7 +148,7 @@ items.
148148
149149#### Discussion
150150
151−See also: [`qeu`](@/docs/hoon/library/2k.md)
151+See also: [`qeu`](@/docs/reference/library/2k.md)
152152
153153---
154154### `++set`
@@ -160,7 +160,7 @@ items.
160160
161161#### Source
162162
163−```hoon
163+```reference
164164 ++ set |* a=mold
165165 %+ cork (tree a)
166166 |= b=(tree a) ^+ b
@@ -182,6 +182,6 @@ items.
182182
183183#### Discussion
184184
185−See also: [`in`](@/docs/hoon/library/2h.md)
185+See also: [`in`](@/docs/reference/library/2h.md)
186186
187187---
reference/library/2q.md+13−13
@@ -14,7 +14,7 @@ consume `tape`s, which are lists of `char`.
1414
1515#### Source
1616
17−```hoon
17+```reference
1818 ++ char @tD
1919```
2020
@@ -38,7 +38,7 @@ atom of UTF-8 text.
3838
3939#### Source
4040
41−```hoon
41+```reference
4242 ++ cord @t
4343```
4444
@@ -66,7 +66,7 @@ atom of UTF-8 text.
6666Aura `@t` designates a Unicode atom, little-endian: the first character
6767in the text is the least-significant byte.
6868
69−[`trip`](@/docs/hoon/library/4b.md) converts from `cord` to `tape`, and [`crip`](@/docs/hoon/library/4b.md) converts
69+[`trip`](@/docs/reference/library/4b.md) converts from `cord` to `tape`, and [`crip`](@/docs/reference/library/4b.md) converts
7070from `tape` to `cord`.
7171
7272
@@ -81,7 +81,7 @@ which is a day atom and a time.
8181
8282#### Source
8383
84−```hoon
84+```reference
8585 ++ date [[a=? y=@ud] m=@ud t=tarp]
8686```
8787
@@ -101,7 +101,7 @@ which is a day atom and a time.
101101
102102#### Discussion
103103
104−See also: [`year`](@/docs/hoon/library/3c.md), [`yore`](@/docs/hoon/library/3c.md)
104+See also: [`year`](@/docs/reference/library/3c.md), [`yore`](@/docs/reference/library/3c.md)
105105
106106---
107107### `++knot`
@@ -112,7 +112,7 @@ An atom type that only permits ASCII characters.
112112
113113#### Source
114114
115−```hoon
115+```reference
116116
117117 ++ knot @ta
118118```
@@ -137,7 +137,7 @@ traces.
137137
138138#### Source
139139
140−```hoon
140+```reference
141141 ++ tang (list tank)
142142```
143143
@@ -173,7 +173,7 @@ without back-steps at new lines.
173173
174174#### Source
175175
176−```hoon
176+```reference
177177 ++ tank $% [$leaf p=tape]
178178 $: $palm
179179 p=[p=tape q=tape r=tape s=tape]
@@ -227,7 +227,7 @@ One of Hoon's two string types, the other being `++cord`. A tape is a list of
227227
228228#### Source
229229
230−```hoon
230+```reference
231231 ++ tape (list @tD)
232232```
233233
@@ -260,7 +260,7 @@ for precision.
260260
261261#### Source
262262
263−```hoon
263+```reference
264264 ++ tarp [d=@ud h=@ud m=@ud s=@ud f=(list @ux)]
265265```
266266
@@ -295,7 +295,7 @@ special syntax, `$`.
295295
296296#### Source
297297
298−```hoon
298+```reference
299299 ++ term @tas
300300```
301301
@@ -326,7 +326,7 @@ A list of `cord`s. A `wain` is used instead of a single `cord` with `\n`.
326326
327327#### Source
328328
329−```hoon
329+```reference
330330 ++ wain (list cord)
331331```
332332
@@ -349,7 +349,7 @@ A list of `tape`s. `wall` is used instead of a single `tape` with `\n`.
349349
350350#### Source
351351
352−```hoon
352+```reference
353353 ++ wall (list tape)
354354```
355355#### Examples
reference/library/3d.md+17−17
@@ -21,7 +21,7 @@ An atom.
2121
2222#### Source
2323
24−```hoon
24+```reference
2525 ++ shad |=(ruz=@ (shax (shax ruz)))
2626```
2727
@@ -38,7 +38,7 @@ An atom.
3838
3939Half SHA-256
4040
41−Produces a 128-bit atom by performing the [bitwise XOR](@/docs/hoon/library/2d.md) on the
41+Produces a 128-bit atom by performing the [bitwise XOR](@/docs/reference/library/2d.md) on the
4242first and last halves of the 256-bit salted hash `shas`.
4343
4444#### Accepts
@@ -49,7 +49,7 @@ first and last halves of the 256-bit salted hash `shas`.
4949
5050#### Source
5151
52−```hoon
52+```reference
5353 ++ shaf :: half sha-256
5454 |= [sal=@ ruz=@]
5555 =+ haz=(shas sal ruz)
@@ -88,7 +88,7 @@ An atom.
8888
8989#### Source
9090
91−```hoon
91+```reference
9292 ++ shal
9393 ~/ %shal
9494 |= [len=@ ruz=@] ^- @
@@ -243,7 +243,7 @@ An atom.
243243
244244#### Source
245245
246−```hoon
246+```reference
247247 ++ sham
248248 |= yux=* ^- @uvH ^- @
249249 ?@ yux
@@ -279,7 +279,7 @@ An atom.
279279
280280#### Source
281281
282−```hoon
282+```reference
283283 ++ shan
284284 |= ruz=@
285285 =+ [few==>(fe .(a 5)) wac=|=([a=@ b=@] (cut 5 [a 1] b))]
@@ -363,7 +363,7 @@ SHA-1 is a deprecated function; it is not considered secure.
363363
364364Salted hash
365365
366−Produces an atom by using SHA-256 plus a salt input. The [bitwise XOR](@/docs/hoon/library/2d.md)
366+Produces an atom by using SHA-256 plus a salt input. The [bitwise XOR](@/docs/reference/library/2d.md)
367367is performed on `sal` and the product of `ruz` hashed with SHA-256. The product
368368of that logical operation is then itself hashed with SHA-256.
369369
@@ -375,7 +375,7 @@ of that logical operation is then itself hashed with SHA-256.
375375
376376#### Source
377377
378−```hoon
378+```reference
379379 ++ shas
380380 |= [sal=@ ruz=@]
381381 (shax (mix sal (shax ruz)))
@@ -412,7 +412,7 @@ An atom.
412412
413413#### Source
414414
415−```hoon
415+```reference
416416 ++ shaw
417417 |= [sal=@ len=@ ruz=@]
418418 (~(raw og (shas sal (mix len ruz))) len)
@@ -437,7 +437,7 @@ Produces an atom by hashing an atom `ruz` with SHA-256.
437437
438438#### Sources
439439
440−```hoon
440+```reference
441441 ++ shax
442442 ~/ %shax
443443 |= ruz=@ ^- @
@@ -469,7 +469,7 @@ the byte-length of the theoretical buffer represented by the atom.
469469
470470#### Source
471471
472−```hoon
472+```reference
473473 ++ shay
474474 ~/ %shay
475475 |= [len=@u ruz=@] ^- @
@@ -594,7 +594,7 @@ An atom.
594594
595595#### Source
596596
597−```hoon
597+```reference
598598 ++ shaz
599599 |= ruz=@ ^- @
600600 (shal [(met 3 ruz) ruz])
@@ -626,7 +626,7 @@ A core.
626626
627627#### Source
628628
629−```hoon
629+```reference
630630 ++ og
631631 ~/ %og
632632 |_ a=@
@@ -663,7 +663,7 @@ An atom.
663663
664664#### Source
665665
666−```hoon
666+```reference
667667 ++ rad
668668 |= b=@ ^- @
669669 =+ c=(raw (met 0 b))
@@ -705,7 +705,7 @@ A cell.
705705
706706#### Source
707707
708−```hoon
708+```reference
709709 ++ rads
710710 |= b=@
711711 =+ r=(rad b)
@@ -748,7 +748,7 @@ An atom.
748748
749749#### Source
750750
751−```hoon
751+```reference
752752 ++ raw
753753 ~/ %raw
754754 |= b=@ ^- @
@@ -791,7 +791,7 @@ parent core with `(raw b)`.
791791
792792#### Source
793793
794−```hoon
794+```reference
795795 ++ raws
796796 |= b=@
797797 =+ r=(raw b)
reference/library/3f.md+20−20
@@ -13,7 +13,7 @@ Used in the `@p` phonetic base.
1313
1414#### Source
1515
16−```hoon
16+```reference
1717 ++ un
1818 |%
1919```
@@ -37,7 +37,7 @@ An atom.
3737
3838#### Source
3939
40−```hoon
40+```reference
4141 ++ wren
4242 |= pyn=@ ^- @
4343 =+ len=(met 3 pyn)
@@ -89,7 +89,7 @@ An atom.
8989
9090#### Source
9191
92−```hoon
92+```reference
9393 ++ wred
9494 |= cry=@ ^- @
9595 =+ len=(met 3 cry)
@@ -142,7 +142,7 @@ An atom.
142142
143143#### Source
144144
145−```hoon
145+```reference
146146 ++ xafo |=([a=@ b=@] +((mod (add (dec b) a) 255)))
147147```
148148
@@ -179,7 +179,7 @@ An atom.
179179
180180#### Source
181181
182−```hoon
182+```reference
183183 ++ xaro |=([a=@ b=@] +((mod (add (dec b) (sub 255 (mod a 255))) 255)))
184184```
185185
@@ -214,7 +214,7 @@ An atom.
214214
215215#### Source
216216
217−```hoon
217+```reference
218218 ++ zaft
219219 |= a=@D
220220 =+ ^= b
@@ -266,7 +266,7 @@ An atom.
266266
267267#### Source
268268
269−```hoon
269+```reference
270270 ++ zart :: reverse 255-sbox
271271 |= a=@D
272272 =+ ^= b
@@ -316,7 +316,7 @@ An atom.
316316
317317#### Source
318318
319−```hoon
319+```reference
320320 ++ zyft :: forward 256-sbox
321321 |= a=@D
322322 =+ ^= b
@@ -369,7 +369,7 @@ An atom.
369369
370370#### Source
371371
372−```hoon
372+```reference
373373 ++ zyrt :: reverse 256-sbox
374374 |= a=@D
375375 =+ ^= b
@@ -408,7 +408,7 @@ An atom.
408408
409409Reversible scrambling, v2
410410
411−```hoon
411+```reference
412412 ++ ob
413413 |%
414414```
@@ -435,7 +435,7 @@ An atom.
435435
436436#### Source
437437
438−```hoon
438+```reference
439439 ++ feen
440440 |= pyn=@ ^- @
441441 ?: &((gte pyn 0x1.0000) (lte pyn 0xffff.ffff))
@@ -485,7 +485,7 @@ An atom.
485485
486486#### Source
487487
488−```hoon
488+```reference
489489 ++ fend
490490 |= cry=@ ^- @
491491 ?: &((gte cry 0x1.0000) (lte cry 0xffff.ffff))
@@ -538,7 +538,7 @@ An atom.
538538
539539#### Source
540540
541−```hoon
541+```reference
542542 ++ fice :: adapted from
543543 |= nor=@ :: black and rogaway
544544 ^- @ :: "ciphers with
@@ -581,7 +581,7 @@ An atom.
581581
582582#### Source
583583
584−```hoon
584+```reference
585585 ++ teil :: reverse ++fice
586586 |= vip=@
587587 ^- @
@@ -610,7 +610,7 @@ An atom.
610610
611611Reverse Feistel-like cipher
612612
613−A single round of the Feistel-like cipher `fice`. AES ([`aesc`](@/docs/hoon/library/3f.md)) is
613+A single round of the Feistel-like cipher `fice`. AES ([`aesc`](@/docs/reference/library/3f.md)) is
614614used as the round function. The inverse of `rund`.
615615
616616#### Accepts
@@ -627,7 +627,7 @@ A cell of two atoms.
627627
628628#### Source
629629
630−```hoon
630+```reference
631631 ++ rynd
632632 |= [n=@ l=@ r=@]
633633 ^- [@ @]
@@ -652,7 +652,7 @@ A cell of two atoms.
652652
653653Reverse single Feistel-like
654654
655−A single round of the Feistel-like reverse cipher `teil`. AES ([`aesc`](@/docs/hoon/library/3f.md))
655+A single round of the Feistel-like reverse cipher `teil`. AES ([`aesc`](@/docs/reference/library/3f.md))
656656is used as the round function. The inverse of `rynd`.
657657
658658#### Accepts
@@ -669,7 +669,7 @@ A cell of two atoms.
669669
670670#### Source
671671
672−```hoon
672+```reference
673673 ++ rund
674674 |= [n=@ l=@ r=@]
675675 ^- [@ @]
@@ -694,7 +694,7 @@ A cell of two atoms.
694694
695695Key list
696696
697−Produces a list of arbitrary hexademical keys for use with [`aesc`](@/docs/hoon/library/3f.md).
697+Produces a list of arbitrary hexademical keys for use with [`aesc`](@/docs/reference/library/3f.md).
698698
699699#### Produces
700700
@@ -702,7 +702,7 @@ A list of atoms of aura `@ux` (hexadecimal).
702702
703703#### Source
704704
705−```hoon
705+```reference
706706 ++ raku
707707 ^- (list @ux)
708708 :~ 0xb76d.5eed
reference/library/3g.md+17−17
@@ -14,7 +14,7 @@ and printed using `++so` and `++co` cores.
1414
1515#### Source
1616
17−```hoon
17+```reference
1818 ++ coin $% [$$ p=dime]
1919 [$blob p=*]
2020 [$many p=(list coin)]
@@ -52,14 +52,14 @@ and printed using `++so` and `++co` cores.
5252
5353Aura-atom pair
5454
55−Used in `++coin`. Convenience methods [`++scot`](@/docs/hoon/library/4m.md) and
56−[`++scow`](@/docs/hoon/library/4m.md) print dimes as `++cord` and `++tape`, respectively.
57−[`++slat`](@/docs/hoon/library/4m.md), [`++slav`](@/docs/hoon/library/4m.md), and [`++slaw`](@/docs/hoon/library/4m.md) are used
55+Used in `++coin`. Convenience methods [`++scot`](@/docs/reference/library/4m.md) and
56+[`++scow`](@/docs/reference/library/4m.md) print dimes as `++cord` and `++tape`, respectively.
57+[`++slat`](@/docs/reference/library/4m.md), [`++slav`](@/docs/reference/library/4m.md), and [`++slaw`](@/docs/reference/library/4m.md) are used
5858to parse atoms of specific auras.
5959
6060#### Source
6161
62−```hoon
62+```reference
6363 ++ dime [p=@ta q=@]
6464```
6565
@@ -79,7 +79,7 @@ Optional result `p` and parsing continuation `q`.
7979
8080#### Source
8181
82−```hoon
82+```reference
8383 ++ hair [p=@ud q=@ud]
8484```
8585
@@ -95,7 +95,7 @@ Optional result `p` and parsing continuation `q`.
9595
9696#### Discussion
9797
98−See also: [Section 2e](@/docs/hoon/library/2e.md), `++rule`
98+See also: [Section 2e](@/docs/reference/library/2e.md), `++rule`
9999
100100
101101---
@@ -107,7 +107,7 @@ A pair of two `@ud` used in parsing indicating line and column number.
107107
108108#### Source
109109
110−```hoon
110+```reference
111111 ++ hair [p=@ud q=@ud]
112112```
113113
@@ -136,7 +136,7 @@ Generates an `++edge` with a parsed result set to a specific type.
136136
137137#### Source
138138
139−```hoon
139+```reference
140140 ++ like |* a=gate
141141 |= b=_`*`[(hair) ~]
142142 :- p=(hair -.b)
@@ -170,7 +170,7 @@ Indicates parsing position `p`, and remaining text to be parsed `q`.
170170
171171#### Source
172172
173−```hoon
173+```reference
174174 ++ nail [p=hair q=tape]
175175```
176176
@@ -190,7 +190,7 @@ A list of `++knot`s. `++knot` is another name for `@ta`.
190190
191191#### Source
192192
193−```hoon
193+```reference
194194 ++ path (list knot)
195195```
196196
@@ -215,7 +215,7 @@ stack traces.
215215
216216#### Source
217217
218−```hoon
218+```reference
219219 ++ pint [p=[p=@ q=@] q=[p=@ q=@]]
220220```
221221
@@ -240,7 +240,7 @@ An empty parsing rule, but used to check that parsing rules match this with `_`.
240240
241241#### Source
242242
243−```hoon
243+```reference
244244 ++ rule _|=(nail *edge)
245245```
246246
@@ -260,7 +260,7 @@ The stack trace that is printed after crashing.
260260
261261#### Source
262262
263−```hoon
263+```reference
264264 ++ spot [p=path q=pint]
265265```
266266
@@ -283,7 +283,7 @@ or failure with an error report (`%2`).
283283
284284#### Source
285285
286−```hoon
286+```reference
287287 ++ tone $% [$0 p=*] :: success
288288 [$1 p=(list)] :: blocks
289289 [$2 p=(list [@ta *])] :: error report
@@ -331,7 +331,7 @@ or failure with a stack trace (`%2`).
331331
332332#### Source
333333
334−```hoon
334+```reference
335335 ++ toon $% [$0 p=*] :: success
336336 [$1 p=(list)] :: blocks
337337 [$2 p=(list tank)] :: stack trace
@@ -357,7 +357,7 @@ Pull result out of a `++edge`, or crash if there's no result.
357357
358358#### Source
359359
360−```hoon
360+```reference
361361 ++ wonk |*(veq=edge ?~(q.veq !! p.u.q.veq))
362362```
363363
reference/library/4h.md+34−34
@@ -12,7 +12,7 @@ Parses ASCII character 32, space.
1212
1313#### Source
1414
15−```hoon
15+```reference
1616 ++ ace (just ' ')
1717```
1818
@@ -43,7 +43,7 @@ Parses ASCII character 124, the vertical bar.
4343
4444#### Source
4545
46−```hoon
46+```reference
4747 ++ bar (just '|')
4848```
4949
@@ -70,12 +70,12 @@ Parses ASCII character 124, the vertical bar.
7070Parse backslash
7171
7272Parses ASCII character 92, the backslash. Note the extra `\` in the calling of
73−`bas` with [`++just`](@/docs/hoon/library/4f.md) is to escape the escape
73+`bas` with [`++just`](@/docs/reference/library/4f.md) is to escape the escape
7474character, `\`.
7575
7676#### Source
7777
78−```hoon
78+```reference
7979 ++ bas (just '\\')
8080```
8181
@@ -108,7 +108,7 @@ Parses ASCII character 36, the dollar sign.
108108
109109#### Source
110110
111−```hoon
111+```reference
112112 ++ buc (just '$')
113113```
114114
@@ -138,7 +138,7 @@ Parses ASCII character 95, the underscore.
138138
139139#### Source
140140
141−```hoon
141+```reference
142142 ++ cab (just '_')
143143```
144144
@@ -168,7 +168,7 @@ Parses ASCII character 37, the percent sign.
168168
169169#### Source
170170
171−```hoon
171+```reference
172172 ++ cen (just '%')
173173```
174174
@@ -198,7 +198,7 @@ Parses ASCII character 58, the colon
198198
199199#### Source
200200
201−```hoon
201+```reference
202202 ++ col (just ':')
203203```
204204
@@ -227,7 +227,7 @@ Parses ASCII character 44, the comma.
227227
228228#### Source
229229
230−```hoon
230+```reference
231231 ++ com (just ',')
232232```
233233
@@ -257,7 +257,7 @@ Parses ASCII character 34, the double quote.
257257
258258#### Source
259259
260−```hoon
260+```reference
261261 ++ doq (just '"')
262262```
263263
@@ -292,7 +292,7 @@ Parses ASCII character 46, the period.
292292
293293#### Source
294294
295−```hoon
295+```reference
296296 ++ dot (just '.')
297297```
298298
@@ -322,7 +322,7 @@ Parses ASCII character 47, the forward slash.
322322
323323#### Source
324324
325−```hoon
325+```reference
326326 ++ fas (just '/')
327327```
328328
@@ -349,7 +349,7 @@ Parses ASCII character 60, the less-than sign.
349349
350350#### Source
351351
352−```hoon
352+```reference
353353 ++ gal (just '<')
354354```
355355
@@ -379,7 +379,7 @@ Parses ASCII character 62, the greater-than sign.
379379
380380#### Source
381381
382−```hoon
382+```reference
383383 ++ gar (just '>')
384384```
385385
@@ -409,7 +409,7 @@ Parses ASCII character 35, the number sign.
409409
410410#### Source
411411
412−```hoon
412+```reference
413413 ++ hax (just '#')
414414```
415415
@@ -436,7 +436,7 @@ Parses ASCII character 45, the hyphen.
436436
437437#### Source
438438
439−```hoon
439+```reference
440440 ++ hep (just '-')
441441```
442442
@@ -465,7 +465,7 @@ interpolation. To parse either of them, they must be escaped.
465465
466466#### Source
467467
468−```hoon
468+```reference
469469 ++ kel (just '{')
470470```
471471
@@ -494,7 +494,7 @@ interpolation. To parse either of them, they must be escaped.
494494
495495#### Source
496496
497−```hoon
497+```reference
498498 ++ ker (just '}')
499499```
500500
@@ -521,7 +521,7 @@ Parses ASCII character 94, the caret.
521521
522522#### Source
523523
524−```hoon
524+```reference
525525 ++ ket (just '^')
526526```
527527
@@ -547,7 +547,7 @@ Parses ASCII character 43, the plus sign.
547547
548548#### Source
549549
550−```hoon
550+```reference
551551 ++ lus (just '+')
552552```
553553
@@ -577,7 +577,7 @@ Parses ASCII character 38, the ampersand.
577577
578578#### Source
579579
580−```hoon
580+```reference
581581 ++ pam (just '&')
582582```
583583
@@ -607,7 +607,7 @@ Parses ASCII character 64, the "at" sign.
607607
608608#### Source
609609
610−```hoon
610+```reference
611611 ++ pat (just '@')
612612```
613613
@@ -637,7 +637,7 @@ Parses ASCII character 40, the left parenthesis.
637637
638638#### Source
639639
640−```hoon
640+```reference
641641 ++ pel (just '(')
642642```
643643
@@ -664,7 +664,7 @@ Parses ASCII character 41, the right parenthesis.
664664
665665#### Source
666666
667−```hoon
667+```reference
668668 ++ per (just ')')
669669```
670670
@@ -691,7 +691,7 @@ Parses ASCII character 91, the left square bracket.
691691
692692#### Source
693693
694−```hoon
694+```reference
695695 ++ sel (just '[')
696696```
697697
@@ -718,7 +718,7 @@ Parses ASCII character 59, the semicolon.
718718
719719#### Source
720720
721−```hoon
721+```reference
722722 ++ sem (just ';')
723723```
724724
@@ -745,7 +745,7 @@ Parses ASCII character 93, the right square bracket.
745745
746746#### Source
747747
748−```hoon
748+```reference
749749 ++ ser (just ']')
750750```
751751
@@ -772,7 +772,7 @@ Parses ASCII character 126, the tilde.
772772
773773#### Source
774774
775−```hoon
775+```reference
776776 ++ sig (just '~')
777777```
778778
@@ -800,7 +800,7 @@ Parses ASCII character 39, soq. Note the extra '' is to escape the first
800800
801801#### Source
802802
803−```hoon
803+```reference
804804 ++ soq (just '\'')
805805```
806806
@@ -827,7 +827,7 @@ Parses ASCII character 42, the asterisk.
827827
828828#### Source
829829
830−```hoon
830+```reference
831831 ++ tar (just '*')
832832```
833833
@@ -858,7 +858,7 @@ accent").
858858
859859#### Source
860860
861−```hoon
861+```reference
862862 ++ tec (just '`') :: backTiCk
863863```
864864
@@ -888,7 +888,7 @@ Parses ASCII character 61, the equals sign.
888888
889889#### Source
890890
891−```hoon
891+```reference
892892 ++ tis (just '=')
893893```
894894
@@ -914,7 +914,7 @@ Parses ASCII character 63, the question mark.
914914
915915#### Source
916916
917−```hoon
917+```reference
918918 ++ wut (just '?')
919919```
920920
@@ -941,7 +941,7 @@ Parses ASCII character 33, the exclamation point zap.
941941
942942#### Source
943943
944−```hoon
944+```reference
945945 ++ zap (just '!')
946946```
947947
tutorials/_index.md+4−4
@@ -8,19 +8,19 @@ aliases = ["docs/learn/"]
88
99Tutorials and explanations for all the components of Urbit.
1010
11−## [Arvo](@/docs/learn/arvo/_index.md)
11+## [Arvo](@/docs/tutorials/arvo/_index.md)
1212
1313Arvo 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.
1414
15−## [Hoon Tutorial](@/docs/learn/hoon-tutorial/_index.md)
15+## [Hoon Tutorial](@/docs/tutorials/hoon/_index.md)
1616
1717Hoon 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. The Hoon Tutorial is the best place to start if you want to learn Urbit.
1818
19−## [Nock](@/docs/learn/nock/_index.md)
19+## [Nock](@/docs/tutorials/nock/_index.md)
2020
2121Nock 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.
2222
23−## [Vere](@/docs/learn/vere/_index.md)
23+## [Vere](@/docs/tutorials/vere/_index.md)
2424
2525The Nock runtime system, written in C.
2626
tutorials/arvo/_index.md+9−9
@@ -5,37 +5,37 @@ sort_by = "weight"
55template = "sections/docs/chapters.html"
66aliases = ["/docs/learn/arvo/"]
77+++
8−Arvo is Urbit's functional operating system, written in [Hoon](@/docs/hoon/_index.md). It's composed of modules called _vanes_:
8+Arvo is Urbit's functional operating system, written in [Hoon](@/docs/tutorial/hoon/_index.md). It's composed of modules called _vanes_:
99
10−## [Ames](@/docs/arvo/ames.md)
10+## [Ames](@/docs/tutorials/arvo/ames.md)
1111
1212Ames 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.
1313
14−## [Behn](@/docs/arvo/behn.md)
14+## [Behn](@/docs/tutorials/arvo/behn.md)
1515
1616Behn is our timer. It allows vanes and applications to set and timer events, which are managed in a simple priority queue.
1717
18−## [Clay](@/docs/arvo/clay.md)
18+## [Clay](@/docs/tutorials/arvo/clay.md)
1919
2020Clay is our filesystem and revision-control system.
2121
22−## [Dill](@/docs/arvo/dill.md)
22+## [Dill](@/docs/tutorials/arvo/dill.md)
2323
2424Dill is our terminal driver. Unix sends keyboard events to dill from the terminal, and dill produces terminal output.
2525
26−## [Eyre](@/docs/arvo/eyre.md)
26+## [Eyre](@/docs/tutorials/arvo/eyre.md)
2727
2828Eyre is our HTTP server. Unix sends HTTP messages to `%eyre`, and `%eyre` produces HTTP messages in response.
2929
30−## [Ford](@/docs/arvo/ford.md)
30+## [Ford](@/docs/tutorials/arvo/ford.md)
3131
3232Ford is our build system. It handles resources and publishing.
3333
34−## [Gall](@/docs/arvo/gall.md)
34+## [Gall](@/docs/tutorials/arvo/gall.md)
3535
3636Gall is the vane for controlling userspace apps.
3737
38−### [Hall](@/docs/arvo/hall.md)
38+### [Hall](@/docs/tutorials/arvo/hall.md)
3939
4040Hall isn't a vane, but an important Gall app that functions as the Urbit messaging protocol.
4141
tutorials/arvo/ford.md+1−1
@@ -119,7 +119,7 @@ library in urbit.
119119
120120To run this example, put this code in your desk at `gen/faslus.hoon` and run
121121`+faslus` in your dojo. This example is a generator. For more information on
122−generators, see the [generator docs](@/docs/hoon/hoon-tutorial/generators.md).
122+generators, see the [generator docs](@/docs/tutorials/hoon/generators.md).
123123
124124```hoon
125125/+ time-to-id
tutorials/arvo/glossary.mddeleted−850
@@ -1,850 +0,0 @@
1−+++
2−title = "Glossary"
3−weight = 3
4−template = "doc.html"
5−aliases = ["docs/reference/arvo-glossary/"]
6−+++
7−
8−Urbit is renowned for its exotic terminology. Here's a simple overview
9−from the strange words within.
10−
11−As Dijkstra put it: "The purpose of abstraction is not to be vague, but
12−to create a new semantic level in which one can be absolutely precise."
13−
14−This glossary only covers terms the Arvo side of the project. You can find the
15−Azimuth glossary [here](../azimuth/glossary)
16−
17−### application
18−
19−Also known as an “app,” an _application_ is a Hoon program that can hold state.
20−
21−### arm
22−
23−An _arm_ is a named, functionally-computed attribute of a [core](#core).
24−
25−The [hoon](#a-hoon) of each arm is compiled to a Nock formula, with the
26−enclosing [core](#core) itself as the subject.
27−
28−There are two kinds of arms: _dry_ and _wet_. Most arms are
29−dry.
30−
31−#### dry
32−
33− normal, `++`, polymorphic by means of _variance_
34−
35− For a dry arm, we ask: is the new payload compatible with the old
36− payload (against which the core was compiled)?
37−
38−#### wet
39−
40− unusual, `+-`, polymorphic by means of _genericity_
41−
42− A wet arm uses the hoon as a macro. We create a new type analysis
43− path, which works as if we expanded the callee with the caller's
44− context.
45−
46−_See [advanced types](/docs/hoon/hoon-expressions/advanced/)_.
47−
48−
49−
50−### Arvo
51−
52−The Urbit operating system and kernel. Arvo's state is a pure function of its
53−event log, and it serves as the Urbit event manager. It contains vanes, which are
54−kernel modules that perform essential system operations. Arvo itself can only
55−deal with one file at a time. For more, it relies on Ford, the build-system
56−vane.
57−
58−Arvo being purely functional means that the it is a function that is:
59−
60−`(state, event) → (state, effects)`
61−
62−Arvo coordinates and reloads vanes. It can be thought of as a traffic-director.
63−Any vane needs to go through Arvo before reaching another vane. Events and
64−their effects happen like so:
65−
66−`Unix event → vere (the virtual machine that runs Urbit) → Arvo → vane → Arvo`
67−
68−Arvo is located in `/home/sys/arvo.hoon` within your urbit.
69−
70−More in-depth information on Arvo can be found
71−[`here`](@/docs/arvo/_index.md).
72−
73−Below are Arvo modules, which are called "vanes".
74−
75−#### Ames
76−
77− The networking vane. Ames handles all things UDP. Here live the protocols for
78− discovering and interacting with other urbits. It’s also the name for the Urbit
79− network itself. All communication is signed and encrypted.
80−
81− Ames is located in `/home/sys/vane/ames.hoon` within your urbit.
82−
83− More in-depth information on Ames can be found
84− [`here`](@/docs/arvo/ames.md).
85−
86−#### Behn
87−
88− The timing vane. Behn allows for applications to schedule events, which are
89− managed in a simple priority queue. For example, Clay, the Urbit filesystem,
90− uses Behn to keep track of time-specific file requests. Eyre, the Urbit web
91− vane, uses Behn for timing-out HTTP sessions.
92−
93− Behn is located in `/home/sys/vane/behn.hoon` within your urbit.
94−
95−#### Clay
96−
97− The filesystem and typed revision-control vane. Think of Clay as a
98− continuously synced git. It handles file-change events and maps them from Urbit
99− to Unix and vice versa.
100−
101− A common way to use it is to create a pier, a directory that exists in and is
102− visible in Unix.
103−
104− Clay is located at `/home/sys/vane/clay.hoon` within your urbit.
105−
106− Basic information on using Clay can be found
107− [`here`](@/operations.md). An in-depth explanation
108− of the architecture can be found
109− [`here`](@/docs/arvo/clay.md).
110−
111−#### Dill
112−
113− The terminal-driver vane. You run your urbit in your Unix terminal, and
114− Unix sends every event -- such as a keystroke or a change in the dimensions of
115− the terminal window -- to be handled by Dill. Dill acts as an intermediary for
116− anything that uses keyboard events. This is why there’s some input lag in
117− Urbit’s command-line interface. (Optimization will come later!)
118−
119− A keyboard event's journey from Unix to Dojo, the Urbit shell, can be imagined
120− as diagrammed below:
121− ```
122− Keystroke in Unix -> Vere (virtual machine) -> Arvo -> Dill -> the Dojo
123− ```
124−
125− Dill is located at `/home/sys/vane/dill.hoon` within your urbit.
126−
127− More in-depth information on Dill can be found
128− [`here`](@/docs/arvo/dill.md).
129−
130−#### Eyre
131−
132− The web-server vane. Anything HTTP-related lives here. Unix sends HTTP messages
133− though to Eyre, and Eyre produces HTTP messages in response.
134−
135− In general, apps and vanes do not call Eyre; rather, Eyre calls apps and vanes.
136− Eyre uses Ford and Gall to functionally publish pages and facilitate
137− communication with apps.
138−
139− Eyre is located at `/home/sys/vane/eyre.hoon` within your urbit.
140−
141− More in-depth information on Eyre can be found
142− [`here`](@/docs/arvo/eyre.md).
143−
144−#### Ford
145−
146− The build-system vane. Ford is capable of sequencing generic asynchronous
147− computations. Its uses include linking source files into programs, assembling
148− live-updating websites, and performing file-type conversions.
149−
150− Ford neither accepts Unix events nor produces Unix effects. It exists
151− entirely for the benefit of Urbit applications and other vanes, in particular
152− Gall.
153−
154− Ford is located at `/home/sys/vane/ford.hoon` within your urbit.
155−
156− More in-depth information on Ford can be found
157− [`here`](@/docs/arvo/ford.md).
158−
159−#### Gall
160−
161− The application-management vane. Userspace apps -- daemons, really -- are
162− started, stopped, and sandboxed by Gall. Gall provides developers with a
163− consistent interface for hooking their app up to the operating system. It allows
164− applications and other vanes to send messages to applications and subscribe to
165− data streams. Messages coming into Gall are routed to the intended application,
166− and the response comes back along the same route. If the intended target is on
167− another ship, Gall will route it, behind the scenes, through Ames to the other
168− ship.
169−
170− Gall is located at `/home/sys/vane/gall.hoon` within your urbit.
171−
172− More in-depth information on Gall can be found
173− [`here`](@/docs/arvo/gall.md).
174−
175−### atom
176−
177−An atom is any natural number, including zero. The atom is the most basic data
178−type in [Nock](#nock) and [Hoon](#hoon). A Hoon atom type describes a Nock
179−atom with two additional pieces of metadata: an [_aura_](#aura), and an
180−optional constant.
181−
182−An atom type is _warm_ or _cold_ based on whether the constant exists.
183−
184−
185−#### warm
186−
187− If the constant is `~` (null), any atom is in the type.
188−
189−#### cold
190−
191− If the constant is `[~ atom]`, its only legal value is `atom`.
192−
193−_See [basic types](@/docs/hoon/hoon-expressions/basic.md)_
194−
195−### aura
196−
197−An aura is a soft atom type. They appear as strings beginning with `@`. Auras
198−represent the structure of an atom, print format, or other semantics. Its
199−constraints on the value of an atom aren't enforced in any way.
200−
201−You can cast something to an aura, like a decimal, and get back its hexademical.
202−For example:
203−
204−```
205− > =a `@`29
206− > ^- @ux a
207− 0x1d
208−```
209−
210−Auras are an advisory type system. You can go up or down, but not sideways in
211−the hierarchy. `@t` and `@` can each be cast to the other, but @t can’t be cast
212−to `@u`, for example, without first being cast to the empty aura `@`.
213−
214−For example
215−
216−```
217− > ^- @ 'c' :: 'c' is of the aura @t
218− 99
219−
220− > ^- @u 'c'
221− ! exit
222−```
223−
224−Here is a non-exhaustive list of auras:
225−
226−```
227−Aura Meaning Example Literal Syntax
228−-------------------------------------------------------------------------
229−@d date
230− @da absolute date ~2018.5.14..22.31.46..1435
231−@n nil ~
232−@p phonemic string (ship name) ~sorreg-namtyv
233−@r IEEE floating-point
234− @rd double precision (64 bits) .~6.02214085774e23
235− @rh half precision (16 bits) .~~3.14
236−@s signed integer, sign-bit low
237− @sb signed binary --0b11.1000
238− @sd signed decimal --1.000.056
239− @sx signed hexadecimal -0x5f5.e138
240−@t UTF-8 text (cord) 'howdy'
241− @ta ASCII text (knot) ~.howdy
242− @tas ASCII text symbol (term) %howdy
243−@u unsigned integer
244− @ub unsigned binary 0b11.1000
245− @ud unsigned decimal 1.000.056
246− @ux unsigned hexadecimal 0x5f5.e138
247−```
248−
249−You can find the list of all auras [here](@/docs/hoon/hoon-expressions/rune/constants.md).
250−
251−### blocksize
252−
253−Blocksize is the power-of-two bitwidth of an atom. So, an atom with a blocksize
254−of `3` has a bitwidth of `2^3`, which is 8. A bitwidth of 8, in turn, can
255−represent `2^8` values, or 256.
256−
257−### cast
258−
259−To cast is to put a Hoon expression through the compiler’s type-checker to test
260−whether the expression is guaranteed to evaluate to a product that falls within
261−the desired type. If the expression is not guaranteed to behave in this way,
262−then the compiler will halt with a nest-fail crash. Proper Hoon code will
263−include a cast for the product type of each gate.
264−
265−The cast rune is `^-` (pronounced "ket-hep"). So, to cast to a list of atoms,
266−we write `^- (list @)`. The irregular form of that expression is ``(list @)``.
267−
268−### cell
269−
270−In Nock and Hoon, a _cell_ is an ordered pair of [nouns](#noun).
271−
272−Syntax: `[a b]`.
273−
274−Cells orient to the right; for example, the noun [2 6 14 15] is short for
275−[2 [6 [14 15]]].
276−
277−
278−### clam
279−
280−A clam is the use of a structure as a gate. Usually used to verify marks from
281−other urbits.
282−
283−```
284− > ((list @t) [97 98 ~])
285− <|a b|>
286−```
287−
288−### cord
289−
290−In Hoon, `cord` is an aura for representing atoms as strings. UTF-8,
291−least-significant bit first. Represented as the aura `@t`.
292−
293−```
294− > `@t`478.560.413.032
295− 'hello'
296−```
297−
298−### core
299−
300−A _core_ is a [cell](#nock-cell) of `[code data]`, where we call the
301−code head the _battery_ and the data tail the _payload_. All code-data
302−structures in normal languages (functions, objects, modules, etc.)
303−translate to cores in Hoon.
304−
305−#### battery
306−
307− The code-containing head of a core.
308−
309−#### payload
310−
311− The data-containing tail of a core.
312−
313−_See [basic types](@/docs/hoon/hoon-expressions/basic.md)._
314−
315−### Dojo
316−
317−The Dojo is the Urbit shell; the command line where you run programs,
318−expressions, and system commands. It’s a CLI that is encountered right when
319−an urbit is started for the first time. It is somewhat analogous to Bash, the
320−Unix terminal, and more analogous to a Hoon REPL.
321−
322−You’ll notice that many things can’t be written here; this is normal. The Dojo
323−enforces syntactical correctness right at the command line. Strings that can’t
324−be continued into a valid expression are automatically trimmed back to something
325−that can be. Some syntactically invalid expressions can be completed, but the
326−Dojo will prevent them from being entered as a command. You can play around
327−with this functionality learn what syntax is kosher.
328−
329−### desk
330−
331−A desk is independently revision-controlled branch of urbit filesystem.
332−
333−_See [filesystem](@/operations.md#filesystem) and [Clay](@/docs/arvo/clay.md)._
334−
335−### duct
336−
337−A duct is an Arvo-level call stack. At the beginning of every duct is a Unix
338−event, such as a keystroke, network packet, timer event, or file change.
339−
340−A duct is a `list` of `wire`s. A wire is itself a `list` of `knot`s. A `knot`
341−is, in turn, a knot.
342−
343−### face
344−
345−A _face_ is the Hoon analog to what is a variable name in most other
346−programming languages. Faces are metadata labels for legs, allowing us to
347−address parts. Because there is no metadata in Nock, faces cannot exist in Nock.
348−
349−```
350− > a=2
351− a=2
352−```
353−
354−In the above example, `a` is the face and `2` is the value.
355−
356−Hoon has no scope or symbol-table; there is only the subject. To "declare" a
357−"variable" is to construct a new subject: `[name=value old-subject]`.
358−
359−_See [advanced types](@/docs/hoon/hoon-expressions/advanced.md)_.
360−
361−
362−### flag
363−
364−A `flag` is Hoon's version of a boolean. `0` (`%.y`) is _yes_, `1` (`%.n`) is
365−_no_.
366−
367−### gate
368−
369−A _gate_ is a [core](#core) with one [arm](#arm) -- Hoon's closest
370−analog to a function. To call a gate on an argument, replace the sample
371−(at [tree address](@/docs/hoon/hoon-expressions/limb/limb.md) `+6`
372−in the core) with the argument, and then compute the arm.
373−
374−The payload of a gate has a shape of `[sample context]`.
375−
376−#### sample
377−
378− The argument tuple.
379−
380−#### context
381−
382− The subject in which the gate was defined.
383−
384−_See [basic types](@/docs/hoon/hoon-expressions/basic.md),
385−[`%-` ("cenhep")](@/docs/hoon/hoon-expressions/rune/cen.md#cenhep) (the
386−[rune](#rune) for calling a `gate`)._
387−
388−### generator
389−
390−A _generator_ is like a limited Hoon script: it’s a shell command that produces
391−a value before disappearing. Generators take an input [noun](#noun) (a value)
392−and produce an output `noun` by performing calculations on its arguments,
393−prompting for input, or making HTTP requests.
394−
395−You need a `bar` rune like `|=` in your generator, because a generator is
396−essentially a function that you’re calling.
397−
398−Generators, unlike [apps](#application), hold no state. They are pure,
399−stateless functions, and they cannot send [moves](#move). Because of this,
400−generators are have a more narrow use than apps. Among the non-trivial uses of
401−a a generator is moving data into apps -- they’re the backbone of Urbit’s
402−information pipeline.
403−
404−Generators are run from the `/gen` directory of your current desk. For example,
405−to run a generator named `whatever.hoon`, you would type `> +whatever` in the
406−[Dojo](@/operations.md#using-the-shell).
407−
408−### glyph
409−
410−A _glyph_ is a single, non-alphanumeric ASCII character. Each glyph has its own
411−monosyllabic name, which allows the efficient communication of Hoon-related
412−information in speech. [`Runes`](#rune) are composed of two glyphs.
413−Below is a complete list of glyphs with their associated pronunciations.
414−
415−```
416−ace [1 space] gal < pal (
417−bar | gap [>1 space, nl] par )
418−bas \ gar > sel [
419−buc $ hax # mic ;
420−cab _ hep - ser ]
421−cen % kel { sig ~
422−col : ker } soq '
423−com , ket ^ tar *
424−doq " lus + tic `
425−dot . pam & tis =
426−fas / pat @ wut ?
427−zap !
428−```
429−
430−### Hall
431−
432−_Hall_ is the Urbit communication back-end. It’s a messaging bus that can work
433−with clients of all sorts. [`:talk`](#talk), the built-in chat client, is one
434−such app that uses Hall.
435−
436−_More information on Hall can be found [here](@/docs/arvo/hall.md)._
437−
438−#### circle
439−
440− A circle is the “audience” of your messages -- who can receive them. It can be
441− thought of as a chat channel, but this is a little too narrow. More
442− specifically, it’s a named collection of messages created by and hosted on a
443− ship’s Hall, usually represented as `~ship-name/circle-name`. On Talk,
444− Urbit’s built-in chat front-end, the first circle that you will likely
445− encounter is `~dopzod/urbit-help`.
446−
447−### Hood
448−
449−_Hood_ orchestrates many of the Urbit initialization systems necessary
450−for boot.
451−
452−### Hoon
453−
454−Hoon is a strict, higher-order typed functional language that compiles itself
455−to Nock.
456−
457−The Hoon source file is located in `/home/sys/hoon.hoon` within your urbit.
458−
459−_More information can be found in the [hoon](@/docs/hoon/_index.md) section._
460−
461−#### Mint
462−
463− _Mint_ is the Hoon compiler function. Mint takes the subject type and the
464− expression source (a [hoon](#a-hoon), for example) and produces the product
465− type and nock formula. So [type hoon] is mapped to [type nock].
466−
467−### hoon
468−
469−A _hoon_ (lowercase) is the result of parsing a Hoon source expression into an
470−AST node. These AST nodes are nouns, like all other Hoon data. Because every
471−Hoon program is, in its entirety, a single expression of Hoon, the result of
472−parsing the whole thing into an AST is a single `hoon`.
473−
474−A hoon is a tagged union of the form `[%tag data]`, where the tag
475−is a constant such as `%brts` (from the source [rune](#rune) `|=`,
476−i.e. "bartis"), and is matched up with the appropriate type of data
477−(often more `hoon`s, from source subexpressions). For example, the
478−expression `:-(2 17)`, once parsed into an AST, becomes the following:
479−
480−```
481−[%clhp p=[%sand p=%ud q=2] q=[%sand p=%ud q=17]]
482−```
483−
484−The `%clhp` is produced from the rune `:-` (i.e. "colhep"). The 2 and
485−17 have each been parsed as `%sand`-tagged hoons, which represent
486−atoms (in this case each with an aura of `%ud`, i.e. unsigned
487−decimal).
488−
489−To parse Hoon source into a hoon AST, use `ream` on a `cord`
490−containing Hoon source. Try the following in [Dojo](@/operations.md#using-the-shell):
491−
492−```
493−(ream ':+(12 7 %a)')
494−```
495−
496−The result should be:
497−
498−```
499−[%clls p=[%sand p=%ud q=12] q=[%sand p=%ud q=7] r=[%rock p=%tas q=97]]
500−```
501−
502−See [expression reference](@/docs/hoon/hoon-expressions/rune/_index.md) for the full list of hoons.
503−
504−### irregular form
505−
506−Irregular forms are alternative ways of writing Hoon expressions, alternatives
507−to the digraphic runes such as `:~`. Irregular forms are usually more compact
508−than regular forms.=
509−
510−_See [irregular forms](@/docs/hoon/hoon-expressions/irregular.md)._
511−
512−### jet
513−
514−A _jet_ is a piece of C code that have equivalent products to a piece of Hoon or
515−Nock code. They are used for performance reasons; jets are meant to be faster
516−than the code that they are substituting for.
517−
518−Jets are necessary for mathematics, performance-wise, because Nock handles it
519−so inefficiently. Nock, for example, can’t decrement (reduce a number by one)
520−except by starting building a loop that starts from zero and increments to a
521−number just below.
522−
523−_See [API overview](@/docs/vere/api.md)._
524−
525−### lark
526−
527−A lark is an expression that returns a [limb](#limb) at the specified
528−address in a cell. Using `-` by itself returns the head of the subject, and
529−using `+` by itself returns the tail:
530−
531−```
532−> -:[[4 5] [6 [14 15]]]
533−[4 5]
534−
535−> +:[[4 5] [6 [14 15]]]
536−[6 14 15]
537−```
538−
539−You can combine `+` or `-` with either of `>` or `<` to get a more specific limb
540−of the subject. `-<` returns the head of the head; `->` returns the tail of the
541−head; `+<` returns the head of the tail; and `+>` returns the tail of the tail.
542−By alternating the `+`/`-` symbols with `<`/`>` symbols, you can go as deep as
543−you desire.
544−
545−```
546−> +>-:[[4 5] [6 [14 15]]]
547−14
548−
549−> +>+:[[4 5] [6 [14 15]]]
550−15
551−```
552−
553−### limb
554−
555−A _limb_ is an attribute or variable reference. A limb is an [arm](#arm) or a
556−[leg](#leg).
557−
558−To resolve a _limb_ named "foo", the subject is searched depth-first,
559−head-first for either a face named "foo" or a core with an arm of
560−"foo". If a face is found, the result is a leg, if a core is
561−found, the result is the product of the arm.
562−
563−#### leg
564−
565− a subexpression, or subtree of the
566− [subject](#nock-subject).
567−
568−#### wing
569−
570− a search path into the subject, composed of
571− limbs. Search occurs from right to left (`a.b` means `b` within `a`).
572−
573−_See [Limbs and wings](@/docs/hoon/hoon-expressions/limb/_index.md)_
574−
575−### move
576−
577−A move is the [Arvo](#arvo) equivalent of a syscall.
578−
579−### noun
580−
581−In [Nock](#nock) and [Hoon](#hoon), a _noun_ is an atom or a cell.
582−
583−### Nock
584−
585−Nock is a Turing-complete, non-lambda combinator interpreter. It's
586−Urbit's low-level programming language. Nock is functional and typeless.
587−
588−#### noun
589−
590− an _atom_ or a _cell_.
591−
592−#### atom
593−
594− any natural number, including zero.
595−
596−#### cell
597−
598− any ordered pair of nouns.
599−
600−
601−#### subject
602−
603− a noun - the data against which a _formula_ is evaluated.
604−
605−#### formula
606−
607− a noun - a function at the nock level.
608−
609−#### product
610−
611− a noun - the result of evaluating a formula against a subject.
612−
613−_See the [Nock definition](@/docs/nock/definition.md)._
614−
615−### mark
616−
617−A _mark_ is Urbit's version of a MIME type, if a MIME type was an
618−executable specification. The mark is just a label that's used as a path
619−to a local source file in the Arvo filesystem. This source file defines
620−a core that can mold untrusted data, diff and patch, convert to other
621−marks, etc.
622−
623−If this sounds like magic, it isn't quite magic. There's no way
624−for different urbits to make sure they mean the same thing by the
625−same mark. However, when incompatibility happens, marks ensure
626−that we at least handle the situation in a predictable way.
627−
628−#### metal
629−
630−Every core has a _metal_ which defines its variance model (ie, the
631−properties of the type of a compatible core). The default is `gold`
632−(invariant).
633−
634−- `gold`: _invariant_
635−- `lead`: _bivariant_
636−- `zinc`: _covariant_
637−- `iron`: _contravariant_
638−
639−_See [advanced types](@/docs/hoon/hoon-expressions/advanced.md)_.
640−
641−### ship
642−
643−An Urbit _ship_ is: a cryptographic title on a _will_ signed by private key; a
644−human-memorable name; and a packet-routing address. Ships are classed by the
645−number of bits in their address:
646−
647−```
648− Size Name Parent Object Example
649− ----- ------ ------ ------ -------
650− 2^8 galaxy ~ supernode ~zod
651− 2^16 star galaxy supernode ~dozbud
652− 2^32 planet star user ~tasfyn-partyv
653− 2^64 moon planet device ~sigsam-nimbot-tasfyn-partyv
654− 2^128 comet ~ bot ~racmus-mollen-fallyt-linpex--watres-sibbur-modlux-rinmex
655−```
656−
657−Any ship can be called an _urbit_. The lowercase "u" distinguishes it from Urbit
658−the software stack and Urbit the network.
659−
660−_You can find a longer-form summary [here.](https://urbit.org/posts/essays/the-urbit-address-space/)._
661−
662−An Urbit identity is a string like `~firbyr-napbes`. It means nothing,
663−but it's easy to remember and say out loud. `~firbyr-napbes` is actually
664−just a 32-bit number (`3.237.967.392`, to be exact), like an IP address,
665−that we turn into a human-memorable string. The full name of this string
666−can be viewed by typing `our` in the Dojo, Urbit's shell. This is useful
667−when running a ship with a longer name, such as a _moon_ or a _comet_.
668−
669−Technically, an urbit is a secure digital identity that you own and
670−control with a cryptographic key, like a Bitcoin wallet. As in Bitcoin,
671−the supply of urbits is mathematically limited. This keeps the network
672−friendly, by making spam and abuse expensive.
673−
674−An urbit name is just a number; smaller numbers make shorter names.
675−Shorter names are easier to remember, so they're more valuable. So
676−urbits are classified by the number of bits in their name. (A ship name
677−is just a scrambled base-256 representation of the number.)
678−
679−A 32-bit urbit (like `~firbyr-napbes`) is called a _planet._ A 16-bit
680−urbit (like `~pollev)` is a _star._ An 8-bit ship (like `~mun`) is a
681−_galaxy._ A planet is an identity for an independent, adult human. Stars
682−and galaxies are network infrastructure.
683−
684−Each planet or star is launched by its _parent,_ the star or galaxy
685−whose number is its bottom half. So the planet `~firbyr-napbes`,
686−`0xdead.beef` or `3.735.928.559`, is the child of `~pollev`, `0xbeef` or
687−`48.879`, whose parent is `~mun`, `0xef`, `239`. The galaxy at the address of
688−`0` is `~zod`.
689−
690−#### pier
691−
692− A ship's _pier_ is its Unix directory. For planets, the name of the pier is
693− usually the planet name.
694−
695−### structure
696−
697−A _structure_ is an idempotent [gate](#gate) (function) that constructs and
698−validates types in Hoon.
699−
700−An example: Arvo [marks](#mark) use Hoon's type system via structures to
701−validate untrusted network data.
702−
703−Here's some common structure terminology:
704−
705−#### bunt
706−
707− A bunt is the default value of a [structure](#structure). It's also a verb;
708− to _bunt_ a structure is to produce the bunt of that structure. For example,
709− bunting `@` results in `0`, and bunting `@t` results in `''`. Bunting is
710− performed with `*` followed by the structure in question:
711−
712− ```
713− > *@
714− 0
715− > *@t
716− ''
717− ```
718−
719−#### icon: The type of the mold's range
720−
721−_See [mold hoons](/docs/hoon/hoon-expressions/rune/buc/)._
722−
723−### rune
724−
725−A Hoon _rune_ is a pair of ASCII symbols used to begin a
726−[Hoon expression](#a-hoon).
727−
728−For example, the rune [`?:`](@/docs/hoon/hoon-expressions/rune/wut.md#wutcol) is
729−Hoon's most common conditional, a branch on a boolean test. The first
730−symbol in a rune represents a family of related runes. For example, the
731−[`?` family](@/docs/hoon/hoon-expressions/rune/wut.md) are all conditionals.
732−
733−The result of parsing a Hoon source expression&mdash;the rune, followed
734−by its respective children&mdash;into an AST node is simply called
735−a [`hoon`](#a-hoon).
736−
737−Runes have two syntactic forms, _tall_ and _flat_:
738−
739−#### tall
740−
741− multiple lines, no parentheses, two or more spaces between tokens
742−
743− Example:
744−
745− ```
746− > %+ add 2 2
747− 4
748− ```
749−
750−#### flat
751−
752− one line, parentheses, one space between tokens
753−
754− Example:
755− ```
756− > %+(add 2 2) :: regular flat form
757− 4
758−
759− > (add 2 2) :: irregular flat form
760− 4
761− ```
762−
763−Tall hoons can contain flat hoons, but not vice versa. All irregular
764−forms are flat.
765−
766−_See [hoon concept](#a-hoon),
767−[expressions](@/docs/hoon/hoon-expressions/rune/_index.md).
768−
769−### Sail
770−
771−_Sail_ is the Hoon markup language for XML.
772−
773−### scry
774−
775−To _scry_ means to request data from the Arvo namespace and bring it
776−to userspace.
777−
778−_See [.^ (dot-ket)](@/docs/hoon/hoon-expressions/rune/dot.md#dotket)._
779−
780−### slot
781−
782−`slot` is the name for Hoon's tree-addressing scheme.
783−
784−Every cell has a head and a tail, each of which may be either an atom or
785−a cell. Therefore every noun is a binary tree. `+1` or `.` resolves to
786−the whole cell (technically this would work against an atom as well).
787−The head of `+n` is `+2n`, the tail is `+(2n+1)`.
788−
789−`+7` is a special address for gates, because the position is defined
790−(by convention) as the context of a gate and of all cores.
791−
792−### talk
793−
794−_Talk_ is Urbit's built-in chat app. It’s one example of an app that can be
795−built on top of Hall, the Urbit back-end messaging system.
796−
797−_See [Messaging](@/operations.md#messaging). for more information._
798−
799−### type
800−
801−A Hoon _type_ defines a set (finite or infinite) of nouns and ascribes
802−some semantics to it. There is no direct syntax for defining
803−types; they are always defined by inference (i.e., by
804−[`mint`](#mint)), usually using a constructor ([structure](#structure)).
805−
806−All types are assembled out of base types defined in `++type`.
807−(Look up `++ type` in hoon.hoon for examples.) When the compiler
808−does type-inference on a program, it assembles complex types out
809−of the simpler built-in types.
810−
811−#### nest
812−
813− `nest` is an internal Hoon function on two types which performs a type
814− compatibility test. `nest` produces yes if the
815− set of nouns in the second type is provably a subset of the first.
816− If `nest` produces no, the Hoon programmer will receive a `nest-fail`
817− error. This is one of the most commons errors in Hoon programming.
818−
819− _See [advanced types](@/docs/hoon/hoon-expressions/advanced.md)_ and [troubleshooting](@/docs/arvo/ship-troubleshooting.md).
820−
821−
822−### Unit
823−
824−Hoon's equivalent of a nullable pointer or a Haskell Maybe. If `q` is `~`,
825−null, the type is _warm_; any atom is in the type. If `q` is `[~ x]`, where
826−`x` is any atom, the type is _cold_; its only legal value is the constant `x`.
827−
828−### Vane
829−
830−A _vane_ is an [Arvo](#arvo) module. Each Vane is a single file because Arvo
831−cannot, on its own, deal with programs that are split between multiple files.
832−Some vanes can do this, however.
833−
834−### Vere (pronounced “vair”)
835−
836−The runtime system, written in C, that implements [Nock](#nock). All
837−It’s written in C. Vere-level errors are prepended with as `bail:`.
838−
839−Vere is a virtual machine: it pretends to be hardware, and is the single point
840−of contact between your Urbit and the rest of your system. But more than that,
841−Vere handles the Urbit event log and handles jets. It’s also contains the i/o
842−drivers for Urbit’s vanes, responsible for generating events from Unix and
843−applying effects to Unix.
844−
845−### Zuse
846−
847−_Zuse_ is a defined interface for vanes. It contains the part of the Hoon
848−standard library that is specific to Arvo functionality.
849−
850−Arvo is located in `/home/sys/zuse.hoon` within your urbit.
tutorials/hoon-tutorial/workbook/_index.mddeleted−17
@@ -1,17 +0,0 @@
1−+++
2−title = "Hoon Workbook"
3−weight = 150
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−aliase = ["docs/learn/hoon/workbook/"]
7−+++
8−The Workbook is the place to sharpen your Hoon skills. Each entry in the
9−Workbook is a code walkthrough followed by exercises.
10−
11−- The [Digits](@/docs/hoon/workbook/digits.md) example demonstrates how to decompose a number into a list of its digits.
12−
13−- The [Magic 8-Ball](@/docs/hoon/workbook/eightball.md) example emulates everyone's favorite decision-making machine.
14−
15−- The [Traffic-light](@/docs/hoon/workbook/traffic-light.md) example demonstrates how to creates a state machine in Hoon.
16−
17−- The [Bomb-defusing](@/docs/hoon/workbook/bomb.md) exercise shows how to program, well, a bomb-defusing scenario.
tutorials/hoon-tutorial/_index.md → tutorials/hoon/_index.mdrenamed+3−3
@@ -54,9 +54,9 @@ Chapter 2 covers the type system, and writing apps, and the workings of the Arvo
5454
5555Want to know how to style your code? Check out the [style guide](../style).
5656
57−Consult the [standard library 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.
57+Consult the [standard library documentation](@/docs/reference/library/_index.md) or [rune reference](@/docs/reference/hoon-expressions/_index.md) to look up any unknown rune or standard library function you don't understand.
5858
59−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.
59+As you work your way through these lessons you may want to work on example problems from the [Hoon Workbook](@/docs/tutorial/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/tutorials/hoon/generators.md) documentation. Learn about [Udon and Sail](@/docs/tutorials/sail-and-udon.md), Urbit's stripped-down version of Markdown, and a subset of Hoon used for generating XML nodes respectively.
6060
6161
62−> Last major revision of this section: February 2019
62+> Last major revision of this section: October 2019
tutorials/hoon-tutorial/ackermann.md → tutorials/hoon/ackermann.mdrenamed

The content is the same.

tutorials/hoon-tutorial/arms-and-cores.md → tutorials/hoon/arms-and-cores.mdrenamed

The content is the same.

tutorials/hoon-tutorial/atoms-auras-and-simple-cell-types.md → tutorials/hoon/atoms-auras-and-simple-cell-types.mdrenamed+1−1
@@ -18,7 +18,7 @@ In this lesson we'll cover (1)-(4) as they pertain to atoms and simple cell type
1818
1919## Atoms and Auras
2020
21−In [lesson 1.2](@/docs/hoon/hoon-tutorial/nouns.md) we defined what an atom is: any unsigned integer. In this lesson we'll expand on that discussion, going over how Hoon's type system implements auras.
21+In [lesson 1.2](@/docs/tutorials/hoon/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.
2222
2323In 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.
2424
tutorials/hoon-tutorial/bank-account.md → tutorials/hoon/bank-account.mdrenamed

The content is the same.

tutorials/hoon-tutorial/caesar.md → tutorials/hoon/caesar.mdrenamed

The content is the same.

tutorials/hoon-tutorial/conditionals.md → tutorials/hoon/conditionals.mdrenamed

The content is the same.

tutorials/hoon-tutorial/doors.md → tutorials/hoon/doors.mdrenamed

The content is the same.

tutorials/hoon-tutorial/egg-timer.md → tutorials/hoon/egg-timer.mdrenamed

The content is the same.

tutorials/hoon-tutorial/fibonacci.md → tutorials/hoon/fibonacci.mdrenamed

The content is the same.

tutorials/hoon-tutorial/gall.md → tutorials/hoon/gall.mdrenamed

The content is the same.

tutorials/hoon-tutorial/gates.md → tutorials/hoon/gates.mdrenamed

The content is the same.

tutorials/hoon-tutorial/generators.md → tutorials/hoon/generators.mdrenamed

The content is the same.

tutorials/hoon-tutorial/hoon-syntax.md → tutorials/hoon/hoon-syntax.mdrenamed+7−7
@@ -84,7 +84,7 @@ We start with atom literals. Each of these is a basic expression of Hoon that e
8484~zod
8585```
8686
87−Recall from [lesson 1.2](@/docs/hoon/hoon-tutorial/nouns.md) that even though atoms are unsigned integers, they can be pretty-printed in different ways. The way an atom is to be represented depends on its aura. The literal syntax for each of the hard-coded auras will be explained further in [lesson 2.4](@/docs/hoon/hoon-tutorial/atoms-auras-and-simple-cell-types.md).
87+Recall from [lesson 1.2](@/docs/tutorials/hoon/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/tutorials/hoon/atoms-auras-and-simple-cell-types.md).
8888
8989Cell literals can be written in Hoon using `[ ]`. Cell literals are complex, because other expressions are put inside the square brackets. Examples:
9090
@@ -111,7 +111,7 @@ You can also put complex expressions inside square brackets to make a cell. The
111111
112112### Wings
113113
114−A wing expression is a series of limb expressions separated by `.`. A deeper explanation can be found on the [wing](@/docs/hoon/hoon-expressions/limb/wing.md) and [limb](@/docs/hoon/hoon-expressions/limb/limb.md) reference pages.
114+A wing expression is a series of limb expressions separated by `.`. A deeper explanation can be found on the [wing](@/docs/tutorials/hoon/limb/wing.md) and [limb](@/docs/tutorials/hoon/limb/limb.md) reference pages.
115115
116116Let'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:
117117
@@ -124,7 +124,7 @@ Let's start with the base case: a single limb. A limb expression is a trivial w
124124- `add`
125125- `mul`
126126
127−As a special limb we also have `$`. This is the name of the arm in special one-armed cores called "gates". (We'll cover the role of `$` in [lesson 1.5](@/docs/hoon/hoon-tutorial/gates.md).)
127+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/tutorials/hoon/gates.md).)
128128
129129Wing expressions with multiple limbs are complex expressions. Examples:
130130
@@ -141,7 +141,7 @@ Wing expressions with multiple limbs are complex expressions. Examples:
141141
142142Hoon 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`.
143143
144−They may also be put in brackets to indicate compound types, e.g., `[@ ^]`, `[@ud @sb]`, `[[? *] ^]`. (Technically these expressions don't _always_ indicate compound types. In certain contexts they're interpreted in a different way. We'll address this variation of meaning in [lesson 2.6](@/docs/hoon/hoon-tutorial/structures-and-complex-types.md).)
144+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/tutorials/hoon/structures-and-complex-types.md).)
145145
146146### Rune Expressions
147147
@@ -151,7 +151,7 @@ Expressions with a rune at the beginning are rune expressions. Most runes are u
151151
152152Runes 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.
153153
154−Rune expressions are usually complex, which means they usually have one or more subexpressions. The appropriate syntax varies from rune to rune; after all, they're used for different purposes. To see the syntax rules for a particular rune, consult the [rune reference](@/docs/hoon/hoon-expressions/rune/_index.md). Nevertheless, there are some general principles that hold of all rune expressions.
154+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.
155155
156156Runes 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.
157157
@@ -250,7 +250,7 @@ The irregular `( )` gate-calling syntax is versatile -- it is also a shortcut fo
250250
251251The `( )` gate-calling syntax can be used for gates with any number of arguments.
252252
253−You can find other irregular forms in the irregular expression [reference document](@/docs/hoon/hoon-expressions/irregular.md).
253+You can find other irregular forms in the irregular expression [reference document](@/docs/reference/hoon-expressions/irregular.md).
254254
255255### Expressions That Are Only Irregular
256256
@@ -285,7 +285,7 @@ b=[16 18]
285285[16 18]
286286```
287287
288−To see other irregular expressions, check the irregular expression [reference document](@/docs/hoon/hoon-expressions/irregular.md).
288+To see other irregular expressions, check the irregular expression [reference document](@/docs/reference/hoon-expressions/irregular.md).
289289
290290
291291## The Standard Library
tutorials/hoon-tutorial/iron-polymorphism.md → tutorials/hoon/iron-polymorphism.mdrenamed

The content is the same.

tutorials/hoon-tutorial/lead-polymorphism.md → tutorials/hoon/lead-polymorphism.mdrenamed

The content is the same.

tutorials/hoon-tutorial/libraries.md → tutorials/hoon/libraries.mdrenamed

The content is the same.

tutorials/hoon-tutorial/list-of-numbers.md → tutorials/hoon/list-of-numbers.mdrenamed+1−1
@@ -107,7 +107,7 @@ $(count (add 1 count))
107107
108108The 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".
109109
110−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.
110+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.
111111
112112## Explanation
113113
tutorials/hoon-tutorial/lists.md → tutorials/hoon/lists.mdrenamed

The content is the same.

tutorials/hoon-tutorial/molds.md → tutorials/hoon/molds.mdrenamed

The content is the same.

tutorials/hoon-tutorial/nouns.md → tutorials/hoon/nouns.mdrenamed

The content is the same.

tutorials/hoon-tutorial/recursion.md → tutorials/hoon/recursion.mdrenamed+1−1
@@ -179,7 +179,7 @@ of. That's because a gate is just a core with a single arm named `$`. The
179179subject is searched depth-first, head before tail, with faces skipped, and
180180stopping on the first result. In other words, the first match found in the head
181181will be returned. If you wished to refer to the outer `$` in this context, the
182−idiomatic way would be to use [`^$`](@/docs/hoon/hoon-expressions/rune/ket.md). The `^` operator
182+idiomatic way would be to use [`^$`](@/docs/reference/hoon-expressions/rune/ket.md). The `^` operator
183183skips the first match of a name.
184184
185185### Exercises
tutorials/hoon-tutorial/setup.md → tutorials/hoon/setup.mdrenamed+1−1
@@ -61,7 +61,7 @@ You'll see:
616117
6262```
6363
64−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.
64+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/nouns/), but first let's write a very basic program.
6565
6666## Generators
6767
tutorials/hoon-tutorial/structures-and-complex-types.md → tutorials/hoon/structures-and-complex-types.mdrenamed+1−1
@@ -352,6 +352,6 @@ Often `$@` is used to define a type with a null or trivial case for the `@` case
352352
353353Now the `~` value is included as a possible value for `user`.
354354
355−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).
355+That's all we have to say about types in this chapter. More on types in [Chapter 2](@/docs/tutorials/hoon/type-polymorphism.md).
356356
357357### [Next Up: Walkthrough -- Libraries](../libraries)
tutorials/hoon-tutorial/style.md → tutorials/hoon/style.mdrenamed+1−1
@@ -41,7 +41,7 @@ or
4141```
4242
4343These are regular forms -- every rune can be written this way.
44−Hoon also has a variety of wide [irregular forms](@/docs/hoon/hoon-expressions/irregular.md). All tall
44+Hoon also has a variety of wide [irregular forms](@/docs/reference/hoon-expressions/irregular.md). All tall
4545forms are regular. All code within a wide form is wide.
4646Almost all code has both wide and tall forms, the exception
4747being named cores.
tutorials/hoon-tutorial/the-subject-and-its-legs.md → tutorials/hoon/the-subject-and-its-legs.mdrenamed

The content is the same.

tutorials/hoon-tutorial/trees-sets-and-maps.md → tutorials/hoon/trees-sets-and-maps.mdrenamed

The content is the same.

tutorials/hoon-tutorial/type-checking-and-type-inference.md → tutorials/hoon/type-checking-and-type-inference.mdrenamed

The content is the same.

tutorials/hoon-tutorial/type-polymorphism.md → tutorials/hoon/type-polymorphism.mdrenamed

The content is the same.

tutorials/hoon/workbook/_index.mdnew file+17
@@ -0,0 +1,17 @@
1++++
2+title = "Hoon Workbook"
3+weight = 150
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6+aliase = ["docs/learn/hoon/workbook/"]
7++++
8+The Workbook is the place to sharpen your Hoon skills. Each entry in the
9+Workbook is a code walkthrough followed by exercises.
10+
11+- The [Digits](@/docs/tutorials/hoon/workbook/digits.md) example demonstrates how to decompose a number into a list of its digits.
12+
13+- The [Magic 8-Ball](@/docs/tutorials/hoon/workbook/eightball.md) example emulates everyone's favorite decision-making machine.
14+
15+- The [Traffic-light](@/docs/tutorials/hoon/workbook/traffic-light.md) example demonstrates how to creates a state machine in Hoon.
16+
17+- The [Bomb-defusing](@/docs/tutorials/hoon/workbook/bomb.md) exercise shows how to program, well, a bomb-defusing scenario.
tutorials/hoon-tutorial/workbook/bomb.md → tutorials/hoon/workbook/bomb.mdrenamed

The content is the same.

tutorials/hoon-tutorial/workbook/digits.md → tutorials/hoon/workbook/digits.mdrenamed+1−1
@@ -22,7 +22,7 @@ of its digits.
2222==
2323```
2424
25−We're creating a [`%say` generator](@/docs/hoon/hoon-tutorial/generators.md). That means we
25+We're creating a [`%say` generator](@/docs/tutorials/hoon/generators.md). That means we
2626need some "boilerplate" code in the format of `[%say [%noun "data"]]`:
2727
2828```hoon
tutorials/hoon-tutorial/workbook/eightball.md → tutorials/hoon/workbook/eightball.mdrenamed+1−1
@@ -60,7 +60,7 @@ is good practice whenever developing something in Hoon.
6060
6161To make our program produce a random result, we need entropy. To get entropy,
6262we need data from Arvo. To get data from Arvo, we use a generator of the
63−[`%say`](@/docs/hoon/hoon-tutorial/generators.md) variety. The above code chunk is
63+[`%say`](@/docs/tutorials/hoon/generators.md) variety. The above code chunk is
6464the template that is followed for all `%say` generators.
6565
6666`:- %say` creates a cell with `%say` as that cell's head to define
tutorials/hoon-tutorial/workbook/traffic-light.md → tutorials/hoon/workbook/traffic-light.mdrenamed+2−2
@@ -37,7 +37,7 @@ Let's look at the code piece-by-piece.
3737```
3838
3939Here's the boilerplate code to designate our generator as being a
40−[`%say` generator](@/docs/hoon/hoon-tutorial/generators.md). We're using this variant because
40+[`%say` generator](@/docs/tutorial/hoon/generators.md). We're using this variant because
4141it allows us to run the generator without any arguments. It's otherwise not
4242relevant to the functionality of our program.
4343
@@ -98,7 +98,7 @@ We first produce a core with one arm named `$`. That `$` arm will produce a new
9898core with `current-state` changed to match the `s` provided when it was called.
9999How does this work?
100100
101−Remember that `.` is [wing syntax](@/docs/hoon/hoon-expressions/limb/wing.md) that
101+Remember that `.` is [wing syntax](@/docs/reference/hoon-expressions/limb/wing.md) that
102102applies the wing expression on the left of it to the noun to the right of it.
103103`$` is the arm of the core. Then by using the wing expression `+>`, which means
104104"return the head of the tail", we traverse the subject to the core to latch onto
tutorials/nock/_index.md+4−4
@@ -9,18 +9,18 @@ aliases = ["docs/learn/nock/"]
99
1010Nock 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.
1111
12−## [Nock Definition](@/docs/nock/definition.md)
12+## [Nock Definition](@/docs/tutorials//nock/definition.md)
1313
1414The Nock specification.
1515
16−## [An explanation of Nock](@/docs/nock/explanation.md)
16+## [An explanation of Nock](@/docs/tutorials/nock/explanation.md)
1717
1818A comprehensive walkthrough of the Nock spec.
1919
20−## [Nock by hand](@/docs/nock/example.md)
20+## [Nock by hand](@/docs/tutorials/nock/example.md)
2121
2222Learn Nock by example.
2323
24−## [Nock Implementations](@/docs/nock/implementations.md)
24+## [Nock Implementations](@/docs/tutorials/nock/implementations.md)
2525
2626The many ways that Nock has been implemented.
tutorials/nock/implementations.md+1−1
@@ -34,7 +34,7 @@ We use a C implementation for our Nock interpreter. But building a Nock interpre
3434
3535The actual production Nock interpreter. Note gotos for tail-call elimination,
3636and manual reference counting. More about the C environment can be found
37−in the [runtime system documentation](@/docs/vere/runtime.md).
37+in the [runtime system documentation](@/docs/learn/vere/runtime.md).
3838```
3939/* _n_nock_on(): produce .*(bus fol). Do not virtualize.
4040*/
tutorials/vere/_index.md+5−5
@@ -11,26 +11,26 @@ Keep reading if you're planning to work on the Urbit interpreter, you're a
1111language implementation geek, or you don't really understand anything until
1212you've seen the actual structs.
1313
14−## [C runtime system](@/docs/vere/runtime.md)
14+## [C runtime system](@/docs/tutorials/vere/runtime.md)
1515
1616The Urbit interpreter is built on a Nock runtime system written
1717in C, `u3`. This section is a relatively complete description.
1818
19−## [c3: C in Urbit](@/docs/vere/c.md)
19+## [c3: C in Urbit](@/docs/tutorials/c.md)
2020
2121Under `u3` is the simple `c3` layer, which is just how we write C
2222in Urbit.
2323
24−## [u3: Land of nouns](@/docs/vere/nouns.md)
24+## [u3: Land of nouns](@/docs/tutorials/nouns.md)
2525
2626The division between `c3` and `u3` is that you could theoretically
2727imagine using `c3` as just a generic C environment. Anything to do
2828with nouns is in `u3`.
2929
30−## [u3: API overview by prefix](@/docs/vere/api.md)
30+## [u3: API overview by prefix](@/docs/tutorials/api.md)
3131
3232A walkthrough of each of the `u3` modules.
3333
34−## [How to write a jet](@/docs/vere/jetting.md)
34+## [How to write a jet](@/docs/tutorials/jetting.md)
3535
3636A jetting guide by for new Urbit developers.
tutorials/vere/jetting.md+2−2
@@ -505,7 +505,7 @@ A `u3_noun` will want to be further disassembled into atoms.
505505A `u3_atom` represents a simple number, but the implementation may or
506506may not be simple. If the value held in the atom is 31 bits or less,
507507it's stored directly in the atom. If the value is 32 bits the atom
508−holds a pointer into the loom where the actual value is stored. ( see [Nouns](@/docs/vere/nouns.md) )
508+holds a pointer into the loom where the actual value is stored. ( see [Nouns](@/docs/tutorials/vere/nouns.md) )
509509
510510You don't want to get bogged down in the details of this -- you just
511511want to get data out of your atoms.
@@ -618,7 +618,7 @@ are just recursive calls to the cell constructor `u3i_cell()` e.g.
618618 u3i_cell(a, u3i_cell(b, u3i_cell(c, d));
619619```
620620
621−Understanding the memory model, allocation, freeing, and ownership ('transfer' vs 'retain' semantics) is important. Some info is available at [Nouns](@/docs/vere/nouns.md).
621+Understanding the memory model, allocation, freeing, and ownership ('transfer' vs 'retain' semantics) is important. Some info is available at [Nouns](@/docs/tutorials/vere/nouns.md).
622622
623623## Compile the C code
624624