@@ -1,7 +1,6 @@
2navhome: /docs/
2navhome: /docs/
3navuptwo: true
3navuptwo: true
6title: Glossary
5title: Glossary
@@ -30,14 +29,14 @@ classed by the number of bits in their address:
31Any ship can be called an "urbit."
30Any ship can be called an "urbit."
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/).
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*.
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.
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.
@@ -148,8 +147,8 @@ You can find the list of all auras [here](../../hoon/atom/sand/).
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.
@@ -158,24 +157,24 @@ become _core_s in Hoon.
159*See [basic types](../../hoon/basic)*.
158*See [basic types](../../hoon/basic)*.
161−#### face
160+#### face
163−A Hoon _face_ is a labeled subtree.
162+A Hoon _face_ is a labeled subtree.
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]`.
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.
172*See [advanced types](../../hoon/advanced/#-face-aliases-and-bridges)*.
171*See [advanced types](../../hoon/advanced/#-face-aliases-and-bridges)*.
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.
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
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`).*
190#### <h4 id="-a-hoon">hoon</h4>
189#### <h4 id="-a-hoon">hoon</h4>
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`.
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:
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]]
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
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):
@@ -225,7 +224,7 @@ The result should be:
228−A _limb_ is an attribute or variable reference.
227+A _limb_ is an attribute or variable reference.
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*.
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.
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`
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.
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.
283Here's some common mold terminology:
282Here's some common mold terminology:
@@ -288,9 +287,9 @@ Here's some common mold terminology:
289*See [mold hoons](../../hoon/rune/buc/).*
288*See [mold hoons](../../hoon/rune/buc/).*
291−#### nest
290+#### nest
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.
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).
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.
312The result of parsing a Hoon source expression—the rune, followed
311The result of parsing a Hoon source expression—the rune, followed
@@ -336,32 +335,31 @@ Runes have two syntactic forms, _tall_ and _flat_:
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.
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/)*.
345−#### slot
344+#### slot
347`slot` is the name for Hoon's tree addressing scheme.
346`slot` is the name for Hoon's tree addressing scheme.
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)`.
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)).
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.
366*See [basic types](../../hoon/basic/).*
365*See [basic types](../../hoon/basic/).*