on master help sign in
Merge branch 'reorg' of github.com:urbit/docs into reorg
42fdcbaGalen Wolfe-Pauly
docs.md+1−1
@@ -9,4 +9,4 @@ anchor: none
9
9
10<div class="sections lead-offset">
10<div class="sections lead-offset">
11 <kids></kids>
11 <kids></kids>
12−</div>
12+</div>
docs/orientation/repo-guide.md+12−8
@@ -10,14 +10,14 @@ The `urbit` repo can look a little confusing at first. Here we'll take a look a
10
10
11If you `ls urb/zod` from inside the urbit repo you should see something like:
11If you `ls urb/zod` from inside the urbit repo you should see something like:
12
12
13− app
13+ app/
14− arvo
14+ arvo/
15− gen
15+ gen/
16− lib
16+ lib/
17− mar
17+ mar/
18− ren
18+ ren/
19− sur
19+ sur/
20− web
20+ web/
21 web.md
21 web.md
22
22
23Let's step through directory by directory.
23Let's step through directory by directory.
@@ -104,3 +104,7 @@ Default web requets in urbit are handled as a `.urb`, which is caught by the `ur
104
104
105There are the files publicly accessible to the web, as made possible by `%eyre`.
105There are the files publicly accessible to the web, as made possible by `%eyre`.
106
106
107+## `web.md`
108+
109+This is the homepage for your urbit. You'll see it at `http://localhost:8080/` or `http://your-urbit.urbit.org/`
110+
docs/setup/install.md+1−7
@@ -19,13 +19,7 @@ cloud virtual machines (Amazon or Digital Ocean), the default
19memory configuration is smaller than this, and you need to
19memory configuration is smaller than this, and you need to
20manually configure a swapfile.
20manually configure a swapfile.
21
21
22−To add swap to a DO droplet:
23−
24−https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04
25−
26−To add swap on an Amazon instance:
27−
28−http://stackoverflow.com/questions/17173972/how-do-you-add-swap-to-an-ec2-instance
22+Digital Ocean has a post on adding swap [here](https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04). For Amazon there's a StackOverflow thread [here](http://stackoverflow.com/questions/17173972/how-do-you-add-swap-to-an-ec2-instance).
29
23
30Don't spend a lot of time tweaking these settings; the simplest
24Don't spend a lot of time tweaking these settings; the simplest
31thing is fine.
25thing is fine.
docs/system/hoon/cheet-sheets.md → docs/system/hoon/cheat-sheets.mdrenamed+4
@@ -1,3 +1,7 @@
1+---
2+sort: 3
3+---
4+
1Quick references
5Quick references
2================
6================
3
7
docs/system/hoon/library.md+4−3
@@ -1,7 +1,8 @@
1+---
2+sort: 2
3+---
4+
1Library
5Library
2========
6========
3
7
4<list dataPreview="true" titlesOnly="true"></list>
8<list dataPreview="true" titlesOnly="true"></list>
5−
6−
7−<search/>
docs/system/hoon/library/0.md+2−2
@@ -1,5 +1,5 @@
1−volume 0, Kelvin Versioning.
1+0 Kelvin Versioning
2−===========================
2+===================
3
3
4### `++hoon`
4### `++hoon`
5
5
docs/system/hoon/library/1.md+7−3
@@ -1,7 +1,9 @@
1−volume 1, Hoon Structures
1+1 Hoon Structures
2−=========================
2+=================
3
3
4−------------------------------------------------------------------------
4+<toc noHeader="true" match="h3" preview="p"></toc>
5+
6+<div id="toc">
5
7
6### `++abel`
8### `++abel`
7
9
@@ -2235,3 +2237,5 @@ See also: `++ju`, `++by`, `++map`, `++set`
2235 {[p=%a q={1 2}] [p=%b q={5 4 3}]}
2237 {[p=%a q={1 2}] [p=%b q={5 4 3}]}
2236
2238
2237------------------------------------------------------------------------
2239------------------------------------------------------------------------
2240+
2241+</div>
docs/system/hoon/library/2a.md+2−2
@@ -1,5 +1,5 @@
1−2a - basic unsigned math
1+2a basic unsigned math
2−========================
2+======================
3
3
4### `++add`
4### `++add`
5
5
docs/system/hoon/library/2b.md+2−2
@@ -1,5 +1,5 @@
1−chapter 2b, basic containers
1+2b basic containers
2−============================
2+===================
3
3
4Section 2bA, units
4Section 2bA, units
5------------------
5------------------
docs/system/hoon/library/2c.md+2−2
@@ -1,5 +1,5 @@
1−chapter 2c, simple noun surgery
1+2c simple noun surgery
2−===============================
2+======================
3
3
4section 2cA, bit surgery
4section 2cA, bit surgery
5------------------------
5------------------------
docs/system/hoon/library/2da.md+2−2
@@ -1,5 +1,5 @@
1−section 2dA, sets
1+2dA sets
2−=================
2+========
3
3
4### `++apt`
4### `++apt`
5
5
docs/system/hoon/library/2db.md+2−2
@@ -1,5 +1,5 @@
1−section 2dB, maps
1+2dB maps
2−=================
2+========
3
3
4### `++ept`
4### `++ept`
5
5
docs/system/hoon/library/2dc.md+2−2
@@ -1,5 +1,5 @@
1−section 2dC, queues
1+2dC queues
2−===================
2+==========
3
3
4### `++to`
4### `++to`
5
5
docs/system/hoon/library/2dd.md+2−2
@@ -1,5 +1,5 @@
1−section 2dD, casual containers
1+2dD casual containers
2−==============================
2+=====================
3
3
4### `++mo`
4### `++mo`
5
5
docs/system/hoon/library/2ea.md+2−2
@@ -1,5 +1,5 @@
1−section 2eA, packing
1+2eA packing
2−====================
2+===========
3
3
4### `++cue`
4### `++cue`
5
5
docs/system/hoon/library/2eb.md+2−2
@@ -1,5 +1,5 @@
1−section 2eB, parsing (tracing)
1+2eB parsing (tracing)
2−==============================
2+=====================
3
3
4### `++last`
4### `++last`
5
5
docs/system/hoon/library/2ec.md+2−2
@@ -1,5 +1,5 @@
1−section 2eC, parsing (custom rules)
1+2eC parsing (custom rules)
2−===================================
2+==========================
3
3
4### `++cold`
4### `++cold`
5
5
docs/system/hoon/library/2ed.md+2−2
@@ -1,5 +1,5 @@
1−section 2eD
1+2eD parsing (combinators)
2−===========
2+=========================
3
3
4### `++bend`
4### `++bend`
5
5
docs/system/hoon/library/2ee.md+2−2
@@ -1,5 +1,5 @@
1−section 2ee, parsing (composers)
1+2ee parsing (composers)
2−================================
2+=======================
3
3
4### `++bass`
4### `++bass`
5
5
docs/system/hoon/library/2ef.md+2−2
@@ -1,5 +1,5 @@
1−section 2eF, parsing (ascii)
1+2eF parsing (ascii)
2−============================
2+===================
3
3
4### `++ace`
4### `++ace`
5
5
docs/system/hoon/library/2eg.md+2−2
@@ -1,5 +1,5 @@
1−section 2eG, parsing (whitespace)
1+2eG parsing (whitespace)
2−=================================
2+========================
3
3
4### `++dog`
4### `++dog`
5
5
docs/system/hoon/library/2eh.md+2−2
@@ -1,5 +1,5 @@
1−section 2eH, parsing (idioms)
1+2eH parsing (idioms)
2−=============================
2+====================
3
3
4### `++alf`
4### `++alf`
5
5
docs/system/hoon/library/2ei.md+2−2
@@ -1,5 +1,5 @@
1−section 2eI, parsing (external)
1+2eI parsing (external)
2−===============================
2+======================
3
3
4### `++rash`
4### `++rash`
5
5
docs/system/hoon/library/2ej.md+2−2
@@ -1,5 +1,5 @@
1−section 2eJ, formatting (basic text)
1+2eJ formatting (basic text)
2−====================================
2+===========================
3
3
4### `++cass`
4### `++cass`
5
5
docs/system/hoon/library/2ek.md+2−2
@@ -1,5 +1,5 @@
1−section 2eK, formatting (layout)
1+2eK formatting (layout)
2−================================
2+=======================
3
3
4### `++re`
4### `++re`
5
5
docs/system/hoon/library/2el.md+2−2
@@ -1,5 +1,5 @@
1−section 2eL, formatting (path)
1+2eL formatting (path)
2−==============================
2+=====================
3
3
4### `++ab`
4### `++ab`
5
5
docs/system/hoon/library/2em.md+2−2
@@ -1,5 +1,5 @@
1−section 2eM, regular-expressions
1+2eM regular-expressions
2−================================
2+=======================
3
3
4### `++pars`
4### `++pars`
5
5
docs/system/hoon/library/2en.md+2−2
@@ -1,5 +1,5 @@
1−section 2eN, pseudo-cryptography
1+2eN pseudo-cryptography
2−================================
2+=======================
3
3
4### `++un`
4### `++un`
5
5
docs/system/hoon/library/2eo.md+2−2
@@ -1,5 +1,5 @@
1−section 2eO, virtualization
1+2eO virtualization
2−===========================
2+==================
3
3
4### `++mack`
4### `++mack`
5
5
docs/system/hoon/library/2ep.md+2−2
@@ -1,5 +1,5 @@
1−section 2eP, diff
1+2eP diff
2−=================
2+========
3
3
4A- more or less low priority and/or currently in the wrong section
4A- more or less low priority and/or currently in the wrong section
5anyway.
5anyway.
docs/system/hoon/library/2ew.md+2−2
@@ -1,5 +1,5 @@
1−section 2eW, lite number theory
1+2eW lite number theory
2−===============================
2+======================
3
3
4### `++egcd`
4### `++egcd`
5
5
docs/system/hoon/library/2ex.md+2−2
@@ -1,5 +1,5 @@
1−section 2eX, jetted crypto
1+2eX jetted crypto
2−==========================
2+=================
3
3
4------------------------------------------------------------------------
4------------------------------------------------------------------------
5
5
docs/system/hoon/library/2ey.md+2−2
@@ -1,5 +1,5 @@
1−section 2eY, SHA-256
1+2eY SHA-256
2−====================
2+===========
3
3
4### `++shad`
4### `++shad`
5
5
docs/system/hoon/library/2ez.md+2−2
@@ -1,5 +1,5 @@
1−section 2eZ, OLD rendering
1+2eZ OLD rendering
2−==========================
2+=================
3
3
4### `++show`
4### `++show`
5
5
docs/system/hoon/library/3ba.md+2−2
@@ -1,5 +1,5 @@
1−section 3bA, lite number theory
1+3bA lite number theory
2−===============================
2+======================
3
3
4### `++fu`
4### `++fu`
5
5
docs/system/hoon/library/3bb.md+2−2
@@ -1,5 +1,5 @@
1−section 3bB, cryptosuites
1+3bB cryptosuites
2−=========================
2+================
3
3
4### `++crua`
4### `++crua`
5
5
docs/system/hoon/library/3bc.md+2−2
@@ -1,5 +1,5 @@
1−section 3bC, Gregorian UTC
1+3bC Gregorian UTC
2−==========================
2+=================
3
3
4### `++dawn`
4### `++dawn`
5
5
docs/system/hoon/library/3bd.md+2−2
@@ -1,5 +1,5 @@
1−section 3bD, JSON and XML
1+3bD JSON and XML
2−=========================
2+================
3
3
4### `++moon`
4### `++moon`
5
5
docs/system/hoon/library/3be.md+2−2
@@ -1,5 +1,5 @@
1−section 3bE, tree sync
1+3bE tree sync
2−======================
2+=============
3
3
4### `++invert-miso`
4### `++invert-miso`
5
5
docs/system/hoon/library/3bf.md+2−2
@@ -1,5 +1,5 @@
1−section 3bF, filesystem interface
1+3bF filesystem interface
2−=================================
2+========================
3
3
4### `++feel`
4### `++feel`
5
5
docs/system/hoon/library/3bg.md+2−2
@@ -1,5 +1,5 @@
1−section 3bG, URL handling
1+3bG URL handling
2−=========================
2+================
3
3
4### `++deft`
4### `++deft`
5
5
docs/system/hoon/library/3bh.md+2−2
@@ -1,5 +1,5 @@
1−section 3bH, names etc
1+3bH names etc
2−======================
2+=============
3
3
4### `++clan`
4### `++clan`
5
5
docs/system/hoon/library/3bi.md+2−2
@@ -1,5 +1,5 @@
1−section 3bI, Arvo models
1+3bI Arvo models
2−========================
2+===============
3
3
4### `++acru`
4### `++acru`
5
5
docs/system/hoon/runes.md+81−123
@@ -1,126 +1,84 @@
1+---
2+sort: 1
3+---
4+
1Runes
5Runes
2=====
6=====
3
7
4−In Hoon there are no reserved words. Instead, [`++twigs`]() (abstract
8+#### Hoon has no reserved words. Instead we use ASCII pairs we call runes.
5−syntax trees), are formed using a diagraph of two ASCII symbols, which
9+
6−is called a rune.
10+#### This is the complete index.
7−
11+
8−Runes are loosely divided into categories by their first character. To
12+<div class="book">
9−find documentation on each individual category, follow these links:
13+
10−
14+## `$ buc` (molds)
11−<list></list>
15+
12−
16+<list dataPath="docs/system/hoon/runes/bc" dataPreview="true" className="runes" childIsFragment="true"></list>
13−------------------------------------------------------------------------
17+
14−
18+---
15−Introduction
19+
16−------------
20+## `| bar` (cores)
17−
21+
18−For example, the rune `?:`, pronounced "wutcol", is a rune that accepts
22+<list dataPath="docs/system/hoon/runes/br" dataPreview="true" className="runes" childIsFragment="true"></list>
19−three `++twig` expressions to form an "if-then-else statement," where
23+
20−`p` is the predicate, `q` is the "then" statement, and `r` is the "else"
24+---
21−statement:
25+
22−
26+## `: col` (tuples)
23− [%wtcl p=twig q=twig r=twig]
27+
24−
28+<list dataPath="docs/system/hoon/runes/cl" dataPreview="true" className="runes" childIsFragment="true"></list>
25−In a program, it is used like so:
29+
26−
30+---
27− ++ add
31+
28− |= [a=@ b=@]
32+## `% cen` (invocations)
29− ^- @
33+
30− ?: =(0 a) b
34+<list dataPath="docs/system/hoon/runes/cn" dataPreview="true" className="runes" childIsFragment="true"></list>
31− $(a (dec a), b +(b))
35+
32−
36+---
33−Here the `=(0 a)` is `p`, the `b` is `q`, and the bottom line is the
37+
34−`r`.
38+## `. dot` (nock)
35−
39+
36−There are several benefits to using runes in lieu of reserved words.
40+<list dataPath="docs/system/hoon/runes/dt" dataPreview="true" className="runes" childIsFragment="true"></list>
37−First, it prevents the programmer from accidentally misusing a reserved
41+
38−word as a variable name, which also allows her to be sure that any word
42+---
39−in her progam is an identifier. Next, as the first ASCII symbol of the
43+
40−rune digraphs bears semantic significance, the programmer can look at
41−any rune and immediately have a basic, intuitive understanding as to
42−what it does.
43−
44−Next, rune syntax addresses several issues that arise in other
45−languages. First, it produces cleaner, less verbose code that
46−conveniently flows downward. To highlight the verbosity Hoon avoids by
47−implementing runes, here is the C equivalent of the `++add` source code
48−printed above:
49−
50− attribute add {
51− function(left-operand: atom, right-operand: atom)
52− produce atom
53− if equals(0, left-operand) {
54− right-operand
55− } else {
56− recurse(left-operand (decrement left-operand)),
57− right-operand (increment right-operand))
58− }
59− }
60−
61−What is more, Hoon solves two problems that arise in functional
62−programming languages with very deep expression trees: first, the
63−collection of huge piles of closing parens at the end of large blocks;
64−and second, the fact that the depth of expression trees are thus bounded
65−by the width of the text box, as subexpressions tend to be indented.
66−Some languages solve the bracket-terminator problem by parsing
67−whitespace in order to use indentation to express tree depth:
68−
69− ?:
70− &
71− 47
72− 52
73−
74−While this is actually valid Hoon, it does not solve the width problem.
75−
76−To address this problem, most Hoon `++twigs` have a short, fixed
77−fan-out. Thus, the parser does not need significant whitespace nor a
78−terminator to determine how many twigs follow a `?:`--it already knows
79−that the answer is three. A smart parser allows the Hoon programmer to
80−format her code using a [backstep pattern]() that allows her to descend
81−into a deep tree without losing right margin.
82−
83−Lastly, but perhaps most significantly, code is meant to be seen, and
84−not read. Anyone who has even slight experience coding Hoon will tell
85−you that they can understand and connect with properly formatted Hoon
86−code on a deeper, more intuitive level that cannot be explained but must
87−be experienced. One doesn't read `++add`, she sees it.
88−
89−Names and Categories
90−--------------------
91−
92−While the second glyph in a rune means little or nothing, the first
93−defines a rough semantic category:
94−
95− | bar Core construction
96− $ buc Tile construction
97− % cen Invocations
98− : col Tuple construction
99− . dot Nock operations
100− # hax Pretty printing
44+## `# hax` (printing)
101− ^ ket Type conversions
45+
102− ; sem Composers (and XML generators)
46+<list dataPath="docs/system/hoon/runes/hx" dataPreview="true" className="runes" childIsFragment="true"></list>
103− ~ sig Hints
47+
48+---
49+
50+## `^ ket` (casting)
51+
52+<list dataPath="docs/system/hoon/runes/kt" dataPreview="true" className="runes" childIsFragment="true"></list>
53+
54+---
55+
56+## `~ sig` (hints)
57+
58+<list dataPath="docs/system/hoon/runes/sg" dataPreview="true" className="runes" childIsFragment="true"></list>
59+
60+---
61+
62+## `; sem` (composition)
63+
64+<list dataPath="docs/system/hoon/runes/sm" dataPreview="true" className="runes" childIsFragment="true"></list>
65+
66+---
67+
104− = tis Subject modifiers
68+## `= tis` (subject modifiers)
105− ? wut Conditionals, booleans, and tests
69+
106− ! zap Special operations
70+<list dataPath="docs/system/hoon/runes/ts" dataPreview="true" className="runes" childIsFragment="true"></list>
107−
71+
108−As shown above, each glyph has its own monosyllabic name, designed to be
72+---
109−pronounced quickly in combination with another glyph to form a rune
73+
110−name. As languages are often read-aloud, this saves the programmer from
74+## `? wut` (conditional)
111−having to say "dollar sign, question mark"--"bucwut" is much more
75+
112−compact.
76+<list dataPath="docs/system/hoon/runes/wt" dataPreview="true" className="runes" childIsFragment="true"></list>
113−
77+
114−Irregular pronuncations
78+---
115−-----------------------
79+
116−
80+## `! zap` (special)
117−To avoid a few tongue-twisters, some runes have irregular pronunciations
81+
118−that should be noted:
82+<list dataPath="docs/system/hoon/runes/zp" dataPreview="true" className="runes" childIsFragment="true"></list>
119−
83+
120− -- hephep phep
84+</div>
121− +- lushep slep
122− ++ luslus slus
123− == tistis stet
124−
125−Note: these runes are not members of any of the categories above, but
126−are mostly used to....
docs/system/hoon/runes/bc.mdnew file+11
@@ -0,0 +1,11 @@
1+---
2+sort: 2
3+---
4+
5+# `$ buc` (molds)
6+
7+##### Molds are types, but we don't have types.
8+
9+<list dataPath="docs/system/hoon/runes/bc" dataPreview="true" className="runes" linkToFragments="true"></list>
10+
11+<kids dataPath="docs/system/hoon/runes/bc" className="runes"></kids>
docs/system/hoon/runes/bc/bcbr.md+3−3
@@ -1,7 +1,7 @@
1−`$|`
1+`$| bucbar`
2−====
2+===========
3
3
4−Union between atom and cell
4+Union between atom and cell.
5
5
6[mold]() that's a union of an atom `p` and cell `q`.
6[mold]() that's a union of an atom `p` and cell `q`.
7`$|` is similar to [`$?`](), but is more strict in that in
7`$|` is similar to [`$?`](), but is more strict in that in
docs/system/hoon/runes/bc/bccb.md+3−3
@@ -1,7 +1,7 @@
1−`$_`
1+`$_ buccab`
2−====
2+===========
3
3
4−Unbunt (create mold from example)
4+Unbunt (create mold from example).
5
5
6Uses a [++twig]() `p` to produce a [mold]() for the type (span)
6Uses a [++twig]() `p` to produce a [mold]() for the type (span)
7of `p`. The validator function has a default value of `p`. Used
7of `p`. The validator function has a default value of `p`. Used
docs/system/hoon/runes/bc/bccl.md+3−3
@@ -1,7 +1,7 @@
1−`$:`
1+`$: buccol`
2−====
2+===========
3
3
4−Tuple of molds
4+Tuple of molds.
5
5
6Produces
6Produces
7--------
7--------
docs/system/hoon/runes/bc/bccn.md+2−2
@@ -1,7 +1,7 @@
1−`$%`
1+`$% buccen`
2====
2====
3
3
4−Tagged union
4+Tagged union.
5
5
6Produces a [mold]() of a tagged union of a list of case pairs.
6Produces a [mold]() of a tagged union of a list of case pairs.
7
7
docs/system/hoon/runes/bc/bcls.md+3−3
@@ -1,7 +1,7 @@
1−`$+`
1+`$+ buclus`
2−====
2+===========
3
3
4−Type of function (type signature)
4+Type of function (type signature).
5
5
6Produces a [mold]() for a function that accepts `p` and produces `q`. Used when we want to use the type of a function that we do not want to compute.
6Produces a [mold]() for a function that accepts `p` and produces `q`. Used when we want to use the type of a function that we do not want to compute.
7
7
docs/system/hoon/runes/bc/bcpm.md+3−3
@@ -1,7 +1,7 @@
1−`$&`
1+`$& bucpam`
2−====
2+===========
3
3
4−Union of two cells: one w/cellular head & other w/atomic head
4+Union of two cells: one w/cellular head & other w/atomic head.
5
5
6Produces a [mold]() that's a union between two different kinds of noun: a cell whose head is a cell (`p`), and cell whose head is an atom (`q`). Its default value ([bunt]()) is the value of `q`. One important use of `$&` is to implement autocons in [`++twig`]().
6Produces a [mold]() that's a union between two different kinds of noun: a cell whose head is a cell (`p`), and cell whose head is an atom (`q`). Its default value ([bunt]()) is the value of `q`. One important use of `$&` is to implement autocons in [`++twig`]().
7
7
docs/system/hoon/runes/bc/bctr.md+3−3
@@ -1,7 +1,7 @@
1−`$*`
1+`$* buctar`
2−====
2+===========
3
3
4−Bunt (default value)
4+Bunt (default value).
5
5
6Produces the default value ([bunt]()) of [mold]() `p`. Does so as a compile-time constant if possible. If not possible, then it is produced dynamically.
6Produces the default value ([bunt]()) of [mold]() `p`. Does so as a compile-time constant if possible. If not possible, then it is produced dynamically.
7
7
docs/system/hoon/runes/bc/bcts.md+3−3
@@ -1,7 +1,7 @@
1−`$=`
1+`$= buctis`
2−====
2+===========
3
3
4−Add variable name
4+Add variable name.
5
5
6Wraps a [++face]() around another [mold](). Used primarily to add variable names to values.
6Wraps a [++face]() around another [mold](). Used primarily to add variable names to values.
7
7
docs/system/hoon/runes/bc/bcwt.md+3−3
@@ -1,7 +1,7 @@
1−`$?`
1+`$? bucwut`
2−====
2+===========
3
3
4−Union of types
4+Union of types.
5
5
6Produce a union between a non-empty list of [mold]()s `p`. The default value ([bunt]()) is the value of the first element.
6Produce a union between a non-empty list of [mold]()s `p`. The default value ([bunt]()) is the value of the first element.
7
7
docs/system/hoon/runes/br.mdnew file+11
@@ -0,0 +1,11 @@
1+---
2+sort: 1
3+---
4+
5+# `| bar` (cores)
6+
7+##### Cores are sort of like objects, but not quite.
8+
9+<list dataPath="docs/system/hoon/runes/br" dataPreview="true" className="runes" linkToFragments="true"></list>
10+
11+<kids dataPath="docs/system/hoon/runes/br" className="runes"></kids>
docs/system/hoon/runes/br/brcb.md+7−3
@@ -1,7 +1,11 @@
1−`|_`
1+---
2−====
2+sort: 7
3+---
3
4
5+`|_ barcab`
6+===========
7+
4−Door: core with sample (input values)
8+Door: core with sample (input values).
5
9
6Similar to [`|%`](), but also takes input data (aka [sample]())
10Similar to [`|%`](), but also takes input data (aka [sample]())
7available within the entire core. Cores of this type are called doors.
11available within the entire core. Cores of this type are called doors.
docs/system/hoon/runes/br/brcn.md+7−3
@@ -1,7 +1,11 @@
1−`|%`
1+---
2−====
2+sort: 1
3+---
3
4
5+`|% barcen`
6+===========
7+
4−Generic core
8+Generic core.
5
9
6Constructs a generic core with n named expressions, closed with `--`. Cores are
10Constructs a generic core with n named expressions, closed with `--`. Cores are
7similar to an object with named properties (aka [arms]()) that can contain either functions or data. Accepts both [dry or `%elm`]() and [wet or `%ash`]() arms.
11similar to an object with named properties (aka [arms]()) that can contain either functions or data. Accepts both [dry or `%elm`]() and [wet or `%ash`]() arms.
docs/system/hoon/runes/br/brdt.md+7−3
@@ -1,7 +1,11 @@
1−`|.`
1+---
2−====
2+sort: 3
3+---
3
4
5+`|. bardot`
6+===========
7+
4−Trap: `|=` with no argument & not called automatically
8+Trap: `|=` with no argument & not called automatically.
5
9
6Similar to `|=` except that it takes no arguments and is not automatically
10Similar to `|=` except that it takes no arguments and is not automatically
7called (you must activate it with the irregular wideform of `%-`, which is
11called (you must activate it with the irregular wideform of `%-`, which is
docs/system/hoon/runes/br/brfs.md+7−3
@@ -1,7 +1,11 @@
1−`|/`
1+---
2−====
2+sort: 8
3+---
3
4
5+`|/ barfas`
6+===========
7+
4−`|_` with well typed output
8+`|_` with well typed output.
5
9
6Similar to `|_` except that it takes and produces well-typed output. XX
10Similar to `|_` except that it takes and produces well-typed output. XX
7
11
docs/system/hoon/runes/br/brhp.md+7−3
@@ -1,7 +1,11 @@
1−`|-`
1+---
2−====
2+sort: 4
3+---
3
4
5+`|- barhep`
6+===========
7+
4−Trap: automatically called function with no arguments
8+Trap: automatically called function with no arguments.
5
9
6A function with no arguments that's automatically called when constructed. More specifically, it produces a [dry]() [%gold]() [core]() whose single [arm]() [$]() (the empty name) is automatically called when the core is constructed. Similar to creating and calling an anonymous function and is quite commonly used for loops or recursion.
10A function with no arguments that's automatically called when constructed. More specifically, it produces a [dry]() [%gold]() [core]() whose single [arm]() [$]() (the empty name) is automatically called when the core is constructed. Similar to creating and calling an anonymous function and is quite commonly used for loops or recursion.
7
11
docs/system/hoon/runes/br/brkt.md+6−2
@@ -1,5 +1,9 @@
1+---
2+sort: 6
3+---
4+
1−`|^`
5+`|^ barket`
2−====
6+===========
3
7
4Same as `|-` except that it can contain internal arms.
8Same as `|-` except that it can contain internal arms.
5
9
docs/system/hoon/runes/br/brls.md+7−3
@@ -1,7 +1,11 @@
1−`|+`
1+---
2−====
2+sort: 9
3+---
3
4
5+`|+ barlus`
6+===========
7+
4−Function with unreadable sample
8+Function with unreadable sample.
5
9
6`|+` is a synthetic rune that produces a [dry]() [`%iron`]() function
10`|+` is a synthetic rune that produces a [dry]() [`%iron`]() function
7with argument (aka [sample]()) [`$*(p)`]() and [arm]()s `q`. `|+` is similar to `|=`, but differs in that its input (sample) cannot be read and thus cannot interfere with the type system.
11with argument (aka [sample]()) [`$*(p)`]() and [arm]()s `q`. `|+` is similar to `|=`, but differs in that its input (sample) cannot be read and thus cannot interfere with the type system.
docs/system/hoon/runes/br/brtr.md+7−3
@@ -1,7 +1,11 @@
1−`|*`
1+---
2−====
2+sort: 10
3+---
3
4
5+`|* bartar`
6+===========
7+
4−Wet function
8+Wet function.
5
9
6Similar to `|=` except that it does type checking at
10Similar to `|=` except that it does type checking at
7call time, and that the product type is checked to be the same as
11call time, and that the product type is checked to be the same as
docs/system/hoon/runes/br/brts.md+7−3
@@ -1,7 +1,11 @@
1−`|=`
1+---
2−====
2+sort: 2
3+---
3
4
5+`|= bartis`
6+===========
7+
4−Function with argument(s)
8+Function with argument(s).
5
9
6`|=`, is a synthetic rune that produces a [dry]() [`%gold`]() gate with
10`|=`, is a synthetic rune that produces a [dry]() [`%gold`]() gate with
7sample [`$*(p)`](), arm `q`. A gate is a core with one arm, [`$`](), the
11sample [`$*(p)`](), arm `q`. A gate is a core with one arm, [`$`](), the
docs/system/hoon/runes/br/brwt.md+7−3
@@ -1,7 +1,11 @@
1−`|?`
1+---
2−====
2+sort: 5
3+---
3
4
5+`|? barwut`
6+===========
7+
4−`|-` with hidden context
8+`|-` with hidden context.
5
9
6Similar to `|-` except for that the [sample]() and
10Similar to `|-` except for that the [sample]() and
7[context]() of the core being passed is hidden in order to avoid
11[context]() of the core being passed is hidden in order to avoid
docs/system/hoon/runes/cl.mdnew file+11
@@ -0,0 +1,11 @@
1+---
2+sort: 3
3+---
4+
5+# `: col` (tuples)
6+
7+##### Tuples are easy.
8+
9+<list dataPath="docs/system/hoon/runes/cl" dataPreview="true" className="runes" linkToFragments="true"></list>
10+
11+<kids dataPath="docs/system/hoon/runes/cl" className="runes"></kids>
docs/system/hoon/runes/cl/clcb.md+3−3
@@ -1,7 +1,7 @@
1−`:_`
1+`:_ colcab`
2−====
2+===========
3
3
4−Inverted tuple of `p` `q`
4+Inverted tuple of `p` `q`.
5
5
6Exists for code readability and organization. See the [backstep]() convention.
6Exists for code readability and organization. See the [backstep]() convention.
7
7
docs/system/hoon/runes/cl/clfs.md+3−3
@@ -1,7 +1,7 @@
1−`:/`
1+`:/ colfas`
2−====
2+===========
3
3
4−String to XML XX
4+String to XML XX.
5
5
6`:/`, `colfas`, is a synthetic rune that produces `[%$ [%$ p ~] ~]`,
6`:/`, `colfas`, is a synthetic rune that produces `[%$ [%$ p ~] ~]`,
7i.e., `[0 [0 p 0] 0]`.
7i.e., `[0 [0 p 0] 0]`.
docs/system/hoon/runes/cl/clhp.md+3−3
@@ -1,7 +1,7 @@
1−`:-`
1+`:- colhep`
2−====
2+===========
3
3
4−Tuple of two
4+Tuple of two.
5
5
6Produces
6Produces
7--------
7--------
docs/system/hoon/runes/cl/clkt.md+3−3
@@ -1,7 +1,7 @@
1−`:^`
1+`:^ colket`
2−====
2+===========
3
3
4−Tuple of four
4+Tuple of four.
5
5
6Produces
6Produces
7--------
7--------
docs/system/hoon/runes/cl/clls.md+3−3
@@ -1,7 +1,7 @@
1−`:+`
1+`:+ collus`
2−====
2+===========
3
3
4−Tuple of 3
4+Tuple of 3.
5
5
6Produces
6Produces
7--------
7--------
docs/system/hoon/runes/cl/clsg.md+3−3
@@ -1,7 +1,7 @@
1−`:~`
1+`:~ colsig`
2−====
2+===========
3
3
4−Null-terminated tuple of n elements
4+Null-terminated tuple of n elements.
5
5
6Closed with `==`.
6Closed with `==`.
7
7
docs/system/hoon/runes/cl/cltr.md+3−3
@@ -1,7 +1,7 @@
1−`:*`
1+`:* coltar`
2−====
2+===========
3
3
4−Tuple of n elements
4+Tuple of n elements.
5
5
6Closed with `==`.
6Closed with `==`.
7
7
docs/system/hoon/runes/cn.mdnew file+11
@@ -0,0 +1,11 @@
1+---
2+sort: 4
3+---
4+
5+# `% cen` (invocations)
6+
7+##### Calls, but not.
8+
9+<list dataPath="docs/system/hoon/runes/cn" dataPreview="true" className="runes" linkToFragments="true"></list>
10+
11+<kids dataPath="docs/system/hoon/runes/cn" className="runes"></kids>
docs/system/hoon/runes/cn/cncb.md+3−3
@@ -1,7 +1,7 @@
1−`%_`
1+`%_ cencab`
2−====
2+===========
3
3
4−`%=`, but product cast to `p`
4+`%=`, but product cast to `p`.
5
5
6The same as [`%=`](), except for that the product is cast
6The same as [`%=`](), except for that the product is cast
7back to the type of `p`. Evaluates `p` with the changes specified in `q`, then casts the product back to the type of `p`. `%_` is used to change a batch of [`++wing`]()s all at once, ensuring that the resulting product is type checked.
7back to the type of `p`. Evaluates `p` with the changes specified in `q`, then casts the product back to the type of `p`. `%_` is used to change a batch of [`++wing`]()s all at once, ensuring that the resulting product is type checked.
docs/system/hoon/runes/cn/cndt.md+3−3
@@ -1,7 +1,7 @@
1−`%.`
1+`%. cendot`
2−====
2+===========
3
3
4−Inverted function call
4+Inverted function call.
5
5
6Inverts the order of [`%-`](), so the argument is the first
6Inverts the order of [`%-`](), so the argument is the first
7element and the second element is the function. Exists primarily
7element and the second element is the function. Exists primarily
docs/system/hoon/runes/cn/cnhp.md+3−3
@@ -1,7 +1,7 @@
1−`%-`
1+`%- cenhep`
2−====
2+===========
3
3
4−Call function w/one argument
4+Call function w/ one argument.
5
5
6Call function with one argument. Has an irregular wideform syntax: `(function[arg0 arg1...])`, which can takes n arguments enclosed within the `()`. Note
6Call function with one argument. Has an irregular wideform syntax: `(function[arg0 arg1...])`, which can takes n arguments enclosed within the `()`. Note
7that one can also pass a tall form (or wide form) function called with `%-` a tuple with `n` elements for functions that require more than one argument.
7that one can also pass a tall form (or wide form) function called with `%-` a tuple with `n` elements for functions that require more than one argument.
docs/system/hoon/runes/cn/cnkt.md+3−3
@@ -1,7 +1,7 @@
1−`%^`
1+`%^ cenket`
2−====
2+===========
3
3
4−Call function w/three arguments
4+Call function w/ three arguments.
5
5
6Calls the one arm ([$]()) from the [door]() `p` with its [sample]() set to `[%cntr q r s]`. `%^` in the most common case simply calls `p` with `q`, `r`and `s` as its arguments.
6Calls the one arm ([$]()) from the [door]() `p` with its [sample]() set to `[%cntr q r s]`. `%^` in the most common case simply calls `p` with `q`, `r`and `s` as its arguments.
7
7
docs/system/hoon/runes/cn/cnls.md+3−3
@@ -1,7 +1,7 @@
1−`%+`
1+`%+ cenlus`
2−====
2+===========
3
3
4−Call function w/two arguments
4+Call function w/ two arguments.
5
5
6Calls the one arm ([$]()) from the [door]() `p` with its [sample]() set to `[%cntr q r]`.
6Calls the one arm ([$]()) from the [door]() `p` with its [sample]() set to `[%cntr q r]`.
7
7
docs/system/hoon/runes/cn/cnsg.md+3−3
@@ -1,7 +1,7 @@
1−`%~`
1+`%~ censig`
2−====
2+===========
3
3
4−Call arm in door w/argument
4+Call arm in door w/ argument.
5
5
6Evaluates the expression addressed at `p` within core
6Evaluates the expression addressed at `p` within core
7`q` whose input data ([sample]()) is set to `r`. Used frequently with
7`q` whose input data ([sample]()) is set to `r`. Used frequently with
docs/system/hoon/runes/cn/cntr.md+4−4
@@ -1,9 +1,9 @@
1−centar, `%*`, %cntr
1+`%* centar`
2−============================
2+===========
3
3
4−`%~` call arm from [door]() w/context changes
4+`%~` call arm from door w/ context changes.
5
5
6−The same as `%~` but can make changes anywhere in the [context](), not just within the input data ([sample]()). Evaluates the expression `p` within core `q` with changes `r` to the context.
6+The same as `%~` but can make changes anywhere in the context, not just within the input data (sample). Evaluates the expression `p` within core `q` with changes `r` to the context.
7
7
8Produces
8Produces
9--------
9--------
docs/system/hoon/runes/cn/cnts.md+3−3
@@ -1,7 +1,7 @@
1−`%=`
1+`%= centis`
2−====
2+===========
3
3
4−Eval `p` w/changes
4+Eval `p` w/ changes.
5
5
6Evaluates `p` with the changes specified in `q`, where `q` is a list of addresses ([`++wing`]())s followed by the values that will replace whatever value currently lies at that address. Makes the changes all at once to ensure that the product type is checked.
6Evaluates `p` with the changes specified in `q`, where `q` is a list of addresses ([`++wing`]())s followed by the values that will replace whatever value currently lies at that address. Makes the changes all at once to ensure that the product type is checked.
7
7
docs/system/hoon/runes/dt.mdnew file+11
@@ -0,0 +1,11 @@
1+---
2+sort: 5
3+---
4+
5+# `. dot` (nock)
6+
7+##### Run some nock.
8+
9+<list dataPath="docs/system/hoon/runes/dt" dataPreview="true" className="runes" linkToFragments="true"></list>
10+
11+<kids dataPath="docs/system/hoon/runes/dt" className="runes"></kids>
docs/system/hoon/runes/dt/dtkt.md+3−3
@@ -1,7 +1,7 @@
1−`.^`
1+`.^ dotket`
2−====
2+===========
3
3
4−Nock 11
4+Nock 11.
5
5
6Generates nock operator `11`, which--in virtual userspace
6Generates nock operator `11`, which--in virtual userspace
7nock, [`++mock`]()--loads a file from the global namespace, [%clay]().
7nock, [`++mock`]()--loads a file from the global namespace, [%clay]().
docs/system/hoon/runes/dt/dtls.md+3−3
@@ -1,7 +1,7 @@
1−`.+`
1+`.+ dotlus`
2−====
2+===========
3
3
4−Increments an atom
4+Increments an atom.
5
5
6`.+` is a natural rune that generates nock operator `4`, which
6`.+` is a natural rune that generates nock operator `4`, which
7increments an operand that's an atom.
7increments an operand that's an atom.
docs/system/hoon/runes/dt/dttr.md+3−3
@@ -1,7 +1,7 @@
1−`.*`
1+`.* dottar`
2−====
2+===========
3
3
4−Compute nock
4+Compute nock.
5
5
6Computes nock expressions. Runs nock formula `q` on
6Computes nock expressions. Runs nock formula `q` on
7nock subject `p`.
7nock subject `p`.
docs/system/hoon/runes/dt/dtts.md+3−3
@@ -1,7 +1,7 @@
1−`.=`
1+`.= dottis`
2−====
2+===========
3
3
4−Test equality
4+Test equality.
5
5
6Nock operator 5: tests two nouns `p` and `q` for equality, producing a boolean.
6Nock operator 5: tests two nouns `p` and `q` for equality, producing a boolean.
7
7
docs/system/hoon/runes/dt/dtwt.md+3−3
@@ -1,7 +1,7 @@
1−`.?`
1+`.? dotwut`
2−====
2+===========
3
3
4−Test if noun is cell or atom
4+Test if noun is cell or atom.
5
5
6Nock operator 3: tests whether a noun is a cell or an
6Nock operator 3: tests whether a noun is a cell or an
7atom, producing true if it is the former and false if the latter.
7atom, producing true if it is the former and false if the latter.
docs/system/hoon/runes/dt/dtzy.md+3−3
@@ -1,7 +1,7 @@
1−[dotzay, %dtzy](#dttr)
1+`dotzay`
2−======================
2+========
3
3
4−Odored atom
4+Odored atom.
5
5
6`dotzay` is a natural rune that produces a non-cubed atomic constant of
6`dotzay` is a natural rune that produces a non-cubed atomic constant of
7odor `p` and value `q`. `dotzay` is never used explicitly, but always
7odor `p` and value `q`. `dotzay` is never used explicitly, but always
docs/system/hoon/runes/dt/dtzz.md+3−3
@@ -1,7 +1,7 @@
1−dotzaz, %dtzz
1+`dotzaz`
2−======================
2+========
3
3
4−Cube
4+Cube.
5
5
6`dotzaz` is a natural rune that produces a cubed noun constant of value
6`dotzaz` is a natural rune that produces a cubed noun constant of value
7`q` and odor `p`, if `q` is an atom. A cube is an atom whose type
7`q` and odor `p`, if `q` is an atom. A cube is an atom whose type
docs/system/hoon/runes/hx.mdnew file+11
@@ -0,0 +1,11 @@
1+---
2+sort: 6
3+---
4+
5+# `# hax` (printing)
6+
7+##### Want to print something? Fine.
8+
9+<list dataPath="docs/system/hoon/runes/hx" dataPreview="true" className="runes" linkToFragments="true"></list>
10+
11+<kids dataPath="docs/system/hoon/runes/hx" className="runes"></kids>
docs/system/hoon/runes/hx/hxgl.md+3−3
@@ -1,7 +1,7 @@
1−haxgal, `#<`, %hxgl
1+`#< haxgal`
2−============================
2+===========
3
3
4−Prettyprint string [`++tape`]()
4+Prettyprint string `++tape`.
5
5
6`#<` is a synthetic rune that calls the function [`++noah`]() with argument `p`. Used to produce a [`++tape`]() of the expression passed to it, and
6`#<` is a synthetic rune that calls the function [`++noah`]() with argument `p`. Used to produce a [`++tape`]() of the expression passed to it, and
7is only used in the irregular form.
7is only used in the irregular form.
docs/system/hoon/runes/hx/hxgr.md+3−3
@@ -1,7 +1,7 @@
1−haxgar, `#>`, %hxgr
1+`#> haxgar`
2−============================
2+===========
3
3
4−Prettyprint `++tank`
4+Prettyprint `++tank`.
5
5
6`#>`, `haxgar`, `[%hxgr p=tusk]`is a synthetic rune that slams the
6`#>`, `haxgar`, `[%hxgr p=tusk]`is a synthetic rune that slams the
7assumed gate `cain` on `[%zpgr %cntr p]`.
7assumed gate `cain` on `[%zpgr %cntr p]`.
docs/system/hoon/runes/kt.mdnew file+11
@@ -0,0 +1,11 @@
1+---
2+sort: 7
3+---
4+
5+# `^ ket` (casting)
6+
7+##### Go ahead, recast that.
8+
9+<list dataPath="docs/system/hoon/runes/kt" dataPreview="true" className="runes" linkToFragments="true"></list>
10+
11+<kids dataPath="docs/system/hoon/runes/kt" className="runes"></kids>
docs/system/hoon/runes/kt/ktbr.md+3−3
@@ -1,7 +1,7 @@
1−`^|`
1+`^| ketbar`
2−====
2+===========
3
3
4−Make core context unreadable
4+Make core context unreadable.
5
5
6Converts a core to a core whose [context]() is unreadable. Useful in
6Converts a core to a core whose [context]() is unreadable. Useful in
7preventing type fails when replacing one core with one context
7preventing type fails when replacing one core with one context
docs/system/hoon/runes/kt/ktdt.md+3−3
@@ -1,7 +1,7 @@
1−`^.`
1+`^. ketdot`
2−====
2+===========
3
3
4−Cast `q` to product type of `p`
4+Cast `q` to product type of `p`.
5
5
6Casts `q` to the product of calling `p` on `q`. The same
6Casts `q` to the product of calling `p` on `q`. The same
7as casting `q` to the product type of `p`. Useful when you want
7as casting `q` to the product type of `p`. Useful when you want
docs/system/hoon/runes/kt/kthp.md+3−3
@@ -1,7 +1,7 @@
1−`^-`
1+`^- kethep`
2−====
2+===========
3
3
4−Cast
4+Cast.
5
5
6Casts `q` to the [span]() of `p`. The same as `^+`, except for that `q` is actually cast to the bunt of `q` (`$,(q)`). The easiest way to make a basic cast. Used when you already have already created a validator function ([mold]()) for a span.
6Casts `q` to the [span]() of `p`. The same as `^+`, except for that `q` is actually cast to the bunt of `q` (`$,(q)`). The easiest way to make a basic cast. Used when you already have already created a validator function ([mold]()) for a span.
7
7
docs/system/hoon/runes/kt/ktls.md+3−3
@@ -1,7 +1,7 @@
1−`^+`
1+`^+ ketlus`
2−====
2+===========
3
3
4−Cast `q` to an unbunted `p`
4+Cast `q` to an unbunted `p`.
5
5
6Casts `q` to the type of `p`, verifying that it contains
6Casts `q` to the type of `p`, verifying that it contains
7the type of `q`. Similar to `^+`, but doesn't bunt `p`. Used to
7the type of `q`. Similar to `^+`, but doesn't bunt `p`. Used to
docs/system/hoon/runes/kt/ktpm.md+3−3
@@ -1,7 +1,7 @@
1−ketpam, `^&`, %ktpm
1+`^& ketpam`
2−============================
2+===========
3
3
4−Convert `%gold` to `%zinc`
4+Convert `%gold` to `%zinc`.
5
5
6`^&` is a natural rune that converts a `%gold` core into a `%zinc` core.
6`^&` is a natural rune that converts a `%gold` core into a `%zinc` core.
7At present, `%zinc` cores are not commonly used.
7At present, `%zinc` cores are not commonly used.
docs/system/hoon/runes/kt/ktsg.md+3−3
@@ -1,7 +1,7 @@
1−`^~`
1+`^~ ketsig`
2−====
2+===========
3
3
4−Try executing `p` at compile time
4+Try executing `p` at compile time.
5
5
6Tries to execute `p` statically at compile time. If this
6Tries to execute `p` statically at compile time. If this
7fails, `p` remains dynamic. Primarily useful for
7fails, `p` remains dynamic. Primarily useful for
docs/system/hoon/runes/kt/ktts.md+2−2
@@ -1,5 +1,5 @@
1−`^=`
1+`^= kettis`
2−====
2+===========
3
3
4Wraps a variable name around a value.
4Wraps a variable name around a value.
5
5
docs/system/hoon/runes/kt/ktwt.md+4−2
@@ -1,5 +1,7 @@
1−ketwut, `^?`, %ktwt
1+`^? ketwut`
2−============================
2+===========
3+
4+Convert `%gold` to `%lead`.
3
5
4Used to convert a [core]() whose context is unreadable (aka
6Used to convert a [core]() whose context is unreadable (aka
5a %gold core) to a core both of whose context and sample are
7a %gold core) to a core both of whose context and sample are
docs/system/hoon/runes/sg.mdnew file+11
@@ -0,0 +1,11 @@
1+---
2+sort: 8
3+---
4+
5+# `~ sig` (hints)
6+
7+##### Give the compiler a little help.
8+
9+<list dataPath="docs/system/hoon/runes/sg" dataPreview="true" className="runes" linkToFragments="true"></list>
10+
11+<kids dataPath="docs/system/hoon/runes/sg" className="runes"></kids>
docs/system/hoon/runes/sg/sgbc.md+3−3
@@ -1,7 +1,7 @@
1−`~$`
1+`~$ sigbuc`
2−====
2+===========
3
3
4−Label for profiling
4+Label for profiling.
5
5
6Labels computation `q` as `p` for profiling.
6Labels computation `q` as `p` for profiling.
7
7
docs/system/hoon/runes/sg/sgbr.md+3−3
@@ -1,7 +1,7 @@
1−`~|`
1+`~| sigbar`
2−====
2+===========
3
3
4−`p` in stack trace if `q` crashes
4+`p` in stack trace if `q` crashes.
5
5
6Presents the product of `p` in the stack trace if `q` crashes. `p` is only
6Presents the product of `p` in the stack trace if `q` crashes. `p` is only
7evaluated if `q` crashes.
7evaluated if `q` crashes.
docs/system/hoon/runes/sg/sgcb.md+3−3
@@ -1,7 +1,7 @@
1−`~_`
1+`~_ sigcab`
2−====
2+===========
3
3
4−Pre-formatted stackframe into stacktrace
4+Pre-formatted stackframe into stacktrace.
5
5
6Inserts pre-formatted stackframe `p` into the stacktrace of `q`.
6Inserts pre-formatted stackframe `p` into the stacktrace of `q`.
7In hoon terminology, inserts `p`, a [trap]() producing a [++`tank`]() (pretty printed text), in the trace of `q`.
7In hoon terminology, inserts `p`, a [trap]() producing a [++`tank`]() (pretty printed text), in the trace of `q`.
docs/system/hoon/runes/sg/sgcn.md+3−3
@@ -1,7 +1,7 @@
1−`~%`
1+`~% sigcen`
2−====
2+===========
3
3
4−Register jet
4+Register jet.
5
5
6Registers a jet in core `s` so that it can be called when that code is run.
6Registers a jet in core `s` so that it can be called when that code is run.
7
7
docs/system/hoon/runes/sg/sgfs.md+3−3
@@ -1,7 +1,7 @@
1−`~/`
1+`~/ sigfas`
2−====
2+===========
3
3
4−XX
4+XX.
5
5
6`~/` is a synthetic rune that implements one common case - a function arm in
6`~/` is a synthetic rune that implements one common case - a function arm in
7a [book](), i.e. a library function - of the [`~%`]() [jet]() hint. Assumes the parent axis is `7` and that there are no children.
7a [book](), i.e. a library function - of the [`~%`]() [jet]() hint. Assumes the parent axis is `7` and that there are no children.
docs/system/hoon/runes/sg/sggl.md+3−3
@@ -1,7 +1,7 @@
1−`~<`
1+`~< siggal`
2−====
2+===========
3
3
4−Hint to product
4+Hint to product.
5
5
6`~<` is a synthetic rune that applies arbitrary [hint]() `p` to the
6`~<` is a synthetic rune that applies arbitrary [hint]() `p` to the
7product of `q`. `~<` is similar to `~>`, but computes `q` before
7product of `q`. `~<` is similar to `~>`, but computes `q` before
docs/system/hoon/runes/sg/sggr.md+2−2
@@ -1,5 +1,5 @@
1−`~>`
1+`~> siggar`
2−====
2+===========
3
3
4Arbitrary hint
4Arbitrary hint
5
5
docs/system/hoon/runes/sg/sgls.md+3−3
@@ -1,7 +1,7 @@
1−`~+`
1+`~+ siglus`
2−====
2+===========
3
3
4−Memoize computation
4+Memoize computation.
5
5
6Hints to the interpreter to memoize (cache) the computation of `p`.
6Hints to the interpreter to memoize (cache) the computation of `p`.
7
7
docs/system/hoon/runes/sg/sgpm.md+4−4
@@ -1,9 +1,9 @@
1−sigpam, `~&`, %sgpm
1+`~& sigpam`
2−============================
2+===========
3
3
4−PrintF
4+Printf.
5
5
6−'PrintF' or 'log' in other languages. Often used for debugging.
6+'Printf' or 'log' in other languages. Often used for debugging.
7
7
8More specifically in hoon terminology, prints `q` on the console
8More specifically in hoon terminology, prints `q` on the console
9before computing `r`. `p` is the log priority, 0-3 defaulting to 0. `~&`
9before computing `r`. `p` is the log priority, 0-3 defaulting to 0. `~&`
docs/system/hoon/runes/sg/sgts.md+3−3
@@ -1,7 +1,7 @@
1−`~=`
1+`~= sigtis`
2−====
2+===========
3
3
4−Hint to avoid duplication
4+Hint to avoid duplication.
5
5
6Hints to the interpreter that `q` may produce a noun equal to the
6Hints to the interpreter that `q` may produce a noun equal to the
7already existing `p` in order to avoid storing the same noun twice.
7already existing `p` in order to avoid storing the same noun twice.
docs/system/hoon/runes/sg/sgwt.md+3−3
@@ -1,7 +1,7 @@
1−`~?`
1+`~? sigwut`
2−====
2+===========
3
3
4−PrintF if `q` true
4+PrintF if `q` true.
5
5
6Same as `~&` except for that `r` is printed to the console if and only
6Same as `~&` except for that `r` is printed to the console if and only
7if `q` evaluates to true.
7if `q` evaluates to true.
docs/system/hoon/runes/sg/sgzp.md+3−3
@@ -1,7 +1,7 @@
1−sigzap, `~!`, %sgzp
1+`~! sigzap`
2−============================
2+===========
3
3
4−Print type on compilation fail
4+Print type on compilation fail.
5
5
6`~!` is a natural rune for debugging uses only, semantically equivalent
6`~!` is a natural rune for debugging uses only, semantically equivalent
7to [`++twig`] `q`. If compilation fails within `q`, `~!` will show the
7to [`++twig`] `q`. If compilation fails within `q`, `~!` will show the
docs/system/hoon/runes/sm.md+7−38
@@ -1,42 +1,11 @@
1−<div class="short">
1+---
2+sort: 10
3+---
2
4
3−`sem ; %sem`
5+# `; sem` (composition)
4−============
5
6
6−Composition
7+##### Compose at will.
7−-----------
8
8
9−The `;` runes are used for composition. They are all synthetic.
9+<list dataPath="docs/system/hoon/runes/sm" dataPreview="true" className="runes" linkToFragments="true"></list>
10
10
11−There are three categories of `;` runes.
11+<kids dataPath="docs/system/hoon/runes/sm" className="runes"></kids>
12−
13−</div>
14−
15−#### Gate composers
16−
17−[`;:`]() Applies a binary gate to multiple arguments.
18−
19−[`;~`]() Uses a monad to compose multiple gates, producing a gate of a similar type.
20−
21−[`;;`]() Composes a [clam]() with a value, slamming the value through
22−the clam and forcefully verifying that it is unchanged. See also:
23−[`++hard`]().
24−
25−<hr></hr>
26−
27−#### Interpolators
28−
29−[`;"`]() Composes [`++tapes`]() and twigs that produce `++tape`s.
30−Generally used in its irregular form, of (text surrounded by double
31−quotes).
32−
33−<hr></hr>
34−
35−#### [++sail] runes:
36−
37−`;-`, `;+`, `;*`, `;%`, and `%smzz` all compose a tree structure. See
38−also: [`++sail`]().
39−
40−<hr></hr>
41−
42−<kids></kids>
docs/system/hoon/runes/sm/smcl.md+2−2
@@ -1,7 +1,7 @@
1−`;:`
1+`;: semcol`
2====
2====
3
3
4−Fold over tuple
4+Fold over tuple.
5
5
6Apply a binary function `p` to a tuple `q` with n elements. Similar to folding over the tuple `q`.
6Apply a binary function `p` to a tuple `q` with n elements. Similar to folding over the tuple `q`.
7
7
docs/system/hoon/runes/sm/smcn.md+2−2
@@ -1,7 +1,7 @@
1−`;%`
1+`;% semcen`
2====
2====
3
3
4−`%-` in [`++sail`]()
4+`%-` in `++sail`.
5
5
6Performs the same function as `%-`, except within XML template syntax
6Performs the same function as `%-`, except within XML template syntax
7(aka sail). Passes `q`, a list of n arguments, to function `p`.
7(aka sail). Passes `q`, a list of n arguments, to function `p`.
docs/system/hoon/runes/sm/smdq.md+2−2
@@ -1,7 +1,7 @@
1−`;"`
1+`;" semdoq`
2====
2====
3
3
4−Make string
4+Make string.
5
5
6`semdoq` is a synthetic rune used to make strings, interpreted or not.
6`semdoq` is a synthetic rune used to make strings, interpreted or not.
7
7
docs/system/hoon/runes/sm/smhp.md+2−2
@@ -1,7 +1,7 @@
1−`;-`
1+`;- semhep`
2====
2====
3
3
4−Interpolate string
4+Interpolate string.
5
5
6Interpolates a string (aka [++tape]()) into a [`++marl`](), our datastructure for XML.
6Interpolates a string (aka [++tape]()) into a [`++marl`](), our datastructure for XML.
7
7
docs/system/hoon/runes/sm/smls.md+2−2
@@ -1,7 +1,7 @@
1−`;+`
1+`;+ semlus`
2====
2====
3
3
4−Interpolate [`++manx`]()
4+Interpolate `++manx`.
5
5
6`;+` is a virtual rune used within [`++sail`]() to interpolate a manx.
6`;+` is a virtual rune used within [`++sail`]() to interpolate a manx.
7`;+` is useful when you need to dynamically produce a tag in a `++sail`
7`;+` is useful when you need to dynamically produce a tag in a `++sail`
docs/system/hoon/runes/sm/smsg.md+2−2
@@ -1,7 +1,7 @@
1−`;~`
1+`;~ semsig`
2====
2====
3
3
4−Monad composer
4+Monad composer.
5
5
6`;~` is a synthetic rune used to compose functions under a monad.
6`;~` is a synthetic rune used to compose functions under a monad.
7
7
docs/system/hoon/runes/sm/smsm.md+2−2
@@ -1,7 +1,7 @@
1−`;;`
1+`;; semsem`
2====
2====
3
3
4−Fixpoint
4+Fixpoint.
5
5
6`;;` is a synthetic rune that types `q` as a fixpoint of `p`. More
6`;;` is a synthetic rune that types `q` as a fixpoint of `p`. More
7specifically, `;;` slams `q` through gate `p`, asserting that the
7specifically, `;;` slams `q` through gate `p`, asserting that the
docs/system/hoon/runes/sm/smtr.md+3−3
@@ -1,7 +1,7 @@
1−`;*`
1+`;* semtar`
2−====
2+===========
3
3
4−Interpolate list of XML nodes
4+Interpolate list of XML nodes.
5
5
6Interpolates a list of XML nodes within our XML template syntax (aka sail)
6Interpolates a list of XML nodes within our XML template syntax (aka sail)
7
7
docs/system/hoon/runes/sm/smzz.md+3−3
@@ -1,7 +1,7 @@
1−semzaz
1+`semzaz`
2−===============
2+========
3
3
4−[`++sail`]() tag
4+`++sail` tag.
5
5
6`semzaz`, is a virtual rune frequently referred to as [`++sail`]() in
6`semzaz`, is a virtual rune frequently referred to as [`++sail`]() in
7reference to `++sail`:vast which parses it. It is the most basic part of
7reference to `++sail`:vast which parses it. It is the most basic part of
docs/system/hoon/runes/ts.mdnew file+11
@@ -0,0 +1,11 @@
1+---
2+sort: 9
3+---
4+
5+# `= tis` (subject modifiers)
6+
7+##### Feel free to change the subject.
8+
9+<list dataPath="docs/system/hoon/runes/ts" dataPreview="true" className="runes" linkToFragments="true"></list>
10+
11+<kids dataPath="docs/system/hoon/runes/ts" className="runes"></kids>
docs/system/hoon/runes/ts/tsbr.md+3−1
@@ -1,6 +1,8 @@
1−`=|`
1+`=| tisbar`
2====
2====
3
3
4+Default value.
5+
4Produces the default value of input type (aka mold) `p` and makes it
6Produces the default value of input type (aka mold) `p` and makes it
5available/pushes it onto `q`.
7available/pushes it onto `q`.
6
8
docs/system/hoon/runes/ts/tscl.md+3−1
@@ -1,6 +1,8 @@
1−`=:`
1+`=: tiscol`
2====
2====
3
3
4+List of changes.
5+
4Makes a list of changes `p` to the subject and then evaluates `q`.
6Makes a list of changes `p` to the subject and then evaluates `q`.
5Allows you to change values in your context (not in the hoon sense).
7Allows you to change values in your context (not in the hoon sense).
6
8
docs/system/hoon/runes/ts/tsdt.md+3−1
@@ -1,6 +1,8 @@
1−`=.`
1+`=. tisdot`
2====
2====
3
3
4+Change value.
5+
4Produces `r` with `p` in the subject set to `q`. Allows you to change
6Produces `r` with `p` in the subject set to `q`. Allows you to change
5a value in your subject before executing more code against it.
7a value in your subject before executing more code against it.
6
8
docs/system/hoon/runes/ts/tsgl.md+4−2
@@ -1,7 +1,9 @@
1−`=<`
1+`=< tisgal`
2====
2====
3
3
4+Inverted `=>`.
5+
4−An inverted `=<`. Uses the product of `q` as the subject of formula
6+An inverted `=>`. Uses the product of `q` as the subject of formula
5`p`. Allows us to keep the heavier of `p` `q` as the bottom expression, which
7`p`. Allows us to keep the heavier of `p` `q` as the bottom expression, which
6makes for more readable code. Please see the section on [backstep]().
8makes for more readable code. Please see the section on [backstep]().
7
9
docs/system/hoon/runes/ts/tsgr.md+2−2
@@ -1,7 +1,7 @@
1−`=>`
1+`=> tisgar`
2====
2====
3
3
4−Product as subject
4+Product as subject.
5
5
6`=>` is a natural rune that uses the product of `p` as the subject of
6`=>` is a natural rune that uses the product of `p` as the subject of
7`q`. `=>` is the inverse of `=<`. Use `=>` when your `p` isn't too long
7`q`. `=>` is the inverse of `=<`. Use `=>` when your `p` isn't too long
docs/system/hoon/runes/ts/tshp.md+3−1
@@ -1,6 +1,8 @@
1−`=-`
1+`=- tishep`
2====
2====
3
3
4+Inverted `=+`.
5+
4An inverted `=+`. Pushes variable `q` onto the subject and then
6An inverted `=+`. Pushes variable `q` onto the subject and then
5executes `p` against the new subject. Allows us to place the larger of `p` and
7executes `p` against the new subject. Allows us to place the larger of `p` and
6`q` as the bottom expression, making for for more readable code (see the
8`q` as the bottom expression, making for for more readable code (see the
docs/system/hoon/runes/ts/tskt.md+4−2
@@ -1,8 +1,10 @@
1−`=^`
1+`=^ tisket`
2====
2====
3
3
4+State monad.
5+
4Used to both push a new variable on the subject as well as change the
6Used to both push a new variable on the subject as well as change the
5−value of another.Similar to `=+` in that it pushes a value on the stack with
7+value of another. Similar to `=+` in that it pushes a value on the stack with
6variable name (face) `p`. However, in addition to pushing a new variable onto
8variable name (face) `p`. However, in addition to pushing a new variable onto
7the subject, it also modifies whatever value is tied to `q` within the subject.
9the subject, it also modifies whatever value is tied to `q` within the subject.
8`r` is the cell of [new-product-p updated-value-1]. You can think of `=^` like
10`r` is the cell of [new-product-p updated-value-1]. You can think of `=^` like
docs/system/hoon/runes/ts/tsls.md+3−1
@@ -1,6 +1,8 @@
1−`=+`
1+`=+ tislus`
2====
2====
3
3
4+Assign.
5+
4Easiest way to declare variables. Pushes a new variable `p` onto the
6Easiest way to declare variables. Pushes a new variable `p` onto the
5subject and then executes `q` against it.
7subject and then executes `q` against it.
6
8
docs/system/hoon/runes/ts/tssg.md+3−1
@@ -1,6 +1,8 @@
1−`=~`
1+`=~ tissig`
2====
2====
3
3
4+List of twigs.
5+
4Composes a list of twigs. Applies `=>` to a list of expressions, using each result as the
6Composes a list of twigs. Applies `=>` to a list of expressions, using each result as the
5subject to the following expression.
7subject to the following expression.
6
8
docs/system/hoon/runes/ts/tstr.md+3−1
@@ -1,6 +1,8 @@
1−`=*`
1+`=* tistar`
2====
2====
3
3
4+Alias.
5+
4Makes `p` an alias of value `q`. Useful when you don't want to write
6Makes `p` an alias of value `q`. Useful when you don't want to write
5out a long address multiple times, for example `p.s.+.variable`, which translates to `p` within `s` within the tail of `variable`.
7out a long address multiple times, for example `p.s.+.variable`, which translates to `p` within `s` within the tail of `variable`.
6
8
docs/system/hoon/runes/wt.mdnew file+11
@@ -0,0 +1,11 @@
1+---
2+sort: 11
3+---
4+
5+# `? wut` (conditional)
6+
7+##### If this then what?
8+
9+<list dataPath="docs/system/hoon/runes/wt" dataPreview="true" className="runes" linkToFragments="true"></list>
10+
11+<kids dataPath="docs/system/hoon/runes/wt" className="runes"></kids>
docs/system/hoon/runes/wt/wtbr.md+2−2
@@ -1,7 +1,7 @@
1−`?|`
1+`?| wutbar`
2====
2====
3
3
4−Logical 'or'
4+Logical 'or'.
5
5
6Computes the logical 'or' operation on a list of boolean expressions `p`.
6Computes the logical 'or' operation on a list of boolean expressions `p`.
7
7
docs/system/hoon/runes/wt/wtcl.md+2−2
@@ -1,7 +1,7 @@
1−`?:`
1+`?: wutcol`
2====
2====
3
3
4−If-then-else
4+If-then-else.
5
5
6Produces
6Produces
7--------
7--------
docs/system/hoon/runes/wt/wtdt.md+2−2
@@ -1,7 +1,7 @@
1−`?.`
1+`?. wutdot`
2====
2====
3
3
4−Inverted if-then-else
4+Inverted if-then-else.
5
5
6Unless `p` is true, evaluate `r`. Used to keep the heavier of `q` and `r` as the bottom expression, which makes for more readable code (see the section on [backstep]()).
6Unless `p` is true, evaluate `r`. Used to keep the heavier of `q` and `r` as the bottom expression, which makes for more readable code (see the section on [backstep]()).
7
7
docs/system/hoon/runes/wt/wtgl.md+2−2
@@ -1,7 +1,7 @@
1−`?<`
1+`?< wutgal`
2====
2====
3
3
4−Assert `p` is false
4+Assert `p` is false.
5
5
6Asserts that `p` is false before evaluating `q`. Crashes if `p` evaluates to false.
6Asserts that `p` is false before evaluating `q`. Crashes if `p` evaluates to false.
7
7
docs/system/hoon/runes/wt/wtgr.md+2−2
@@ -1,7 +1,7 @@
1−`?>`
1+`?> wutgar`
2====
2====
3
3
4−Assert `p` is true
4+Assert `p` is true.
5
5
6Asserts that `p` is true before evaluating `q`. Crashes if `p` evaluates to true.
6Asserts that `p` is true before evaluating `q`. Crashes if `p` evaluates to true.
7
7
docs/system/hoon/runes/wt/wthp.md+2−2
@@ -1,7 +1,7 @@
1−`?-`
1+`?- wuthep`
2====
2====
3
3
4−Switch
4+Switch.
5
5
6Different from the traditional switch statement in that it switches on a type instead of a value. More specifically, the labels in `q` must match the [span]() of `p`. `q` must be terminated with a `==`.
6Different from the traditional switch statement in that it switches on a type instead of a value. More specifically, the labels in `q` must match the [span]() of `p`. `q` must be terminated with a `==`.
7
7
docs/system/hoon/runes/wt/wthz.mddeleted−52
@@ -1,52 +0,0 @@
1−wuthaz, %wthz
2−======================
3−
4−[Short description]
5−
6−`wuthaz`, `[%wthz p=wing q=tine]` is a synthetic rune that selects a
7−case in `q` for the actual type of `p`.
8−
9−Produces
10−--------
11−
12−[Twig or mold]
13−
14−Sample
15−------
16−
17−[`p` is a \* `q` is a \*]
18−
19−Tall form
20−---------
21−
22−Kingside:
23−
24− ?- p
25− p.i.q q.i.q
26− p.i.t.q q.i.t.q
27− p.i.t.t.q q.i.t.t.q
28− ==
29−
30−Queenside:
31−
32− ?- p
33− p.i.q
34− q.i.q
35− p.i.t.q
36− q.i.t.q
37− p.i.t.t.q
38− q.i.t.t.q
39− ==
40−
41−Wide form
42−---------
43−
44−?-(p p.i.q q.i.q, p.i.t.q q.i.t.q, p.i.t.t.q q.i.t.t.q)
45−
46−Irregular form
47−--------------
48−
49−None
50−
51−Examples
52−--------
docs/system/hoon/runes/wt/wtkt.md+2−2
@@ -1,7 +1,7 @@
1−`?^`
1+`?^ wutket`
2====
2====
3
3
4−If `p` is cell-then-else
4+If `p` is cell-then-else.
5
5
6Produces
6Produces
7--------
7--------
docs/system/hoon/runes/wt/wtkz.mddeleted−34
@@ -1,34 +0,0 @@
1−wutkaz, %wtkz
2−======================
3−
4−[`++tiki`]() version of [`%wtkt`]()
5−
6−`wutkaz` is only used internally.
7−
8−Produces
9−--------
10−
11−Twig: `[%wtkz p=tiki q=twig r=twig]`
12−
13−Sample
14−------
15−
16−`p` is a [`++tiki`](). `q` and `r` are [twig]()s.
17−
18−Tall form
19−---------
20−
21−None
22−
23−Wide form
24−---------
25−
26−None
27−
28−Irregular form
29−--------------
30−
31−None
32−
33−Examples
34−--------
docs/system/hoon/runes/wt/wtls.md+2−2
@@ -1,7 +1,7 @@
1−`?+`
1+`?+ wutlus`
2====
2====
3
3
4−Switch w/default value
4+Switch w/default value.
5
5
6Identical to [`?-`]() except for that it takes a default case `q` if none of the cases in `r` match the type of `p`. More specifically, the labels in `q` must match the [span]() of `p`. `q` must be terminated with a `==`.
6Identical to [`?-`]() except for that it takes a default case `q` if none of the cases in `r` match the type of `p`. More specifically, the labels in `q` must match the [span]() of `p`. `q` must be terminated with a `==`.
7
7
docs/system/hoon/runes/wt/wtlz.mddeleted−35
@@ -1,35 +0,0 @@
1−wutlaz, %wtlz
2−======================
3−
4−[`++tiki`]() version of [`%wtls`]()
5−
6−`wutlaz` is a synthetic rune that selects a case in `q` for the actual
7−type of `p`. Only used internally.
8−
9−Produces
10−--------
11−
12−Twig: `[%wtlz p=wing q=twig r=tine]`
13−
14−Sample
15−------
16−
17−`p` is a [`++wing`](). `q` is a [twig](). `r` is a [`++tine`]().
18−
19−Tall form
20−---------
21−
22−None
23−
24−Wide form
25−---------
26−
27−None
28−
29−Irregular form
30−--------------
31−
32−None
33−
34−Examples
35−--------
docs/system/hoon/runes/wt/wtpm.md+2−2
@@ -1,7 +1,7 @@
1−`?&`
1+`?& wutpam`
2====
2====
3
3
4−Logical 'and'
4+Logical 'and'.
5
5
6Computes the logical 'and' operation on a list of boolean expressions.
6Computes the logical 'and' operation on a list of boolean expressions.
7
7
docs/system/hoon/runes/wt/wtpt.md+2−2
@@ -1,7 +1,7 @@
1−`?@`
1+`?@ wutpat`
2====
2====
3
3
4−If atom-then-else
4+If atom-then-else.
5
5
6If-then-else statement that tests whether `p` is an atom, producing `q` if true and `r` if false.
6If-then-else statement that tests whether `p` is an atom, producing `q` if true and `r` if false.
7
7
docs/system/hoon/runes/wt/wtpz.mddeleted−34
@@ -1,34 +0,0 @@
1−wutpaz, %wtpz
2−======================
3−
4−[`++tiki`]() version of [`%wtpt`]()
5−
6−`wutpaz` is used internally.
7−
8−Produces
9−--------
10−
11−Twig: `[%wtpz p=tiki q=twig r=twig]`
12−
13−Sample
14−------
15−
16−`p` is a [`++tiki`](). `q` and `r` are [twig]()s.
17−
18−Tall form
19−---------
20−
21−None
22−
23−Wide form
24−---------
25−
26−None
27−
28−Irregular form
29−--------------
30−
31−None
32−
33−Examples
34−--------
docs/system/hoon/runes/wt/wtsg.md+2−2
@@ -1,7 +1,7 @@
1−`?~`
1+`?~ wutsig`
2====
2====
3
3
4−If-null-then-else
4+If-null-then-else.
5
5
6If-then-else statement that tests whether `p` is null, producing `q` if true
6If-then-else statement that tests whether `p` is null, producing `q` if true
7and `r` if false.
7and `r` if false.
docs/system/hoon/runes/wt/wtsz.mddeleted−37
@@ -1,37 +0,0 @@
1−wutsaz, %wtsz
2−======================
3−
4−[`++tiki`]() version of [`%wtsg`]()
5−
6−`wutsaz` is a synthetic rune that produces `q` if `p` is `~`, `r`
7−otherwise.
8−
9−Produces
10−--------
11−
12−Twig: `[%wtsz p=tiki q=twig r=twig]`
13−
14−Sample
15−------
16−
17−`p` is a [`++tiki`](). `q` and `r` are [twig]()s.
18−
19−Tall form
20−---------
21−
22− ?~ p
23− q
24− r
25−
26−Wide form
27−---------
28−
29− ?~(p q r)
30−
31−Irregular form
32−--------------
33−
34−None
35−
36−Examples
37−--------
docs/system/hoon/runes/wt/wtts.md+2−2
@@ -1,7 +1,7 @@
1−`?=`
1+`?= wuttis`
2====
2====
3
3
4−Is `q` within [span]() `p`
4+Is `q` within `++span` `p`.
5
5
6Tests whether `q` is of type (mold) `p`.
6Tests whether `q` is of type (mold) `p`.
7
7
docs/system/hoon/runes/wt/wttz.mddeleted−35
@@ -1,35 +0,0 @@
1−wuttaz, `?=`, %wttz
2−============================
3−
4−[`++tiki`]() version of [`%wtkz`]()
5−
6−`wuttaz` is only used internally.
7−
8−Produces
9−--------
10−
11−Twig: `[%wttz p=mold q=tiki]`
12−
13−Sample
14−------
15−
16−`p` is a [mold](). `q` is a [`++tiki`]().
17−
18−Tall form
19−---------
20−
21− ?= p
22− q
23−
24−Wide form
25−---------
26−
27− ?=(p q)
28−
29−Irregular form
30−--------------
31−
32−None
33−
34−Examples
35−--------
docs/system/hoon/runes/wt/wtzp.md+2−2
@@ -1,7 +1,7 @@
1−`?!`
1+`?! wutzap`
2====
2====
3
3
4−Logical not
4+Logical not.
5
5
6Produces the logical "not" of `p`.
6Produces the logical "not" of `p`.
7
7
docs/system/hoon/runes/zp.mdnew file+11
@@ -0,0 +1,11 @@
1+---
2+sort: 12
3+---
4+
5+# `! zap` (special)
6+
7+##### Pow, zap, bam.
8+
9+<list dataPath="docs/system/hoon/runes/zp" dataPreview="true" className="runes" linkToFragments="true"></list>
10+
11+<kids dataPath="docs/system/hoon/runes/zp" className="runes"></kids>
docs/system/hoon/runes/zp/zpcb.md+2−2
@@ -1,7 +1,7 @@
1−`!_`
1+`!_ zapcab`
2====
2====
3
3
4−Path & range in stack trace
4+Path & range in stack trace.
5
5
6Traces the stack if debugging is enabled, putting the current path and
6Traces the stack if debugging is enabled, putting the current path and
7location range of each rune.
7location range of each rune.
docs/system/hoon/runes/zp/zpcm.md+2−2
@@ -1,7 +1,7 @@
1−`!,`
1+`!, zapcol`
2====
2====
3
3
4−XX
4+XX.
5
5
6Inserts twig `q` as a constant, typed with the type of twig `p`. XX??
6Inserts twig `q` as a constant, typed with the type of twig `p`. XX??
7
7
docs/system/hoon/runes/zp/zpfs.md+2−2
@@ -1,7 +1,7 @@
1−`!/`
1+`!/ zapfas`
2====
2====
3
3
4−XX
4+XX.
5
5
6`!/` is a virtual natural rune that should never be compiled. When
6`!/` is a virtual natural rune that should never be compiled. When
7compiled with error checking turned on, it reports its subject as an
7compiled with error checking turned on, it reports its subject as an
docs/system/hoon/runes/zp/zpgr.md+2−2
@@ -1,7 +1,7 @@
1−`!>`
1+`!> zapgar`
2====
2====
3
3
4−Produce [type value]
4+Produce `[type value]`.
5
5
6Produces a cell (known as a [`++vase`]() here) of both the type and value of `p`. Useful for debugging purposes.
6Produces a cell (known as a [`++vase`]() here) of both the type and value of `p`. Useful for debugging purposes.
7
7
docs/system/hoon/runes/zp/zpsm.md+2−2
@@ -1,7 +1,7 @@
1−`!;`
1+`!; zapsem`
2====
2====
3
3
4−`[type noun]` pair
4+`[type noun]` pair.
5
5
6`!;` is a natural rune that produces the product of twig `q` as a
6`!;` is a natural rune that produces the product of twig `q` as a
7`[type noun]` pair, with twig `p` serving as an example of the type.
7`[type noun]` pair, with twig `p` serving as an example of the type.
docs/system/hoon/runes/zp/zpts.md+2−2
@@ -1,7 +1,7 @@
1−`!=`
1+`!= zaptis`
2====
2====
3
3
4−Show nock
4+Show nock.
5
5
6`!=` is a natural rune that produces the formula of `p` as a noun.
6`!=` is a natural rune that produces the formula of `p` as a noun.
7
7
docs/system/hoon/runes/zp/zpwt.md+2−2
@@ -1,7 +1,7 @@
1−`!?`
1+`!? zapwut`
2====
2====
3
3
4−Restrict version
4+Restrict version.
5
5
6`!?` is a synthetic rune that enforces a Hoon version restriction.
6`!?` is a synthetic rune that enforces a Hoon version restriction.
7
7
docs/system/hoon/runes/zp/zpzp.md+2−2
@@ -1,7 +1,7 @@
1−`!!`
1+`!! zapzap`
2====
2====
3
3
4−Crash
4+Crash.
5
5
6`!!` is a natural rune that always crashes.
6`!!` is a natural rune that always crashes.
7
7
docs/walkthroughs/tree.mdnew file+135
@@ -0,0 +1,135 @@
1+---
2+next: true
3+sort: 5
4+title: Tree
5+---
6+
7+# Tree
8+
9+Tree is a simple publishing platform for files that live on your Urbit. You're probably reading this file using Tree right now. The main driving use-case for Tree has been for us to host our own documentation and the surrounding discussion. Tree remains a pretty simple and flexible tool for getting content online. We think it's pretty great.
10+
11+In spirit Tree is sort of like a combination of Jekyll and Finder: a simple static publishing tool and the basic UI for browsing the filesystem. We take it one step further and make it possible to write modules (tiny little apps), like Talk and Dojo, that can be run directly inside of Tree.
12+
13+In the browser Tree is a [React](https://facebook.github.io/react/) / [Flux](https://facebook.github.io/react/blog/2014/05/06/flux.html) app that uses a slightly modifed version of [Bootstrap](http://getbootstrap.com/). On your Urbit Tree is a set of renderers that translate data in `%clay`, our filesystem, into JSON / JSX that can be read by the client.
14+
15+Your Urbit comes with a pre-built copy of the tree (as a single `.js` file). If you're interested in helping to develop tree or learning about how it works, it has its own GitHub repo [here](https://github.com/urbit/tree). We have our own fork of Bootstrap, which lives [here](https://github.com/urbit/bootstrap).
16+
17+You don't need to know anything about the tree implementation to use it, so we'll start with that and get further into the technical details as we get down the page.
18+
19+## Publishing files
20+
21+Assuming you have an Urbit desk mounted (if not see the [Filesystem Handbook](/walkthroughs/clay)), try opeing up `/web/static.md` in an editor and `http://localhost:8080/static` side by side.
22+
23+It should be pretty obvious what's going on here. Drop a markdown file anywhere in `/web` and we'll do the rest.
24+
25+### Simple blog
26+
27+From unix
28+
29+### Going further
30+
31+The best example of more complicated usage of Tree is covered by the Urbit docs themselves. See anything while perusing the docs that you'd like to use yourself? The docs are all on GitHub [here](https://github.com/urbit/docs).
32+
33+## YAML
34+
35+We use [YAML](http://yaml.org/)-style frontmatter to do odds and ends like override the title. A YAML block looks something like this:
36+
37+```
38+---
39+next: true
40+sort: 5
41+title: Tree
42+---
43+```
44+
45+and appears at the top of a file. YAML values can't contain newlines but can contain spaces. Here are the fields we support:
46+
47+### `title`
48+
49+String. Example: `title: Tree manual`.
50+
51+This sets the title in the nav or in lists as distinct from the filename.
52+
53+### `next`
54+
55+Boolean. Example: `next: true`
56+
57+Adds a 'next' link at the bottom of the page that links to the next item as decided by the sort order.
58+
59+### `sort`
60+
61+Integer. Example: `sort: 7`
62+
63+User-defined sort. Indicates the sort order as distinct from alphabetical sort. These numbers should not be overlapping.
64+
65+### `hide`
66+
67+Boolean. Example: `hide: true`
68+
69+Whether or not to hide the item from the tree.
70+
71+### `date`
72+
73+Urbit date. Example: `~2016.2.22`
74+
75+Used for sorting posts by date.
76+
77+## Using components
78+
79+Tree is built using React with a small library of components that you can add to your pages using [JSX](https://facebook.github.io/jsx/) tags.
80+
81+If you don't know anything about JSX that's okay: basically we just give you a few custom HTML tags that you can use to create components on the page.
82+
83+For those familiar with React / Flux each JSX tag corresponds to a component in [the source](https://github.com/urbit/tree/tree/master/js/components).
84+
85+### <list>
86+
87+Example: `<list dataPath="/posts" titlesOnly="true"></list>`
88+
89+Creates a list of children at a path. Defaults to the current path.
90+
91+Optional properties:
92+
93+- `dataPath`: Path to load kids from.
94+- `titlesOnly`: Only show the 'title' which is either the filename or the first h1.
95+- `sortBy`: Can be `date` if items have a `date` YAML.
96+- `className`: Class to be assigned to the container.
97+
98+### <kids>
99+
100+Example: `<kids dataPath="/posts"></kids>`
101+
102+Includes all the children at the specified path separated by `<hr>` tags.
103+
104+Optional properties:
105+
106+- `dataPath`: Path to load kids from.
107+- `className`: Class to be assigned to the container.
108+
109+### <toc>
110+
111+Example: `<toc noHeader="true"></toc>`
112+
113+Creates a table of contents from the `h1` - `h6` tags on the page.
114+
115+Optional properties:
116+
117+- `match`: Tag name to match. If you wanted to only match `h2` tags it could be `match="h2"`
118+- `noHeader`: By default we add a 'Table of Contents' header to the top. Remove it with `noHeader="true"`.
119+
120+## Module basics
121+
122+A module is a
123+
124+## Implementation
125+
126+
127+
128+### Async component
129+
130+### manx JSON format
131+
132+## `urb.js`
133+
134+
135+