on master help sign in
update
commit070c802eb05af13744dece2aef2576e5eacfa108 authorRobert <robert@Roberts-MacBook-Pro.local> dateThu 10 Oct 2019, 15:42 (7 years ago) parent4a83d18
52 files changed+175−139
concepts/azimuth.md+1−1 reference/arvo-glossary.md+28−28 reference/cheat-sheet.md+1−1 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/mic.md+3−3 tutorials/_index.md+4−4 tutorials/arvo/_index.md+9−9 tutorials/arvo/ford.md+1−1 tutorials/creating-an-invite-pool.hoon+37 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/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-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/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
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/creating-an-invite-pool.hoonnew file+37
@@ -0,0 +1,37 @@
1++++
2+title = "Creating an Invite Pool"
3+weight = 9
4+template = "doc.html"
5++++
6+
7+If you’re a star owner, you have the ability to create **invite pools**. These invite pools let you give your friends a piece of the network in the form of planets. This document will give you an explanation of how to create an invite pool and how to share it with your friends using our tool [Bridge](bridge.urbit.org).
8+
9+## Anatomy of an Invite Pool
10+
11+An invite pool is a set of planet invites that can be distributed via email; each invite is worth one planet when redeemed. An invite pool can be as big as you’d like, providing that you have enough planets left to spawn. All invite pools must be created by a star, but they must be given to a planet. If you’re interested in how this works technically, take a look at the [DelegatedSending.sol contract](https://github.com/urbit/azimuth/blob/master/contracts/DelegatedSending.sol).
12+
13+Keep in mind that all planets will have access to the invite pool until the invite pool is exhausted.
14+
15+For example: As `~marzod`, I spawn `~wicdev-wisryt` and give it an invite pool of 100 planets. `~wicdev-wisryt` can now send an invite to a friend at galen@tlon.io. When Galen claims his planet (`~ravmel-ropdyl`), `~ravmel-ropdyl` can now invite his friend — or 99 of them.
16+
17+## How to Invite Friends
18+
19+Giving your friends a piece of Urbit only takes a few minutes: send an invite pool to a planet, and then that planet can email an invite to a friend (or friends)
20+
21+1. Log into Bridge using your ownership address for your star.
22+
23+2. Get the name (like `~poldec-tonteg`) of the planet to whom you'd like to give invites, it can be one you control or a friend's.
24+
25+3. Click “Manage Invite Pools” to assign an invite pool to the planet. You may receive a notification that you need to assign your spawn proxy to the address of the Delegated Sending contract. This is so that the contract can send invites on your behalf when the recipient claims them.
26+
27+![](https://storage.cloud.google.com/media.urbit.org/docs/invite-pool/browser-point.png)
28+
29+4. Enter the planet name and the number of invites you’d like to assign them.
30+
31+![](https://storage.cloud.google.com/media.urbit.org/docs/invite-pool/browser-create-pool.png)
32+
33+5. If you control the planet that you gave the invite pool to, it should be accessible from the Bridge homepage. Click the Planet, then “Invite” to create invites for your friends.
34+
35+![](https://storage.cloud.google.com/media.urbit.org/docs/invite-pool/browser-invite.png)
36+
37+Your friend will get an email shortly with your gift of an identity for life!
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
@@ -62,7 +62,7 @@ You'll see:
626217
6363```
6464
65−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.
65+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.
6666
6767## Generators
6868
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/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