on master help sign in
Merge pull request #147 from keatondunsford/push-to-www

Push to www

commitd8dcb8859f1ba4d73bc27d41ec817369e3479045 authorGalen Wolfe-Pauly <galen@office-for.com> dateTue 14 Feb 2017, 17:31 (10 years ago) parent0f863f890a8fb9
34 files changed+407−77
docs.md+21−22 docs/about.md+1−1 docs/about/objections.md+8−2 docs/arvo/api.md+1−1 docs/arvo/basic.md+1−1 docs/arvo/generators.md+1−1 docs/arvo/http.md+2−2 docs/arvo/internals.md+1−1 docs/arvo/marks.md+1−1 docs/arvo/network.md+1−2 docs/arvo/security-driver.md+2−2 docs/arvo/state.md+2−2 docs/arvo/subject.md+1−1 docs/arvo/subscriptions.md+2−2 docs/arvo/web-apps.md+3−3 docs/hoon/advanced.md+2−2 docs/hoon/basic.md+3−3 docs/hoon/concepts.md+6−6 docs/hoon/demo.md+2−2 docs/hoon/examples.md+2−2 docs/hoon/exercises.md+1 docs/hoon/irregular.md+279 docs/hoon/library.md+1−1 docs/hoon/mission.md+1−1 docs/hoon/reference.md+1−1 docs/hoon/syntax.md+3−3 docs/hoon/twig.md+2−2 docs/learn.md+24 docs/learn/community.md+20 docs/byte.md → docs/learn/urbyte.md+3−1 docs/byte/0.md → docs/learn/urbyte/0.md+2−2 docs/byte/1.md → docs/learn/urbyte/1.md+3−3 docs/byte/2.md → docs/learn/urbyte/2.md+1−1 docs/using.md+3−3
docs.md+21−22
@@ -7,13 +7,15 @@ sort: 4
77
88<div class="lead">
99 <div class="logo inverse"></div>
10− <h1 class="blue i-b">Urbit docs</h1>
10+ <h1 class="blue i-b">Urbit documentation</h1>
1111</div>
1212
1313<div class="col-md-12 head">
1414
1515<div class="col-md-8">
1616
17+**Urbit** is a secure peer-to-peer network of personal servers, built on a clean-slate system software stack.
18+
1719Check out the [technical overview](about/overview) for a high-level
1820architecture description. To install and run Urbit, head to the Using section, starting with the [installation guide](using/install) and continuing forward.
1921
@@ -29,37 +31,34 @@ etc, should start with the [Nock definition](nock/definition) and work upward fr
2931
3032</div>
3133
34+</div>
35+
36+<div class="col-md-12 head">
37+
3238<div class="col-md-4">
3339
3440<b>Community & contact</b>
3541<ul>
36−<li>Find us on<a href="https://urbit.org/stream"><code>talk</code></a>!</li>
37−<li>Our discussion<a href="http://urbit.org/fora/"><code>fora</code></a>.</li>
38−<li>On Reddit <a href="https://reddit.com/r/urbit">/r/urbit</a>.</li>
39−<li>On Twitter <a href="https://twitter.com/urbit_">@urbit_</a>.</li>
40−<li>Our developer <a href="https://groups.google.com/forum/#!forum/urbit-dev">mailing list</a>.</li>
41−<li>Or email us at <a href="mailto:urbit@urbit.org">urbit@urbit.org</a>.</li>
42+<li>Chat with us on <a href="https://urbit.org/stream"><code>:talk</code></a></li>
43+<li>Our discussion forum <a href="http://urbit.org/fora"><code>fora</code></a></li>
44+<li>On Twitter <a href="https://twitter.com/urbit_">@urbit_</a></li>
45+<li>On Reddit <a href="https://reddit.com/r/urbit">/r/urbit</a></li>
46+<li>Or email us at <a href="mailto:urbit@urbit.org">urbit@urbit.org</a></li>
4247</ul>
4348
44−<br />
45−
46−<b>Community docs</b>
47−<ul>
48−<li>The <code>~master-morzod</code><a href="http://micnus-tarwyl-haltem-linhut--dilhul-talbes-wolnyx-lasbud.urbit.org/docs/">docs</a>, and <a href="http://urbit.org/fora/posts/~2016.12.25..06.35.44..a1ec~/"><code>fora</code></a> post.</li>
49−<li><a href="https://github.com/Fang-/Urbit-By-Doing">Urbit by Doing</a>, by <code>~palfun-foslup</code>.</li>
50−</ul>
49+</div>
5150
52−<br />
51+<div class="col-md-4">
5352
5453<b>Source code on <a href="https://github.com/urbit">GitHub</a></b>
5554<ul>
56−<li><a href="https://github.com/urbit/urbit"><code>vere</code></a> - Urbit's VM.</li>
57−<li><a href="https://github.com/urbit/arvo"><code>arvo</code></a> - Urbit's OS.</li>
58−<li><a href="https://github.com/urbit/tree"><code>tree</code></a> - Urbit's web UI.</li>
59−<li><a href="https://github.com/urbit/talk"><code>talk</code></a> - Urbit's web chat.</li>
60−<li><a href="https://github.com/urbit/sole"><code>sole</code></a> - Urbit's web console.</li>
61−<li><a href="https://github.com/urbit/examples"><code>examples</code></a> - Hoon, Arvo and Tree.</li>
62−<li><a href="https://github.com/urbit/docs"><code>docs</code></a> - Urbit documentation repository.</li>
55+<li><a href="https://github.com/urbit/urbit"><code>vere</code></a> - Urbit's VM</li>
56+<li><a href="https://github.com/urbit/arvo"><code>arvo</code></a> - Urbit's OS</li>
57+<li><a href="https://github.com/urbit/tree"><code>tree</code></a> - Urbit's web publishing UI</li>
58+<li><a href="https://github.com/urbit/talk"><code>talk</code></a> - Urbit's web chat</li>
59+<li><a href="https://github.com/urbit/sole"><code>sole</code></a> - Urbit's web console</li>
60+<li><a href="https://github.com/urbit/examples"><code>examples</code></a> - Hoon, Arvo and Tree</li>
61+<li><a href="https://github.com/urbit/docs"><code>docs</code></a> - The repo for these docs</li>
6362</ul>
6463
6564</div>
docs/about.md+1−1
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 1
3+sort: 3
44---
55
66# About
docs/about/objections.md+8−2
@@ -1,3 +1,9 @@
1+---
2+navhome: '/docs'
3+next: True
4+sort: 5
5+title: Common objections to Urbit
6+---
17
28# Common objections to Urbit
39
@@ -117,7 +123,7 @@ The correct way to think about jets is not to compare them to a perfect interpre
117123
118124Compared to both intrinsics and an FFI, your jets have one key disadvantage: they need to be specified in pure code. You may not have this executable specification, which means you need to write it. Is this really so bad for your development process? An executable specification? Which can be trivially tested against the efficient implementation?
119125
120−Compared to intrinsics, jets give you true separation between mechanism and policy; only the interpreter, not the programmer and not the compiler, needs to know what's accelerated.
126+Compared to intrinsics, jets give you true separation between mechanism and policy; only the interpreter, not the programmer and not the compiler, needs to know what's accelerated.
121127
122128Compared to an FFI, jets preclude I/O, so can be trivially sandboxed. Except that the programmer needs to mark routines which may benefit from optimization with a hint, here too we separate mechanism (efficient implementation) from policy.
123129
@@ -133,7 +139,7 @@ TLDR: no, it doesn't.
133139
134140We can prune the event log because the Urbit transition function doesn't have any access to the event history -- just the current state and the current event.
135141
136−Urbit defines the semantics of a complete event log. It doesn't and can't require an implementation to maintain the whole log. It can maintain a checkpoint and the log since that checkpoint. The current implementation of Urbit maintains
142+Urbit defines the semantics of a complete event log. It doesn't and can't require an implementation to maintain the whole log. It can maintain a checkpoint and the log since that checkpoint. The current implementation of Urbit maintains
137143
138144However, any practical urbit maintains a periodically updated checkpoint. Our present implementation doesn't provide a way to prune the event log, but that's just a missing feature.
139145
docs/arvo/api.md+1−1
@@ -1,7 +1,7 @@
11---
22navhome: /docs/
33next: true
4−sort: 12
4+sort: 21
55title: API Connectors
66---
77
docs/arvo/basic.md+1−1
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 1
3+sort: 11
44next: true
55title: Basic Hoon
66---
docs/arvo/generators.md+1−1
@@ -1,7 +1,7 @@
11---
22navhome: '/docs'
33next: True
4−sort: 8
4+sort: 18
55title: Using Generators with Apps
66---
77
docs/arvo/http.md+2−2
@@ -1,7 +1,7 @@
11---
22navhome: /docs/
33next: false
4−sort: 9
4+sort: 19
55title: HTTP Requests and Timers
66---
77
@@ -145,7 +145,7 @@ progress, then we send an HTTP request.
145145If the argument is neither 'off' nor 'on', then we assume it's an
146146actual url, so we save it in `target`.
147147
148−Here's the move that sends the HTTP request:
148+Here's the move that sends the HTTP request:
149149```
150150[ost.hid %hiss /request ~ %httr %purl (need (epur target))]
151151```
docs/arvo/internals.md+1−1
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 15
3+sort: 22
44---
55
66# Arvo internals
docs/arvo/marks.md+1−1
@@ -1,7 +1,7 @@
11---
22navhome: /docs/
33next: true
4−sort: 6
4+sort: 16
55title: Marks
66---
77
docs/arvo/network.md+1−2
@@ -1,7 +1,7 @@
11---
22navhome: /docs/
33next: false
4−sort: 3
4+sort: 13
55title: Network messages
66---
77
@@ -341,4 +341,3 @@ urbit as for sending messages between apps on different urbits.
341341- Put `even` and `odd` on two separate urbits and pass the messages
342342 over the network. Post a link to a working solution in :talk to
343343 receive a cookie.
344−
docs/arvo/security-driver.md+2−2
@@ -1,7 +1,7 @@
11---
22navhome: /docs/
33next: false
4−sort: 10
4+sort: 20
55title: Security Drivers
66---
77
@@ -130,7 +130,7 @@ five "special" arms:
130130- `++filter-request` is a function which takes a hiss (http
131131 request) and produces a `sec-move` (defined in zuse), which is
132132 one of:
133−
133+
134134 * `[%send hiss]`, which sends the new hiss. This is the
135135 case in, for example, basic auth, where all we need to do is
136136 add an extra header to the request.
docs/arvo/state.md+2−2
@@ -1,7 +1,7 @@
11---
22navhome: /docs/
33next: true
4−sort: 4
4+sort: 14
55title: State
66---
77
@@ -100,7 +100,7 @@ ever go through the hassle of having to set up and write to a database.
100100```
101101~fintud-macrep:dojo> :examples-last 7
102102[%last 0]
103−>=
103+>=
104104~fintud-macrep:dojo> :examples-last [1 2 3]
105105[%last 7]
106106>=
docs/arvo/subject.md+1−1
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 2
3+sort: 12
44next: true
55title: The subject
66---
docs/arvo/subscriptions.md+2−2
@@ -1,7 +1,7 @@
11---
22navhome: /docs/
33next: true
4−sort: 5
4+sort: 15
55title: Subscriptions
66---
77
@@ -106,7 +106,7 @@ Cheat sheet:
106106- `$%` ([buccen](../../hoon/twig/buc-mold/cen-book/)) is a type
107107 constructor: it defines a new type, composed of `n` types that it is
108108 passed. For example `$% @ * ^ ==` is the type of either `@`,
109− `*`, or a cell `^`.
109+ `*`, or a cell `^`.
110110<!-- XX this is a union, right? -->
111111
112112- You may have noticed the separate `|%`
docs/arvo/web-apps.md+3−3
@@ -1,7 +1,7 @@
11---
22navhome: /docs/
33next: true
4−sort: 7
4+sort: 17
55title: Web Apps
66---
77
@@ -195,8 +195,8 @@ $(function() {
195195 ,function(err,res) {
196196 if(err)
197197 return $err.text("There was an error. Sorry!")
198− if(res.data !== undefined &&
199− res.data.ok !== undefined &&
198+ if(res.data !== undefined &&
199+ res.data.ok !== undefined &&
200200 res.data.ok !== true)
201201 $err.text(res.data.res)
202202 else
docs/hoon/advanced.md+2−2
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 7
3+sort: 17
44next: true
55title: Advanced types
66---
@@ -193,6 +193,6 @@ If a name is in the `q.p` map, it's a bridge. When we search for
193193a name, we also compile the bridge, and check if the name
194194resolves against the bridge product. If so, we use it.
195195
196−These hacks let us deal with interesting large-scale problems,
196+These hacks let us deal with interesting large-scale problems,
197197like complex library dependencies. You definitely don't need to
198198understand them to just write simple Hoon programs.
docs/hoon/basic.md+3−3
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 5
3+sort: 15
44next: true
55title: Basic types
66---
@@ -8,7 +8,7 @@ title: Basic types
88# Basic types
99
1010A `span` is a set of nouns and an interpretation of these nouns.
11−Officially, we don't use the word "type" in Hoon. But if we had
11+Officially, we don't use the word "type" in Hoon. But if we had
1212to say "type," it would mean `span`.
1313
1414## Type, span and mold
@@ -40,7 +40,7 @@ hopefully you aren't!
4040
4141## `span`: a set of nouns
4242
43−Below is the mold for `span`. You haven't seen this syntax before,
43+Below is the mold for `span`. You haven't seen this syntax before,
4444and we haven't explained it yet; just treat it as pseudocode.
4545
4646This is a slightly simplified version of `span`. We undo and explain the
docs/hoon/concepts.md+6−6
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 3
3+sort: 13
44next: true
55title: Concepts
66---
@@ -27,7 +27,7 @@ mean `span`, or `mold`, or `mark`, or possibly all three.
2727Other common programming concepts used only informally in Hoon
2828are "function," "object," "event," "expression," "variable,"
2929"label," "closure", "environment," "scope," and probably a few
30−more. We do use these words informally, but we're always making
30+more. We do use these words informally, but we're always making
3131an analogy whose precision depends on context.
3232
3333Hoon has concepts *like* all these abstractions, but they remain
@@ -51,7 +51,7 @@ simpler (Lisp atoms effectively have dynamic type bits).
5151
5252The simplest noun syntax uses brackets, like `[a b]` for the cell
5353of `a` and `b`. Brackets nest right; `[a b c d]` is `[a [b [c
54−d]]]`. You'll also see braces: `{a b c d}`.
54+d]]]`. You'll also see braces: `{a b c d}`.
5555
5656A noun list, by convention, points right and is zero-terminated.
5757Hoon uses tuples (improper nouns) more freely than Lisp; only
@@ -64,7 +64,7 @@ etc, this refers to the integer `0x6f.6f66`, aka `7.303.014`.
6464
6565One common operation on nouns is `slot`, a tree addressing
6666scheme which maps an atom to a subtree. The whole noun is slot
67−`1`; the left child of `n` is `2n`, the right child `2n+1`.
67+`1`; the left child of `n` is `2n`, the right child `2n+1`.
6868
6969Nothing in Nock, Hoon or Urbit can create cycles in a noun or
7070detect pointer equivalence. Nouns are generally implemented
@@ -164,7 +164,7 @@ formula. The gate's argument is its *sample*; the result is its
164164### `core` (object)
165165
166166A `core` has no exact equivalent in conventional languages, but
167−the closest equivalent is an object. An object has methods; a
167+the closest equivalent is an object. An object has methods; a
168168core has functionally computed attributes (*arms*). An arm that
169169produces a gate is the Hoon equivalent of a conventional method;
170170think of it as a computed attribute whose value is a lambda.
@@ -201,7 +201,7 @@ whose value is of type `atom`; it's a subtree of type `foo:atom`.
201201
202202### `limb` (attribute or variable reference)
203203
204−A [`limb`](../twig/limb/limb), like `foo`, is Hoon's equivalent of a variable
204+A [`limb`](../twig/limb/limb), like `foo`, is Hoon's equivalent of a variable
205205reference. A limb is a twig; given a subject span, `mint`
206206resolves it to a Nock formula and a product span.
207207
docs/hoon/demo.md+2−2
@@ -1,13 +1,13 @@
11---
22navhome: /docs/
3−sort: 1
3+sort: 10
44next: true
55title: Demo
66---
77
88# Demo
99
10−Here's everyone's favorite whiteboard example, FizzBuzz. Each
10+Here's everyone's favorite whiteboard example, FizzBuzz. Each
1111line is commented with its number:
1212
1313```
docs/hoon/examples.md+2−2
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 8
3+sort: 18
44title: Examples
55next: true
66---
@@ -253,7 +253,7 @@ moves (`move)`; actions are tic-tac-toe results (`fact`).
253253 :loop :cast (list fact) :: 3
254254 :ifno feed ~ :: 4
255255```
256−
256+
257257Line `1` wraps a conclusion around a stack of cores. The cores
258258at `11` and `26` are the data structures and functions of the
259259engine; the conclusion is the interface and top-level logic. It
docs/hoon/exercises.md+1
@@ -1,6 +1,7 @@
11---
22navhome: /docs/
33sort: 11
4+title: Exercises
45---
56
67# Exercises
docs/hoon/irregular.mdnew file+279
@@ -0,0 +1,279 @@
1+---
2+navhome: /docs/
3+sort: 21
4+title: Irregular forms
5+comments: true
6+---
7+
8+## Irregular forms, a compilation
9+##### `~palfun-foslup`
10+
11+<br />
12+
13+*Original `fora` post* [*here*](http://urbit.org/fora/posts/~2016.12.29..19.37.08..89d5~/).
14+
15+##### Reading guide
16+Headings contain runes, phonetics and tokens. Description contains a link to the docs and a short description of the rune. Both regular (R) and irregular (I) forms are given.
17+
18+Want to `ctrl-f` to find out the meaning of something weird you saw? Search for `\symbol`. ie `\?` or `\=`. It'll show you to the irregular forms that uses that symbol.
19+
20+## . dot (nock)
21+
22+Anything Nock can do, Hoon can do also.
23+
24+### .+ dotlus :bump
25+
26+[docs](https://urbit.org/docs/hoon/twig/dot-nock/lus-bump/) \\+
27+`{$bump p/atom}`: increment an atom with Nock 4.
28+
29+R: `.+(p)`
30+I: `+(p)`
31+
32+### .= dottis :same
33+
34+[docs](https://urbit.org/docs/hoon/twig/dot-nock/tis-same/) \\=
35+`{$same p/seed q/seed}`: test for equality with Nock 5.
36+
37+R: `.=(p q)`
38+I: `=(p q)`
39+
40+## ; sem (make)
41+
42+Miscellaneous useful macros.
43+
44+### ;: semcol :wad
45+
46+[docs](https://urbit.org/docs/hoon/twig/sem-make/col-wad/) \\:
47+`{$wad p/seed q/(list seed)}`: call a binary function as an n-ary function.
48+
49+R: `;:(p q)`
50+I: `:(p q)`
51+
52+## : col (cells)
53+
54+The cell twigs.
55+
56+### :- colhep :cons
57+
58+[docs](https://urbit.org/docs/hoon/twig/col-cell/hep-cons/) \\[\\]\\^\\+\\\`\\~
59+`{$cons p/seed q/seed}`: construct a cell (2-tuple).
60+
61+R: `:-(p q)`
62+I:
63+
64+```
65+ [a b] ==> :-(a b)
66+[a b c] ==> [a [b c]]
67+ a^b^c ==> [a b c]
68+ a+b ==> [%a b]
69+ `a ==> [~ a]
70+ ~[a b] ==> [a b ~]
71+ [a b]~ ==> [[a b] ~]
72+```
73+
74+## = tis (flow)
75+
76+Flow twigs change the subject. All non-flow twigs (except cores) pass the subject down unchanged.
77+
78+### =< tisgal :rap
79+
80+[docs](https://urbit.org/docs/hoon/twig/tis-flow/gal-rap/) \\:
81+`{$rap p/seed q/seed}`: compose two twigs, inverted.
82+
83+R: `=<(p q)`
84+I: `p:q`
85+
86+## | bar (core)
87+
88+[docs](https://urbit.org/docs/hoon/twig/bar-core/) \\$
89+Core twigs are flow twigs.
90+
91+Technically not irregular syntax, but worth mentioning.
92+
93+* `|= bartis :gate`
94+* `|. bardot :trap`
95+* `|- barhep :loop`
96+* `|* bartar :gill`
97+
98+The above runes produce a core with a single arm, named `$` (or `:moar`). We can recompute this arm with changes, useful for recursion among other things. Commonly used with the irregular syntax for `%=`, `:make`, like so: `$()`.
99+
100+## % cen (call)
101+
102+The invocation family of twigs.
103+
104+### %= centis :make
105+
106+[docs](https://urbit.org/docs/hoon/twig/cen-call/tis-make/) \\(\\)
107+`{$make p/wing q/(list (pair wing seed))}`: take a wing with changes.
108+
109+R: `%=(p a 1)`
110+I: `p(a 1)`
111+
112+### %~ censig :open
113+
114+[docs](https://urbit.org/docs/hoon/twig/cen-call/sig-open/) \\~
115+`{$cnsg p/wing q/seed r/seed}`: call with multi-armed door.
116+
117+R: `%~(p q r)`
118+I: `~(p q r)`
119+
120+### %- cenhep :call
121+
122+[docs](https://urbit.org/~~/docs/hoon/twig/cen-call/hep-call/) \\(\\)
123+`{$call p/seed q/seed}`: call a gate (function).
124+
125+R: `%-(p q)`
126+I: `(p q)`
127+
128+Note: `(p)` becomes `$:p` (`=<($ p)`), which behaves as you would expect (func call w/o args).
129+
130+## $ buc (mold)
131+
132+A mold is a gate (function) that helps us build simple and rigorous data structures.
133+
134+### $: buccol :bank
135+
136+[docs](https://urbit.org/docs/hoon/twig/buc-mold/col-bank/) \\{\\}
137+`{$bank p/(list moss)}`: form a mold which recognizes a tuple.
138+
139+R: `$:(p q)`
140+I: `{p q}`
141+
142+### $= buctis :coat
143+
144+[docs](https://urbit.org/docs/hoon/twig/buc-mold/tis-coat/) \\/
145+`{$coat p/@tas q/moss}`: mold which wraps a face around another mold.
146+
147+R: `$=(p q)`
148+I: `p/q`
149+
150+### $? bucwut :pick
151+
152+[docs](https://urbit.org/docs/hoon/twig/buc-mold/wut-pick/) \\?
153+`{$pick p/(list moss)}`: mold which normalizes a general union.
154+
155+R: `$?(p)`
156+I: `?(p)`
157+
158+### $_ buccab :shoe
159+
160+[docs](https://urbit.org/docs/hoon/twig/buc-mold/cab-shoe/) \\_
161+`{$shoe p/seed}`: mold which normalizes to an example.
162+
163+R: `$_(p)`
164+I: `_p`
165+
166+## ? wut (test)
167+
168+Hoon has the usual branches and logical tests.
169+
170+### ?! wutzap :not
171+
172+[docs](https://urbit.org/docs/hoon/twig/wut-test/zap-not/) \\!
173+`{$not p/seed}`: logical not.
174+
175+R: `?!(p)`
176+I: `!(p)`
177+
178+### ?& wutpam :and
179+
180+[docs](https://urbit.org/docs/hoon/twig/wut-test/pam-and/) \\&
181+`{$and p/(list seed)}`: logical and.
182+
183+R: `?&(p)`
184+I: `&(p)`
185+
186+### ?& wutbar :or
187+
188+[docs](https://urbit.org/docs/hoon/twig/wut-test/bar-or/) \\|
189+`{$or p/(list seed)}`: logical or.
190+
191+R: `?|(p)`
192+I: `|(p)`
193+
194+## ^ ket (cast)
195+
196+Lets us adjust spans without violating type constraints.
197+
198+### ^- kethep :cast
199+
200+[docs](https://urbit.org/docs/hoon/twig/ket-cast/hep-cast/) \\\`
201+`{$cast p/moss q/seed}`: typecast by mold.
202+
203+R: `^-(p q)`
204+I: ```p`q``
205+
206+### ^= kettis :name
207+
208+[docs](https://urbit.org/docs/hoon/twig/ket-cast/tis-name/) \\=
209+`{$name p/toga q/seed}`: name a value.
210+
211+R: `^=(p q)`
212+I: `p=q`
213+
214+## Miscellaneous
215+
216+### Trivial molds
217+
218+\\*\\^\\?
219+
220+* `*` noun.
221+* `^` cell.
222+* `?` loobean.
223+* `$~` null.
224+
225+### Values
226+
227+\\~\\-\\.\\&\\|
228+
229+* `~` null.
230+* `&` loobean true.
231+* `|` loobean false.
232+* `%a` constant `a`, where `a` can be an ((ir)regularly defined) atom or a symbol.
233+
234+See [:sand](https://urbit.org/docs/hoon/twig/atom/sand/) for other irregular definitions of atoms.
235+
236+### List addressing
237+* `&n` nth element of a list.
238+* `|n` tail of list after nth element (i.e. n is the head).
239+
240+### Limbs :limb
241+
242+[docs](https://urbit.org/docs/hoon/twig/limb/limb/) \\+\\.\\^
243+`{$limb p/(each @ud {p/@ud q/@tas})}`: attribute of subject.
244+
245+* `+15` is slot 15
246+* `.` is the whole subject (slot 1)
247+* `^a` is the `a` "of a higher scope", i.e. "resolve variable a, ignoring the first one found".
248+* `^^p` even higher, etc.
249+* 'Lark' syntax for slots / tree addressing:
250+```
251++1
252++2 -
253++3 +
254++4 -<
255++5 ->
256++6 +<
257++7 +>
258++8 -<-
259+...
260+```
261+
262+
263+### Wings :wing
264+
265+[docs](https://urbit.org/~~/docs/hoon/twig/limb/wing/) \\.
266+`{$wing p/(list limb)`; a limb search path.
267+
268+`a.b` finds limb `a` within limb `b` ("var" `a` within "var" `b`).
269+
270+### Printing stuff
271+
272+* `<a b c>` prints a [tape](https://urbit.org/docs/hoon/library/2q/#-tape).
273+* `>a b c<` prints a [tank](https://urbit.org/docs/hoon/library/2q/#-tank).
274+
275+## Commentary
276+
277+ In our in-house examples throughout our documentation, we use irregular forms instead of regular for the sake of verbosity. But remember with irregular forms: everything is just runes! Like magic. In general, irregular forms (usually) read better, but of course regular forms provide more information about what you're doing by showing you the full rune. Of course, it's up to you, the Hoon programmer, as to whether or not you want to use these.
278+
279+ ##### If we missed any, or if you saw something weird that's not in here, feel free to comment below!
docs/hoon/library.md+1−1
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 10
3+sort: 20
44title: Standard library
55---
66
docs/hoon/mission.md+1−1
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 2
3+sort: 12
44next: true
55title: Mission
66---
docs/hoon/reference.md+1−1
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 9
3+sort: 19
44title: Twig reference
55---
66
docs/hoon/syntax.md+3−3
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 4
3+sort: 14
44next: true
55title: Syntax
66---
@@ -187,7 +187,7 @@ is self-terminating. Otherwise the twig is terminated by a
187187The *running* body is a list of twigs. The *jogging* body is a
188188list of twig pairs, separated by a `gap`. The *battery* body is
189189a list of symbol-twig pairs, separated by a gap, prefixed by `++`
190−and then a gap.
190+and then a gap.
191191
192192This definition is enough to parse. But the proper shape of the
193193whitespace gaps demands an informal convention.
@@ -342,7 +342,7 @@ In the *lapidary* naming style, labels are pronounceable
342342three-letter strings, usually CVC (consonant-vowel-consonant).
343343Sometimes they encode a mnemonic, but usually they are just
344344memorable. Labels are reused wherever the analogy seems
345−appropriate.
345+appropriate.
346346
347347In the *ultralapidary* naming style, labels are single letters,
348348starting in order of construction from `a`, or within a tuple
docs/hoon/twig.md+2−2
@@ -1,6 +1,6 @@
11---
22navhome: /docs/
3−sort: 6
3+sort: 16
44next: true
55title: Expressions
66---
@@ -60,7 +60,7 @@ have a span that describes it.)
6060And of course, Hoon is a functional language, so seeds sometimes
6161produce a mold -- because we do pass around functions as values.
6262Don't worry about this issue. It will totally make sense soon.
63−
63+
6464But writing `[%foo %bar]` where you mean `{$foo $bar}`, or the
6565reverse, is a common beginner's mistake in Hoon. At least it
6666always results in a compiler error (since the noun types are so
docs/learn.mdnew file+24
@@ -0,0 +1,24 @@
1+---
2+navhome: /docs/
3+sort: 2
4+---
5+
6+# Learn
7+
8+Learn Hoon from the ground up through our in-house Urbyte series, or delve into the great doc efforts by some of our community members.
9+
10+#### Urbytes
11+
12+<list dataPath="/docs/learn/urbyte/" />
13+
14+#### Community docs
15+
16+* `~master-morzod` -
17+[docs](http://micnus-tarwyl-haltem-linhut--dilhul-talbes-wolnyx-lasbud.urbit.org/docs/), [`fora` post](https://urbit.org/fora/posts/~2016.12.25..06.35.44..a1ec~/)
18+
19+* `~hidduc-posmeg` -
20+[docs](https://fosnut-dandut.urbit.org/pages/hidducs-notes/tutorial), [`fora` post](https://urbit.org/fora/posts/~2017.2.12..21.54.40..6fde~/)
21+
22+* `~palfun-foslup` - [Urbit by Doing](https://github.com/Fang-/Urbit-By-Doing)
23+
24+* `@knubie` - [Learning Hoon](https://github.com/knubie/learning-hoon)
docs/learn/community.mdnew file+20
@@ -0,0 +1,20 @@
1+---
2+navhome: /docs/
3+next: true
4+title: Community docs
5+sort: 2
6+---
7+
8+# Community docs
9+
10+* The `~master-morzod`
11+[docs](http://micnus-tarwyl-haltem-linhut--dilhul-talbes-wolnyx-lasbud.urbit.org/docs/),
12+and [`fora`](https://urbit.org/fora/posts/~2016.12.25..06.35.44..a1ec~/) post.
13+
14+* The (formerly) `~hidduc-posmeg`
15+[docs](https://fosnut-dandut.urbit.org/pages/hidducs-notes/tutorial),
16+and [`fora`](https://urbit.org/fora/posts/~2017.2.12..21.54.40..6fde~/) post.
17+
18+* [Urbit by Doing](https://github.com/Fang-/Urbit-By-Doing), by `~palfun-foslup`.
19+
20+* [Learning Hoon](https://github.com/knubie/learning-hoon), by `knubie`.
docs/byte.md → docs/learn/urbyte.mdrenamed+3−1
@@ -1,6 +1,8 @@
11---
22navhome: /docs/
3−sort: 3
3+next: true
4+title: Urbytes
5+sort: 1
46---
57
68# Urbytes
docs/byte/0.md → docs/learn/urbyte/0.mdrenamed+2−2
@@ -5,7 +5,7 @@ next: true
55title: Setup and nouns
66---
77
8−# Urbyte 0: setup and nouns
8+# Urbyte 0: Setup and nouns
99
1010This is the first post in our new Urbyte series.
1111
@@ -109,7 +109,7 @@ $ ls -a /path/to/mycomet
109109./ ../ .urb/
110110```
111111
112−Restarting uses almost the same command, but without `-c` (which
112+Restarting uses almost the same command, but without `-c` (which
113113means "create"). There are also fewer startup messages:
114114
115115```
docs/byte/1.md → docs/learn/urbyte/1.mdrenamed+3−3
@@ -5,7 +5,7 @@ next: true
55title: Atoms, auras, types
66---
77
8−# Urbyte 1: atoms, auras, types
8+# Urbyte 1: Atoms, auras, types
99
1010Thanks for reading Urbyte 0! In Urbyte 1, we'll look a little
1111more deeply at atoms and other simple noun types.
@@ -41,7 +41,7 @@ string starting with `@`, like `@ud` for unsigned decimal.
4141Hoon has a wide (but not extensible) variety of atom syntaxes.
4242Each syntax for an atom produces an appropriate predefined aura.
4343And Hoon's printer can invertibly print any aura Hoon can parse.
44−Because atoms make great path nodes and paths make great URLs,
44+Because atoms make great path nodes and paths make great URLs,
4545all regular atom syntaxes use only URL-safe characters.
4646
4747## Examples
@@ -211,7 +211,7 @@ strings, which nothing in Hoon recognizes. The set of syntaxes
211211that Hoon knows how to parse and/or print is fixed. But there
212212are plenty of good reasons to use your own user-defined auras.
213213
214−If your program uses both fortnights and furlongs, Hoon will not
214+If your program uses both fortnights and furlongs, Hoon will not
215215parse a user-defined fortnight syntax. It will not print furlongs
216216in the dojo. But the type system will keep you from accidentally
217217passing a furlong to a function that expects a fortnight.
docs/byte/2.md → docs/learn/urbyte/2.mdrenamed+1−1
@@ -4,7 +4,7 @@ sort: 3
44title: Subject-oriented programming
55---
66
7−# Urbyte 2: subject-oriented programming
7+# Urbyte 2: Subject-oriented programming
88
99Thanks for reading Urbytes 0 and 1! In Urbyte 2, we'll take
1010nouns for granted and have some real fun with them.
docs/using.md+3−3
@@ -1,10 +1,10 @@
11---
22navhome: /docs/
3−sort: 2
3+sort: 1
44---
55
6−# Using
6+# Get Started
77
8−These short guides will get you installed, setup, and walk you through the basic features of Urbit.
8+These short guides will get you installed, setup, and will walk you through the basic features of Urbit.
99
1010<list/>