on master help sign in
Aliases for old IA -> new IA
38cf16bMatilde Park
arvo/_index.md+1
@@ -3,6 +3,7 @@ title = "Arvo"
3weight = 1
3weight = 1
4sort_by = "weight"
4sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6+aliases = ["/docs/learn/arvo/"]
6+++
7+++
7Arvo is Urbit's functional operating system, written in [Hoon](@/docs/hoon/_index.md). It's composed of modules called _vanes_:
8Arvo is Urbit's functional operating system, written in [Hoon](@/docs/hoon/_index.md). It's composed of modules called _vanes_:
8
9
arvo/ames.md+1
@@ -2,6 +2,7 @@
2title = "Ames"
2title = "Ames"
3weight = 1
3weight = 1
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/arvo/ames/"]
5+++
6+++
6Our networking protocol.
7Our networking protocol.
7
8
arvo/behn.md+1
@@ -2,6 +2,7 @@
2title = "Behn"
2title = "Behn"
3weight = 2
3weight = 2
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/arvo/behn/"]
5+++
6+++
6Our simple timer.
7Our simple timer.
7
8
arvo/clay.md+1
@@ -2,6 +2,7 @@
2title = "Clay"
2title = "Clay"
3weight = 3
3weight = 3
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/arvo/clay/"]
5+++
6+++
6Our filesystem.
7Our filesystem.
7
8
arvo/dill.md+1
@@ -2,6 +2,7 @@
2title = "Dill"
2title = "Dill"
3weight = 4
3weight = 4
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/arvo/dill/"]
5+++
6+++
6Our terminal driver.
7Our terminal driver.
7
8
arvo/eyre.md+1
@@ -2,6 +2,7 @@
2title = "Eyre"
2title = "Eyre"
3weight = 5
3weight = 5
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/arvo/eyre/"]
5+++
6+++
6Our HTTP server.
7Our HTTP server.
7
8
arvo/ford.md+1
@@ -2,6 +2,7 @@
2title = "Ford"
2title = "Ford"
3weight = 6
3weight = 6
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/arvo/ford/"]
5+++
6+++
6Our typed and marked computation engine.
7Our typed and marked computation engine.
7
8
arvo/gall.md+1
@@ -2,6 +2,7 @@
2title = "Gall Apps"
2title = "Gall Apps"
3weight = 6
3weight = 6
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/arvo/gall/"]
5+++
6+++
6This is documentation about how to write Gall apps. Some knowledge of Hoon is assumed.
7This is documentation about how to write Gall apps. Some knowledge of Hoon is assumed.
7
8
arvo/glossary.md+2−1
@@ -1,7 +1,8 @@
1+++
1+++
2−title = "Arvo Glossary"
2+title = "Glossary"
3weight = 3
3weight = 3
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/arvo-glossary/"]
5+++
6+++
6
7
7Urbit is renowned for its exotic terminology. Here's a simple overview
8Urbit is renowned for its exotic terminology. Here's a simple overview
arvo/hall.md+1
@@ -2,6 +2,7 @@
2title = "Hall"
2title = "Hall"
3weight = 7
3weight = 7
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/learn/arvo/hall/"]
5+++
6+++
6> Last major revision of this tutorial: 2017. Some of the information and Hoon syntax here may
7> Last major revision of this tutorial: 2017. Some of the information and Hoon syntax here may
7 be outdated.
8 be outdated.
arvo/sail-and-udon.md+1
@@ -2,6 +2,7 @@
2title = "Sail and Udon"
2title = "Sail and Udon"
3weight = 7
3weight = 7
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/using/sail-and-udon/"]
5+++
6+++
6
7
7Sail is Hoon markup that’s used to render a web page with XML. But what makes it special is that you can run arbitrary Hoon code within such a web page without using a separate markup language.
8Sail is Hoon markup that’s used to render a web page with XML. But what makes it special is that you can run arbitrary Hoon code within such a web page without using a separate markup language.
arvo/ship-troubleshooting.md+1
@@ -2,6 +2,7 @@
2title = "Ship Troubleshooting"
2title = "Ship Troubleshooting"
3weight = 8
3weight = 8
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/using/ship-troubleshooting/"]
5+++
6+++
6
7
7Urbit is still in the development stage, so there's a chance that your ship won't start properly, or will stop working properly when you. That's ok! This document is intended to help you in such an event.
8Urbit is still in the development stage, so there's a chance that your ship won't start properly, or will stop working properly when you. That's ok! This document is intended to help you in such an event.
azimuth/azimuth.md+1
@@ -2,6 +2,7 @@
2title = "Azimuth"
2title = "Azimuth"
3weight = 2
3weight = 2
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/azimuth"]
5+++
6+++
6
7
7Azimuth is a general-purpose public-key infrastructure (PKI) on the Ethereum blockchain, used as a decentralized ledger for Urbit identities that we call **points**. Having a point is necessary to use the Urbit network, which makes it important to have a neutral ledger to determine who owns what.
8Azimuth is a general-purpose public-key infrastructure (PKI) on the Ethereum blockchain, used as a decentralized ledger for Urbit identities that we call **points**. Having a point is necessary to use the Urbit network, which makes it important to have a neutral ledger to determine who owns what.
azimuth/glossary.md+1
@@ -2,6 +2,7 @@
2title = "Azimuth Glossary"
2title = "Azimuth Glossary"
3weight = 3
3weight = 3
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/azimuth-glossary/"]
5+++
6+++
6
7
7
8
hoon/_index.md+1
@@ -3,6 +3,7 @@ title = "Hoon"
3weight = 2
3weight = 2
4sort_by = "weight"
4sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6+aliases = ["docs/learn/hoon/"]
6+++
7+++
7Hoon is a high-level, statically typed, functional programming language, custom-designed for use with Urbit. For a functional language it has a surprisingly imperative style, and mastering it doesn't require knowing any advanced mathematics.
8Hoon is a high-level, statically typed, functional programming language, custom-designed for use with Urbit. For a functional language it has a surprisingly imperative style, and mastering it doesn't require knowing any advanced mathematics.
8
9
hoon/cheat-sheet.md+2−1
@@ -1,7 +1,8 @@
1+++
1+++
2−title = "Cheat sheet"
2+title = "Cheat Sheet"
3weight = 5
3weight = 5
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/cheat-sheet/"]
5+++
6+++
6
7
7Download the cheat sheet PDF [here](https://storage.googleapis.com/media.urbit.org/docs/hoon-cheat-sheet--2017-12-12.pdf).
8Download the cheat sheet PDF [here](https://storage.googleapis.com/media.urbit.org/docs/hoon-cheat-sheet--2017-12-12.pdf).
hoon/hoon-expressions/_index.md+1
@@ -3,6 +3,7 @@ title = "Hoon Expressions"
3weight = 1
3weight = 1
4sort_by = "weight"
4sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6+aliases = ["/docs/reference/hoon-expressions/"]
6+++
7+++
7Documentation for Hoon expressions.
8Documentation for Hoon expressions.
8
9
hoon/hoon-expressions/advanced.md+1
@@ -2,6 +2,7 @@
2title = "Advanced Types"
2title = "Advanced Types"
3weight = 5
3weight = 5
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/advanced/"]
5+++
6+++
6The definition of `type` in the 'Basic Types' section is only a simplified version. The Hoon type system is simple, but not **that** simple.
7The definition of `type` in the 'Basic Types' section is only a simplified version. The Hoon type system is simple, but not **that** simple.
7
8
hoon/hoon-expressions/basic.md+1
@@ -2,6 +2,7 @@
2title = "Basic Types"
2title = "Basic Types"
3weight = 4
3weight = 4
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/basic/"]
5+++
6+++
6A type is usually understood to be a set of values. Hoon values are all nouns,
7A type is usually understood to be a set of values. Hoon values are all nouns,
7so a Hoon type is a set of nouns.
8so a Hoon type is a set of nouns.
hoon/hoon-expressions/irregular.md+1−1
@@ -2,8 +2,8 @@
2title = "Irregular forms"
2title = "Irregular forms"
3weight = 7
3weight = 7
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/irregular/"]
5+++
6+++
6−##### `~palfun-foslup`
7
7
8##### Reading guide
8##### Reading guide
9
9
hoon/hoon-expressions/limb/_index.md+1
@@ -3,6 +3,7 @@ title = "Limbs and wings"
3weight = 3
3weight = 3
4sort_by = "weight"
4sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6+aliases = ["docs/reference/hoon-expressions/limb/"]
6+++
7+++
7One feature Hoon lacks: a context that isn't a first-class value. Hoon has no
8One feature Hoon lacks: a context that isn't a first-class value. Hoon has no
8concept of scope, environment, etc. An expression has exactly one data source,
9concept of scope, environment, etc. An expression has exactly one data source,
hoon/hoon-expressions/limb/limb.md+1
@@ -2,6 +2,7 @@
2title = "Limbs"
2title = "Limbs"
3weight = 1
3weight = 1
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/limb/limb/"]
5+++
6+++
6A limb is an attribute of subject.
7A limb is an attribute of subject.
7
8
hoon/hoon-expressions/limb/wing.md+1
@@ -2,6 +2,7 @@
2title = "Wings"
2title = "Wings"
3weight = 2
3weight = 2
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/limb/wing/"]
5+++
6+++
6`[%wing p=(list limb)]`
7`[%wing p=(list limb)]`
7
8
hoon/hoon-expressions/rune/_index.md+1
@@ -3,6 +3,7 @@ title = "Runes"
3weight = 2
3weight = 2
4sort_by = "weight"
4sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6+aliases = ["docs/reference/hoon-expressions/rune/"]
6+++
7+++
7Runes are a way to form expressions in Hoon.
8Runes are a way to form expressions in Hoon.
8
9
hoon/hoon-expressions/rune/bar.md+1
@@ -2,6 +2,7 @@
2title = "Cores | ('bar')"
2title = "Cores | ('bar')"
3weight = 7
3weight = 7
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/rune/bar/"]
5+++
6+++
6Core expressions produce cores. A core is a cell of `[battery payload]`.
7Core expressions produce cores. A core is a cell of `[battery payload]`.
7The `battery` is code, a battery of Nock formulas. The `payload` is the data
8The `battery` is code, a battery of Nock formulas. The `payload` is the data
hoon/hoon-expressions/rune/buc.md+1
@@ -2,6 +2,7 @@
2title = "Structures $ ('buc')"
2title = "Structures $ ('buc')"
3weight = 12
3weight = 12
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/rune/buc/"]
5+++
6+++
6The `$` family of runes is used for defining custom types. Strictly speaking,
7The `$` family of runes is used for defining custom types. Strictly speaking,
7these runes are used to produce 'structures'. A structure is a compile-time
8these runes are used to produce 'structures'. A structure is a compile-time
hoon/hoon-expressions/rune/cen.md+1
@@ -2,6 +2,7 @@
2title = "Calls % ('cen')"
2title = "Calls % ('cen')"
3weight = 10
3weight = 10
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/rune/cen/"]
5+++
6+++
6The `%` family of runes is used for making 'function calls' in Hoon. To be more precise, these runes evaluate the `$` arm in cores, usually after modifying the sample. (The default sample is replaced with the input values given in the call.)
7The `%` family of runes is used for making 'function calls' in Hoon. To be more precise, these runes evaluate the `$` arm in cores, usually after modifying the sample. (The default sample is replaced with the input values given in the call.)
7
8
hoon/hoon-expressions/rune/col.md+1
@@ -2,6 +2,7 @@
2title = "Cells : ('col')"
2title = "Cells : ('col')"
3weight = 9
3weight = 9
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/rune/col/"]
5+++
6+++
6The `:` ("col") expressions are used to produce cells, which are pairs of values. E.g., `:-(p q)` produces the cell `[p q]`. All `:` runes reduce to `:-`.
7The `:` ("col") expressions are used to produce cells, which are pairs of values. E.g., `:-(p q)` produces the cell `[p q]`. All `:` runes reduce to `:-`.
7
8
hoon/hoon-expressions/rune/constants.md+1
@@ -2,6 +2,7 @@
2title = "Atoms and strings"
2title = "Atoms and strings"
3weight = 1
3weight = 1
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/rune/constants/"]
5+++
6+++
6The simplest expressions in every language are constants:
7The simplest expressions in every language are constants:
7atoms, strings, paths. (Strings and paths aren't all constants per
8atoms, strings, paths. (Strings and paths aren't all constants per
hoon/hoon-expressions/rune/dot.md+1
@@ -2,6 +2,7 @@
2title = "Nock . ('dot')"
2title = "Nock . ('dot')"
3weight = 3
3weight = 3
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/rune/dot/"]
5+++
6+++
6Anything Nock can do, Hoon can do also. These runes are used for carrying out Nock operations in Hoon.
7Anything Nock can do, Hoon can do also. These runes are used for carrying out Nock operations in Hoon.
7
8
hoon/hoon-expressions/rune/ket.md+1
@@ -2,6 +2,7 @@
2title = "Casts ^ ('ket')"
2title = "Casts ^ ('ket')"
3weight = 11
3weight = 11
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/rune/ket/"]
5+++
6+++
6[`^-` ("kethep")](#kethep), [`^+` ("ketlus")](#ketlus), and
7[`^-` ("kethep")](#kethep), [`^+` ("ketlus")](#ketlus), and
7[`^=` ("kettis")](#kettis) let us adjust types without violating type
8[`^=` ("kettis")](#kettis) let us adjust types without violating type
hoon/hoon-expressions/rune/lus.md+1
@@ -2,6 +2,7 @@
2title = "Arms + ('lus')"
2title = "Arms + ('lus')"
3weight = 8
3weight = 8
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/hoon-expressions/rune/lus/"]
5+++
6+++
6A core is a cell of `[battery payload]`. The battery is made of one or more arms, each of which is a computation on its parent core.
7A core is a cell of `[battery payload]`. The battery is made of one or more arms, each of which is a computation on its parent core.
7
8
hoon/hoon-expressions/rune/mic.md+1
@@ -2,6 +2,7 @@
2title = "Make ; ('mic')"
2title = "Make ; ('mic')"
3weight = 13
3weight = 13
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/rune/mic/"]
5+++
6+++
6
7
7Miscellaneous useful macros.
8Miscellaneous useful macros.
hoon/hoon-expressions/rune/sig.md+1
@@ -2,6 +2,7 @@
2title = "Hints ~ ('sig')"
2title = "Hints ~ ('sig')"
3weight = 14
3weight = 14
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/hoon-expressions/rune/sig/"]
5+++
6+++
6Runes that use Nock `11` to pass non-semantic info to the interpreter.
7Runes that use Nock `11` to pass non-semantic info to the interpreter.
7
8
hoon/hoon-expressions/rune/terminators.md+1
@@ -2,6 +2,7 @@
2title = "Terminators -- and =="
2title = "Terminators -- and =="
3weight = 15
3weight = 15
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/hoon-expressions/rune/terminators/"]
5+++
6+++
6The `--` and `==` are used as terminators: `--` for core expressions, and `==` for terminating a 'running' or 'jogging' series of Hoon expressions.
7The `--` and `==` are used as terminators: `--` for core expressions, and `==` for terminating a 'running' or 'jogging' series of Hoon expressions.
7
8
hoon/hoon-expressions/rune/tis.md+1
@@ -2,6 +2,7 @@
2title = "Change Subject = ('tis')"
2title = "Change Subject = ('tis')"
3weight = 5
3weight = 5
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/hoon-expressions/rune/tis/"]
5+++
6+++
6These runes modify the subject. (Or more precisely, they
7These runes modify the subject. (Or more precisely, they
7evaluate at least one of their subexpressions with a modified subject.)
8evaluate at least one of their subexpressions with a modified subject.)
hoon/hoon-expressions/rune/wut.md+1
@@ -2,6 +2,7 @@
2title = "Conditionals ? ('wut')"
2title = "Conditionals ? ('wut')"
3weight = 6
3weight = 6
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/rune/wut/"]
5+++
6+++
6Hoon has the usual program control branches. It also has the usual logical
7Hoon has the usual program control branches. It also has the usual logical
7operators: AND `?&`, OR `?|`, and NOT `?!`. It also has a `?=` rune that tests
8operators: AND `?&`, OR `?|`, and NOT `?!`. It also has a `?=` rune that tests
hoon/hoon-expressions/rune/zap.md+1
@@ -2,6 +2,7 @@
2title = "Wild ! ('zap')"
2title = "Wild ! ('zap')"
3weight = 4
3weight = 4
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/hoon-expressions/rune/zap/"]
5+++
6+++
6## Runes
7## Runes
7
8
hoon/hoon-tutorial/_index.md+1−1
@@ -3,7 +3,7 @@ title = "Hoon Tutorial"
3weight = 1
3weight = 1
4sort_by = "weight"
4sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6−aliases = ["/docs/byte/0/", "/docs/byte"]
6+aliases = ["/docs/byte/0/", "/docs/byte", "/docs/learn/hoon/hoon-tutorial/"]
7+++
7+++
8
8
9This series is designed to teach you Hoon without assuming you have an extensive programming background. In fact, you should be able to follow much of it even if you have no programming experience at all, though of course experience helps. We strongly encourage you to try out all the examples of each lesson. These lessons are meant for the beginner but they aren't meant to be skimmed. Each lesson falls into one of two categories: **readings**, which are prose-heavy explanations of Hoon fundamentals, and **walkthroughs**, which are line-by-line explanations of example programs. Walkthroughs are found between readings, offering a practical implementation of the concepts taught in the reading before.
9This series is designed to teach you Hoon without assuming you have an extensive programming background. In fact, you should be able to follow much of it even if you have no programming experience at all, though of course experience helps. We strongly encourage you to try out all the examples of each lesson. These lessons are meant for the beginner but they aren't meant to be skimmed. Each lesson falls into one of two categories: **readings**, which are prose-heavy explanations of Hoon fundamentals, and **walkthroughs**, which are line-by-line explanations of example programs. Walkthroughs are found between readings, offering a practical implementation of the concepts taught in the reading before.
hoon/hoon-tutorial/ackermann.md+1
@@ -2,6 +2,7 @@
2title = "1.6.1 Walkthrough: Ackermann Function"
2title = "1.6.1 Walkthrough: Ackermann Function"
3weight = 14
3weight = 14
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/learn/hoon/hoon-tutorial/ackermann/"]
5+++
6+++
6
7
7The Ackermann function is one of the earliest examples of a function that is both totally computable -- meaning that it can be solved -- and not primitively recursive -- meaning it can not be rewritten in an iterative fashion.
8The Ackermann function is one of the earliest examples of a function that is both totally computable -- meaning that it can be solved -- and not primitively recursive -- meaning it can not be rewritten in an iterative fashion.
hoon/hoon-tutorial/arms-and-cores.md+1
@@ -2,6 +2,7 @@
2title = "1.7 Arms and Cores"
2title = "1.7 Arms and Cores"
3weight = 15
3weight = 15
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/arms-and-cores/"]
5+++
6+++
6The Hoon subject is a noun. Each fragment of this noun is either an arm or a leg. In the previous lesson you learned what a leg is, and how to return legs of the subject by various means. In this lesson you'll learn what an arm is. Arms are a bit more complex than legs -- a full understanding of them requires a bit more background knowledge. Accordingly, in this lesson we must also introduce an important Hoon data structure: a 'core'.
7The Hoon subject is a noun. Each fragment of this noun is either an arm or a leg. In the previous lesson you learned what a leg is, and how to return legs of the subject by various means. In this lesson you'll learn what an arm is. Arms are a bit more complex than legs -- a full understanding of them requires a bit more background knowledge. Accordingly, in this lesson we must also introduce an important Hoon data structure: a 'core'.
7
8
hoon/hoon-tutorial/atoms-auras-and-simple-cell-types.md+1
@@ -2,6 +2,7 @@
2title = "2.1 Atoms, Auras, and Simple Cell Types"
2title = "2.1 Atoms, Auras, and Simple Cell Types"
3weight = 24
3weight = 24
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/atoms-auras-and-simple-cell-types/"]
5+++
6+++
6Like most modern high-level programming languages, Hoon has a type system. Because Hoon is a functional programming language, its type system differs somewhat from those of non-functional languages. In the next few lessons we'll go over Hoon's type system and point out some of its distinctive features. Certain advanced topics (e.g. type [polymorphism](https://en.wikipedia.org/wiki/Polymorphism_%28computer_science%29)) won't be addressed until a later chapter.
7Like most modern high-level programming languages, Hoon has a type system. Because Hoon is a functional programming language, its type system differs somewhat from those of non-functional languages. In the next few lessons we'll go over Hoon's type system and point out some of its distinctive features. Certain advanced topics (e.g. type [polymorphism](https://en.wikipedia.org/wiki/Polymorphism_%28computer_science%29)) won't be addressed until a later chapter.
7
8
hoon/hoon-tutorial/bank-account.md+1
@@ -2,6 +2,7 @@
2title = "1.8.1 Bank Account"
2title = "1.8.1 Bank Account"
3weight = 17
3weight = 17
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/bank-account/"]
5+++
6+++
6
7
7In this lesson, we will write a door that can act as a bank account with the ability to withdraw, deposit, and check the account's balance.
8In this lesson, we will write a door that can act as a bank account with the ability to withdraw, deposit, and check the account's balance.
hoon/hoon-tutorial/caesar.md+1
@@ -2,6 +2,7 @@
2title = "1.7.1 Walkthrough: Caesar Cipher"
2title = "1.7.1 Walkthrough: Caesar Cipher"
3weight = 16
3weight = 16
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/caesar/"]
5+++
6+++
6
7
7A Caesar cipher is a very simple way to obfuscate a message. The technique
8A Caesar cipher is a very simple way to obfuscate a message. The technique
hoon/hoon-tutorial/conditionals.md+1
@@ -2,6 +2,7 @@
2title = "1.3.1 Walkthrough: Conditionals"
2title = "1.3.1 Walkthrough: Conditionals"
3weight = 5
3weight = 5
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/conditionals/"]
5+++
6+++
6
7
7In this lesson, we will write a generator that takes an integer and checks if it is an even number between 1 and 100. This will help demonstrate how boolean (true or false) conditional expressions work in Hoon.
8In this lesson, we will write a generator that takes an integer and checks if it is an even number between 1 and 100. This will help demonstrate how boolean (true or false) conditional expressions work in Hoon.
hoon/hoon-tutorial/doors.md+2
@@ -2,7 +2,9 @@
2title = "1.8 Doors"
2title = "1.8 Doors"
3weight = 16
3weight = 16
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/doors/"]
5+++
6+++
7+
6It's useful to have cores whose arms evaluate to make gates. The use of such cores is common in Hoon; that's how the functions of the Hoon standard library are stored in the subject. Learning about such cores will also deepen the reader's understanding of Hoon semantics, and for that reason alone is worthwhile.
8It's useful to have cores whose arms evaluate to make gates. The use of such cores is common in Hoon; that's how the functions of the Hoon standard library are stored in the subject. Learning about such cores will also deepen the reader's understanding of Hoon semantics, and for that reason alone is worthwhile.
7
9
8In this lesson you'll also learn about a new kind of core, called a 'door'.
10In this lesson you'll also learn about a new kind of core, called a 'door'.
hoon/hoon-tutorial/egg-timer.md+1
@@ -2,6 +2,7 @@
2title = "2.7.1 Gall Walkthrough: Egg Timer"
2title = "2.7.1 Gall Walkthrough: Egg Timer"
3weight = 36
3weight = 36
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/egg-timer/"]
5+++
6+++
6
7
7The Arvo operating system is divided up into modules called vanes. Gall is the vane responsible for providing an API for building stateful applications in Urbit. Gall is a complex system that takes a lot of getting used to, so let's dip our toes in with a simple egg-timer app.
8The Arvo operating system is divided up into modules called vanes. Gall is the vane responsible for providing an API for building stateful applications in Urbit. Gall is a complex system that takes a lot of getting used to, so let's dip our toes in with a simple egg-timer app.
hoon/hoon-tutorial/fibonacci.md+1
@@ -2,6 +2,7 @@
2title = "1.4.1 Walkthrough: Fibonacci Sequence"
2title = "1.4.1 Walkthrough: Fibonacci Sequence"
3weight = 7
3weight = 7
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/fibonacci/"]
5+++
6+++
6
7
7In this example, we will write a generator that produces a list of Fibonacci numbers up to `n`.
8In this example, we will write a generator that produces a list of Fibonacci numbers up to `n`.
hoon/hoon-tutorial/gall.md+1
@@ -2,6 +2,7 @@
2title = "2.7 Gall"
2title = "2.7 Gall"
3weight = 35
3weight = 35
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/gall/"]
5+++
6+++
6
7
7Gall is the Arvo vane responsible for handling user space applications. When writing a Gall application there are several things you will need to understand.
8Gall is the Arvo vane responsible for handling user space applications. When writing a Gall application there are several things you will need to understand.
hoon/hoon-tutorial/gates.md+1
@@ -2,6 +2,7 @@
2title = "1.5 Gates (Hoon Functions)"
2title = "1.5 Gates (Hoon Functions)"
3weight = 8
3weight = 8
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/gates/"]
5+++
6+++
6In this lesson you're going to learn about Hoon functions.
7In this lesson you're going to learn about Hoon functions.
7
8
hoon/hoon-tutorial/generators.md+2
@@ -2,7 +2,9 @@
2title = "1.9 Generators"
2title = "1.9 Generators"
3weight = 19
3weight = 19
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/generators/"]
5+++
6+++
7+
6Generators are the most straightforward way to write programs for Urbit. They
8Generators are the most straightforward way to write programs for Urbit. They
7are used for doing computations that do not require persistence: they take an
9are used for doing computations that do not require persistence: they take an
8input and produce an output, then disappear. Generators might make sense for
10input and produce an output, then disappear. Generators might make sense for
hoon/hoon-tutorial/hoon-syntax.md+1
@@ -2,6 +2,7 @@
2title = "1.3 Hoon Syntax"
2title = "1.3 Hoon Syntax"
3weight = 4
3weight = 4
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/hoon-syntax/"]
5+++
6+++
6
7
7The study of Hoon can be divided into two parts: syntax and semantics.
8The study of Hoon can be divided into two parts: syntax and semantics.
hoon/hoon-tutorial/iron-polymorphism.md+1
@@ -2,6 +2,7 @@
2title = "2.5.1 Walkthrough: Iron Polymorphism and Wet Polymorphism"
2title = "2.5.1 Walkthrough: Iron Polymorphism and Wet Polymorphism"
3weight = 32
3weight = 32
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/iron-polymorphism/"]
5+++
6+++
6
7
7Polymorphism is a programming concept that allows a a piece of code to use different types at different times. It's a common technique in most languages to make code that can be reused for many different situations, and Hoon is no exception. Let's take a look at a gate from the Hoon standard library as an example; we'll be passing a few different types in. The code below is an excerpt from `hoon.hoon` and, as such, will not run as-is by itself.
8Polymorphism is a programming concept that allows a a piece of code to use different types at different times. It's a common technique in most languages to make code that can be reused for many different situations, and Hoon is no exception. Let's take a look at a gate from the Hoon standard library as an example; we'll be passing a few different types in. The code below is an excerpt from `hoon.hoon` and, as such, will not run as-is by itself.
hoon/hoon-tutorial/lead-polymorphism.md+1
@@ -2,6 +2,7 @@
2title = "2.5.2 Walkthrough: Lead Polymorphism"
2title = "2.5.2 Walkthrough: Lead Polymorphism"
3weight = 33
3weight = 33
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/lead-polymorphism/"]
5+++
6+++
6
7
7There are four kinds of cores: gold, iron, zinc, and lead. You are able to use core-variance rules to create programs which take other programs as arguments. Which particular rules depends on which kind of core your program needs to complete.
8There are four kinds of cores: gold, iron, zinc, and lead. You are able to use core-variance rules to create programs which take other programs as arguments. Which particular rules depends on which kind of core your program needs to complete.
hoon/hoon-tutorial/libraries.md+1
@@ -2,6 +2,7 @@
2title = "2.3.1 Walkthrough: Libraries"
2title = "2.3.1 Walkthrough: Libraries"
3weight = 28
3weight = 28
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/libraries/"]
5+++
6+++
6
7
7In Hoon, like in other languages, it's often useful to create a library for other code to access. In this example, we look at one example of a library that can be used to represent a deck of 52 playing cards. The core below builds such a library, and can be accessed by programs.
8In Hoon, like in other languages, it's often useful to create a library for other code to access. In this example, we look at one example of a library that can be used to represent a deck of 52 playing cards. The core below builds such a library, and can be accessed by programs.
hoon/hoon-tutorial/list-of-numbers.md+2
@@ -2,7 +2,9 @@
2title = "1.1.1 Walkthrough: List of Numbers"
2title = "1.1.1 Walkthrough: List of Numbers"
3weight = 2
3weight = 2
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/list-of-numbers/"]
5+++
6+++
7+
6This code-example is intended to familiarize you with the basics of Hoon syntax. It's okay if you don't understand everything immediately; some concepts may be beyond your grasp for now. What's important is that you become accustomed to the elements of the code and their look once combined into a valid program.
8This code-example is intended to familiarize you with the basics of Hoon syntax. It's okay if you don't understand everything immediately; some concepts may be beyond your grasp for now. What's important is that you become accustomed to the elements of the code and their look once combined into a valid program.
7
9
8Below is a simple Hoon program that takes a single number `n` from the user as input and produces a list of numbers from `1` up to (but not including) `n`. So, if the user gives the number `5`, the program will produce: `~[1 2 3 4]`.
10Below is a simple Hoon program that takes a single number `n` from the user as input and produces a list of numbers from `1` up to (but not including) `n`. So, if the user gives the number `5`, the program will produce: `~[1 2 3 4]`.
hoon/hoon-tutorial/lists.md+1−1
@@ -2,9 +2,9 @@
2title = "1.4 Lists"
2title = "1.4 Lists"
3weight = 6
3weight = 6
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/lists/"]
5+++
6+++
6
7
7−
8# Lists
8# Lists
9
9
10A **list** is a type of noun that you'll frequently encounter when reading and writing Hoon. A list can be thought of as an ordered arrangement of zero or more elements terminated by a `~` (null).
10A **list** is a type of noun that you'll frequently encounter when reading and writing Hoon. A list can be thought of as an ordered arrangement of zero or more elements terminated by a `~` (null).
hoon/hoon-tutorial/molds.md+1
@@ -2,6 +2,7 @@
2title = "2.3.2 Molds"
2title = "2.3.2 Molds"
3weight = 28
3weight = 28
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/molds/"]
5+++
6+++
6
7
7A mold is a function that coerces a noun to a type or crashes.
8A mold is a function that coerces a noun to a type or crashes.
hoon/hoon-tutorial/nouns.md+1
@@ -2,6 +2,7 @@
2title = "1.2 Nouns"
2title = "1.2 Nouns"
3weight = 3
3weight = 3
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/nouns/"]
5+++
6+++
6
7
7In Urbit, every piece of data is a noun. In order to understand Hoon, one must first understand nouns.
8In Urbit, every piece of data is a noun. In order to understand Hoon, one must first understand nouns.
hoon/hoon-tutorial/recursion.md+2
@@ -2,7 +2,9 @@
2title = "1.5.1 Walkthrough: Recursion"
2title = "1.5.1 Walkthrough: Recursion"
3weight = 9
3weight = 9
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/recursion/"]
5+++
6+++
7+
6[Recursion](.) is a common pattern for solving certain problems in most programming
8[Recursion](.) is a common pattern for solving certain problems in most programming
7languages, and Hoon is no exception. One of the classically recursive problems
9languages, and Hoon is no exception. One of the classically recursive problems
8is that of factorial. The factorial of _n_ is the product of all positive
10is that of factorial. The factorial of _n_ is the product of all positive
hoon/hoon-tutorial/setup.md+2
@@ -2,7 +2,9 @@
2title = "1.1 Setup"
2title = "1.1 Setup"
3weight = 1
3weight = 1
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/setup/"]
5+++
6+++
7+
6Before we begin working on Hoon, you should first (1) have Urbit installed and (2) boot a ship that you can use for trying out Hoon examples. Interactive learning is far superior to passive reading.
8Before we begin working on Hoon, you should first (1) have Urbit installed and (2) boot a ship that you can use for trying out Hoon examples. Interactive learning is far superior to passive reading.
7
9
8## What is an urbit?
10## What is an urbit?
hoon/hoon-tutorial/structures-and-complex-types.md+2
@@ -2,7 +2,9 @@
2title = "2.3 Structures and Complex Types"
2title = "2.3 Structures and Complex Types"
3weight = 27
3weight = 27
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/structures-and-complex-types/"]
5+++
6+++
7+
6In this lesson we'll talk a little about how type expressions become structures, and how these structures manifest in different ways in different parts of your Hoon code. We'll also talk about how to create your own custom-defined complex types from simpler ones.
8In this lesson we'll talk a little about how type expressions become structures, and how these structures manifest in different ways in different parts of your Hoon code. We'll also talk about how to create your own custom-defined complex types from simpler ones.
7
9
8## Structures
10## Structures
hoon/hoon-tutorial/the-subject-and-its-legs.md+2
@@ -2,7 +2,9 @@
2title = "1.6 The Subject and Its Legs"
2title = "1.6 The Subject and Its Legs"
3weight = 13
3weight = 13
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/the-subject-and-its-legs/"]
5+++
6+++
7+
6Hoon isn't an object-oriented programming language; it's a "subject-oriented" programming language. But what's this "subject"?
8Hoon isn't an object-oriented programming language; it's a "subject-oriented" programming language. But what's this "subject"?
7
9
8## A Start
10## A Start
hoon/hoon-tutorial/trees-sets-and-maps.md+1
@@ -2,6 +2,7 @@
2title = "2.4 Standard Library: Trees, Sets, and Maps"
2title = "2.4 Standard Library: Trees, Sets, and Maps"
3weight = 30
3weight = 30
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/trees-sets-and-maps/"]
5+++
6+++
6
7
7Along with lists, the Hoon standard library also supports trees, sets, and maps as data structures. A Hoon `tree` is the data structure for a binary tree. A Hoon `set` is the data structure for a set of values. A Hoon `map` is the data structure for a set of `[key value]` pairs.
8Along with lists, the Hoon standard library also supports trees, sets, and maps as data structures. A Hoon `tree` is the data structure for a binary tree. A Hoon `set` is the data structure for a set of values. A Hoon `map` is the data structure for a set of `[key value]` pairs.
hoon/hoon-tutorial/type-checking-and-type-inference.md+2
@@ -2,7 +2,9 @@
2title = "2.2 Type Checking and Type Inference"
2title = "2.2 Type Checking and Type Inference"
3weight = 25
3weight = 25
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/type-checking-and-type-inference/"]
5+++
6+++
7+
6As the Hoon compiler compiles your Hoon code, it does a **type check** on certain expressions to make sure they are guaranteed to produce a value of the correct type. If it cannot be proved that the output value is correctly typed, the compile will fail with a `nest-fail` crash. In order to figure out what type of value is produced by a given expression, the compiler uses **type inference** on that code. In this lesson we'll cover various cases in which a type check is performed, and also how the compiler does type inference on an expression.
8As the Hoon compiler compiles your Hoon code, it does a **type check** on certain expressions to make sure they are guaranteed to produce a value of the correct type. If it cannot be proved that the output value is correctly typed, the compile will fail with a `nest-fail` crash. In order to figure out what type of value is produced by a given expression, the compiler uses **type inference** on that code. In this lesson we'll cover various cases in which a type check is performed, and also how the compiler does type inference on an expression.
7
9
8## Type Checking
10## Type Checking
hoon/hoon-tutorial/type-polymorphism.md+2
@@ -2,7 +2,9 @@
2title = "2.5 Type Polymorphism"
2title = "2.5 Type Polymorphism"
3weight = 31
3weight = 31
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/hoon/hoon-tutorial/type-polymorphism/"]
5+++
6+++
7+
6There are many cases in which one may want to write a function that accepts as input various different types of data. Such a function is said to be [polymorphic](https://en.wikipedia.org/wiki/Polymorphism_%28computer_science%29). ("Polymorphism" = "many forms"; so polymorphic functions accept many forms of data as input.)
8There are many cases in which one may want to write a function that accepts as input various different types of data. Such a function is said to be [polymorphic](https://en.wikipedia.org/wiki/Polymorphism_%28computer_science%29). ("Polymorphism" = "many forms"; so polymorphic functions accept many forms of data as input.)
7
9
8One relatively trivial form of polymorphism involves sub-typing. A gate whose sample is a raw `noun` can accept any Hoon data structure as input -- it's just that the sample will only be treated as a raw noun. For example, consider the `copy` gate below:
10One relatively trivial form of polymorphism involves sub-typing. A gate whose sample is a raw `noun` can accept any Hoon data structure as input -- it's just that the sample will only be treated as a raw noun. For example, consider the `copy` gate below:
hoon/library/1a.md+1
@@ -2,6 +2,7 @@
2title = "1a: Basic Arithmetic"
2title = "1a: Basic Arithmetic"
3weight = 1
3weight = 1
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/1a"]
5+++
6+++
6### `++add`
7### `++add`
7
8
hoon/library/1b.md+1
@@ -2,6 +2,7 @@
2title = "1b: Tree Addressing"
2title = "1b: Tree Addressing"
3weight = 2
3weight = 2
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/1b"]
5+++
6+++
6Check out the Nock [explanation](@/docs/nock/_index.md) for more
7Check out the Nock [explanation](@/docs/nock/_index.md) for more
7information on the tree-addressing system.
8information on the tree-addressing system.
hoon/library/1c.md+1
@@ -2,6 +2,7 @@
2title = "1c: Molds and Mold-Builders"
2title = "1c: Molds and Mold-Builders"
3weight = 3
3weight = 3
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/1c"]
5+++
6+++
6### `++bloq`
7### `++bloq`
7
8
hoon/library/2a.md+1
@@ -2,6 +2,7 @@
2title = "2a: Unit Logic"
2title = "2a: Unit Logic"
3weight = 4
3weight = 4
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2a"]
5+++
6+++
6### `++biff`
7### `++biff`
7
8
hoon/library/2b.md+1
@@ -2,6 +2,7 @@
2title = "2b: List Logic"
2title = "2b: List Logic"
3weight = 5
3weight = 5
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2b"]
5+++
6+++
6### `++fand`
7### `++fand`
7
8
hoon/library/2c.md+1
@@ -2,6 +2,7 @@
2title = "2c: Bit Arithmetic"
2title = "2c: Bit Arithmetic"
3weight = 6
3weight = 6
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2c"]
5+++
6+++
6### `++bex`
7### `++bex`
7
8
hoon/library/2d.md+1
@@ -2,6 +2,7 @@
2title = "2d: Bit Logic"
2title = "2d: Bit Logic"
3weight = 7
3weight = 7
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2d"]
5+++
6+++
6### `++con`
7### `++con`
7
8
hoon/library/2e.md+1
@@ -2,6 +2,7 @@
2title = "2e: Insecure Hashing"
2title = "2e: Insecure Hashing"
3weight = 8
3weight = 8
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2e"]
5+++
6+++
6### `++fnv`
7### `++fnv`
7
8
hoon/library/2f.md+1
@@ -2,6 +2,7 @@
2title = "2f: Noun Ordering"
2title = "2f: Noun Ordering"
3weight = 9
3weight = 9
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2f"]
5+++
6+++
6### `++aor`
7### `++aor`
7
8
hoon/library/2g.md+1
@@ -2,6 +2,7 @@
2title = "2g: Unsigned Powers"
2title = "2g: Unsigned Powers"
3weight = 10
3weight = 10
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2g"]
5+++
6+++
6### `++pow`
7### `++pow`
7
8
hoon/library/2h.md+1
@@ -2,6 +2,7 @@
2title = "2h: Set Logic"
2title = "2h: Set Logic"
3weight = 11
3weight = 11
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2h"]
5+++
6+++
6### `++in`
7### `++in`
7
8
hoon/library/2i.md+1
@@ -2,6 +2,7 @@
2title = "2i: Map Logic"
2title = "2i: Map Logic"
3weight = 12
3weight = 12
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2i"]
5+++
6+++
6### `++by`
7### `++by`
7
8
hoon/library/2j.md+1
@@ -2,6 +2,7 @@
2title = "2j: Jar and Jug Logic"
2title = "2j: Jar and Jug Logic"
3weight = 13
3weight = 13
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2j"]
5+++
6+++
6### `++ja`
7### `++ja`
7
8
hoon/library/2k.md+1
@@ -2,6 +2,7 @@
2title = "2k: Queue Logic"
2title = "2k: Queue Logic"
3weight = 14
3weight = 14
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2k"]
5+++
6+++
6### `++to`
7### `++to`
7
8
hoon/library/2l.md+1
@@ -2,6 +2,7 @@
2title = "2l: Container from Container"
2title = "2l: Container from Container"
3weight = 15
3weight = 15
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2l"]
5+++
6+++
6### `++malt`
7### `++malt`
7
8
hoon/library/2m.md+1
@@ -2,6 +2,7 @@
2title = "2m: Container from Noun"
2title = "2m: Container from Noun"
3weight = 16
3weight = 16
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2m"]
5+++
6+++
6### `++ly`
7### `++ly`
7
8
hoon/library/2n.md+1
@@ -2,6 +2,7 @@
2title = "2n: Functional Hacks"
2title = "2n: Functional Hacks"
3weight = 17
3weight = 17
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2n"]
5+++
6+++
6### `++cork`
7### `++cork`
7
8
hoon/library/2o.md+1
@@ -2,6 +2,7 @@
2title = "2o: Normalizing Containers"
2title = "2o: Normalizing Containers"
3weight = 18
3weight = 18
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2o"]
5+++
6+++
6### `++jar`
7### `++jar`
7
8
hoon/library/2p.md+1
@@ -2,6 +2,7 @@
2title = "2p: Serialization"
2title = "2p: Serialization"
3weight = 19
3weight = 19
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2p"]
5+++
6+++
6### `++cue`
7### `++cue`
7
8
hoon/library/2q.md+1
@@ -2,6 +2,7 @@
2title = "2q: Molds and Mold-Builders"
2title = "2q: Molds and Mold-Builders"
3weight = 20
3weight = 20
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/2q"]
5+++
6+++
6### `++char`
7### `++char`
7
8
hoon/library/3a.md+1
@@ -2,6 +2,7 @@
2title = "3a: Modular and Signed Ints"
2title = "3a: Modular and Signed Ints"
3weight = 21
3weight = 21
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/3a"]
5+++
6+++
6### `++egcd`
7### `++egcd`
7
8
hoon/library/3b.md+1
@@ -2,6 +2,7 @@
2title = "3b: Floating Point"
2title = "3b: Floating Point"
3weight = 22
3weight = 22
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/3b"]
5+++
6+++
6### `++fn`
7### `++fn`
7
8
hoon/library/3c.md+1
@@ -2,6 +2,7 @@
2title = "3c: Urbit Time"
2title = "3c: Urbit Time"
3weight = 23
3weight = 23
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/3c"]
5+++
6+++
6### `++yall`
7### `++yall`
7
8
hoon/library/3d.md+1
@@ -2,6 +2,7 @@
2title = "3d: SHA Hash Family"
2title = "3d: SHA Hash Family"
3weight = 24
3weight = 24
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/3d"]
5+++
6+++
6### `++shad`
7### `++shad`
7
8
hoon/library/3e.md+1
@@ -2,6 +2,7 @@
2title = "3e: AES encryption (Removed)"
2title = "3e: AES encryption (Removed)"
3weight = 25
3weight = 25
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/3e"]
5+++
6+++
6The standard-library functions in this section have been removed.
7The standard-library functions in this section have been removed.
7
8
hoon/library/3f.md+1
@@ -2,6 +2,7 @@
2title = "3f: Scrambling"
2title = "3f: Scrambling"
3weight = 26
3weight = 26
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/3f"]
5+++
6+++
6### `++un`
7### `++un`
7
8
hoon/library/3g.md+1
@@ -2,6 +2,7 @@
2title = "3g: Molds and Mold-Builders"
2title = "3g: Molds and Mold-Builders"
3weight = 27
3weight = 27
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/3g"]
5+++
6+++
6### `++coin`
7### `++coin`
7
8
hoon/library/4a.md+1
@@ -2,6 +2,7 @@
2title = "4a: Exotic Bases"
2title = "4a: Exotic Bases"
3weight = 28
3weight = 28
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4a"]
5+++
6+++
6### `++po`
7### `++po`
7
8
hoon/library/4b.md+1
@@ -2,6 +2,7 @@
2title = "4b: Text Processing"
2title = "4b: Text Processing"
3weight = 29
3weight = 29
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4b"]
5+++
6+++
6### `++at`
7### `++at`
7
8
hoon/library/4c.md+1
@@ -2,6 +2,7 @@
2title = "4c: Tank Printer"
2title = "4c: Tank Printer"
3weight = 30
3weight = 30
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4c"]
5+++
6+++
6### `++re`
7### `++re`
7
8
hoon/library/4d.md+1
@@ -2,6 +2,7 @@
2title = "4d: Parsing (Tracing)"
2title = "4d: Parsing (Tracing)"
3weight = 31
3weight = 31
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4d"]
5+++
6+++
6### `++last`
7### `++last`
7
8
hoon/library/4e.md+1
@@ -2,6 +2,7 @@
2title = "4e: Parsing (Combinators)"
2title = "4e: Parsing (Combinators)"
3weight = 32
3weight = 32
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4e"]
5+++
6+++
6### `++bend`
7### `++bend`
7
8
hoon/library/4f.md+1
@@ -2,6 +2,7 @@
2title = "4f: Parsing (Rule-Builders)"
2title = "4f: Parsing (Rule-Builders)"
3weight = 33
3weight = 33
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4f"]
5+++
6+++
6### `++bass`
7### `++bass`
7
8
hoon/library/4g.md+1
@@ -2,6 +2,7 @@
2title = "4g: Parsing (Outside Caller)"
2title = "4g: Parsing (Outside Caller)"
3weight = 34
3weight = 34
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4g"]
5+++
6+++
6### `++rash`
7### `++rash`
7
8
hoon/library/4h.md+1
@@ -2,6 +2,7 @@
2title = "4h: Parsing (ASCII Glyphs)"
2title = "4h: Parsing (ASCII Glyphs)"
3weight = 35
3weight = 35
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4h"]
5+++
6+++
6### `++ace`
7### `++ace`
7
8
hoon/library/4i.md+1
@@ -2,6 +2,7 @@
2title = "4i: Parsing (Useful Idioms)"
2title = "4i: Parsing (Useful Idioms)"
3weight = 36
3weight = 36
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4i"]
5+++
6+++
6### `++alf`
7### `++alf`
7
8
hoon/library/4j.md+1
@@ -2,6 +2,7 @@
2title = "4j: Parsing (Bases and Base Digits)"
2title = "4j: Parsing (Bases and Base Digits)"
3weight = 37
3weight = 37
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4j"]
5+++
6+++
6### `++ab`
7### `++ab`
7
8
hoon/library/4k.md+1
@@ -2,6 +2,7 @@
2title = "4k: Atom Printing"
2title = "4k: Atom Printing"
3weight = 38
3weight = 38
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4k"]
5+++
6+++
6### `++co`
7### `++co`
7
8
hoon/library/4l.md+1
@@ -2,6 +2,7 @@
2title = "4l: Atom Parsing"
2title = "4l: Atom Parsing"
3weight = 39
3weight = 39
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4l"]
5+++
6+++
6### `++so`
7### `++so`
7
8
hoon/library/4m.md+1
@@ -2,6 +2,7 @@
2title = "4m: Formatting Functions"
2title = "4m: Formatting Functions"
3weight = 40
3weight = 40
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4m"]
5+++
6+++
6### `++scot`
7### `++scot`
7
8
hoon/library/4n.md+1
@@ -2,6 +2,7 @@
2title = "4n: Virtualization"
2title = "4n: Virtualization"
3weight = 41
3weight = 41
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4n"]
5+++
6+++
6### `++mack`
7### `++mack`
7
8
hoon/library/4o.md+1
@@ -2,6 +2,7 @@
2title = "4o: Molds"
2title = "4o: Molds"
3weight = 42
3weight = 42
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/4o"]
5+++
6+++
6### `++abel`
7### `++abel`
7
8
hoon/library/5a.md+1
@@ -2,5 +2,6 @@
2title = "5a: Compiler Utilities"
2title = "5a: Compiler Utilities"
3weight = 43
3weight = 43
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/5a"]
5+++
6+++
6(To be documented)
7(To be documented)
hoon/library/5b.md+1
@@ -2,5 +2,6 @@
2title = "5b: Macro Expansion"
2title = "5b: Macro Expansion"
3weight = 44
3weight = 44
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/5b"]
5+++
6+++
6(To be documented)
7(To be documented)
hoon/library/5c.md+1
@@ -2,5 +2,6 @@
2title = "5c: Compiler Backend & Prettyprinter"
2title = "5c: Compiler Backend & Prettyprinter"
3weight = 45
3weight = 45
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/5c"]
5+++
6+++
6(To be documented)
7(To be documented)
hoon/library/5d.md+1
@@ -2,5 +2,6 @@
2title = "5d: Parser"
2title = "5d: Parser"
3weight = 46
3weight = 46
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/5d"]
5+++
6+++
6(To be documented)
7(To be documented)
hoon/library/5e.md+1
@@ -2,5 +2,6 @@
2title = "5e: Caching Compiler"
2title = "5e: Caching Compiler"
3weight = 47
3weight = 47
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/5e"]
5+++
6+++
6(To be documented)
7(To be documented)
hoon/library/5f.md+1
@@ -2,6 +2,7 @@
2title = "5f: Molds and Mold-Builders"
2title = "5f: Molds and Mold-Builders"
3weight = 48
3weight = 48
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/5f"]
5+++
6+++
6### `++mane`
7### `++mane`
7
8
hoon/library/5g.md+1
@@ -2,5 +2,6 @@
2title = "5g: profiling support"
2title = "5g: profiling support"
3weight = 49
3weight = 49
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/5g"]
5+++
6+++
6(To be documented)
7(To be documented)
hoon/library/_index.md+1
@@ -3,6 +3,7 @@ title = "Standard library"
3weight = 2
3weight = 2
4sort_by = "weight"
4sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6+aliases = ["/docs/reference/library/"]
6+++
7+++
7
8
8Documentation for the standard library.
9Documentation for the standard library.
hoon/library/table-of-contents.md+1
@@ -2,6 +2,7 @@
2title = "Table of Contents"
2title = "Table of Contents"
3weight = 0
3weight = 0
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/reference/library/"]
5+++
6+++
6
7
7Can be navigated [alphabetically](#alphabetical) or [by section](#by-section).
8Can be navigated [alphabetically](#alphabetical) or [by section](#by-section).
hoon/library/zuse.md+2−3
@@ -2,10 +2,9 @@
2title = "Zuse"
2title = "Zuse"
3weight = 50
3weight = 50
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/reference/library/zuse/"]
5+++
6+++
6_Zuse_ is a defined interface for vanes. It contains the part of the Hoon
7_Zuse_ is a defined interface for vanes. It contains the part of the Hoon
7standard library that is specific to Arvo functionality.
8standard library that is specific to Arvo functionality.
8
9
9−Zuse is located in `/home/sys/zuse.hoon` within your urbit.
10+Zuse is located in `/home/sys/zuse.hoon` within your urbit.
10−
11−;list;
hoon/style.md+1
@@ -2,6 +2,7 @@
2title = "Hoon Style Guide"
2title = "Hoon Style Guide"
3weight = 3
3weight = 3
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/learn/hoon/style/"]
5+++
6+++
6Welcome to the Hoon style guide. It's important to familiarize yourself with our way of writing Hoon code.
7Welcome to the Hoon style guide. It's important to familiarize yourself with our way of writing Hoon code.
7
8
hoon/workbook/_index.md+1
@@ -3,6 +3,7 @@ title = "Hoon Workbook"
3weight = 2
3weight = 2
4sort_by = "weight"
4sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6+aliase = ["docs/learn/hoon/workbook/"]
6+++
7+++
7The Workbook is the place to sharpen your Hoon skills. Each entry in the
8The Workbook is the place to sharpen your Hoon skills. Each entry in the
8Workbook is a code walkthrough followed by exercises.
9Workbook is a code walkthrough followed by exercises.
hoon/workbook/bomb.md+1
@@ -2,6 +2,7 @@
2title = "Bomb Defusing"
2title = "Bomb Defusing"
3weight = 7
3weight = 7
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/learn/hoon/workbook/bomb"]
5+++
6+++
6In this exercise, we will build a generator that takes a list of wires to be cut
7In this exercise, we will build a generator that takes a list of wires to be cut
7in order to defuse a bomb. The bomb is defused according to the following rules.
8in order to defuse a bomb. The bomb is defused according to the following rules.
hoon/workbook/digits.md+1
@@ -2,6 +2,7 @@
2title = "Digits"
2title = "Digits"
3weight = 4
3weight = 4
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/learn/hoon/workbook/digits/]
5+++
6+++
6Let's write a generator that takes a `@ud` (unsigned decimal) and returns a list
7Let's write a generator that takes a `@ud` (unsigned decimal) and returns a list
7of its digits.
8of its digits.
hoon/workbook/eightball.md+1
@@ -2,6 +2,7 @@
2title = "Magic 8-Ball"
2title = "Magic 8-Ball"
3weight = 5
3weight = 5
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/learn/hoon/workbook/eightball"]
5+++
6+++
6In this lesson we'll write a generator that mimics the functionality of a
7In this lesson we'll write a generator that mimics the functionality of a
7Magic 8-Ball, producing a randomized response with each run.
8Magic 8-Ball, producing a randomized response with each run.
hoon/workbook/traffic-light.md+1
@@ -2,6 +2,7 @@
2title = "Traffic Light"
2title = "Traffic Light"
3weight = 6
3weight = 6
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/learn/hoon/workbook/traffic-light/"]
5+++
6+++
6Let's create a state machine in Hoon that models the functionality of a traffic
7Let's create a state machine in Hoon that models the functionality of a traffic
7light. Save the code below as `traffic.hoon` in your `/gen` directory.
8light. Save the code below as `traffic.hoon` in your `/gen` directory.
nock/_index.md+1
@@ -3,6 +3,7 @@ title = "Nock"
3weight = 3
3weight = 3
4sort_by = "weight"
4sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6+aliases = ["docs/learn/nock/"]
6+++
7+++
7> Last major revision of this tutorial: 2016. Minor revisions were made in October 2018 to bring it in line with the new Nock 4K spec.
8> Last major revision of this tutorial: 2016. Minor revisions were made in October 2018 to bring it in line with the new Nock 4K spec.
8
9
nock/definition.md+1−1
@@ -2,7 +2,7 @@
2title = "Nock Definition"
2title = "Nock Definition"
3weight = 1
3weight = 1
4template = "doc.html"
4template = "doc.html"
5−aliases = ["/docs/nock/definition/"]
5+aliases = ["docs/learn/nock/definition/"]
6+++
6+++
7
7
8Nock is a Turing-complete function that maps a cell
8Nock is a Turing-complete function that maps a cell
nock/example.md+1
@@ -2,6 +2,7 @@
2title = "Example"
2title = "Example"
3weight = 3
3weight = 3
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/learn/nock/example"]
5+++
6+++
6Some people write assembly language by hand. Some of them have a
7Some people write assembly language by hand. Some of them have a
7good reason to do so. But there's no good reason to write Nock by
8good reason to do so. But there's no good reason to write Nock by
nock/explanation.md+2
@@ -2,7 +2,9 @@
2title = "Explanation"
2title = "Explanation"
3weight = 2
3weight = 2
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/learn/nock/explanation"]
5+++
6+++
7+
6To make Nock make sense, let's work through the spec line by line.
8To make Nock make sense, let's work through the spec line by line.
7First the data model:
9First the data model:
8
10
nock/implementations.md+1
@@ -2,6 +2,7 @@
2title = "Implementations"
2title = "Implementations"
3weight = 4
3weight = 4
4template = "doc.html"
4template = "doc.html"
5+aliases = ["docs/learn/nock/implementations"]
5+++
6+++
6We use a C implementation for our Nock interpreter. But building a Nock interpreter in another language is a fun exercise. Check out our community Nock implementations, shown below our official C implementation. (Note: the community implementations were written for a slightly older version of Nock, Nock 5K. The current version is Nock 4K.):
7We use a C implementation for our Nock interpreter. But building a Nock interpreter in another language is a fun exercise. Check out our community Nock implementations, shown below our official C implementation. (Note: the community implementations were written for a slightly older version of Nock, Nock 5K. The current version is Nock 4K.):
7
8
vere/_index.md+1
@@ -3,6 +3,7 @@ title = "Vere"
3weight = 4
3weight = 4
4sort_by = "weight"
4sort_by = "weight"
5template = "sections/docs/chapters.html"
5template = "sections/docs/chapters.html"
6+aliases = ["/docs/learn/vere/"]
6+++
7+++
7The Nock runtime system, written in C.
8The Nock runtime system, written in C.
8
9
vere/api.md+1
@@ -2,6 +2,7 @@
2title = "API overview by prefix"
2title = "API overview by prefix"
3weight = 4
3weight = 4
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/vere/api"]
5+++
6+++
6Let's run through the `u3` modules one by one. All public
7Let's run through the `u3` modules one by one. All public
7functions are commented, but the comments may be cryptic.
8functions are commented, but the comments may be cryptic.
vere/c.md+1
@@ -2,6 +2,7 @@
2title = "C in Urbit"
2title = "C in Urbit"
3weight = 4
3weight = 4
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/vere/c"]
5+++
6+++
6Under `u3` is the simple `c3` layer, which is just how we write C
7Under `u3` is the simple `c3` layer, which is just how we write C
7in Urbit.
8in Urbit.
vere/jetting.md+1
@@ -2,6 +2,7 @@
2title = "Writing Jets"
2title = "Writing Jets"
3weight = 5
3weight = 5
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/vere/jetting/"]
5+++
6+++
6A guide for new Urbit developers.
7A guide for new Urbit developers.
7
8
vere/nouns.md+1
@@ -2,6 +2,7 @@
2title = "Land of Nouns"
2title = "Land of Nouns"
3weight = 3
3weight = 3
4template = "doc.html"
4template = "doc.html"
5+aliases = ["/docs/learn/vere/nouns"]
5+++
6+++
6The division between `c3` and `u3` is that you could theoretically
7The division between `c3` and `u3` is that you could theoretically
7imagine using `c3` as just a generic C environment. Anything to do
8imagine using `c3` as just a generic C environment. Anything to do
vere/runtime.md+1−1
@@ -2,7 +2,7 @@
2title = "C Runtime System"
2title = "C Runtime System"
3weight = 1
3weight = 1
4template = "doc.html"
4template = "doc.html"
5−aliases = ["docs/about/runtime/"]
5+aliases = ["docs/about/runtime/", "/docs/learn/vere/runtime"]
6+++
6+++
7
7
8The Urbit interpreter is built on a Nock runtime system written
8The Urbit interpreter is built on a Nock runtime system written