on master help sign in
removed some 'next' tags that just wrapped around
a47b0a5Robert
docs/about/glossary.md+48−50
@@ -1,7 +1,6 @@
1---
1---
2navhome: /docs/
2navhome: /docs/
3navuptwo: true
3navuptwo: true
4−next: true
5sort: 5
4sort: 5
6title: Glossary
5title: Glossary
7---
6---
@@ -30,14 +29,14 @@ classed by the number of bits in their address:
30
29
31Any ship can be called an "urbit."
30Any ship can be called an "urbit."
32
31
33−> You can find a longer-form summary here:
32+> You can find a longer-form summary here:
34> [`urbit.org/posts/address-space/`](https://urbit.org/posts/address-space/).
33> [`urbit.org/posts/address-space/`](https://urbit.org/posts/address-space/).
35−
34+
36An Urbit identity is a string like `~firbyr-napbes`. It means nothing,
35An Urbit identity is a string like `~firbyr-napbes`. It means nothing,
37but it's easy to remember and say out loud. `~firbyr-napbes` is actually
36but it's easy to remember and say out loud. `~firbyr-napbes` is actually
38−just a 32-bit number (`3.237.967.392`, to be exact), like an IP address,
37+just a 32-bit number (`3.237.967.392`, to be exact), like an IP address,
39−that we turn into a human-memorable string. The full name of this string
38+that we turn into a human-memorable string. The full name of this string
40−can be viewed by typing `our` in the Dojo, Urbit's shell. This is useful
39+can be viewed by typing `our` in the Dojo, Urbit's shell. This is useful
41when running a ship with a longer name, such as a *moon* or a *comet*.
40when running a ship with a longer name, such as a *moon* or a *comet*.
42
41
43Technically, an urbit is a secure digital identity that you own and
42Technically, an urbit is a secure digital identity that you own and
@@ -124,7 +123,7 @@ An atom type is *warm* or *cold* based on whether the constant exists.
124#### aura
123#### aura
125
124
126An *aura* is a soft atom type. It represents the structure of an
125An *aura* is a soft atom type. It represents the structure of an
127−atom in a string beginning with `@`. An aura may represent print
126+atom in a string beginning with `@`. An aura may represent print
128format or other semantics. Its constraints on the value of an
127format or other semantics. Its constraints on the value of an
129atom aren't enforced in any way.
128atom aren't enforced in any way.
130
129
@@ -148,8 +147,8 @@ You can find the list of all auras [here](../../hoon/atom/sand/).
148
147
149#### core
148#### core
150
149
151−A _core_ is a [cell](#-nock-cell) of `[code data]`, where we call the
150+A _core_ is a [cell](#-nock-cell) of `[code data]`, where we call the
152−code head the _battery_ and the data tail the _payload_. All code-data
151+code head the _battery_ and the data tail the _payload_. All code-data
153structures in normal languages (functions, objects, modules, etc.)
152structures in normal languages (functions, objects, modules, etc.)
154become _core_s in Hoon.
153become _core_s in Hoon.
155
154
@@ -158,24 +157,24 @@ become _core_s in Hoon.
158
157
159*See [basic types](../../hoon/basic)*.
158*See [basic types](../../hoon/basic)*.
160
159
161−#### face
160+#### face
162
161
163−A Hoon _face_ is a labeled subtree.
162+A Hoon _face_ is a labeled subtree.
164
163
165Hoon has no scope or symbol-table; there is only the subject. To
164Hoon has no scope or symbol-table; there is only the subject. To
166"declare" a "variable" is to construct a new subject:
165"declare" a "variable" is to construct a new subject:
167`[name=value old-subject]`.
166`[name=value old-subject]`.
168
167
169−A face is a type that wraps a named symbol (of [aura](#-aura)
168+A face is a type that wraps a named symbol (of [aura](#-aura)
170`@tas`) around another type.
169`@tas`) around another type.
171
170
172*See [advanced types](../../hoon/advanced/#-face-aliases-and-bridges)*.
171*See [advanced types](../../hoon/advanced/#-face-aliases-and-bridges)*.
173
172
174#### gate
173#### gate
175
174
176−A _gate_ is a [core](#-core) with one [arm](#-arm) -- Hoon's closest
175+A _gate_ is a [core](#-core) with one [arm](#-arm) -- Hoon's closest
177analog to a function/lambda/closure. To call a gate on an argument,
176analog to a function/lambda/closure. To call a gate on an argument,
178−replace the sample (at [tree address](../../hoon/limb/limb/) `+6`
177+replace the sample (at [tree address](../../hoon/limb/limb/) `+6`
179in the core) with the argument, and then compute the arm.
178in the core) with the argument, and then compute the arm.
180
179
181The payload of a gate has a shape of `[sample context]`.
180The payload of a gate has a shape of `[sample context]`.
@@ -184,33 +183,33 @@ The payload of a gate has a shape of `[sample context]`.
184- <h6 id="-gate-context">context:</h6> the subject in which the gate was defined
183- <h6 id="-gate-context">context:</h6> the subject in which the gate was defined
185
184
186*See [basic types](../../hoon/basic/#-core-p-type-q-map-term-type),
185*See [basic types](../../hoon/basic/#-core-p-type-q-map-term-type),
187−[`%-` ("cenhep")](../../hoon/rune/cen/hep/) (the
186+[`%-` ("cenhep")](../../hoon/rune/cen/hep/) (the
188[rune](#-rune) for calling a `gate`).*
187[rune](#-rune) for calling a `gate`).*
189
188
190#### <h4 id="-a-hoon">hoon</h4>
189#### <h4 id="-a-hoon">hoon</h4>
191
190
192−A [`hoon`](../../hoon/reference/) is the result of parsing a Hoon source
191+A [`hoon`](../../hoon/reference/) is the result of parsing a Hoon source
193−expression into an AST node. These AST nodes are nouns, like all
192+expression into an AST node. These AST nodes are nouns, like all
194−other Hoon data. Because every Hoon program is, in its entirety, a
193+other Hoon data. Because every Hoon program is, in its entirety, a
195−single expression of Hoon, the result of parsing the whole thing
194+single expression of Hoon, the result of parsing the whole thing
196into an AST is a single `hoon`.
195into an AST is a single `hoon`.
197
196
198−A hoon is a tagged union of the form `[%tag data]`, where the tag
197+A hoon is a tagged union of the form `[%tag data]`, where the tag
199−is a constant such as `%brts` (from the source [rune](#-rune) `|=`,
198+is a constant such as `%brts` (from the source [rune](#-rune) `|=`,
200−i.e. "bartis"), and is matched up with the appropriate type of data
199+i.e. "bartis"), and is matched up with the appropriate type of data
201−(often more `hoon`s, from source subexpressions). For example, the
200+(often more `hoon`s, from source subexpressions). For example, the
202expression `:-(2 17)`, once parsed into an AST, becomes the following:
201expression `:-(2 17)`, once parsed into an AST, becomes the following:
203
202
204```
203```
205[%clhp p=[%sand p=%ud q=2] q=[%sand p=%ud q=17]]
204[%clhp p=[%sand p=%ud q=2] q=[%sand p=%ud q=17]]
206```
205```
207
206
208−The `%clhp` is produced from the rune `:-` (i.e. "colhep"). The 2 and
207+The `%clhp` is produced from the rune `:-` (i.e. "colhep"). The 2 and
209−17 have each been parsed as `%sand`-tagged hoons, which represent
208+17 have each been parsed as `%sand`-tagged hoons, which represent
210−atoms (in this case each with an aura of `%ud`, i.e. unsigned
209+atoms (in this case each with an aura of `%ud`, i.e. unsigned
211decimal).
210decimal).
212
211
213−To parse Hoon source into a hoon AST, use `ream` on a `cord`
212+To parse Hoon source into a hoon AST, use `ream` on a `cord`
214containing Hoon source. Try the following in [Dojo](../../using/shell):
213containing Hoon source. Try the following in [Dojo](../../using/shell):
215
214
216```
215```
@@ -225,7 +224,7 @@ The result should be:
225
224
226#### limb
225#### limb
227
226
228−A _limb_ is an attribute or variable reference.
227+A _limb_ is an attribute or variable reference.
229
228
230To resolve a *limb* named "foo", the subject is searched depth-first,
229To resolve a *limb* named "foo", the subject is searched depth-first,
231head-first for either a face named "foo" or a core with an arm of
230head-first for either a face named "foo" or a core with an arm of
@@ -247,10 +246,10 @@ A _loobean_ is a Hoon boolean. `0` (`%.y`) is *yes*, `1` (`%.n`) is *no*.
247
246
248#### mark
247#### mark
249
248
250−A _mark_ is Urbit's version of a MIME type, if a MIME type was an
249+A _mark_ is Urbit's version of a MIME type, if a MIME type was an
251−executable specification. The mark is just a label that's used as a path
250+executable specification. The mark is just a label that's used as a path
252−to a local source file in the Arvo filesystem. This source file defines
251+to a local source file in the Arvo filesystem. This source file defines
253−a core that can mold untrusted data, diff and patch, convert to other
252+a core that can mold untrusted data, diff and patch, convert to other
254marks, etc.
253marks, etc.
255
254
256If this sounds like magic, it isn't quite magic. There's no way
255If this sounds like magic, it isn't quite magic. There's no way
@@ -273,11 +272,11 @@ properties of the type of a compatible core). The default is `gold`
273
272
274#### mold
273#### mold
275
274
276−A _mold_ is an idempotent [gate](#-gate) (function), accepting any noun,
275+A _mold_ is an idempotent [gate](#-gate) (function), accepting any noun,
277and producing a range with a type, a set of nouns.
276and producing a range with a type, a set of nouns.
278
277
279−Molds act as type constructor/validators in Hoon. An example: Arvo
278+Molds act as type constructor/validators in Hoon. An example: Arvo
280−[marks](#-marks) use Hoon's type system under the hood via molds to
279+[marks](#-marks) use Hoon's type system under the hood via molds to
281validate untrusted network data.
280validate untrusted network data.
282
281
283Here's some common mold terminology:
282Here's some common mold terminology:
@@ -288,9 +287,9 @@ Here's some common mold terminology:
288
287
289*See [mold hoons](../../hoon/rune/buc/).*
288*See [mold hoons](../../hoon/rune/buc/).*
290
289
291−#### nest
290+#### nest
292
291
293−`nest` is an internal Hoon function on two types which performs a type
292+`nest` is an internal Hoon function on two types which performs a type
294compatibility test. `nest` produces yes if the
293compatibility test. `nest` produces yes if the
295set of nouns in the second type is provably a subset of the first.
294set of nouns in the second type is provably a subset of the first.
296If `nest` produces no, the Hoon programmer will receive a `nest-fail`
295If `nest` produces no, the Hoon programmer will receive a `nest-fail`
@@ -301,12 +300,12 @@ error. This is one of the most commons errors in Hoon programming.
301
300
302#### rune
301#### rune
303
302
304−A Hoon _rune_ is a pair of ASCII symbols used to begin a
303+A Hoon _rune_ is a pair of ASCII symbols used to begin a
305[Hoon expression](#-a-hoon).
304[Hoon expression](#-a-hoon).
306
305
307−For example, the rune [`?:`](../../hoon/rune/wut/col/) is
306+For example, the rune [`?:`](../../hoon/rune/wut/col/) is
308−Hoon's most common conditional, a branch on a boolean test. The first
307+Hoon's most common conditional, a branch on a boolean test. The first
309−symbol in a rune represents a family of related runes. For example, the
308+symbol in a rune represents a family of related runes. For example, the
310[`?` family](../../hoon/rune/wut/) are all conditionals.
309[`?` family](../../hoon/rune/wut/) are all conditionals.
311
310
312The result of parsing a Hoon source expression&mdash;the rune, followed
311The result of parsing a Hoon source expression&mdash;the rune, followed
@@ -336,32 +335,31 @@ Runes have two syntactic forms, _tall_ and _flat_:
336 4
335 4
337 ```
336 ```
338
337
339−Tall hoons can contain flat hoons, but not vice versa. All irregular
338+Tall hoons can contain flat hoons, but not vice versa. All irregular
340forms are flat.
339forms are flat.
341
340
342*See [hoon concept](../../hoon/concepts/#-hoon),
341*See [hoon concept](../../hoon/concepts/#-hoon),
343[expressions](../../hoon/rune/), and [syntax](../../hoon/syntax/)*.
342[expressions](../../hoon/rune/), and [syntax](../../hoon/syntax/)*.
344
343
345−#### slot
344+#### slot
346
345
347`slot` is the name for Hoon's tree addressing scheme.
346`slot` is the name for Hoon's tree addressing scheme.
348
347
349Every cell has a head and a tail, each of which may be either an atom or
348Every cell has a head and a tail, each of which may be either an atom or
350a cell. Therefore every noun is a binary tree. `+1` or `.` resolves to
349a cell. Therefore every noun is a binary tree. `+1` or `.` resolves to
351the whole cell (technically this would work against an atom as well).
350the whole cell (technically this would work against an atom as well).
352−The head of `+n` is `+2n`, the tail is `+(2n+1)`.
351+The head of `+n` is `+2n`, the tail is `+(2n+1)`.
353
352
354#### type
353#### type
355
354
356−A Hoon _type_ defines a set (finite or infinite) of nouns and ascribes
355+A Hoon _type_ defines a set (finite or infinite) of nouns and ascribes
357−some semantics to it. There is no direct syntax for defining
356+some semantics to it. There is no direct syntax for defining
358types; they are always defined by inference (i.e., by
357types; they are always defined by inference (i.e., by
359[`mint`](#-mint)), usually using a constructor ([`mold`](#-mold)).
358[`mint`](#-mint)), usually using a constructor ([`mold`](#-mold)).
360
359
361−All types are assembled out of base types defined in `++type`.
360+All types are assembled out of base types defined in `++type`.
362−(Look up `++ type` in hoon.hoon for examples.) When the compiler
361+(Look up `++ type` in hoon.hoon for examples.) When the compiler
363−does type-inference on a program, it assembles complex types out
362+does type-inference on a program, it assembles complex types out
364of the simpler built-in types.
363of the simpler built-in types.
365
364
366*See [basic types](../../hoon/basic/).*
365*See [basic types](../../hoon/basic/).*
367−
docs/hoon/cheat-sheet.md+5−6
@@ -1,6 +1,5 @@
1---
1---
2navhome: /docs/
2navhome: /docs/
3−next: true
4sort: 26
3sort: 26
5title: Cheat sheet
4title: Cheat sheet
6---
5---
@@ -16,12 +15,12 @@ _Original Fora post_ [*here*](https://urbit.org/fora/posts/~2017.9.18..22.31.06.
16
15
17<br />
16<br />
18
17
19−We've found it's useful to have a quick reference of Hoon's syntax always at
18+We've found it's useful to have a quick reference of Hoon's syntax always at
20−hand. So above is a download link to a Hoon cheatsheet .pdf. It's missing a
19+hand. So above is a download link to a Hoon cheatsheet .pdf. It's missing a
21−few of the literal syntaxes, but it covers the most common ones.
20+few of the literal syntaxes, but it covers the most common ones.
22
21
23−This doesn't list any of the Ford runes, although there is now at least
22+This doesn't list any of the Ford runes, although there is now at least
24−some documentation for those [here](/docs/arvo/internals/ford/runes).
23+some documentation for those [here](/docs/arvo/internals/ford/runes).
25
24
26The following runes also exist, but are currently undocumented and not listed in the cheat sheet:
25The following runes also exist, but are currently undocumented and not listed in the cheat sheet:
27
26
docs/nock/implementations.md−1
@@ -2,7 +2,6 @@
2navhome: /docs/
2navhome: /docs/
3title: Implementation
3title: Implementation
4sort: 6
4sort: 6
5−next: true
6---
5---
7
6
8# C implementation
7# C implementation