on master help sign in
Various fixes and improvements.
commit996d946e05231ec5ccd0d945c9febebad1be6bdb authorC. Guy Yarvin <cgyarvin@gmail.com> dateMon 25 Apr 2016, 12:02 (11 years ago) parent51125ad
98 files changed+399−441
docs.md+2−2 docs/hoon/twig/atom.md+3−115 docs/hoon/twig/atom/base.md−44 docs/hoon/twig/atom/knit.md+30−10 docs/hoon/twig/atom/path.md+29 docs/hoon/twig/atom/rock.md+11−2 docs/hoon/twig/bar-core.md+2−4 docs/hoon/twig/bar-core/cab-door.md+3−2 docs/hoon/twig/bar-core/cen-core.md+1−1 docs/hoon/twig/bar-core/dot-trap.md+2−2 docs/hoon/twig/bar-core/hep-loop.md+2−2 docs/hoon/twig/bar-core/tar-gill.md+3−2 docs/hoon/twig/bar-core/tis-gate.md+2−2 docs/hoon/twig/buc-mold/base.md+1−1 docs/hoon/twig/buc-mold/cab-shoe.md+2−2 docs/hoon/twig/buc-mold/cen-book.md+2−2 docs/hoon/twig/buc-mold/col-bank.md+2−2 docs/hoon/twig/buc-mold/hep-lamb.md+2−2 docs/hoon/twig/buc-mold/ket-bush.md+2−2 docs/hoon/twig/buc-mold/pat-claw.md+3−3 docs/hoon/twig/buc-mold/tis-coat.md+2−2 docs/hoon/twig/buc-mold/wut-pick.md+2−2 docs/hoon/twig/cen-call.md+2−2 docs/hoon/twig/cen-call/cab-keep.md+5−2 docs/hoon/twig/cen-call/dot-lace.md+2−2 docs/hoon/twig/cen-call/hep-call.md+2−2 docs/hoon/twig/cen-call/ket-calq.md+2−2 docs/hoon/twig/cen-call/lus-calt.md+2−2 docs/hoon/twig/cen-call/sig-open.md+3−1 docs/hoon/twig/cen-call/tis-make.md+2−2 docs/hoon/twig/col-cell/hep-cons.md+2−2 docs/hoon/twig/col-cell/ket-conq.md+2−2 docs/hoon/twig/col-cell/lus-cont.md+2−2 docs/hoon/twig/col-cell/sig-conl.md+2−2 docs/hoon/twig/col-cell/tar-conp.md+2−2 docs/hoon/twig/dot-nock/ket-wish.md+2−2 docs/hoon/twig/dot-nock/lus-bump.md+2−2 docs/hoon/twig/dot-nock/tar-nock.md+2−2 docs/hoon/twig/dot-nock/tis-same.md+2−2 docs/hoon/twig/dot-nock/wut-deep.md+2−2 docs/hoon/twig/ket-cast/bar-iron.md+2−2 docs/hoon/twig/ket-cast/hep-cast.md+2−2 docs/hoon/twig/ket-cast/lus-like.md+2−2 docs/hoon/twig/ket-cast/pam-zinc.md docs/hoon/twig/ket-cast/sig-burn.md+18−16 docs/hoon/twig/ket-cast/tis-name.md+2−2 docs/hoon/twig/ket-cast/wut-lead.md+4−3 docs/hoon/twig/limb.md+2−84 docs/hoon/twig/limb/limb.md+69 docs/hoon/twig/limb/wing.md+49 docs/hoon/twig/sem-make/col-wad.md+2−2 docs/hoon/twig/sem-make/fas-nub.md+2−2 docs/hoon/twig/sem-make/sem-fry.md+2−2 docs/hoon/twig/sem-make/sig-dip.md+3−2 docs/hoon/twig/sig-hint/bar-show.md+2−2 docs/hoon/twig/sig-hint/buc-poll.md+2−2 docs/hoon/twig/sig-hint/cab-lurk.md+2−2 docs/hoon/twig/sig-hint/cen-fast.md+2−2 docs/hoon/twig/sig-hint/fas-funk.md+3−2 docs/hoon/twig/sig-hint/gal-thin.md+4−3 docs/hoon/twig/sig-hint/gar-hint.md+3−2 docs/hoon/twig/sig-hint/lus-memo.md+2−2 docs/hoon/twig/sig-hint/pam-dump.md+2−2 docs/hoon/twig/sig-hint/tis-ddup.md+2−2 docs/hoon/twig/sig-hint/wut-warn.md+2−2 docs/hoon/twig/sig-hint/zap-peep.md+2−2 docs/hoon/twig/tis-flow/bar-new.md+2−2 docs/hoon/twig/tis-flow/col-fix.md+2−2 docs/hoon/twig/tis-flow/dot-set.md+2−2 docs/hoon/twig/tis-flow/fas-var.md+3−2 docs/hoon/twig/tis-flow/gal-rap.md+2−2 docs/hoon/twig/tis-flow/gar-per.md+2−2 docs/hoon/twig/tis-flow/hep-nip.md+2−2 docs/hoon/twig/tis-flow/ket-sip.md+3−2 docs/hoon/twig/tis-flow/lus-pin.md+2−2 docs/hoon/twig/tis-flow/sem-rev.md+3−2 docs/hoon/twig/tis-flow/tar-aka.md+2−2 docs/hoon/twig/wut-test/bar-or.md+2−2 docs/hoon/twig/wut-test/col-if.md+2−2 docs/hoon/twig/wut-test/dot-lest.md+2−2 docs/hoon/twig/wut-test/gal-deny.md+2−2 docs/hoon/twig/wut-test/gar-sure.md+2−2 docs/hoon/twig/wut-test/hep-case.md+3−2 docs/hoon/twig/wut-test/ket-ifcl.md+3−2 docs/hoon/twig/wut-test/lus-deft.md+3−2 docs/hoon/twig/wut-test/pam-and.md+2−2 docs/hoon/twig/wut-test/pat-ifat.md+3−2 docs/hoon/twig/wut-test/sig-ifno.md+3−2 docs/hoon/twig/wut-test/tis-fits.md+2−2 docs/hoon/twig/wut-test/zap-not.md+2−2 docs/hoon/twig/zap-wild/.gar-wrap.md.swp docs/hoon/twig/zap-wild/.tis-code.md.swp docs/hoon/twig/zap-wild/.wut-need.md.swp docs/hoon/twig/zap-wild/.zap-fail.md.swp docs/hoon/twig/zap-wild/gar-wrap.md+2−2 docs/hoon/twig/zap-wild/tis-code.md+2−2 docs/hoon/twig/zap-wild/wut-need.md+2−2 docs/hoon/twig/zap-wild/zap-fail.md+2−2
docs.md+2−2
@@ -8,9 +8,9 @@ footer: true
88 <h1 class="blue i-b">Urbit docs</h1>
99</div>
1010
11−Go to the [technical overview](docs/about/overview) for a high-level
11+Go to the [technical overview](about/overview) for a high-level
1212architecture description. To install and run Urbit, read forward from the
13−[installation guide](docs/using/install).
13+[installation guide](using/install).
1414
1515Most programmers start by [learning Hoon](hoon). Some maniacs can skim the
1616Hoon doc, then go straight to [Arvo systems programming](arvo/system). All
docs/hoon/twig/atom.md+3−115
@@ -6,122 +6,10 @@ next: true
66# Atoms and strings
77
88The simplest expressions in every language are constants:
9−atoms and strings. This section
9+atoms, strings, paths. (Strings aren't all constants per
10+se, because they have interpolations.)
1011
11−Some of these constructs aren't quite constants, li
12−
1312## Stems
1413
15−(Some of the "constant" syntax below can interpolate dynamic
16−twigs. When it does, it obviously isn't constant at all.)
14+<list dataPreview="true" className="runes"></list>
1715
18−## Auras
19−
20−Recall the `$atom` span, `{$atom p/aura q/(unit @)}`.
21−
22−Each atom constant syntax implies an `aura`, which is just a
23−textual symbol. The aura is used indiscriminately to convey
24−physical units, semantic interpretations, parsing syntax, and/or
25−printing syntax. It's soft type and can be manually overridden.
26−
27−To write an aura, we generally borrow the atomic mold syntax,
28−such as `@ud` for the unsigned decimal.
29−We write an aura
30−
31−in its irregular mold syntax, such as
32−`@ud`. The syntax for the
33−
34−## Twigs
35−
36−```
37−|%
38−++ twig
39− {$rock p/@tas q/@}
40− {$sand p/@tas q/@}
41− {$knit p/(list $@(@ {$~ p/seed}))}
42− {$path p/(list (each @tas seed))
43−--
44−```
45−
46−## Syntax
47−
48−All Hoon constants are irregular; they have no rune form. The
49−stems described below are `$rock` (cold / constant), `$sand`
50−(warm / open), `$knit` (iterative string), and `$path` (Unix
51−style path).
52−
53−### Atoms
54−
55−Recall the `$atom` span, `{$atom p/aura q/(unit @)}`.
56−
57−Each atom constant syntax implies an aura. Note that the aura is
58−used indiscriminately to convey physical units, semantic
59−interpretations, parsing syntax, and/or printing syntax.
60−
61−### Hardcoded auras
62−
63−### Cold or warm, single or arbitrary
64−
65−A span is a set of nouns; an `$atom` span contains either one
66−atom (*cold*) or all atoms (a *warm*).
67−
68−In general, the `%` prefix is added to indicate coldness. `42`
69−is warm and `%42` is cold. `@tas` symbols (which start with `%`
70−already, see below) are always cold.
71−
72−### Unsigned integer: `@ud`, `@ux`, `@uw`.
73−
74−Unsigned integers are broken into groups of 3 for decimals, and 4
75−for non-decimals, separated German style by `.`; `420` plus `999`
76−is `1.419`, a `@ud`.
77−
78−A hex (`@ux`) favorite is `0xcafe.babe`.
79−
80−`0w` is base64: `0-9`, `a-z` + 10, `A-Z` + 36, `-` and `~`. For
81−giant numbers, you can put whitespace/newlines after the `.`.
82−
83−### Boolean and null: `@f`, `@n`.
84−
85−Booleans in Hoon (`@f`) are `&` for yes (`@f`) and `|` for no.
86−Remember that `&` is `0` and `|` is `1` (which is why we say
87−"yes" and "no" rather than "true" and "false").
88−
89−Nil (aura `@n`) is `~` (with the value `0`).
90−
91−### Atomic string
92−
93−`'text'` in single quotes, `@t`, is a UTF-8 string LSB first.
94−
95−`%symbol`, `@tas`, containing only `a-z`, `0-9` and `-`, starting
96−with `a-z`, and ending with `a-z0-9`, is a valid symbolic name.
97−
98−`%$` is an empty `@tas`, ie, `0` with span `@tas`.
99−
100−### Signed integer: `@sd`
101−
102−Signed integers (`@sd`) are encoded with sign bit *low*. This
103−means we need a special syntax for positive signed integers,
104−since their atomic value can't be their unsigned value. For
105−example, `-3` is the atom `7`, whereas `--3` encodes to `6`.
106−
107−### Iterative string
108−
109−Hoon also has list-shaped strings (less compact, more editable).
110−Use double quotes: `"hello, world"`. The mold is `tape` or
111−`(list char)`, where `char` is a UTF-8 byte.
112−
113−Within a quoted string, interpolate with `{}`: `"hello, {(weld
114−"wo" "rld")}"`. It's also worth noting that `<`, `gar`, and `>`,
115−`gal` (angle brackets) stringify any twig: `"hello, {<mul 6
116−7>}"`. (Obviously, an interpolated string is not a constant.)
117−
118−### Path
119−
120−The path `/foo/bar/baz` is the constant `[%foo %bar %baz ~]`.
121−A path can be dynamically interpolated with `[]`:
122−
123−```
124−/foo/[:(if & %bar %rab)]/baz`
125−```
126−
127−equals `/foo/bar/baz`.
docs/hoon/twig/atom/base.mddeleted−44
@@ -1,44 +0,0 @@
1−---
2−sort: 1
3−---
4−
5−# `:base`
6−
7−`{$base p/$@(?($noun $cell $bean $null) {$atom p/aura})}`; atom mold
8−
9−## Produces
10−
11−A mold for the base in `p`. `$noun` is any noun; `$atom` is any
12−atom; `$cell` is a cell of nouns; `$bean` is a loobean, `?(`@f`0
13−`@f`1)`. `$null` is zero with aura `@n`.
14−
15−## Syntax
16−
17−Irregular: `*` makes `$noun`, `^` makes `$cell`, `?` makes
18−`$bean`, `$~` makes `$null`, `@aura` makes atom `aura`.
19−
20−## Examples
21−
22−```
23−~zod:dojo> (* %foo)
24−7.303.014
25−~zod:dojo> ($~ 0)
26−~
27−~zod:dojo> (^ 0)
28−^
29−~zod:dojo> (@ux [1 1])
30−0x0
31−```
32−
33−## Conventional auras
34−
35−
36−++ base :: base mold
37− $@ $? $noun :: any noun
38− $cell :: any cell
39− $bean :: loobean
40− $void :: no nouns
41− $null :: ~ == 0
42− == ::
43− {$atom p/aura} :: atom
44− {$base p/base} :: base
docs/hoon/twig/atom/knit.md+30−10
@@ -1,24 +1,44 @@
11---
2−sort: 6
2+sort: 3
3+next: true
34---
45
5−# `:_ :scon "colcab"`
6+# `:knit`
67
7−`{$scon p/seed q/seed}`; construct a cell, inverted.
8+`{$knit p/(list (each @t seed))}`: text string with interpolation.
89
9−### Expands to
10+### Produces
1011
11−```
12−:cons(q p)
13−```
12+A list-shaped string (`tape`) of the items in `p`, which are
13+either constant `@t` multibyte UTF-8 strings (`cord`) or twigs
14+producing a `tape`.
1415
1516### Syntax
1617
17−Regular: *2-fixed*.
18+Irregular: `"foobar"`.
19+
20+Irregular: `"foo{(weld "moo" "baz")}bar"`.
1821
1922### Examples
2023
24+String:
25+
2126```
22−~zod:dojo> :_(1 2)
23−[2 1]
27+~zod:dojo> "hello, world."
28+"hello, world."
29+```
30+
31+String with interpolation:
32+
2433```
34+~zod:dojo> =+(planet="world" "hello, {planet}")`.
35+"hello, %world."
36+```
37+
38+String with interpolated prettyprinting:
39+
40+```
41+~zod:dojo> =+(planet=%world "hello, {<planet>}")`.
42+"hello, %world."
43+```
44+
docs/hoon/twig/atom/path.mdnew file+29
@@ -0,0 +1,29 @@
1+---
2+sort: 4
3+---
4+
5+# `:path`
6+
7+`{$path p/(list (each @ta seed))}`: path with interpolation.
8+
9+### Produces
10+
11+A null-terminated list if of the items in `p`, which are either constant
12+`@ta` atoms (`knot`), or twigs producing a `knot`.
13+
14+### Syntax
15+
16+Irregular: `/foo/bar/baz`.
17+
18+Irregular: `"foo{(weld "moo" "baz")}bar"`.
19+
20+### Examples
21+
22+```
23+~zod/dojo> /foo/bar/baz
24+/foo/bar/baz
25+~zod/dojo> /foo/[`@ta`(cat 3 %moo %bar)]/baz
26+/foo/moobar/baz/
27+~zod:dojo> /
28+~
29+```
docs/hoon/twig/atom/rock.md+11−2
@@ -23,5 +23,14 @@ Irregular: `~`, `@n`, null (`0`).
2323
2424### Examples
2525
26−~zod:dojo>
27−
26+```
27+~zod:dojo> ?? %foobar
28+ [%atom %tas [~ u=125.762.588.864.358]]
29+%foobar
30+~zod:dojo> ?? %'foobar'
31+ [%atom %t [~ u=125.762.588.864.358]]
32+%'foobar'
33+~zod:dojo> ?? 'foobar'
34+ [%atom %t ~]
35+'foobar'
36+```
docs/hoon/twig/bar-core.md+2−4
@@ -13,8 +13,6 @@ section in [`span`](../span) above.) `$core` uses the subject as
1313the payload of a battery, whose arms are compiled with the core
1414itself as the subject.
1515
16−## Twigs
16+## Stems
1717
18−<list dataPreview="true" className="runes" linkToFragments="true"></list>
19−
20−<kids className="runes"></kids>
18+<list dataPreview="true" className="runes"></list>
docs/hoon/twig/bar-core/cab-door.md+3−2
@@ -2,9 +2,10 @@
22sort: 5
33---
44
5−# `:door, |_, "buccab", {$door p/moss q/(map term foot)}`
5+# `:door |_ "buccab"`
66
7−Form a door, a many-armed core with payload `{sample context}`.
7+`{$door p/moss q/(map term foot)}`: form a door, a many-armed core
8+with a sample.
89
910## Expands to
1011
docs/hoon/twig/bar-core/cen-core.md+1−1
@@ -2,7 +2,7 @@
22sort: 1
33---
44
5−# `:core, |%, "barcen", {$core p/(map term foot)}`
5+# `:core |% "barcen"`
66
77Form a core `{battery payload}` with subject as the payload.
88
docs/hoon/twig/bar-core/dot-trap.md+2−2
@@ -2,9 +2,9 @@
22sort: 3
33---
44
5−# `:trap. |., "bardot", {$trap p/seed}`
5+# `:trap. |. "bardot"`
66
7−Form a trap, a core with one arm `$`.
7+`{$trap p/seed}`: form a trap, a core with one arm `$`.
88
99## Expands to
1010
docs/hoon/twig/bar-core/hep-loop.md+2−2
@@ -2,9 +2,9 @@
22sort: 4
33---
44
5−# `:loop, |-, "barhep", {$loop p/seed}`
5+# `:loop |- "barhep"`
66
7−Form a trap (a core with one dry arm `$`) and kick it.
7+`{$loop p/seed}`: form a trap and kick it.
88
99## Expands to
1010
docs/hoon/twig/bar-core/tar-gill.md+3−2
@@ -2,9 +2,10 @@
22sort: 6
33---
44
5−# `:gill, |*, "bartar", {$gill p/moss q/seed}`
5+# `:gill |* "bartar"`
66
7−Form a gill, a wet one-armed core with payload `{sample context}`.
7+`{$gill p/moss q/seed}`: form a gill, a wet one-armed
8+core with sample.
89
910## Expands to
1011
docs/hoon/twig/bar-core/tis-gate.md+2−2
@@ -2,9 +2,9 @@
22sort: 2
33---
44
5−# `:gate, |=, "bartis", {$gate p/moss q/seed}`
5+# `:gate |= "bartis"`
66
7−Form a gate, a dry one-armed core with payload `{sample context}`.
7+`{$gate p/moss q/seed}`: form a gate, a dry one-armed core with sample.
88
99## Expands to
1010
docs/hoon/twig/buc-mold/base.md+1−1
@@ -5,7 +5,7 @@ next: true
55
66# `:base`
77
8−`{$base p/$@(?($noun $cell $bean $null) {$atom p/aura})}`; atom mold
8+`{$base p/$@(?($noun $cell $bean $null) {$atom p/aura})}`: atom mold
99
1010## Produces
1111
docs/hoon/twig/buc-mold/cab-shoe.md+2−2
@@ -2,9 +2,9 @@
22sort: 9
33---
44
5−# `:shoe $_ "buccab" {$shoe p/seed}`
5+# `:shoe $_ "buccab"`
66
7−Form a mold which normalizes to an example.
7+`{$shoe p/seed}`: mold which normalizes to an example.
88
99## Expands to
1010
docs/hoon/twig/buc-mold/cen-book.md+2−2
@@ -3,9 +3,9 @@ sort: 4
33next: true
44---
55
6−# `:book, $%, "buctis", {$book p/(list {{aura @} moss})}`
6+# `:book $% "buctis"`
77
8−Form a mold which normalizes a union distinguished by a head atom.
8+`{$book p/(list {{aura @} moss})}`: mold which recognizes a union tagged by head atom.
99
1010## Normalizes to
1111
docs/hoon/twig/buc-mold/col-bank.md+2−2
@@ -3,9 +3,9 @@ sort: 2
33next: true
44---
55
6−# `:bank, $:, "buccol", {$bank p/(list moss)}`
6+# `:bank $: "buccol"`
77
8−Form a mold which recognizes a tuple.
8+`{$bank p/(list moss)}`: form a mold which recognizes a tuple.
99
1010## Normalizes
1111
docs/hoon/twig/buc-mold/hep-lamb.md+2−2
@@ -3,9 +3,9 @@ sort: 8
33next: true
44---
55
6−# `:lamb, $-, "buchep", {$lamb p/moss q/moss}`
6+# `:lamb $-, "buchep"
77
8−Form a mold which normalizes to an example gate.
8+`{$lamb p/moss q/moss}`: mold which normalizes to an example gate.
99
1010## Expands to
1111
docs/hoon/twig/buc-mold/ket-bush.md+2−2
@@ -3,9 +3,9 @@ sort: 6
33next: true
44---
55
6−# `:bush, $^, "bucket", {$bush p/moss q/moss}`
6+# `:bush $^ "bucket"`
77
8−Form a mold which normalizes a union distinguished by head depth.
8+`{$bush p/moss q/moss}`: mold which normalizes a union tagged by head depth.
99
1010## Normalizes to
1111
docs/hoon/twig/buc-mold/pat-claw.md+3−3
@@ -3,10 +3,10 @@ sort: 5
33next: true
44---
55
6−# `:claw, $@, "bucpat", {$claw p/moss q/moss}`
7−
8−Form a mold which normalizes a union distinguished by depth.
6+# `:claw $@ "bucpat"
97
8+`{$claw p/moss q/moss}`: mold which normalizes a union tagged by depth.
9+
1010## Normalizes to
1111
1212Default, if the sample is an atom; `p`, if the head of the sample
docs/hoon/twig/buc-mold/tis-coat.md+2−2
@@ -3,9 +3,9 @@ sort: 3
33next: true
44---
55
6−# `:coat, $=, "buctis", {$coat p/@tas q/moss}`
6+# `:coat $= "buctis"`
77
8−Form a mold which wraps a face around another mold.
8+`{$coat p/@tas q/moss}`: mold which wraps a face around another mold.
99
1010## Expands to
1111
docs/hoon/twig/buc-mold/wut-pick.md+2−2
@@ -3,9 +3,9 @@ sort: 7
33next: true
44---
55
6−# `:pick, $?, "bucwut", {$? p/(list moss)}`
6+# `:pick $? "bucwut"
77
8−Form a mold which normalizes a general union.
8+`{$pick p/(list moss)}`: mold which normalizes a general union.
99
1010## Normalizes to
1111
docs/hoon/twig/cen-call.md+2−2
@@ -3,13 +3,13 @@ sort: 6
33next: true
44---
55
6−# Make and call (`%` runes)
6+# Make and call, `%`
77
88We've already covered the irregular-only twigs `$wing` and
99`$limb`. These are simple forms of the *invocation* family of
1010twigs, `%`, whose general form is `$make`, `%=`.
1111
12−## Twigs
12+## Stems
1313
1414<list dataPreview="true" className="runes" linkToFragments="true"></list>
1515
docs/hoon/twig/cen-call/cab-keep.md+5−2
@@ -2,13 +2,16 @@
22sort: 2
33---
44
5−# `:keep, %_, centis, {$keep p/wing q/(list (pair wing seed))}`
5+# `:keep %_ "cencab"`
66
7−Take a wing (attribute path) with changes, preserving type.
7+`{$keep p/wing q/(list (pair wing seed))}`: take a wing with changes,
8+preserving type.
89
910## Expands to
1011
12+```
1113:like(p :make(p q))
14+```
1215
1316## Syntax
1417
docs/hoon/twig/cen-call/dot-lace.md+2−2
@@ -2,9 +2,9 @@
22sort: 5
33---
44
5−# `:lace, %., "cendot", {$lace p/seed q/seed}`
5+# `:lace %. "cendot"`
66
7−Call a gate (function), reversed.
7+`{$lace p/seed q/seed}`: call a gate (function), reversed.
88
99## Expands to
1010
docs/hoon/twig/cen-call/hep-call.md+2−2
@@ -2,9 +2,9 @@
22sort: 4
33---
44
5−# `:call, %-, "cenhep", {$call p/seed q/seed}`
5+# `:call %- "cenhep"`
66
7−Call a gate (function).
7+`{$call p/seed q/seed}`: call a gate (function).
88
99## Expands to
1010
docs/hoon/twig/cen-call/ket-calq.md+2−2
@@ -2,9 +2,9 @@
22sort: 7
33---
44
5−# `:calq, %^, "cenket", {$calq p/seed q/seed r/seed s/seed}`
5+# `:calq %^ "cenket"`
66
7−Call a gate (function), with a triple sample.
7+`{$calq p/seed q/seed r/seed s/seed}`: call with triple sample.
88
99## Expands to
1010
docs/hoon/twig/cen-call/lus-calt.md+2−2
@@ -2,9 +2,9 @@
22sort: 6
33---
44
5−# `:calt, %+, "cenlus", {$calt p/seed q/seed r/seed}`
5+# `:calt %+ "cenlus"`
66
7−Call a gate (function), with a cell sample.
7+`{$calt p/seed q/seed r/seed}`: call with pair sample.
88
99## Expands to
1010
docs/hoon/twig/cen-call/sig-open.md+3−1
@@ -2,7 +2,9 @@
22sort: 3
33---
44
5−# `:open, %~, "censig", {$cnsg p/wing q/seed r/seed}
5+# `:open %~ "censig"
6+
7+`{$cnsg p/wing q/seed r/seed}`: call with multi-armed door.
68
79## Expands to
810
docs/hoon/twig/cen-call/tis-make.md+2−2
@@ -2,9 +2,9 @@
22sort: 1
33---
44
5−# `:make, %=, centis, {$make p/wing q/(list (pair wing seed))}`
5+# `:make %= "centis"`
66
7−Take a wing (attribute path) with changes.
7+`{$make p/wing q/(list (pair wing seed))}`: take a wing with changes.
88
99## Produces
1010
docs/hoon/twig/col-cell/hep-cons.md+2−2
@@ -2,9 +2,9 @@
22sort: 1
33---
44
5−# `:cons, :-, "colhep", {$cons p/seed q/seed}`
5+# `:cons :- "colhep"`
66
7−Construct a cell (2-tuple).
7+`{$cons p/seed q/seed}`: construct a cell (2-tuple).
88
99## Produces
1010
docs/hoon/twig/col-cell/ket-conq.md+2−2
@@ -2,9 +2,9 @@
22sort: 3
33---
44
5−# `:conq, :^, "colket", {$conq p/seed q/seed r/seed s/seed}`
5+# `:conq :^ "colket"
66
7−Construct a quadruple (4-tuple).
7+`{$conq p/seed q/seed r/seed s/seed}`: construct a quadruple (4-tuple).
88
99## Expands to
1010
docs/hoon/twig/col-cell/lus-cont.md+2−2
@@ -2,9 +2,9 @@
22sort: 2
33---
44
5−# `:cont, :+, "collus", {$cont p/seed q/seed r/seed}`
5+# `:cont :+ "collus"`
66
7−Construct a triple (3-tuple).
7+`{$cont p/seed q/seed r/seed}`: construct a triple (3-tuple).
88
99## Expands to:
1010
docs/hoon/twig/col-cell/sig-conl.md+2−2
@@ -2,9 +2,9 @@
22sort: 5
33---
44
5−# `:conl, :~, "colsig", {$conl p/(list seed)}`
5+# `:conl :~ "colsig"`
66
7−Construct a null-terminated list.
7+`{$conl p/(list seed)}`: construct a null-terminated list.
88
99## Expands to
1010
docs/hoon/twig/col-cell/tar-conp.md+2−2
@@ -2,9 +2,9 @@
22sort: 4
33---
44
5−# `:conp, :*, "coltar" {$conp p/(list twig)}`
5+# `:conp :* "coltar"`
66
7−Construct an n-tuple.
7+`{$conp p/(list twig)}`: construct an n-tuple.
88
99## Expands to
1010
docs/hoon/twig/dot-nock/ket-wish.md+2−2
@@ -2,9 +2,9 @@
22sort: 5
33---
44
5−# `:wish, .^, "dotket", {$wish p/moss q/seed}`
5+# `:wish .^ "dotket"`
66
7−Load data from the Arvo namespace with Nock `11`.
7+`{$wish p/moss q/seed}`: load from the Arvo namespace with Nock `11`.
88
99## Produces
1010
docs/hoon/twig/dot-nock/lus-bump.md+2−2
@@ -2,9 +2,9 @@
22sort: 3
33---
44
5−# `:bump, .+, "dotlus", {$bump p/seed}`
5+# `:bump .+ "dotlus"`
66
7−Increment an atom with Nock `4`.
7+`{$bump p/seed}`: increment an atom with Nock `4`.
88
99## Produces
1010
docs/hoon/twig/dot-nock/tar-nock.md+2−2
@@ -2,9 +2,9 @@
22sort: 1
33---
44
5−# `:nock, .*, "dottar", {$nock p/seed q/seed}`
5+# `:nock .* "dottar"`
66
7−Compute the Nock function.
7+`{$nock p/seed q/seed}`: evaluate with Nock `2`.
88
99## Produces
1010
docs/hoon/twig/dot-nock/tis-same.md+2−2
@@ -2,9 +2,9 @@
22sort: 4
33---
44
5−# `:same, .=, "dottis", {$same p/seed q/seed}`
5+# `:same .= "dottis"`
66
7−Test for equality with Nock `5`.
7+`{$same p/seed q/seed}`: test for equality with Nock `5`.
88
99## Produces
1010
docs/hoon/twig/dot-nock/wut-deep.md+2−2
@@ -2,9 +2,9 @@
22sort: 2
33---
44
5−# `:deep, .?, "dotwut", {$deep p/seed}`
5+# `:deep .? "dotwut"`
66
7−Test for cell or atom with Nock `3`.
7+`{$deep p/seed}`: test for cell or atom with Nock `3`.
88
99## Produces
1010
docs/hoon/twig/ket-cast/bar-iron.md+2−2
@@ -2,9 +2,9 @@
22sort: 5
33---
44
5−# `:iron ^| "ketbar" {$iron p/seed}`
5+# `:iron ^| "ketbar"
66
7−Convert a gold core to a contravariant core (write-only sample).
7+`{$iron p/seed}`: convert a gold core to an iron core (contravariant).
88
99## Produces
1010
docs/hoon/twig/ket-cast/hep-cast.md+2−2
@@ -2,9 +2,9 @@
22sort: 2
33---
44
5−# `:cast ^- "kethep" {$cast p/moss q/seed}`
5+# `:cast ^- "kethep"`
66
7−Cast by construction (mold).
7+`{$cast p/moss q/seed}`: typecast by mold.
88
99## Expands to
1010
docs/hoon/twig/ket-cast/lus-like.md+2−2
@@ -2,9 +2,9 @@
22sort: 1
33---
44
5−# `:like ^+ "ketlus" {$like p/seed q/seed}`
5+# `:like ^+ "ketlus"
66
7−Cast by example (seed).
7+`{$like p/seed q/seed}`: typecast by example (seed).
88
99## Produces
1010
docs/hoon/twig/ket-cast/pam-zinc.mddeleted

No changes to the content.

docs/hoon/twig/ket-cast/sig-burn.md+18−16
@@ -1,22 +1,24 @@
1−# `:burn`, `^~`, "ketsig", `{$burn p/seed}`
1+---
2+sort: 6
3+---
24
3−Try executing `p` at compile time.
5+# `:burn ^~ "ketsig"
46
5−Tries to execute `p` statically at compile time. If this
6−fails, `p` remains dynamic. Primarily useful for
7−optimization: when a value is static, `^~` can simplify the compilation.
7+`{$burn p/seed}`: fold constant at compile time.
88
9−Regular form *1-fixed*
9+## Produces
1010
11−Examples
12−--------
11+`p`, folded as a constqnt if possible.
1312
14− /~zod:dojo> (make '|-(42)')
15− [%8 p=[%1 p=[1 42]] q=[%9 p=2 q=[%0 p=1]]]
16− /~zod:dojo> (make '^~(|-(42))')
17− [%1 p=42]
13+## Syntax
1814
19−Here we use `++make` to examine the nock generated for a particular
20−computation. We start with a simple kicked trap, `|-`, that just
21−generates the static value `42`. When we wrap our `|-` in a `^~` you can
22−see that our compilation is much simpler.
15+Regular: *1-fixed*.
16+
17+## Examples
18+
19+```
20+~zod:dojo> (make '|-(42)')
21+[%8 p=[%1 p=[1 42]] q=[%9 p=2 q=[%0 p=1]]]
22+~zod:dojo> (make '^~(|-(42))')
23+[%1 p=42]
24+```
docs/hoon/twig/ket-cast/tis-name.md+2−2
@@ -2,9 +2,9 @@
22sort: 3
33---
44
5−# `:name ^= "kettis" {$name p/toga q/seed}`
5+# `:name ^= "kettis"`
66
7−Name a value.
7+`{$name p/toga q/seed}`: name a value.
88
99## Produces
1010
docs/hoon/twig/ket-cast/wut-lead.md+4−3
@@ -2,9 +2,9 @@
22sort: 4
33---
44
5−# `:lead ^? "ketwut" {$lead p/seed}`
5+# `:lead ^? "ketwut"
66
7−Convert any core to a bivariant core (opaque payload).
7+`{$lead p/seed}`: convert any core to a lead core (bivariant).
88
99## Produces
1010
@@ -16,7 +16,8 @@ Regular: *1-fixed*.
1616
1717## Discussion
1818
19−A lead core is an opaque generator.
19+A lead core is an opaque generator; the payload can't be read or
20+written.
2021
2122Theorem: if span `x` nests within span `a`, a lead core producing
2223`x` nests within a lead core producing `a`.
docs/hoon/twig/limb.md+2−84
@@ -18,88 +18,6 @@ environment" is "an object" -- the subject.
1818information from the subject. A `limb` is an attribute; a `wing`
1919is an attribute path, ie, a list of limbs.
2020
21−## Twigs
21+## Stems
2222
23−The limb and wing system, as molds:
24−
25−```
26−++ limb
27− $% {$& p/@ud}
28− {$| p/@ud q/@tas}
29− ==
30−++ wing (list limb)
31−++ twig
32− $% {$limb p/limb}
33− {$wing p/wing}
34− ==
35−```
36−
37−The basic reference twigs are `$limb` and `$wing`. `$limb`
38−is a single reference step into the subject. `$wing` is a path
39−of reference steps.
40−
41−## Limbs and wings
42−
43−A `limb` is either *geometric*, `{$& p/@ud}`, or *symbolic*,
44−`{$| p/@ud q/@tas}`.
45−
46−The result of compiling a limb is either an *arm* or a *leg*. A
47−leg is a subtree of the subject. An arm is a computed attribute
48−on a core which is a subtree of the subject. (See `$core` in
49−[span](../span).)
50−
51−A geometric limb always compiles to a leg. A symbolic limb may
52−compile to an arm or a leg, depending on the subject.
53−
54−### Geometric limb, `{$& p/@ud}`
55−
56−`p` is a Nock tree address in the subject. If you don't know
57−Nock, tree addresses are a way of designating a subtree of a noun
58−with an atom. The root is `1`, the left child of any node `n` is
59−`(mul 2 n)`, the right child is `(add 1 (mul 2 n))`.
60−
61−### Symbolic limb
62−
63−A symbolic limb has a name `q` and a *skip count* `p`.
64−
65−To resolve the limb to arm or leg, we search the subject
66−headfirst and depth-first. If we descend to a `$face` span whose
67−label matches the limb symbol, the descent address is a leg; the
68−span is the span beneath the label. But if the `$face` label
69−differs, the search skips this subtree.
70−
71−If we descend into a `$core` span in which the limb symbol is an
72−arm, we produce that arm. If the limb symbol is not bound, we
73−descend into the payload (data) of the core.
74−
75−If the skip count `p` is nonzero, we pretend our first `p`
76−matches are actually mismatches. This lets the programmer "look
77−through" an overriding label. No label anywhere is inaccessible.
78−
79−### Wing
80−
81−A `wing` is a symbolic reference path, `(list limb)`. Taking a
82−wing is not quite the same as composing each of these limbs,
83−though; the product of a wing is still either an arm or a leg.
84−
85−This is trivial if each step in the wing is a leg. If an
86−intermediate step in a wing compiles to an arm, this arm is
87−rewritten; it becomes a leg to the arm's core.
88−
89−### Syntax
90−
91−All limb references are irregular.
92−
93−A geometric limb `x` is `+x`. `.` means `+1`.
94−
95−A symbolic limb `foo` is `foo`; the symbol is naked. To set a
96−nonzero skip count, use a unary `^` prefix; thus `^foo` skips one
97−match, and `^^^foo` skips three.
98−
99−The empty name `$` is the label whose value is 0. By convention,
100−`$` is always an arm, usually on a one-armed core (such as a
101−function or loop). To take `$` on a noun is to *kick* it.
102−
103−A wing is written outside-in with `.` as a separator. So
104−`foo.bar.baz` is "foo, in bar, in baz." Yes, this is the
105−opposite of what you're used to.
23+<list dataPreview="true" className="runes"></list>
docs/hoon/twig/limb/limb.mdnew file+69
@@ -0,0 +1,69 @@
1+---
2+sort: 1
3+next: true
4+---
5+
6+# `:limb`
7+
8+`{$limb p/(each @ud {p/@ud q/@tas})}`: attribute of subject.
9+
10+### Produces
11+
12+If `p` matches `{$& p/@ud}`, slot `p.p` of the subject.
13+
14+If `p` matches `{$| p/@ud q/@tas}`, the `p`th match for `q`,
15+using the search traverse below.
16+
17+### Syntax
18+
19+Irregular: `+15` is slot `15`, `[%& 15]`.
20+
21+Irregular: `.` is slot `1`, the whole subject.
22+
23+Irregular: `foobar` is `[%| 0 %foobar]`.
24+
25+Irregular: `^^^foobar` is `[%| 3 %foobar]`.
26+
27+### Traverse
28+
29+The search traverse takes a name `q` and a *skip count* `p`.
30+
31+The search product may be an *arm* or a *leg*. A *leg* is a
32+subtree of the subject. An arm defines a Nock formula and a
33+subject leg to compute the result. Logically, a limb is an
34+attribute -- computation or subtree, "synthesized" or "natural"
35+-- of the subject.
36+
37+We search the subject span headfirst, depth-first, and pre-order.
38+If we descend to a `$face` span whose label matches the limb
39+symbol, the descent address is a leg. The span is the span
40+beneath the label. But if the `$face` label differs, the search
41+skips this whole subtree.
42+
43+If we descend into a `$core` span in which the limb symbol is an
44+arm, we produce that arm. If the limb symbol is not bound, we
45+descend into the payload (data) of the core.
46+
47+If the skip count `p` is nonzero, we pretend our first `p`
48+matches are actually mismatches. This lets the programmer "look
49+through" an overriding label. No label anywhere is inaccessible.
50+
51+### Examples
52+
53+The `:dojo` prompt gives you a subject with a decent namespace.
54+Try
55+
56+```
57+~zod:dojo> now
58+~2016.4.25..01.39.59..a0f0
59+```
60+
61+You can also add variables to the subject, then use them. (Note
62+that `=variable value` is not Hoon (language) syntax; it's `:dojo`
63+(shell) syntax.)
64+
65+```
66+~zod:dojo> =foo %bar
67+~zod:dojo> foo
68+%bar
69+```
docs/hoon/twig/limb/wing.mdnew file+49
@@ -0,0 +1,49 @@
1+---
2+sort: 2
3+next: true
4+---
5+
6+# `:wing`
7+
8+`{$wing p/(list limb)`; a limb search path.
9+
10+### Produces
11+
12+If `p` is null, the subject at leg `1`. Otherwise, let `x` be
13+the `$wing` of `t.p`. `x` is either an arm or a leg. We compute
14+limb `i.p` on some subject leg `s`, where:
15+
16+If `x` is a leg/slot number, `s` is `x`.
17+
18+If `x` is an arm/subject-formula pair `[s f]`, `s` is `s.x`.
19+
20+### Syntax
21+
22+Irregular: `a.b` finds limb `a` within limb `b` of the subject.
23+
24+### Discussion
25+
26+It may be slightly hard to follow the formal definition above.
27+
28+Intuitively that Hoon wings are written in the opposite order
29+from attribute dot-paths in most languages. Hoon `a.b.c` is Java
30+`c.b.a`; it means "a within b within c."
31+
32+Any item in the wing can resolve to a leg (fragment) or arm
33+(computation). But if a non-terminal item in the wing would
34+resolve to an arm, it resolves instead to the subject of the arm
35+-- in other words, the core exporting that name.
36+
37+The mysterious idiom `..foo` produces the leg `foo` if `foo`
38+is a leg; the core exporting `foo` if `foo` is an arm. Since `.`
39+is the same limb as `+`, `..foo` is the same wing as `+1.foo`.
40+
41+### Examples
42+
43+```
44+~zod:dojo> =a [foo=3 bar=[baz=1 moo=2]]
45+~zod:dojo> bar.a
46+[baz=1 moo=2]
47+~zod:dojo> moo.bar.a
48+2
49+```
docs/hoon/twig/sem-make/col-wad.md+2−2
@@ -2,9 +2,9 @@
22sort: 3
33---
44
5−# `:wad ;: "semcol" {$wad p/seed q/(list seed)}`
5+# `:wad ;: "semcol"`
66
7−Call binary function as n-ary function.
7+`{$wad p/seed q/(list seed)}`: call a binary function as an n-ary function.
88
99## Expands to
1010
docs/hoon/twig/sem-make/fas-nub.md+2−2
@@ -2,9 +2,9 @@
22sort: 4
33---
44
5−# `:nub ;/ "semfas" {$nub p/seed}`
5+# `:nub ;/ "semfas"`
66
7−Tape as XML element.
7+`{$nub p/seed}`: tape as XML element.
88
99## Expands to
1010
docs/hoon/twig/sem-make/sem-fry.md+2−2
@@ -2,9 +2,9 @@
22sort: 1
33---
44
5−# `:fry ;; "semsem" {$fry p/moss q/seed}`
5+# `:fry ;; "semsem"`
66
7−Normalize with a mold, asserting fixpoint.
7+`{$fry p/moss q/seed}`: normalize with a mold, asserting fixpoint.
88
99## Expands to
1010
docs/hoon/twig/sem-make/sig-dip.md+3−2
@@ -2,9 +2,10 @@
22sort: 2
33---
44
5−# `:dip`, `;~`, "semsig" `{$dip p/seed q/(list seed)}`
5+# `:dip ;~ "semsig"`
66
7−Glue a pipeline together with a product-sample adapter.
7+`{$dip p/seed q/(list seed)}`: glue a pipeline together with a
8+product-sample adapter.
89
910## Produces
1011
docs/hoon/twig/sig-hint/bar-show.md+2−2
@@ -2,9 +2,9 @@
22sort: 2
33---
44
5−# `:show ~| "sigbar" {$show p/seed q/seed}`
5+# `:show ~| "sigbar"`
66
7−Tracing printf.
7+`{$show p/seed q/seed}`: tracing printf.
88
99## Expands to
1010
docs/hoon/twig/sig-hint/buc-poll.md+2−2
@@ -2,9 +2,9 @@
22sort: 12
33---
44
5−# `:poll ~$ "sigbuc" {$poll p/term q/seed}`
5+# `:poll ~$ "sigbuc"`
66
7−Profiling hit counter.
7+`{$poll p/term q/seed}`: profiling hit counter.
88
99## Expands to
1010
docs/hoon/twig/sig-hint/cab-lurk.md+2−2
@@ -2,9 +2,9 @@
22sort: 3
33---
44
5−# `:lurk ~_ "sigcab" {$lurk p/seed q/seed}`
5+# `:lurk ~_ "sigcab"`
66
7−User-formatted tracing printf.
7+`{$lurk p/seed q/seed}`: user-formatted tracing printf.
88
99## Expands to
1010
docs/hoon/twig/sig-hint/cen-fast.md+2−2
@@ -2,9 +2,9 @@
22sort: 10
33---
44
5−# `:fast ~% "sigcen" {$fast p/term q/wing r/(list {term seed}) s/seed}`
5+# `:fast ~% "sigcen"`
66
7−General jet hint.
7+`{$fast p/term q/wing r/(list {term seed}) s/seed}`: jet registration.
88
99## Expands to
1010
docs/hoon/twig/sig-hint/fas-funk.md+3−2
@@ -1,9 +1,10 @@
11---
22sort: 1
33
4−# `:funk ~/ "sigfas" {$funk p/term q/seed}`
4+# `:funk ~/ "sigfas"
55
6−Jet hint for a gate whose context is a registered core.
6+`{$funk p/term q/seed}`: jet registration for gate with
7+registered context.
78
89## Expands to
910
docs/hoon/twig/sig-hint/gal-thin.md+4−3
@@ -2,9 +2,10 @@
22sort: 6
33---
44
5−# :thin ~< "siggal" {$thin p/$@(term {p/term q/seed}) q/seed}
5+# `:thin ~< "siggal"`
66
7−Raw hint, applied to the result of computation.
7+`{$thin p/$@(term {p/term q/seed}) q/seed}`: raw hint, applied to
8+product.
89
910## Expands to
1011
@@ -18,7 +19,7 @@ Regular: *2-fixed*. For the dynamic form, write `%term.twig`.
1819
1920`:thin` is only used for jet hints (`:funk` and `:fast`) at the
2021moment; we are not telling the interpreter something about the
21−computation we're about to perform, but rather about the result.
22+computation we're about to perform, but rather about its product.
2223
2324## Examples
2425
docs/hoon/twig/sig-hint/gar-hint.md+3−2
@@ -2,9 +2,10 @@
22sort: 5
33---
44
5−# `:hint ~> "siggar", {$hint p/$@(term {p/term q/seed}) q/seed}`
5+# `:hint ~> "siggar"`
66
7−Raw hint, applied before computation.
7+`{$hint p/$@(term {p/term q/seed}) q/seed}`: raw hint, applied
8+to computation.
89
910## Expands to
1011
docs/hoon/twig/sig-hint/lus-memo.md+2−2
@@ -2,9 +2,9 @@
22sort: 7
33---
44
5−# :memo ~+ "siglus" {$memo p/seed}`
5+# `:memo ~+ "siglus"`
66
7−Cache a computation.
7+`{$memo p/seed}`: cache a computation.
88
99## Expands to
1010
docs/hoon/twig/sig-hint/pam-dump.md+2−2
@@ -2,9 +2,9 @@
22sort: 1
33---
44
5−# `:dump ~& "sigpam" {$dump p/seed q/seed}`
5+# `:dump ~& "sigpam"`
66
7−Debugging printf.
7+`{$dump p/seed q/seed}`: debugging printf.
88
99## Expands to
1010
docs/hoon/twig/sig-hint/tis-ddup.md+2−2
@@ -2,9 +2,9 @@
22sort: 8
33---
44
5−# `:ddup ~= "sigtis" {$ddup p/seed q/seed}`
5+# `:ddup ~= "sigtis"`
66
7−Detect a duplicate.
7+`{$ddup p/seed q/seed}`: detect duplicate.
88
99## Expands to
1010
docs/hoon/twig/sig-hint/wut-warn.md+2−2
@@ -2,9 +2,9 @@
22sort: 4
33---
44
5−# `:warn ~? "sigwut" `{$warn p/seed q/seed r/seed}`
5+# `:warn ~? "sigwut"`
66
7−Conditional debugging printf.
7+`{$warn p/seed q/seed r/seed}`: conditional debug printf.
88
99## Expands to
1010
docs/hoon/twig/sig-hint/zap-peep.md+2−2
@@ -2,9 +2,9 @@
22sort: 9
33---
44
5−# `:peep ~! "sigzap" {$peep p/seed q/seed}`
5+# `:peep ~! "sigzap"`
66
7−Print type on compilation fail.
7+`{$peep p/seed q/seed}`: print type on compilation fail.
88
99## Expands to
1010
docs/hoon/twig/tis-flow/bar-new.md+2−2
@@ -2,9 +2,9 @@
22sort: 5
33---
44
5−# `:new, =|, "tisbar", {$new p/moss q/seed}`
5+# `:new =| , "tisbar"`
66
7−Combine a defaulted mold with the subject.
7+`{$new p/moss q/seed}`: combine a defaulted mold with the subject.
88
99## Expands to
1010
docs/hoon/twig/tis-flow/col-fix.md+2−2
@@ -2,9 +2,9 @@
22sort: 9
33---
44
5−# `:fix, =:, "tiscol", {$fix p/(list (pair wing seed)) q/seed}`
5+# `:fix =: "tiscol"`
66
7−Mutate multiple legs in the subject.
7+`{$fix p/(list (pair wing seed)) q/seed}`: change multiple legs in the subject.
88
99## Expands to
1010
docs/hoon/twig/tis-flow/dot-set.md+2−2
@@ -2,9 +2,9 @@
22sort: 8
33---
44
5−# `:set, =., "tisdot", {$set p/wing q/seed r/seed}`
5+# `:set =. "tisdot"`
66
7−Mutate a leg in the subject.
7+`{$set p/wing q/seed r/seed}`: change one leg in the subject.
88
99## Expands to
1010
docs/hoon/twig/tis-flow/fas-var.md+3−2
@@ -2,9 +2,10 @@
22sort: 6
33---
44
5−# `:var, =/, "tisfas", {$var p/taco q/seed r/seed}`
5+# `:var =/ "tisfas"`
66
7−Combine a named and/or typed noun with the subject.
7+`{$var p/taco q/seed r/seed}`: combine a named and/or typed
8+noun with the subject.
89
910## Expands to
1011
docs/hoon/twig/tis-flow/gal-rap.md+2−2
@@ -2,9 +2,9 @@
22sort: 2
33---
44
5−# `:rap, =<, "tisgal", {$rap p/seed q/seed}`
5+# `:rap =< "tisgal"`
66
7−Compose two twigs, inverted.
7+`{$rap p/seed q/seed}`: compose two twigs, inverted.
88
99## Expands to
1010
docs/hoon/twig/tis-flow/gar-per.md+2−2
@@ -2,9 +2,9 @@
22sort: 1
33---
44
5−# `:per, =>, "tisgar", {$per p/seed q/seed}`
5+# `:per => "tisgar"`
66
7−Compose two twigs.
7+`{$per p/seed q/seed}`: compose two twigs.
88
99## Produces
1010
docs/hoon/twig/tis-flow/hep-nip.md+2−2
@@ -2,9 +2,9 @@
22sort: 4
33---
44
5−# `:nip, =-, "tishep", {$pin p/seed q/seed}`
5+# `:nip =- "tishep"`
66
7−Combine a new noun with the subject, inverted.
7+`{$pin p/seed q/seed}`: combine a new noun with the subject, inverted.
88
99## Expands to
1010
docs/hoon/twig/tis-flow/ket-sip.md+3−2
@@ -2,9 +2,10 @@
22sort: 10
33---
44
5−# `:sip, =^, "tisket", {$sip p/taco q/wing r/seed s/seed}`
5+# `:sip =^ "tisket"`
66
7−Pin the head of a pair; mutate a leg with the tail.
7+`{$sip p/taco q/wing r/seed s/seed}`: pin the head of a pair; change
8+a leg with the tail.
89
910## Expands to
1011
docs/hoon/twig/tis-flow/lus-pin.md+2−2
@@ -2,9 +2,9 @@
22sort: 3
33---
44
5−# `:pin, =+, "tislus", {$pin p/seed q/seed}`
5+# `:pin =+ "tislus"
66
7−Combine a new noun with the subject.
7+`{$pin p/seed q/seed}`: combine a new noun with the subject.
88
99## Expands to
1010
docs/hoon/twig/tis-flow/sem-rev.md+3−2
@@ -2,9 +2,10 @@
22sort: 7
33---
44
5−# `:rev, =;, "tissem", {$rev p/taco q/seed r/seed}`
5+# `:rev =; "tissem"`
66
7−Combine a named and/or typed noun with the subject, inverted.
7+`{$rev p/taco q/seed r/seed}`: combine a named and/or typed noun with the
8+subject, inverted.
89
910## Expands to
1011
docs/hoon/twig/tis-flow/tar-aka.md+2−2
@@ -2,9 +2,9 @@
22sort: 11
33---
44
5−# `:aka, =*, "tistar", {$aka p/term q/seed r/seed}`
5+# `:aka =* "tistar"`
66
7−Define an alias.
7+`{$aka p/term q/seed r/seed}`: define an alias.
88
99## Produces
1010
docs/hoon/twig/wut-test/bar-or.md+2−2
@@ -2,9 +2,9 @@
22sort: 9
33---
44
5−# `:or`, `?|`, "wutbar" `{$or p/(list seed)}`
5+# `:or ?| "wutbar"`
66
7−Logical or.
7+`{$or p/(list seed)}`: logical or.
88
99## Expands to
1010
docs/hoon/twig/wut-test/col-if.md+2−2
@@ -2,9 +2,9 @@
22sort: 1
33---
44
5−# `:if, ?:, "wutcol", `{$if p/seed q/seed r/seed}`
5+# `:if ?: "wutcol"`
66
7−Branch on a boolean test.
7+`{$if p/seed q/seed r/seed}`: branch on a boolean test.
88
99## Produces
1010
docs/hoon/twig/wut-test/dot-lest.md+2−2
@@ -2,9 +2,9 @@
22sort: 2
33---
44
5−# `:lest`, `?.`, "wutdot" `{$lest p/seed q/seed r/seed}`
5+# `:lest ?. "wutdot"`
66
7−Branch on a boolean test, inverted.
7+`{$lest p/seed q/seed r/seed}`: branch on a boolean test, inverted.
88
99## Expands to
1010
docs/hoon/twig/wut-test/gal-deny.md+2−2
@@ -2,9 +2,9 @@
22sort: 10
33---
44
5−# `:deny, ?<, "wutgal", {$deny p/seed q/seed}`
5+# `:deny ?< "wutgal"`
66
7−Negative assertion.
7+`{$deny p/seed q/seed}`: negative assertion.
88
99## Expands to
1010
docs/hoon/twig/wut-test/gar-sure.md+2−2
@@ -2,9 +2,9 @@
22sort: 11
33---
44
5−# `:sure, ?<, "wutgar", {$sure p/seed q/seed}`
5+# `:sure ?< "wutgar"
66
7−Positive assertion.
7+`{$sure p/seed q/seed}`: positive assertion.
88
99## Expands to
1010
docs/hoon/twig/wut-test/hep-case.md+3−2
@@ -2,9 +2,10 @@
22sort: 12
33---
44
5−# `:case, ?-, "wuthep", {$case p/wing q/(list (pair moss seed))}`
5+# `:case ?- "wuthep"`
66
7−Switch against a union, with no default.
7+`{$case p/wing q/(list (pair moss seed))}` Switch against a
8+union, with no default.
89
910## Expands to
1011
docs/hoon/twig/wut-test/ket-ifcl.md+3−2
@@ -2,9 +2,10 @@
22sort: 5
33---
44
5−# `:ifcl, ?^, "wutket", {$ifcl p/wing q/seed r/seed}`
5+# `:ifcl ?^ "wutket"`
66
7−Branch on whether a wing of the subject is null.
7+`{$ifcl p/wing q/seed r/seed}`: branch on whether a wing
8+of the subject is null.
89
910## Expands to
1011
docs/hoon/twig/wut-test/lus-deft.md+3−2
@@ -2,9 +2,10 @@
22sort: 13
33---
44
5−# `:deft, ?-, "wutlus", {$case p/wing q/seed r/(list (pair moss seed))}`
5+# `:deft ?- "wutlus"`
66
7−Switch against a union, with a default.
7+`{$case p/wing q/seed r/(list (pair moss seed))}`: switch against
8+a union, with a default.
89
910## Expands to
1011
docs/hoon/twig/wut-test/pam-and.md+2−2
@@ -2,9 +2,9 @@
22sort: 8
33---
44
5−# `:and, ?&, "wutpam", {$and p/(list seed)}`
5+# `:and ?& "wutpam"
66
7−Logical and.
7+`{$and p/(list seed)}`: logical and.
88
99## Expands to
1010
docs/hoon/twig/wut-test/pat-ifat.md+3−2
@@ -2,9 +2,10 @@
22sort: 4
33---
44
5−# `:ifat, ?@, "wutpat", {$ifat p/wing q/seed r/seed}`
5+# `:ifat ?@ "wutpat"`
66
7−Branch on whether a wing of the subject is an atom.
7+`{$ifat p/wing q/seed r/seed}`: branch on whether a wing
8+of the subject is an atom.
89
910## Expands to
1011
docs/hoon/twig/wut-test/sig-ifno.md+3−2
@@ -2,9 +2,10 @@
22sort: 3
33---
44
5−# `ifno`, `?~`, "wutsig" `{$ifno p/wing q/seed r/seed}`
5+# `:ifno ?~ "wutsig"`
66
7−Branch on whether a wing of the subject is null.
7+`{$ifno p/wing q/seed r/seed}`: branch on whether a wing
8+of the subject is null.
89
910## Expands to
1011
docs/hoon/twig/wut-test/tis-fits.md+2−2
@@ -2,9 +2,9 @@
22sort: 6
33---
44
5−# `:fits, ?=, "wuttis", {$fits p/moss q/wing}
5+# `:fits ?= "wuttis"
66
7−Test whether the noun at wing `q` fits pattern `p`.
7+`{$fits p/moss q/wing}`: test pattern match.
88
99## Produces
1010
docs/hoon/twig/wut-test/zap-not.md+2−2
@@ -2,9 +2,9 @@
22sort: 7
33---
44
5−# `:not, ?!, "wutzap", {$not p/seed}`
5+# `:not ?! "wutzap"`
66
7−Logical not.
7+`{$not p/seed}`: logical not.
88
99## Expands to
1010
docs/hoon/twig/zap-wild/.gar-wrap.md.swpnew file

Binary file not shown.

docs/hoon/twig/zap-wild/.tis-code.md.swpnew file

Binary file not shown.

docs/hoon/twig/zap-wild/.wut-need.md.swpnew file

Binary file not shown.

docs/hoon/twig/zap-wild/.zap-fail.md.swpnew file

Binary file not shown.

docs/hoon/twig/zap-wild/gar-wrap.md+2−2
@@ -2,9 +2,9 @@
22sort: 2
33---
44
5−# `:wrap !> "zapgar" {$wrap p/seed}`
5+# `:wrap !> "zapgar"`
66
7−Wrap a noun in its span.
7+`{$wrap p/seed}`: wrap a noun in its span.
88
99## Produces
1010
docs/hoon/twig/zap-wild/tis-code.md+2−2
@@ -2,9 +2,9 @@
22sort: 3
33---
44
5−# `:code != "zaptis" {$code p/seed}`
5+# `:code != "zaptis"`
66
7−Make the Nock formula for a twig.
7+`{$code p/seed}`: make the Nock formula for a twig.
88
99## Produces
1010
docs/hoon/twig/zap-wild/wut-need.md+2−2
@@ -2,9 +2,9 @@
22sort: 4
33---
44
5−# `:need !? "zapwut" {$need p/@ q/seed}`
5+# `:need !? "zapwut"`
66
7−Restrict Hoon version.
7+`{$need p/@ q/seed}`: restrict Hoon version.
88
99## Produces
1010
docs/hoon/twig/zap-wild/zap-fail.md+2−2
@@ -2,9 +2,9 @@
22sort: 1
33---
44
5−# `:fail, !! "zapzap" {$fail $~}`
5+# `:fail !! "zapzap"`
66
7−Crash.
7+`{$fail $~}`: crash.
88
99## Produces
1010