on master help sign in
Merge branch 'master' into link-fixes
3d8f3c2rmariani
getting-started.udon+5−12
@@ -111,10 +111,10 @@ If you already own a point, then click on the `Details ->` under your sigil in t
111If you just accepted a point, you'll be returned to your point screen. Notice that
111If you just accepted a point, you'll be returned to your point screen. Notice that
112that links and buttons are now clickable. You now own this point!
112that links and buttons are now clickable. You now own this point!
113
113
114−Click the link that says `Generate Urbit networking keys`. Bridge will let you either
114+Click the link that says `Set Urbit networking keys`. Bridge will let you either
115download a keyfile derived from your networking keys are you can paste in your own
115download a keyfile derived from your networking keys are you can paste in your own
116network seed and derive a new keyfile. See our
116network seed and derive a new keyfile. See our
117−[HD Wallet Spec](https://github.com/urbit/proposals/blob/master/proposals/8.md)
117+[HD Wallet Spec](https://github.com/urbit/proposals/blob/master/8.udon)
118for more information.
118for more information.
119
119
120#### Step 6: Generate Your Keyfile
120#### Step 6: Generate Your Keyfile
@@ -457,18 +457,11 @@ which indicates that the command was processed.
457Unix (the "pier" is our shorthand for the directory whose name corresponds to your Azimuth point). Changes to these files are automatically synced into your ship.
457Unix (the "pier" is our shorthand for the directory whose name corresponds to your Azimuth point). Changes to these files are automatically synced into your ship.
458
458
459
459
460−#### Talk
460+#### Landscape
461
461
462−Use `ctrl-x` to toggle between the Dojo and the Talk prompts.
462+Landscape is web app we built for chatting and making posts. We are using Landscape to run a few experimental "cities" -- private discussion communities -- as a closed beta of sorts. If you have an Azimuth point, you’ll need to [email us](mailto:support@urbit.org) a request to gain access to one of these cities and hang out with the Tlon team.
463
463
464−While on the Talk prompt, let's join the main Urbit support chat channel, `/urbit-help`:
464+Once you're in a channel, you can also interact with it from the command line, if you so wish. Use `ctrl-x` in your ship's terminal window to toggle between the Dojo and the Talk prompts.
465−
466−```
467−~sample-planet:talk[] ;join /urbit-help
468−```
469−
470−Talk is stateful, so your ship will download a backlog. `/urbit-help` is the
471−place to ask questions about getting up and running.
472
465
473#### Shutting Down and Restarting
466#### Shutting Down and Restarting
474
467
learn/arvo/hoon.udon+1
@@ -31,4 +31,5 @@ Consult the [Reference section](/docs/reference/) to look up any unknown rune or
31
31
32As you work your way through these lessons you may want to work on example problems from the [Hoon workbook](link) for practice. Once you finish the lessons here you may want to write more versatile Hoon programs which can make use of more of your urbit's environment, in which case you'll want to check out the [Generators](/docs/learn/arvo/arvo-internals/generators) documentation. Or maybe you'd like to learn how to write a [Gall app](/docs/learn/arvo/arvo-internals/gall). Learn about [Udon](/docs/learn/arvo/arvo-internals/udon), Urbit's stripped down version of Markdown. Or learn [Sail](/docs/learn/arvo/arvo-internals/sail), a subset of Hoon used for generating XML nodes.
32As you work your way through these lessons you may want to work on example problems from the [Hoon workbook](link) for practice. Once you finish the lessons here you may want to write more versatile Hoon programs which can make use of more of your urbit's environment, in which case you'll want to check out the [Generators](/docs/learn/arvo/arvo-internals/generators) documentation. Or maybe you'd like to learn how to write a [Gall app](/docs/learn/arvo/arvo-internals/gall). Learn about [Udon](/docs/learn/arvo/arvo-internals/udon), Urbit's stripped down version of Markdown. Or learn [Sail](/docs/learn/arvo/arvo-internals/sail), a subset of Hoon used for generating XML nodes.
33
33
34+
34> Last major revision of this section: December 2018
35> Last major revision of this section: December 2018
learn/arvo/style.udon+24−35
@@ -7,22 +7,18 @@
7
7
8# Hoon Style Guide
8# Hoon Style Guide
9
9
10−## Layout
10+Welcome to the Hoon style guide. It's important to
11
11
12−Layout in Hoon is an art. Hoon's position on layout is: so long
12+## Layout
13−as your code is (a) correctly commented, (b) free from blank or
14−overlong lines, (c) parses, and (d) looks good, it's good layout.
15
13
16−(Hoon does not accept the "gofmt" thesis that there is one true
14+Hoon's position on layout is: so long as your code is (a) correctly commented,
17−layout. A heuristic algorithm could probably lay out decent
15+(b) free from blank or overlong lines, (c) parses, and (d) looks good, it's good
18−Hoon. Someone will probably write such an algorithm, which
16+layout.
19−doesn't mean they should. Why can't there be art in the world?
20−Why does everything have to be solved by robot?)
21
17
22When a layout standard or other fundamental coding convention is
18When a layout standard or other fundamental coding convention is
23not perfectly rigid, code can develop some individual flavor.
19not perfectly rigid, code can develop some individual flavor.
24−But Hoon's layout rules, though not rigid, are still strict. So
20+But Hoon's layout rules, though not rigid, are still strict. The
25−the flavor should never overwhelm the content.
21+flavor should never overwhelm the content.
26
22
27### General outline of Hoon syntax
23### General outline of Hoon syntax
28
24
@@ -48,27 +44,23 @@ or
48```
44```
49
45
50These are regular forms -- every rune can be written this way.
46These are regular forms -- every rune can be written this way.
51−Hoon also has a variety of wide irregular forms. All tall
47+Hoon also has a variety of wide [irregular forms](/docs/reference/hoon-expressions/irregular). All tall
52forms are regular. All code within a wide form is wide.
48forms are regular. All code within a wide form is wide.
53−Almost all code has both wide and tall forms (the exception:
49+Almost all code has both wide and tall forms, the exception
54−named cores).
50+being named cores.
55
51
56The goal of wide/tall forms is to resemble the look of
52The goal of wide/tall forms is to resemble the look of
57procedural code, with its statement/expression distinction,
53procedural code, with its statement/expression distinction,
58in a purely functional language. In particular, complex code in
54in a purely functional language. In particular, complex code in
59functional languages tends to develop a diagonal shape, since
55functional languages tends to develop a diagonal shape, since
60−child nodes in the syntax tree are indented right. This shape
56+child nodes in the syntax tree are indented right.
61−creates a constant struggle against the right margin.
62
57
63### Tall layout conventions
58### Tall layout conventions
64
59
65In wide form, the parser allows no freedom of layout (and no
60In wide form, the parser allows no freedom of layout (and no
66−comments, either). In tall form, there is too much freedom.
61+comments, either). In tall form, there is too much freedom, and so we need
67−We need conventions.
62+conventions. These conventions aren't absolute, but
68−
63+you shouldn't defy them unless you have a good reason to do so.
69−But -- if you really know what you're doing -- you can play with
70−these conventions. But don't do it just out of carelessness,
71−ego or boredom. Have a reason.
72
64
73Syntactically, there are three kinds of runes: fixed sequences,
65Syntactically, there are three kinds of runes: fixed sequences,
74variable sequences, and cores/engines. Let's talk about each.
66variable sequences, and cores/engines. Let's talk about each.
@@ -121,7 +113,7 @@ It is sometimes acceptable to not backstep -- especially in tuple
121runes: `:-,` `:_`, `:+` and `+^`. But you should have a specific reason:
113runes: `:-,` `:_`, `:+` and `+^`. But you should have a specific reason:
122for example: emphasizing symmetry in a tuple.
114for example: emphasizing symmetry in a tuple.
123
115
124−#### Variable sequences
116+#### Variable sequences
125
117
126Variable sequences can have an arbitrary number of elements, so
118Variable sequences can have an arbitrary number of elements, so
127they can't self-terminate. They are terminated by a `==` marker.
119they can't self-terminate. They are terminated by a `==` marker.
@@ -179,8 +171,8 @@ Queenside format:
179```
171```
180
172
181The queenside format is more useful when the tails are bigger.
173The queenside format is more useful when the tails are bigger.
182−(It is also usually hard to read without linebreak comments,
174+It is also usually hard to read without linebreak comments,
183−as shown above.)
175+as demonstrated above.
184
176
185We sometimes end up with multiple terminators on separate lines,
177We sometimes end up with multiple terminators on separate lines,
186two or more spaces apart. These lines can be collapsed:
178two or more spaces apart. These lines can be collapsed:
@@ -222,7 +214,7 @@ two empty lines in a row in a Hoon file.
222
214
223Whitespace is semi-significant. The difference between a
215Whitespace is semi-significant. The difference between a
224space and a gap (more than one space) is significant. But two or
216space and a gap (more than one space) is significant. But two or
225−more spaces, newlines or comments are one gap.
217+more spaces, newlines, or comments are one gap.
226
218
227#### Comment conventions
219#### Comment conventions
228
220
@@ -251,7 +243,7 @@ legitimate:
251 this.is.more.code
243 this.is.more.code
252```
244```
253
245
254−But more air is less often needed than you may think.
246+But air on both sides is needed less often than you may think.
255
247
256Crowded comments are comments on lines which also contain code.
248Crowded comments are comments on lines which also contain code.
257Older code has a lot of these, especially the "column 56"
249Older code has a lot of these, especially the "column 56"
@@ -472,10 +464,8 @@ after the definition) has an explanation. This is obviously a
472judgment call, as a grade of A should always be. If a definition
464judgment call, as a grade of A should always be. If a definition
473doesn't call for any explanation, it must be dead obvious.
465doesn't call for any explanation, it must be dead obvious.
474
466
475−Two: every `%constant` we use must be defined where it is used --
467+Two: every `%constant` we use must be defined where it is used,
476−not just where it's declared. (Formal comment binding lets us
468+not just where it's declared.
477−write one decoration hint at the base of an expression, even when
478−there are many uses of the same constant in the same code.)
479
469
480The advantage of a `%constant` over a classic `typedef`: there is no
470The advantage of a `%constant` over a classic `typedef`: there is no
481need to search formally for a symbol. The disadvantage: there is
471need to search formally for a symbol. The disadvantage: there is
@@ -483,7 +473,6 @@ no trivial way to find out what the symbol actually means. So
483when I send some `%foobar` move, I should define what I think
473when I send some `%foobar` move, I should define what I think
484`%foobar` means. Just copy and paste the original definition.
474`%foobar` means. Just copy and paste the original definition.
485
475
486−The A grade should be hard to earn. Code shouldn't even try for
487−an A until it is quite stable. The worst thing in the world is
476+Code shouldn't even try for an A until it is quite stable. The worst
488−code that changes without the documentation. Any *incorrect*
477+thing in the world is code that changes without updating the documentation.
489−comment in a file drops it all the way back to a D.
478+Any *incorrect* comment in a file drops it all the way back to a D.