on master help sign in
update
77216e4Robert
concepts/azimuth.md+1−1
@@ -1,7 +1,7 @@
1+++
1+++
2title = "Azimuth"
2title = "Azimuth"
3weight = 4
3weight = 4
4−template = "doc.html"."
4+template = "doc.html"
5aliases = ["/docs/learn/azimuth"]
5aliases = ["/docs/learn/azimuth"]
6+++
6+++
7Azimuth 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.
7Azimuth 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:
68Arvo is located in `/home/sys/arvo.hoon` within your urbit.
68Arvo is located in `/home/sys/arvo.hoon` within your urbit.
69
69
70More in-depth information on Arvo can be found
70More in-depth information on Arvo can be found
71−[`here`](@/docs/arvo/_index.md).
71+[`here`](@/docs/tutorials/arvo/_index.md).
72
72
73Below are Arvo modules, which are called "vanes".
73Below are Arvo modules, which are called "vanes".
74
74
@@ -81,7 +81,7 @@ Below are Arvo modules, which are called "vanes".
81 Ames is located in `/home/sys/vane/ames.hoon` within your urbit.
81 Ames is located in `/home/sys/vane/ames.hoon` within your urbit.
82
82
83 More in-depth information on Ames can be found
83 More in-depth information on Ames can be found
84− [`here`](@/docs/arvo/ames.md).
84+ [`here`](@/docs/tutorials/arvo/ames.md).
85
85
86#### Behn
86#### Behn
87
87
@@ -106,7 +106,7 @@ Below are Arvo modules, which are called "vanes".
106 Basic information on using Clay can be found
106 Basic information on using Clay can be found
107 [`here`](@/operations.md). An in-depth explanation
107 [`here`](@/operations.md). An in-depth explanation
108 of the architecture can be found
108 of the architecture can be found
109− [`here`](@/docs/arvo/clay.md).
109+ [`here`](@/docs/tutorials/arvo/clay.md).
110
110
111#### Dill
111#### Dill
112
112
@@ -125,7 +125,7 @@ Below are Arvo modules, which are called "vanes".
125 Dill is located at `/home/sys/vane/dill.hoon` within your urbit.
125 Dill is located at `/home/sys/vane/dill.hoon` within your urbit.
126
126
127 More in-depth information on Dill can be found
127 More in-depth information on Dill can be found
128− [`here`](@/docs/arvo/dill.md).
128+ [`here`](@/docs/tutorials/arvo/dill.md).
129
129
130#### Eyre
130#### Eyre
131
131
@@ -139,7 +139,7 @@ Below are Arvo modules, which are called "vanes".
139 Eyre is located at `/home/sys/vane/eyre.hoon` within your urbit.
139 Eyre is located at `/home/sys/vane/eyre.hoon` within your urbit.
140
140
141 More in-depth information on Eyre can be found
141 More in-depth information on Eyre can be found
142− [`here`](@/docs/arvo/eyre.md).
142+ [`here`](@/docs/tutorials/arvo/eyre.md).
143
143
144#### Ford
144#### Ford
145
145
@@ -154,7 +154,7 @@ Below are Arvo modules, which are called "vanes".
154 Ford is located at `/home/sys/vane/ford.hoon` within your urbit.
154 Ford is located at `/home/sys/vane/ford.hoon` within your urbit.
155
155
156 More in-depth information on Ford can be found
156 More in-depth information on Ford can be found
157− [`here`](@/docs/arvo/ford.md).
157+ [`here`](@/docs/tutorials/arvo/ford.md).
158
158
159#### Gall
159#### Gall
160
160
@@ -170,7 +170,7 @@ Below are Arvo modules, which are called "vanes".
170 Gall is located at `/home/sys/vane/gall.hoon` within your urbit.
170 Gall is located at `/home/sys/vane/gall.hoon` within your urbit.
171
171
172 More in-depth information on Gall can be found
172 More in-depth information on Gall can be found
173− [`here`](@/docs/arvo/gall.md).
173+ [`here`](@/docs/tutorials/arvo/gall.md).
174
174
175### atom
175### atom
176
176
@@ -190,7 +190,7 @@ An atom type is _warm_ or _cold_ based on whether the constant exists.
190
190
191 If the constant is `[~ atom]`, its only legal value is `atom`.
191 If the constant is `[~ atom]`, its only legal value is `atom`.
192
192
193−_See [basic types](@/docs/hoon/hoon-expressions/basic.md)_
193+_See [basic types](@/docs/reference/hoon-expressions/basic.md)_
194
194
195### aura
195### aura
196
196
@@ -246,7 +246,7 @@ Aura Meaning Example Literal Syntax
246 @ux unsigned hexadecimal 0x5f5.e138
246 @ux unsigned hexadecimal 0x5f5.e138
247```
247```
248
248
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).
250
250
251### blocksize
251### blocksize
252
252
@@ -310,7 +310,7 @@ translate to cores in Hoon.
310
310
311 The data-containing tail of a core.
311 The data-containing tail of a core.
312
312
313−_See [basic types](@/docs/hoon/hoon-expressions/basic.md)._
313+_See [basic types](@/docs/reference/hoon-expressions/basic.md)._
314
314
315### Dojo
315### Dojo
316
316
@@ -330,7 +330,7 @@ with this functionality learn what syntax is kosher.
330
330
331A desk is independently revision-controlled branch of urbit filesystem.
331A desk is independently revision-controlled branch of urbit filesystem.
332
332
333−_See [filesystem](@/operations.md#filesystem) and [Clay](@/docs/arvo/clay.md)._
333+_See [filesystem](@/operations.md#filesystem) and [Clay](@/docs/tutorials/clay.md)._
334
334
335### duct
335### duct
336
336
@@ -356,7 +356,7 @@ In the above example, `a` is the face and `2` is the value.
356Hoon has no scope or symbol-table; there is only the subject. To "declare" a
356Hoon 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]`.
357"variable" is to construct a new subject: `[name=value old-subject]`.
358
358
359−_See [advanced types](@/docs/hoon/hoon-expressions/advanced.md)_.
359+_See [advanced types](@/docs/reference/hoon-expressions/advanced.md)_.
360
360
361
361
362### flag
362### flag
@@ -368,7 +368,7 @@ _no_.
368
368
369A _gate_ is a [core](#core) with one [arm](#arm) -- Hoon's closest
369A _gate_ is a [core](#core) with one [arm](#arm) -- Hoon's closest
370analog to a function. To call a gate on an argument, replace the sample
370analog 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`
372in the core) with the argument, and then compute the arm.
372in the core) with the argument, and then compute the arm.
373
373
374The payload of a gate has a shape of `[sample context]`.
374The 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]`.
381
381
382 The subject in which the gate was defined.
382 The subject in which the gate was defined.
383
383
384−_See [basic types](@/docs/hoon/hoon-expressions/basic.md),
384+_See [basic types](@/docs/reference/hoon-expressions/basic.md),
385−[`%-` ("cenhep")](@/docs/hoon/hoon-expressions/rune/cen.md#cenhep) (the
385+[`%-` ("cenhep")](@/docs/reference/hoon-expressions/rune/cen.md#cenhep) (the
386[rune](#rune) for calling a `gate`)._
386[rune](#rune) for calling a `gate`)._
387
387
388### generator
388### generator
@@ -433,7 +433,7 @@ _Hall_ is the Urbit communication back-end. It’s a messaging bus that can work
433with clients of all sorts. [`:talk`](#talk), the built-in chat client, is one
433with clients of all sorts. [`:talk`](#talk), the built-in chat client, is one
434such app that uses Hall.
434such app that uses Hall.
435
435
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)._
437
437
438#### circle
438#### circle
439
439
@@ -456,7 +456,7 @@ to Nock.
456
456
457The Hoon source file is located in `/home/sys/hoon.hoon` within your urbit.
457The Hoon source file is located in `/home/sys/hoon.hoon` within your urbit.
458
458
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._
460
460
461#### Mint
461#### Mint
462
462
@@ -499,7 +499,7 @@ The result should be:
499[%clls p=[%sand p=%ud q=12] q=[%sand p=%ud q=7] r=[%rock p=%tas q=97]]
499[%clls p=[%sand p=%ud q=12] q=[%sand p=%ud q=7] r=[%rock p=%tas q=97]]
500```
500```
501
501
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.
503
503
504### irregular form
504### irregular form
505
505
@@ -507,7 +507,7 @@ Irregular forms are alternative ways of writing Hoon expressions, alternatives
507to the digraphic runes such as `:~`. Irregular forms are usually more compact
507to the digraphic runes such as `:~`. Irregular forms are usually more compact
508than regular forms.=
508than regular forms.=
509
509
510−_See [irregular forms](@/docs/hoon/hoon-expressions/irregular.md)._
510+_See [irregular forms](@/docs/reference/hoon-expressions/irregular.md)._
511
511
512### jet
512### jet
513
513
@@ -520,7 +520,7 @@ so inefficiently. Nock, for example, can’t decrement (reduce a number by one)
520except by starting building a loop that starts from zero and increments to a
520except by starting building a loop that starts from zero and increments to a
521number just below.
521number just below.
522
522
523−_See [API overview](@/docs/vere/api.md)._
523+_See [API overview](@/docs/reference/vere/api.md)._
524
524
525### lark
525### lark
526
526
@@ -570,7 +570,7 @@ found, the result is the product of the arm.
570 a search path into the subject, composed of
570 a search path into the subject, composed of
571 limbs. Search occurs from right to left (`a.b` means `b` within `a`).
571 limbs. Search occurs from right to left (`a.b` means `b` within `a`).
572
572
573−_See [Limbs and wings](@/docs/hoon/hoon-expressions/limb/_index.md)_
573+_See [Limbs and wings](@/docs/reference/hoon-expressions/limb/_index.md)_
574
574
575### move
575### move
576
576
@@ -610,7 +610,7 @@ Urbit's low-level programming language. Nock is functional and typeless.
610
610
611 a noun - the result of evaluating a formula against a subject.
611 a noun - the result of evaluating a formula against a subject.
612
612
613−_See the [Nock definition](@/docs/nock/definition.md)._
613+_See the [Nock definition](@/docs/reference/nock/definition.md)._
614
614
615### mark
615### mark
616
616
@@ -636,7 +636,7 @@ properties of the type of a compatible core). The default is `gold`
636- `zinc`: _covariant_
636- `zinc`: _covariant_
637- `iron`: _contravariant_
637- `iron`: _contravariant_
638
638
639−_See [advanced types](@/docs/hoon/hoon-expressions/advanced.md)_.
639+_See [advanced types](@/docs/reference/hoon-expressions/advanced.md)_.
640
640
641### ship
641### ship
642
642
@@ -725,10 +725,10 @@ _See [mold hoons](/docs/hoon/hoon-expressions/rune/buc/)._
725A Hoon _rune_ is a pair of ASCII symbols used to begin a
725A Hoon _rune_ is a pair of ASCII symbols used to begin a
726[Hoon expression](#a-hoon).
726[Hoon expression](#a-hoon).
727
727
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
729Hoon's most common conditional, a branch on a boolean test. The first
729Hoon's most common conditional, a branch on a boolean test. The first
730symbol in a rune represents a family of related runes. For example, the
730symbol 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.
732
732
733The result of parsing a Hoon source expression—the rune, followed
733The result of parsing a Hoon source expression—the rune, followed
734by its respective children—into an AST node is simply called
734by its respective children—into an AST node is simply called
@@ -764,7 +764,7 @@ Tall hoons can contain flat hoons, but not vice versa. All irregular
764forms are flat.
764forms are flat.
765
765
766_See [hoon concept](#a-hoon),
766_See [hoon concept](#a-hoon),
767−[expressions](@/docs/hoon/hoon-expressions/rune/_index.md).
767+[expressions](@/docs/reference/hoon-expressions/rune/_index.md).
768
768
769### Sail
769### Sail
770
770
@@ -775,7 +775,7 @@ _Sail_ is the Hoon markup language for XML.
775To _scry_ means to request data from the Arvo namespace and bring it
775To _scry_ means to request data from the Arvo namespace and bring it
776to userspace.
776to userspace.
777
777
778−_See [.^ (dot-ket)](@/docs/hoon/hoon-expressions/rune/dot.md#dotket)._
778+_See [.^ (dot-ket)](@/docs/reference/hoon-expressions/rune/dot.md#dotket)._
779
779
780### slot
780### slot
781
781
@@ -816,7 +816,7 @@ of the simpler built-in types.
816 If `nest` produces no, the Hoon programmer will receive a `nest-fail`
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.
817 error. This is one of the most commons errors in Hoon programming.
818
818
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).
820
820
821
821
822### Unit
822### 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
12few of the literal syntaxes, but it covers the most common ones.
12few of the literal syntaxes, but it covers the most common ones.
13
13
14This doesn't list any of the Ford runes, although there is now at least
14This 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).
16
16
17The following runes also exist, but are currently undocumented and not listed in
17The following runes also exist, but are currently undocumented and not listed in
18the cheat sheet:
18the cheat sheet:
reference/hoon-expressions/_index.md+5−5
@@ -7,22 +7,22 @@ aliases = ["/docs/reference/hoon-expressions/"]
7+++
7+++
8Documentation for Hoon expressions.
8Documentation for Hoon expressions.
9
9
10−## [Runes](@/docs/hoon/hoon-expressions/rune/_index.md)
10+## [Runes](@/docs/reference/hoon-expressions/rune/_index.md)
11
11
12Runes are a way to form expressions in Hoon. Their exact semantics and
12Runes are a way to form expressions in Hoon. Their exact semantics and
13
13
14−## [Limbs and Wings](@/docs/hoon/hoon-expressions/limb/_index.md)
14+## [Limbs and Wings](@/docs/reference/hoon-expressions/limb/_index.md)
15
15
16Limbs and wings are ways to extract data from the subject.
16Limbs and wings are ways to extract data from the subject.
17
17
18−## [Basic Types](@/docs/hoon/hoon-expressions/basic.md)
18+## [Basic Types](@/docs/reference/hoon-expressions/basic.md)
19
19
20A simplified explanation of of the Hoon type system.
20A simplified explanation of of the Hoon type system.
21
21
22−## [Advanced Types](@/docs/hoon/hoon-expressions/advanced.md)
22+## [Advanced Types](@/docs/reference/hoon-expressions/advanced.md)
23
23
24A more comprehensive explanation of the Hoon type system, covering aliasing and polymorphism.
24A more comprehensive explanation of the Hoon type system, covering aliasing and polymorphism.
25
25
26−## [Irregular Forms](@/docs/hoon/hoon-expressions/irregular.md)
26+## [Irregular Forms](@/docs/reference/hoon-expressions/irregular.md)
27
27
28Alternative syntaxes for Hoon runes.
28Alternative syntaxes for Hoon runes.
reference/hoon-expressions/advanced.md+1−1
@@ -191,7 +191,7 @@ limb, we just search the type depth-first.
191If a name is in the `p.p` map, it's an alias. (An alias is defined using the
191If a name is in the `p.p` map, it's an alias. (An alias is defined using the
192`=*` rune.) The map contains a `(unit hoon)`; if the unit is full, the name
192`=*` rune.) The map contains a `(unit hoon)`; if the unit is full, the name
193resolves to that hoon (compiled against the `q` type). If the unit is empty,
193resolves 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
195this means).
195this means).
196
196
197If a name is in the `q.p` map, it's a bridge. (A bridge is defined using the
197If 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
32introduction to name resolution.)
32introduction to name resolution.)
33
33
34As noted, this is a simplified version of `type`. We undo and
34As 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)
36section.
36section.
37
37
38```hoon
38```hoon
reference/hoon-expressions/irregular.md+19−20
@@ -17,7 +17,7 @@ Anything Nock can do, Hoon can do also.
17
17
18### .+ dotlus
18### .+ dotlus
19
19
20−[docs](@/docs/hoon/hoon-expressions/rune/dot.md#dotlus) \\+
20+[docs](@/docs/reference/hoon-expressions/rune/dot.md#dotlus) \\+
21`[%dtls p=atom]`: increment an atom with Nock 4.
21`[%dtls p=atom]`: increment an atom with Nock 4.
22
22
23R: `.+(p)`
23R: `.+(p)`
@@ -25,7 +25,7 @@ I: `+(p)`
25
25
26### .= dottis
26### .= dottis
27
27
28−[docs](@/docs/hoon/hoon-expressions/rune/dot.md#dottis) \\=
28+[docs](@/docs/reference/hoon-expressions/rune/dot.md#dottis) \\=
29`[%dtts p=hoon q=hoon]`: test for equality with Nock 5.
29`[%dtts p=hoon q=hoon]`: test for equality with Nock 5.
30
30
31R: `.=(p q)`
31R: `.=(p q)`
@@ -37,7 +37,7 @@ Miscellaneous useful macros.
37
37
38### ;: miccol
38### ;: miccol
39
39
40−[docs](@/docs/hoon/hoon-expressions/rune/mic.md#miccol) \\:
40+[docs](@/docs/reference/hoon-expressions/rune/mic.md#miccol) \\:
41`[%mccl p=hoon q=(list hoon)]`: call a binary function as an n-ary function.
41`[%mccl p=hoon q=(list hoon)]`: call a binary function as an n-ary function.
42
42
43R: `;:(p q)`
43R: `;:(p q)`
@@ -49,7 +49,7 @@ The cell runes.
49
49
50### :- colhep
50### :- colhep
51
51
52−[docs](@/docs/hoon/hoon-expressions/rune/col.md#colhep) \\[\\]\\^\\+\\\`\\~
52+[docs](@/docs/reference/hoon-expressions/rune/col.md#colhep) \\[\\]\\^\\+\\\`\\~
53`[%clhp p=hoon q=hoon]`: construct a cell (2-tuple).
53`[%clhp p=hoon q=hoon]`: construct a cell (2-tuple).
54
54
55R: `:-(p q)`
55R: `:-(p q)`
@@ -71,7 +71,7 @@ Flow hoons change the subject. All non-flow hoons (except cores) pass the subjec
71
71
72### =< tisgal
72### =< tisgal
73
73
74−[docs](@/docs/hoon/hoon-expressions/rune/tis.md#tisgal) \\:
74+[docs](@/docs/reference/hoon-expressions/rune/tis.md#tisgal) \\:
75`[%tsgl p=hoon q=hoon]`: compose two hoons, inverted.
75`[%tsgl p=hoon q=hoon]`: compose two hoons, inverted.
76
76
77R: `=<(p q)`
77R: `=<(p q)`
@@ -79,7 +79,7 @@ I: `p:q`
79
79
80## | bar (core)
80## | bar (core)
81
81
82−[docs](@/docs/hoon/hoon-expressions/rune/bar.md) \\$
82+[docs](@/docs/reference/hoon-expressions/rune/bar.md) \\$
83Core hoons are flow hoon.
83Core hoons are flow hoon.
84
84
85Technically not irregular syntax, but worth mentioning.
85Technically not irregular syntax, but worth mentioning.
@@ -97,7 +97,7 @@ The invocation family of runes.
97
97
98### %= centis
98### %= centis
99
99
100−[docs](@/docs/hoon/hoon-expressions/rune/cen.md#centis) \\(\\)
100+[docs](@/docs/reference/hoon-expressions/rune/cen.md#centis) \\(\\)
101`[%cnts p=wing q=(list (pair wing hoon))]`: take a wing with changes.
101`[%cnts p=wing q=(list (pair wing hoon))]`: take a wing with changes.
102
102
103R: `%=(p a 1)`
103R: `%=(p a 1)`
@@ -105,7 +105,7 @@ I: `p(a 1)`
105
105
106### %~ censig
106### %~ censig
107
107
108−[docs](@/docs/hoon/hoon-expressions/rune/cen.md#censig) \\~
108+[docs](@/docs/reference/hoon-expressions/rune/cen.md#censig) \\~
109`[%cnsg p=wing q=hoon r=hoon]`: call with multi-armed door.
109`[%cnsg p=wing q=hoon r=hoon]`: call with multi-armed door.
110
110
111R: `%~(p q r)`
111R: `%~(p q r)`
@@ -113,7 +113,7 @@ I: `~(p q r)`
113
113
114### %- cenhep
114### %- cenhep
115
115
116−[docs](@/docs/hoon/hoon-expressions/rune/cen.md#cenhep) \\(\\)
116+[docs](@/docs/reference/hoon-expressions/rune/cen.md#cenhep) \\(\\)
117`[%cnhp p=hoon q=hoon]`: call a gate (function).
117`[%cnhp p=hoon q=hoon]`: call a gate (function).
118
118
119R: `%-(p q)`
119R: `%-(p q)`
@@ -127,7 +127,7 @@ A mold is a gate (function) that helps us build simple and rigorous data structu
127
127
128### $? bucwut
128### $? bucwut
129
129
130−[docs](@/docs/hoon/hoon-expressions/rune/buc.md#bucwut) \\?
130+[docs](@/docs/reference/hoon-expressions/rune/buc.md#bucwut) \\?
131`[%bcwt p=(list model)]`: mold which normalizes a general union.
131`[%bcwt p=(list model)]`: mold which normalizes a general union.
132
132
133R: `$?(p)`
133R: `$?(p)`
@@ -135,7 +135,7 @@ I: `?(p)`
135
135
136### $_ buccab
136### $_ buccab
137
137
138−[docs](@/docs/hoon/hoon-expressions/rune/buc.md#buccab) \\_
138+[docs](@/docs/reference/hoon-expressions/rune/buc.md#buccab) \\_
139`[%bccb p=value]`: mold which normalizes to an example.
139`[%bccb p=value]`: mold which normalizes to an example.
140
140
141R: `$_(p)`
141R: `$_(p)`
@@ -147,7 +147,7 @@ Hoon has the usual branches and logical tests.
147
147
148### ?! wutzap
148### ?! wutzap
149
149
150−[docs](@/docs/hoon/hoon-expressions/rune/wut.md#wutzap) \\!
150+[docs](@/docs/reference/hoon-expressions/rune/wut.md#wutzap) \\!
151`[%wtzp p=hoon]`: logical not.
151`[%wtzp p=hoon]`: logical not.
152
152
153R: `?!(p)`
153R: `?!(p)`
@@ -155,7 +155,7 @@ I: `!(p)`
155
155
156### ?& wutpam
156### ?& wutpam
157
157
158−[docs](@/docs/hoon/hoon-expressions/rune/wut.md#wutpam) \\&
158+[docs](@/docs/reference/hoon-expressions/rune/wut.md#wutpam) \\&
159`[%wtpm p=(list hoon)]`: logical and.
159`[%wtpm p=(list hoon)]`: logical and.
160
160
161R: `?&(p)`
161R: `?&(p)`
@@ -163,7 +163,7 @@ I: `&(p)`
163
163
164### ?| wutbar
164### ?| wutbar
165
165
166−[docs](@/docs/hoon/hoon-expressions/rune/wut.md#wutbar) \\|
166+[docs](@/docs/reference/hoon-expressions/rune/wut.md#wutbar) \\|
167`[%wtbr p=(list hoon)]`: logical or.
167`[%wtbr p=(list hoon)]`: logical or.
168
168
169R: `?|(p)`
169R: `?|(p)`
@@ -175,7 +175,7 @@ Lets us adjust types without violating type constraints.
175
175
176### ^- kethep
176### ^- kethep
177
177
178−[docs](@/docs/hoon/hoon-expressions/rune/ket.md#kethep) \\\`
178+[docs](@/docs/reference/hoon-expressions/rune/ket.md#kethep) \\\`
179`[%kthp p=model q=value]`: typecast by mold.
179`[%kthp p=model q=value]`: typecast by mold.
180
180
181R: `^-(p q)`
181R: `^-(p q)`
@@ -183,7 +183,7 @@ I: `` `p`q ``
183
183
184### ^= kettis
184### ^= kettis
185
185
186−[docs](@/docs/hoon/hoon-expressions/rune/ket.md#kettis) \\=
186+[docs](@/docs/reference/hoon-expressions/rune/ket.md#kettis) \\=
187`[%ktts p=toga q=value]`: name a value.
187`[%ktts p=toga q=value]`: name a value.
188
188
189R: `^=(p q)`
189R: `^=(p q)`
@@ -193,14 +193,13 @@ I: `p=q`
193
193
194### Trivial molds
194### Trivial molds
195
195
196−\\*\\^\\?
197−
198- `*` noun.
196- `*` noun.
199- `@` atom.
197- `@` atom.
200- `^` cell.
198- `^` cell.
201- `?` loobean.
199- `?` loobean.
202- `~` null.
200- `~` null.
203
201
202+
204### Values
203### Values
205
204
206\\~\\-\\.\\&\\|
205\\~\\-\\.\\&\\|
@@ -210,7 +209,7 @@ I: `p=q`
210- `|` loobean false.
209- `|` loobean false.
211- `%a` constant `a`, where `a` can be an ((ir)regularly defined) atom or a symbol.
210- `%a` constant `a`, where `a` can be an ((ir)regularly defined) atom or a symbol.
212
211
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.
214
213
215### List addressing
214### List addressing
216
215
@@ -219,7 +218,7 @@ See [%sand](@/docs/hoon/hoon-expressions/rune/constants.md#warm) for other irreg
219
218
220### Limbs
219### Limbs
221
220
222−[docs](@/docs/hoon/hoon-expressions/limb/limb.md) \\+\\.\\^
221+[docs](@/docs/reference/hoon-expressions/limb/limb.md) \\+\\.\\^
223`[%limb p=(each @ud [p=@ud q=@tas])]`: attribute of subject.
222`[%limb p=(each @ud [p=@ud q=@tas])]`: attribute of subject.
224
223
225- `+15` is slot 15
224- `+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
9concept of scope, environment, etc. An expression has exactly one data source,
9concept of scope, environment, etc. An expression has exactly one data source,
10the **subject**, a noun like any other.
10the **subject**, a noun like any other.
11
11
12−## [Limbs](@/docs/hoon/hoon-expressions/limb/limb.md)
12+## [Limbs](@/docs/reference/hoon-expressions/limb/limb.md)
13
13
14A limb is used to resolve to a piece of data in the subject. A wing is thus a resolution path into the subject.
14A limb is used to resolve to a piece of data in the subject. A wing is thus a resolution path into the subject.
15
15
16−## [Wings](@/docs/hoon/hoon-expressions/limb/wing.md)
16+## [Wings](@/docs/reference/hoon-expressions/limb/wing.md)
17
17
18In Hoon we use 'wings' to extract information from the subject. A wing is a list of limbs (including a trivial list of one limb).
18In 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.
9
9
10## Non-Rune Expressions
10## Non-Rune Expressions
11
11
12−### [Constants](@/docs/hoon/hoon-expressions/rune/constants.md)
12+### [Constants](@/docs/reference/hoon-expressions/rune/constants.md)
13
13
14Hoon 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).
14Hoon 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).
15
15
16−### [Limbs and Wings](@/docs/hoon/hoon-expressions/limb/_index.md)
16+### [Limbs and Wings](@/docs/reference/hoon-expressions/limb/_index.md)
17
17
18Limb and wing expressions also lack runes.
18Limb and wing expressions also lack runes.
19
19
20## Runes Proper
20## Runes Proper
21
21
22−### [`. dot` (Nock)](@/docs/hoon/hoon-expressions/rune/dot.md)
22+### [`. dot` (Nock)](@/docs/reference/hoon-expressions/rune/dot.md)
23
23
24Runes used for carrying out Nock operations in Hoon.
24Runes used for carrying out Nock operations in Hoon.
25
25
26−### [`! zap` (wild)](@/docs/hoon/hoon-expressions/rune/zap.md)
26+### [`! zap` (wild)](@/docs/reference/hoon-expressions/rune/zap.md)
27
27
28Wildcard category. Expressions that don't fit anywhere else go here.
28Wildcard category. Expressions that don't fit anywhere else go here.
29
29
30−### [`= tis` (Subject Modification)](@/docs/hoon/hoon-expressions/rune/tis.md)
30+### [`= tis` (Subject Modification)](@/docs/reference/hoon-expressions/rune/tis.md)
31
31
32Runes used to modify the subject.
32Runes used to modify the subject.
33
33
34−### [`? wut` (Conditionals)](@/docs/hoon/hoon-expressions/rune/wut.md)
34+### [`? wut` (Conditionals)](@/docs/reference/hoon-expressions/rune/wut.md)
35
35
36Runes used for branching on conditionals.
36Runes used for branching on conditionals.
37
37
38−### [`| bar` (Cores)](@/docs/hoon/hoon-expressions/rune/bar.md)
38+### [`| bar` (Cores)](@/docs/reference/hoon-expressions/rune/bar.md)
39
39
40Runes used to produce cores.
40Runes used to produce cores.
41
41
42−### [`+ lus` (Arms)](@/docs/hoon/hoon-expressions/rune/lus.md)
42+### [`+ lus` (Arms)](@/docs/reference/hoon-expressions/rune/lus.md)
43
43
44Runes used to define arms in a core.
44Runes used to define arms in a core.
45
45
46−### [`: col` (Cells)](@/docs/hoon/hoon-expressions/rune/col.md)
46+### [`: col` (Cells)](@/docs/reference/hoon-expressions/rune/col.md)
47
47
48Runes used to produce cells, which are pairs of nouns.
48Runes used to produce cells, which are pairs of nouns.
49
49
50−### [`% cen` (Calls)](@/docs/hoon/hoon-expressions/rune/cen.md)
50+### [`% cen` (Calls)](@/docs/reference/hoon-expressions/rune/cen.md)
51
51
52Runes used for making function calls in Hoon.
52Runes used for making function calls in Hoon.
53
53
54−### [`^ ket` (Casts)](@/docs/hoon/hoon-expressions/rune/ket.md)
54+### [`^ ket` (Casts)](@/docs/reference/hoon-expressions/rune/ket.md)
55
55
56Runes that let us adjust types without violating type constraints.
56Runes that let us adjust types without violating type constraints.
57
57
58−### [`$ buc` (Structures)](@/docs/hoon/hoon-expressions/rune/buc.md)
58+### [`$ buc` (Structures)](@/docs/reference/hoon-expressions/rune/buc.md)
59
59
60Runes used for defining custom types.
60Runes used for defining custom types.
61
61
62−### [`; mic` (Make)](@/docs/hoon/hoon-expressions/rune/mic.md)
62+### [`; mic` (Make)](@/docs/reference/hoon-expressions/rune/mic.md)
63
63
64Miscellaneous useful macros.
64Miscellaneous useful macros.
65
65
66−### [`~ sig` (Hints)](@/docs/hoon/hoon-expressions/rune/sig.md)
66+### [`~ sig` (Hints)](@/docs/reference/hoon-expressions/rune/sig.md)
67
67
68Runes that use Nock `11` to pass non-semantic info to the interpreter.
68Runes that use Nock `11` to pass non-semantic info to the interpreter.
69
69
70−### [`--`, `==` (Terminators)](@/docs/hoon/hoon-expressions/rune/terminators.md)
70+### [`--`, `==` (Terminators)](@/docs/reference/hoon-expressions/rune/terminators.md)
71
71
72Runes used to terminate expressions.
72Runes 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
81
81
82tl;dr -- `;+` converts a `manx` to a `marl`.
82tl;dr -- `;+` converts a `manx` to a `marl`.
83
83
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).
85
85
86In Sail a single XML node is represented by a `manx`. A single `<p>` node `manx` can be produced in the following way:
86In Sail a single XML node is represented by a `manx`. A single `<p>` node `manx` can be produced in the following way:
87
87
@@ -295,7 +295,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
295
295
296##### Discussion
296##### Discussion
297
297
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).
299
299
300If 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.
300If 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.
301
301
@@ -347,7 +347,7 @@ A `marl`, i.e., a list of `manx`. A `manx` is a noun that represents a single X
347
347
348##### Discussion
348##### Discussion
349
349
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).
351
351
352In Sail a single XML node is represented by a `manx`. A single `<p>` node `manx` can be produced in the following way:
352In Sail a single XML node is represented by a `manx`. A single `<p>` node `manx` can be produced in the following way:
353
353
tutorials/_index.md+4−4
@@ -8,19 +8,19 @@ aliases = ["docs/learn/"]
8
8
9Tutorials and explanations for all the components of Urbit.
9Tutorials and explanations for all the components of Urbit.
10
10
11−## [Arvo](@/docs/learn/arvo/_index.md)
11+## [Arvo](@/docs/tutorials/arvo/_index.md)
12
12
13Arvo 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.
13Arvo 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.
14
14
15−## [Hoon Tutorial](@/docs/learn/hoon-tutorial/_index.md)
15+## [Hoon Tutorial](@/docs/tutorials/hoon/_index.md)
16
16
17Hoon 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.
17Hoon 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.
18
18
19−## [Nock](@/docs/learn/nock/_index.md)
19+## [Nock](@/docs/tutorials/nock/_index.md)
20
20
21Nock 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.
21Nock is the low-level functional programming language that is interpreted by Vere. You don't need to know Nock to write Hoon, or even to work on most parts of Vere. But if you want to understand the foundations of Urbit and are mathematically-inclined, dive right in.
22
22
23−## [Vere](@/docs/learn/vere/_index.md)
23+## [Vere](@/docs/tutorials/vere/_index.md)
24
24
25The Nock runtime system, written in C.
25The Nock runtime system, written in C.
26
26
tutorials/arvo/_index.md+9−9
@@ -5,37 +5,37 @@ sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6aliases = ["/docs/learn/arvo/"]
6aliases = ["/docs/learn/arvo/"]
7+++
7+++
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_:
9
9
10−## [Ames](@/docs/arvo/ames.md)
10+## [Ames](@/docs/tutorials/arvo/ames.md)
11
11
12Ames 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.
12Ames 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.
13
13
14−## [Behn](@/docs/arvo/behn.md)
14+## [Behn](@/docs/tutorials/arvo/behn.md)
15
15
16Behn is our timer. It allows vanes and applications to set and timer events, which are managed in a simple priority queue.
16Behn is our timer. It allows vanes and applications to set and timer events, which are managed in a simple priority queue.
17
17
18−## [Clay](@/docs/arvo/clay.md)
18+## [Clay](@/docs/tutorials/arvo/clay.md)
19
19
20Clay is our filesystem and revision-control system.
20Clay is our filesystem and revision-control system.
21
21
22−## [Dill](@/docs/arvo/dill.md)
22+## [Dill](@/docs/tutorials/arvo/dill.md)
23
23
24Dill is our terminal driver. Unix sends keyboard events to dill from the terminal, and dill produces terminal output.
24Dill is our terminal driver. Unix sends keyboard events to dill from the terminal, and dill produces terminal output.
25
25
26−## [Eyre](@/docs/arvo/eyre.md)
26+## [Eyre](@/docs/tutorials/arvo/eyre.md)
27
27
28Eyre is our HTTP server. Unix sends HTTP messages to `%eyre`, and `%eyre` produces HTTP messages in response.
28Eyre is our HTTP server. Unix sends HTTP messages to `%eyre`, and `%eyre` produces HTTP messages in response.
29
29
30−## [Ford](@/docs/arvo/ford.md)
30+## [Ford](@/docs/tutorials/arvo/ford.md)
31
31
32Ford is our build system. It handles resources and publishing.
32Ford is our build system. It handles resources and publishing.
33
33
34−## [Gall](@/docs/arvo/gall.md)
34+## [Gall](@/docs/tutorials/arvo/gall.md)
35
35
36Gall is the vane for controlling userspace apps.
36Gall is the vane for controlling userspace apps.
37
37
38−### [Hall](@/docs/arvo/hall.md)
38+### [Hall](@/docs/tutorials/arvo/hall.md)
39
39
40Hall isn't a vane, but an important Gall app that functions as the Urbit messaging protocol.
40Hall isn't a vane, but an important Gall app that functions as the Urbit messaging protocol.
41
41
tutorials/arvo/ford.md+1−1
@@ -119,7 +119,7 @@ library in urbit.
119
119
120To run this example, put this code in your desk at `gen/faslus.hoon` and run
120To run this example, put this code in your desk at `gen/faslus.hoon` and run
121`+faslus` in your dojo. This example is a generator. For more information on
121`+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).
123
123
124```hoon
124```hoon
125/+ time-to-id
125/+ 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/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
54
54
55Want to know how to style your code? Check out the [style guide](../style).
55Want to know how to style your code? Check out the [style guide](../style).
56
56
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.
58
58
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.
60
60
61
61
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
18
18
19## Atoms and Auras
19## Atoms and Auras
20
20
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.
22
22
23In 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.
23In 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.
24
24
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
84~zod
84~zod
85```
85```
86
86
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).
88
88
89Cell literals can be written in Hoon using `[ ]`. Cell literals are complex, because other expressions are put inside the square brackets. Examples:
89Cell literals can be written in Hoon using `[ ]`. Cell literals are complex, because other expressions are put inside the square brackets. Examples:
90
90
@@ -111,7 +111,7 @@ You can also put complex expressions inside square brackets to make a cell. The
111
111
112### Wings
112### Wings
113
113
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.
115
115
116Let'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:
116Let'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:
117
117
@@ -124,7 +124,7 @@ Let's start with the base case: a single limb. A limb expression is a trivial w
124- `add`
124- `add`
125- `mul`
125- `mul`
126
126
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).)
128
128
129Wing expressions with multiple limbs are complex expressions. Examples:
129Wing expressions with multiple limbs are complex expressions. Examples:
130
130
@@ -141,7 +141,7 @@ Wing expressions with multiple limbs are complex expressions. Examples:
141
141
142Hoon 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`.
142Hoon 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`.
143
143
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).)
145
145
146### Rune Expressions
146### Rune Expressions
147
147
@@ -151,7 +151,7 @@ Expressions with a rune at the beginning are rune expressions. Most runes are u
151
151
152Runes 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.
152Runes 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.
153
153
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.
155
155
156Runes 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.
156Runes 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.
157
157
@@ -250,7 +250,7 @@ The irregular `( )` gate-calling syntax is versatile -- it is also a shortcut fo
250
250
251The `( )` gate-calling syntax can be used for gates with any number of arguments.
251The `( )` gate-calling syntax can be used for gates with any number of arguments.
252
252
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).
254
254
255### Expressions That Are Only Irregular
255### Expressions That Are Only Irregular
256
256
@@ -285,7 +285,7 @@ b=[16 18]
285[16 18]
285[16 18]
286```
286```
287
287
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).
289
289
290
290
291## The Standard Library
291## 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))
107
107
108The 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".
108The 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".
109
109
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.
111
111
112## Explanation
112## Explanation
113
113
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
179subject is searched depth-first, head before tail, with faces skipped, and
179subject is searched depth-first, head before tail, with faces skipped, and
180stopping on the first result. In other words, the first match found in the head
180stopping on the first result. In other words, the first match found in the head
181will be returned. If you wished to refer to the outer `$` in this context, the
181will 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
183skips the first match of a name.
183skips the first match of a name.
184
184
185### Exercises
185### Exercises
tutorials/hoon-tutorial/setup.md → tutorials/hoon/setup.mdrenamed+1−1
@@ -61,7 +61,7 @@ You'll see:
6117
6117
62```
62```
63
63
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.
65
65
66## Generators
66## Generators
67
67
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
352
352
353Now the `~` value is included as a possible value for `user`.
353Now the `~` value is included as a possible value for `user`.
354
354
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).
356
356
357### [Next Up: Walkthrough -- Libraries](../libraries)
357### [Next Up: Walkthrough -- Libraries](../libraries)
tutorials/hoon-tutorial/style.md → tutorials/hoon/style.mdrenamed+1−1
@@ -41,7 +41,7 @@ or
41```
41```
42
42
43These are regular forms -- every rune can be written this way.
43These 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
45forms are regular. All code within a wide form is wide.
45forms are regular. All code within a wide form is wide.
46Almost all code has both wide and tall forms, the exception
46Almost all code has both wide and tall forms, the exception
47being named cores.
47being 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.
22==
22==
23```
23```
24
24
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
26need some "boilerplate" code in the format of `[%say [%noun "data"]]`:
26need some "boilerplate" code in the format of `[%say [%noun "data"]]`:
27
27
28```hoon
28```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.
60
60
61To make our program produce a random result, we need entropy. To get entropy,
61To make our program produce a random result, we need entropy. To get entropy,
62we need data from Arvo. To get data from Arvo, we use a generator of the
62we 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
64the template that is followed for all `%say` generators.
64the template that is followed for all `%say` generators.
65
65
66`:- %say` creates a cell with `%say` as that cell's head to define
66`:- %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.
37```
37```
38
38
39Here's the boilerplate code to designate our generator as being a
39Here'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
41it allows us to run the generator without any arguments. It's otherwise not
41it allows us to run the generator without any arguments. It's otherwise not
42relevant to the functionality of our program.
42relevant to the functionality of our program.
43
43
@@ -98,7 +98,7 @@ We first produce a core with one arm named `$`. That `$` arm will produce a new
98core with `current-state` changed to match the `s` provided when it was called.
98core with `current-state` changed to match the `s` provided when it was called.
99How does this work?
99How does this work?
100
100
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
102applies the wing expression on the left of it to the noun to the right of it.
102applies the wing expression on the left of it to the noun to the right of it.
103`$` is the arm of the core. Then by using the wing expression `+>`, which means
103`$` is the arm of the core. Then by using the wing expression `+>`, which means
104"return the head of the tail", we traverse the subject to the core to latch onto
104"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/"]
9
9
10Nock 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.
10Nock 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.
11
11
12−## [Nock Definition](@/docs/nock/definition.md)
12+## [Nock Definition](@/docs/tutorials//nock/definition.md)
13
13
14The Nock specification.
14The Nock specification.
15
15
16−## [An explanation of Nock](@/docs/nock/explanation.md)
16+## [An explanation of Nock](@/docs/tutorials/nock/explanation.md)
17
17
18A comprehensive walkthrough of the Nock spec.
18A comprehensive walkthrough of the Nock spec.
19
19
20−## [Nock by hand](@/docs/nock/example.md)
20+## [Nock by hand](@/docs/tutorials/nock/example.md)
21
21
22Learn Nock by example.
22Learn Nock by example.
23
23
24−## [Nock Implementations](@/docs/nock/implementations.md)
24+## [Nock Implementations](@/docs/tutorials/nock/implementations.md)
25
25
26The many ways that Nock has been implemented.
26The 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
11language implementation geek, or you don't really understand anything until
11language implementation geek, or you don't really understand anything until
12you've seen the actual structs.
12you've seen the actual structs.
13
13
14−## [C runtime system](@/docs/vere/runtime.md)
14+## [C runtime system](@/docs/tutorials/vere/runtime.md)
15
15
16The Urbit interpreter is built on a Nock runtime system written
16The Urbit interpreter is built on a Nock runtime system written
17in C, `u3`. This section is a relatively complete description.
17in C, `u3`. This section is a relatively complete description.
18
18
19−## [c3: C in Urbit](@/docs/vere/c.md)
19+## [c3: C in Urbit](@/docs/tutorials/c.md)
20
20
21Under `u3` is the simple `c3` layer, which is just how we write C
21Under `u3` is the simple `c3` layer, which is just how we write C
22in Urbit.
22in Urbit.
23
23
24−## [u3: Land of nouns](@/docs/vere/nouns.md)
24+## [u3: Land of nouns](@/docs/tutorials/nouns.md)
25
25
26The division between `c3` and `u3` is that you could theoretically
26The division between `c3` and `u3` is that you could theoretically
27imagine using `c3` as just a generic C environment. Anything to do
27imagine using `c3` as just a generic C environment. Anything to do
28with nouns is in `u3`.
28with nouns is in `u3`.
29
29
30−## [u3: API overview by prefix](@/docs/vere/api.md)
30+## [u3: API overview by prefix](@/docs/tutorials/api.md)
31
31
32A walkthrough of each of the `u3` modules.
32A walkthrough of each of the `u3` modules.
33
33
34−## [How to write a jet](@/docs/vere/jetting.md)
34+## [How to write a jet](@/docs/tutorials/jetting.md)
35
35
36A jetting guide by for new Urbit developers.
36A 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.
505A `u3_atom` represents a simple number, but the implementation may or
505A `u3_atom` represents a simple number, but the implementation may or
506may not be simple. If the value held in the atom is 31 bits or less,
506may not be simple. If the value held in the atom is 31 bits or less,
507it's stored directly in the atom. If the value is 32 bits the atom
507it'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) )
509
509
510You don't want to get bogged down in the details of this -- you just
510You don't want to get bogged down in the details of this -- you just
511want to get data out of your atoms.
511want to get data out of your atoms.
@@ -618,7 +618,7 @@ are just recursive calls to the cell constructor `u3i_cell()` e.g.
618 u3i_cell(a, u3i_cell(b, u3i_cell(c, d));
618 u3i_cell(a, u3i_cell(b, u3i_cell(c, d));
619```
619```
620
620
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).
622
622
623## Compile the C code
623## Compile the C code
624
624