on master help sign in
Merge pull request #939 from urbit/hoon-reorg
46a3d41poprox
glossary/arm.md+2−2
@@ -10,5 +10,5 @@ An **arm** is a Hoon expression encoded as a noun. You can find them as part of
10
10
11### Further Reading
11### Further Reading
12
12
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/_index.md): Our guide to learning the Hoon programming language.
13+- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.7: Arms and Cores](@/docs/tutorials/hoon/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
14+ - [Lesson 1.7: Arms and Cores](@/docs/tutorials/hoon/hoon-school/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
glossary/atom.md+2−2
@@ -15,6 +15,6 @@ number, etc, and an optional constant. A Hoon atom type is _warm_ or _cold_ base
15
15
16### Further Reading
16### Further Reading
17
17
18−- [The Hoon Tutorial](@/docs/tutorials/hoon/_index.md): Our guide to learning the Hoon programming language.
18+- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
19− - [Lesson 1.2: Nouns](@/docs/tutorials/hoon/nouns.md): A Hoon Tutoral lesson that explains how atoms work.
19+ - [Lesson 1.2: Nouns](@/docs/tutorials/hoon/hoon-school/nouns.md): A Hoon Tutoral lesson that explains how atoms work.
20- [The Nock explanation](@/docs/tutorials/nock/explanation.md): Includes an explanation of atoms.
20- [The Nock explanation](@/docs/tutorials/nock/explanation.md): Includes an explanation of atoms.
glossary/battery.md+2−2
@@ -10,5 +10,5 @@ A **battery** is a collection of Hoon expressions and the head of a [core](../co
10
10
11### Further Reading
11### Further Reading
12
12
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/_index.md): Our guide to learning the Hoon programming language.
13+- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.7: Arms and Cores](@/docs/tutorials/hoon/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
14+ - [Lesson 1.7: Arms and Cores](@/docs/tutorials/hoon/hoon-school/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
glossary/core.md+2−2
@@ -10,5 +10,5 @@ A **core** is a cell of a [battery](../battery) and a [payload](../payload). It
10
10
11### Further Reading
11### Further Reading
12
12
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/_index.md): Our guide to learning the Hoon programming language.
13+- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.7: Arms and Cores](@/docs/tutorials/hoon/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
14+ - [Lesson 1.7: Arms and Cores](@/docs/tutorials/hoon/hoon-school/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
glossary/dojo.md+1−1
@@ -12,4 +12,4 @@ and [Chat](../chat) press Ctrl-X. The Dojo is the first thing you encounter afte
12
12
13### Further Reading
13### Further Reading
14- [Using Your Ship](@/using/operations/using-your-ship.md): The "Shell" section contains instructions on using the Dojo.
14- [Using Your Ship](@/using/operations/using-your-ship.md): The "Shell" section contains instructions on using the Dojo.
15−- [Hoon Tutorial Lesson 1.1: Setup](@/docs/tutorials/hoon/setup.md): A great way to get started with using Hoon in the Dojo.
15+- [Hoon Tutorial Lesson 1.1: Setup](@/docs/tutorials/hoon/hoon-school/setup.md): A great way to get started with using Hoon in the Dojo.
glossary/door.md+2−2
@@ -10,5 +10,5 @@ A **door** is a [core](../core) the payload of which is a cell of sample and con
10
10
11### Further Reading
11### Further Reading
12
12
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/_index.md): Our guide to learning the Hoon programming language.
13+- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.8: Doors](@/docs/tutorials/hoon/doors.md): A Hoon Tutorial lesson that discusses doors.
14+ - [Lesson 1.8: Doors](@/docs/tutorials/hoon/hoon-school/doors.md): A Hoon Tutorial lesson that discusses doors.
glossary/gall.md+2−2
@@ -12,6 +12,6 @@ Gall is located at `/home/sys/vane/gall.hoon` within Arvo.
12
12
13### Further Reading
13### Further Reading
14
14
15−- [The Hoon Tutorial](@/docs/tutorials/hoon/_index.md): Our guide to learning the Hoon programming language that will give you the foundation necessary for app development.
15+- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language that will give you the foundation necessary for app development.
16− - [Lesson 2.7: Gall](@/docs/tutorials/hoon/gall.md): A Hoon Tutorial lesson that explains how to write a simple Gall app.
16+ - [Lesson 2.7: Gall](@/docs/tutorials/hoon/hoon-school/gall.md): A Hoon Tutorial lesson that explains how to write a simple Gall app.
17- [The Gall tutorial](@/docs/tutorials/arvo/gall.md): A technical guide to the Gall vane.
17- [The Gall tutorial](@/docs/tutorials/arvo/gall.md): A technical guide to the Gall vane.
glossary/gate.md+2−2
@@ -10,5 +10,5 @@ A **gate** is [core](../core) with one [arm](../arm) named $. They are often cal
10
10
11### Further Reading
11### Further Reading
12
12
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/_index.md): Our guide to learning the Hoon programming language.
13+- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14−- [Lesson 1.4 Gates](@/docs/tutorials/hoon/gates.md): A Hoon tutorial lesson about gates.
14+- [Lesson 1.4 Gates](@/docs/tutorials/hoon/hoon-school/gates.md): A Hoon tutorial lesson about gates.
glossary/hoon.md+2−2
@@ -10,6 +10,6 @@ The Hoon source file is located in `/home/sys/hoon.hoon` within your Urbit.
10
10
11### Further Reading
11### Further Reading
12
12
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/_index.md): Our guide to learning the Hoon programming language.
13+- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.1: Setup](@/docs/tutorials/hoon/nouns.md): How to set up an environment for programming in Hoon.
14+ - [Lesson 1.1: Setup](@/docs/tutorials/hoon/hoon-school/nouns.md): How to set up an environment for programming in Hoon.
15- [Why Hoon?](@/blog/why-hoon.md): A blog post that explains why Urbit uses its own programming language.
15- [Why Hoon?](@/blog/why-hoon.md): A blog post that explains why Urbit uses its own programming language.
glossary/modulo.md+1−1
@@ -10,5 +10,5 @@ category = "arvo"
10
10
11### Further Reading
11### Further Reading
12
12
13−- [Lesson 2.7: Gall](@/docs/tutorials/hoon/gall.md): A Hoon Tutorial lesson that explains how to write simple tile.
13+- [Lesson 2.7: Gall](@/docs/tutorials/hoon/hoon-school/gall.md): A Hoon Tutorial lesson that explains how to write simple tile.
14- [The Gall tutorial](@/docs/tutorials/arvo/gall.md): A technical guide to the Gall van.
14- [The Gall tutorial](@/docs/tutorials/arvo/gall.md): A technical guide to the Gall van.
glossary/noun.md+2−2
@@ -10,6 +10,6 @@ A **noun** is an [atom](../atom) or a cell, which is an ordered pair of nouns. T
10
10
11### Further Reading
11### Further Reading
12
12
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/_index.md): Our guide to learning the Hoon programming language.
13+- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.2: Nouns](@/docs/tutorials/hoon/nouns.md): A Hoon Tutoral lesson that explains how nouns work.
14+ - [Lesson 1.2: Nouns](@/docs/tutorials/hoon/hoon-school/nouns.md): A Hoon Tutoral lesson that explains how nouns work.
15- [The Nock explanation](@/docs/tutorials/nock/_index.md): Includes a low-level explanation of nouns.
15- [The Nock explanation](@/docs/tutorials/nock/_index.md): Includes a low-level explanation of nouns.
glossary/payload.md+2−2
@@ -10,5 +10,5 @@ A **payload** is the set of data needed to run computations in a [core](../core)
10
10
11### Further Reading
11### Further Reading
12
12
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/_index.md): Our guide to learning the Hoon programming language.
13+- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.7: Arms and Cores](@/docs/tutorials/hoon/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
14+ - [Lesson 1.7: Arms and Cores](@/docs/tutorials/hoon/hoon-school/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
glossary/trap.md+2−2
@@ -10,5 +10,5 @@ A **trap** is a [core](../core) with one arm named $ and no sample. They are oft
10
10
11### Further Reading
11### Further Reading
12
12
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/_index.md): Our guide to learning the Hoon programming language.
13+- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.4.1: Walkthrough: Recursion](@/docs/tutorials/hoon/recursion.md): A Hoon Tutorial lesson that uses traps to build recursive functions.
14+ - [Lesson 1.4.1: Walkthrough: Recursion](@/docs/tutorials/hoon/hoon-school/recursion.md): A Hoon Tutorial lesson that uses traps to build recursive functions.
tutorials/_index.md+1−1
@@ -12,7 +12,7 @@ Tutorials and explanations for all the components of Urbit.
12
12
13Arvo is a clean-slate system software stack defined as a deterministic computer. An encrypted P2P network, %ames, runs on a functional operating system, Arvo, written in a strict, typed functional language, Hoon, which compiles itself to a combinator interpreter, Nock, whose spec gzips to 340 bytes.
13Arvo is a clean-slate system software stack defined as a deterministic computer. An encrypted P2P network, %ames, runs on a functional operating system, Arvo, written in a strict, typed functional language, Hoon, which compiles itself to a combinator interpreter, Nock, whose spec gzips to 340 bytes.
14
14
15−## [Hoon Tutorial](@/docs/tutorials/hoon/_index.md)
15+## [Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md)
16
16
17Hoon 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. The Hoon Tutorial is the best place to start if you want to learn Urbit.
17Hoon 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. The Hoon Tutorial is the best place to start if you want to learn Urbit.
18
18
tutorials/arvo/_index.md+1−1
@@ -8,7 +8,7 @@ aliases = ["/docs/learn/arvo/"]
8
8
9## [Arvo](@/docs/tutorials/arvo/arvo.md)
9## [Arvo](@/docs/tutorials/arvo/arvo.md)
10
10
11−Arvo is Urbit's functional operating system, written in [Hoon](@/docs/tutorials/hoon/_index.md). It's composed of modules called _vanes_:
11+Arvo is Urbit's functional operating system, written in [Hoon](@/docs/tutorials/hoon/hoon-school/_index.md). It's composed of modules called _vanes_:
12
12
13## Vanes
13## Vanes
14
14
tutorials/arvo/arvo.md+3−3
@@ -28,7 +28,7 @@ companion to this document, and some segments are direct quotes or paraphrases,
28The conceptual section titled [What is Arvo?](#what-is-arvo-) can be understood
28The conceptual section titled [What is Arvo?](#what-is-arvo-) can be understood
29without knowing Hoon, the Urbit programming language. The technical section
29without knowing Hoon, the Urbit programming language. The technical section
30titled [The kernel](#the-kernel) will require Chapter One of the [Hoon
30titled [The kernel](#the-kernel) will require Chapter One of the [Hoon
31−tutorial](@/docs/tutorials/hoon/_index.md) for full understanding, and some
31+tutorial](@/docs/tutorials/hoon/hoon-school/_index.md) for full understanding, and some
32material from Chapter Two will be helpful as well. At the bare minimum, we
32material from Chapter Two will be helpful as well. At the bare minimum, we
33presume that the reader has read through the [Technical
33presume that the reader has read through the [Technical
34Overview](@/docs/tutorials/concepts/technical-overview.md).
34Overview](@/docs/tutorials/concepts/technical-overview.md).
@@ -249,7 +249,7 @@ cooperative multitasking.
249
249
250The Arvo kernel, stored in `sys/arvo.hoon`, is about 1k lines of Hoon whose primary purpose is to implement the transition function, `+poke`. In this section we point out the most important parts of `arvo.hoon` and describe their role in the greater system. We also give brief descriptions of Arvo's kernel modules, known as vanes, and how Arvo interfaces with them.
250The Arvo kernel, stored in `sys/arvo.hoon`, is about 1k lines of Hoon whose primary purpose is to implement the transition function, `+poke`. In this section we point out the most important parts of `arvo.hoon` and describe their role in the greater system. We also give brief descriptions of Arvo's kernel modules, known as vanes, and how Arvo interfaces with them.
251
251
252−This section requires an understanding of Hoon of at least the level of Chapter One of the [Hoon tutorial](@/docs/tutorials/hoon/_index.md).
252+This section requires an understanding of Hoon of at least the level of Chapter One of the [Hoon tutorial](@/docs/tutorials/hoon/hoon-school/_index.md).
253
253
254After concluding this section, the reader is encouraged to follow along with the
254After concluding this section, the reader is encouraged to follow along with the
255[move trace tutorial](@/docs/tutorials/arvo/move-trace.md),
255[move trace tutorial](@/docs/tutorials/arvo/move-trace.md),
@@ -265,7 +265,7 @@ which applies many of the concepts covered below.
265 + Larval stage core
265 + Larval stage core
266 + Formal interface
266 + Formal interface
267
267
268−See [Section 1.7](@/docs/tutorials/hoon/arms-and-cores.md) of the Hoon tutorial for further explanation of what is meant here by "nesting". We now describe the functionality of each of these components.
268+See [Section 1.7](@/docs/tutorials/hoon/hoon-school/arms-and-cores.md) of the Hoon tutorial for further explanation of what is meant here by "nesting". We now describe the functionality of each of these components.
269
269
270### Formal interface
270### Formal interface
271
271
tutorials/arvo/behn.md+1−1
@@ -18,4 +18,4 @@ for keeping track of time-specified file requests. `%ames` should
18probably use `%behn` to keep track of things like network timeouts and
18probably use `%behn` to keep track of things like network timeouts and
19retry timing, but it currently uses its own alarm system.
19retry timing, but it currently uses its own alarm system.
20
20
21−This article is a stub. For more information, see either `behn.hoon` or [Lesson 2.6 - Behn](@/docs/tutorials/hoon/behn.md) of the Hoon tutorial.
21+This article is a stub. For more information, see either `behn.hoon` or [Lesson 2.6 - Behn](@/docs/tutorials/hoon/hoon-school/behn.md) of the Hoon tutorial.
tutorials/hoon/_index.md+7−8
@@ -1,3 +1,4 @@
1+
1+++
2+++
2title = "Hoon"
3title = "Hoon"
3weight = 1
4weight = 1
@@ -6,12 +7,10 @@ template = "sections/docs/hoon.html"
6aliases = ["/docs/byte/0/", "/docs/byte", "/docs/learn/hoon/hoon-tutorial/"]
7aliases = ["/docs/byte/0/", "/docs/byte", "/docs/learn/hoon/hoon-tutorial/"]
7+++
8+++
8
9
9−This 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.
10+This section contains material for learning Hoon. For newbies, we recommend
10−
11+going through the [Hoon School](@/docs/tutorials/hoon/hoon-school/_index.md)
11−Before you start, we recommend reading [Why Hoon?](https://urbit.org/blog/why-hoon/), a blog post by a Tlon engineer that justifies the existence and use of this peculiar language. This explainer gives useful context to all types of learners, but those new to programming will need to use Google frequently for the jargon.
12+series, and consider enrolling in Hooniversity, a regularly held community-run
12−
13+course which follows along the Hoon School curriculum and may be found at [Hooniversity](https://hooniversity.org/).
13−Chapter 1 introduces and explains the fundamental concepts you need in order to understand Hoon's semantics.
14−
15−Hoon is a "subject-oriented" programming language -- every expression of Hoon is evaluated relative to a **subject**. The subject is a piece of data that represents the environment, or the context, of an expression. After reading Chapter 1 you should understand what the subject is and how to refer to its various parts. In this chapter you'll also learn about **[cores](/docs/glossary/core/)**, which are an important data structure in Hoon. Once you get the hang of [cores](/docs/glossary/core/) you'll be able to write your own functions in Hoon.
16
14
17−Chapter 2 covers the type system, and writing apps, and the workings of the Arvo kernel.
15+The other tutorials found in this section are also valuable material for
16+learning Hoon, but are not a part of the linearly organized Hoon school path.
tutorials/arvo/cli-tutorial.md → tutorials/hoon/cli-tutorial.mdrenamed+3−3
@@ -1,6 +1,6 @@
1+++
1+++
2title = "CLI apps"
2title = "CLI apps"
3−weight = 13
3+weight = 2
4template = "doc.html"
4template = "doc.html"
5+++
5+++
6
6
@@ -22,7 +22,7 @@ the functionality of the `%shoe` app and then go through the code line-by-line.
22
22
23This tutorial can be
23This tutorial can be
24considered to be an application equivalent of the [Hoon school
24considered to be an application equivalent of the [Hoon school
25−lesson](@/docs/tutorials/hoon/generators.md#ask) on `sole` and `%ask`
25+lesson](@/docs/tutorials/hoon/hoon-school/generators.md#ask) on `sole` and `%ask`
26generators, which only covers the bare minimum necessary to write generators
26generators, which only covers the bare minimum necessary to write generators
27that take user input.
27that take user input.
28
28
@@ -336,7 +336,7 @@ Here begins the implementation of the additional arms required by the
336`+command-parser` is of central importance - it is what is used to parse user
336`+command-parser` is of central importance - it is what is used to parse user
337input and transform it into `command`s for the app to execute. Writing a proper
337input and transform it into `command`s for the app to execute. Writing a proper
338command parser requires understanding of the Hoon parsing functions found in the
338command parser requires understanding of the Hoon parsing functions found in the
339−standard library. How to do so may be found in the [parsing tutorial](@/docs/tutorials/arvo/parsing.md). For now, it is sufficient to know that this arm matches the text "demo" and
339+standard library. How to do so may be found in the [parsing tutorial](@/docs/tutorials/hoon/parsing.md). For now, it is sufficient to know that this arm matches the text "demo" and
340produces a `[? command]`-shaped noun in response. Note how the `&` signifies that the command will be run as soon as it has been entered, without waiting for the user to press return.
340produces a `[? command]`-shaped noun in response. Note how the `&` signifies that the command will be run as soon as it has been entered, without waiting for the user to press return.
341
341
342
342
tutorials/hoon-errors.md → tutorials/hoon/hoon-errors.mdrenamed

The content is the same.

tutorials/hoon/hoon-school/_index.mdnew file+20
@@ -0,0 +1,20 @@
1++++
2+title = "Hoon School"
3+weight = 1
4+sort_by = "weight"
5+template = "sections/docs/hoon.html"
6+aliases = ["/docs/byte/0/", "/docs/byte", "/docs/learn/hoon/hoon-tutorial/"]
7++++
8+
9+This 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.
10+
11+Before you start, we recommend reading [Why Hoon?](https://urbit.org/blog/why-hoon/), a blog post by a Tlon engineer that justifies the existence and use of this peculiar language. This explainer gives useful context to all types of learners, but those new to programming will need to use Google frequently for the jargon.
12+
13+Chapter 1 introduces and explains the fundamental concepts you need in order to understand Hoon's semantics.
14+
15+Hoon is a "subject-oriented" programming language -- every expression of Hoon is evaluated relative to a **subject**. The subject is a piece of data that represents the environment, or the context, of an expression. After reading Chapter 1 you should understand what the subject is and how to refer to its various parts. In this chapter you'll also learn about **[cores](/docs/glossary/core/)**, which are an important data structure in Hoon. Once you get the hang of [cores](/docs/glossary/core/) you'll be able to write your own functions in Hoon.
16+
17+Chapter 2 covers the type system, and writing apps, and the workings of the Arvo kernel.
18+
19+You should also consider enrolling in Hooniversity, a regularly held community-run
20+course which follows along the Hoon School curriculum and may be found at [Hooniversity](https://hooniversity.org/).
tutorials/hoon/ackermann.md → tutorials/hoon/hoon-school/ackermann.mdrenamed

The content is the same.

tutorials/hoon/aqua.md → tutorials/hoon/hoon-school/aqua.mdrenamed

The content is the same.

tutorials/hoon/arms-and-cores.md → tutorials/hoon/hoon-school/arms-and-cores.mdrenamed+1−1
@@ -181,7 +181,7 @@ To reinforce your newfound understanding of arms and cores, let's go over the va
181
181
182### Address-Based Wings
182### Address-Based Wings
183
183
184−In the [previous lesson](@/docs/tutorials/hoon/the-subject-and-its-legs.md), you saw how the following expressions return legs based on an address in the subject: `+n`, `.`, `-`, `+`, `+>`, `+<`, `->`, `-<`, `&`, `|` etc. When these resolve to the part of the subject containing an arm, they **don't** evaluate the arm. They simply return the indicated noun fragment of the subject, as if it were a leg.
184+In the [previous lesson](@/docs/tutorials/hoon/hoon-school/the-subject-and-its-legs.md), you saw how the following expressions return legs based on an address in the subject: `+n`, `.`, `-`, `+`, `+>`, `+<`, `->`, `-<`, `&`, `|` etc. When these resolve to the part of the subject containing an arm, they **don't** evaluate the arm. They simply return the indicated noun fragment of the subject, as if it were a leg.
185
185
186Let's use `-.c` to look at the head of `c`, i.e., the battery of the core:
186Let's use `-.c` to look at the head of `c`, i.e., the battery of the core:
187
187
tutorials/hoon/atoms-auras-and-simple-cell-types.md → tutorials/hoon/hoon-school/atoms-auras-and-simple-cell-types.mdrenamed+1−1
@@ -18,7 +18,7 @@ In this lesson we'll cover (1)-(4) as they pertain to atoms and simple cell type
18
18
19## Atoms and Auras
19## Atoms and Auras
20
20
21−In [Lesson 1.2](@/docs/tutorials/hoon/nouns.md) we defined what an atom is: any unsigned integer. In this lesson we'll expand on that discussion, going over how Hoon's type system implements auras.
21+In [Lesson 1.2](@/docs/tutorials/hoon/hoon-school/nouns.md) we defined what an atom is: any unsigned integer. In this lesson we'll expand on that discussion, going over how Hoon's type system implements auras.
22
22
23In the most straightforward sense, atoms simply are unsigned integers. But they can also be interpreted as representing signed integers, ASCII symbols, floating-point values, dates, binary numbers, hexadecimal numbers, and more. Every atom is, in and of itself, just an unsigned integer; but Hoon keeps track of type information about each atom, and this info tells Hoon how to interpret the atom in question.
23In the most straightforward sense, atoms simply are unsigned integers. But they can also be interpreted as representing signed integers, ASCII symbols, floating-point values, dates, binary numbers, hexadecimal numbers, and more. Every atom is, in and of itself, just an unsigned integer; but Hoon keeps track of type information about each atom, and this info tells Hoon how to interpret the atom in question.
24
24
tutorials/hoon/bank-account.md → tutorials/hoon/hoon-school/bank-account.mdrenamed

The content is the same.

tutorials/hoon/behn.md → tutorials/hoon/hoon-school/behn.mdrenamed+1−1
@@ -6,7 +6,7 @@ template = "doc.html"
6
6
7In this lesson we introduce the notion of a vane, which should be thought of as a kernel module for Arvo (if you don't know what that means yet, just keep reading). We first present a primer on what vanes are and how they communicate, followed by an examination of the simplest vane, known as Behn (pronounced like "bane"), which is Arvo's timekeeper.
7In this lesson we introduce the notion of a vane, which should be thought of as a kernel module for Arvo (if you don't know what that means yet, just keep reading). We first present a primer on what vanes are and how they communicate, followed by an examination of the simplest vane, known as Behn (pronounced like "bane"), which is Arvo's timekeeper.
8
8
9−Following this lesson, we will introduce Gall, a vane used to build user space apps. Then we have a walkthrough where we construct an [egg timer](@/docs/tutorials/hoon/egg-timer.md) as a Gall app that interacts with Behn.
9+Following this lesson, we will introduce Gall, a vane used to build user space apps. Then we have a walkthrough where we construct an [egg timer](@/docs/tutorials/hoon/hoon-school/egg-timer.md) as a Gall app that interacts with Behn.
10
10
11## Vanes
11## Vanes
12
12
tutorials/hoon/caesar.md → tutorials/hoon/hoon-school/caesar.mdrenamed

The content is the same.

tutorials/hoon/conditionals.md → tutorials/hoon/hoon-school/conditionals.mdrenamed+1−1
@@ -18,7 +18,7 @@ In this lesson, we will write a generator that takes an integer and checks if it
18==
18==
19```
19```
20
20
21−On the very first line, with `:- %say` we are beginning to create a generator of the `%say` variety. The result of a `%say` generator is a cell with a head of `%say` and tail that is a [gate](/docs/glossary/gate/), itself producing a `cask`, a pair of a `mark` and some data. It's not important for understanding conditionals; this is just template code. For more information about `%say` generators, see the [Generators](@/docs/tutorials/hoon/generators.md) documentation.
21+On the very first line, with `:- %say` we are beginning to create a generator of the `%say` variety. The result of a `%say` generator is a cell with a head of `%say` and tail that is a [gate](/docs/glossary/gate/), itself producing a `cask`, a pair of a `mark` and some data. It's not important for understanding conditionals; this is just template code. For more information about `%say` generators, see the [Generators](@/docs/tutorials/hoon/hoon-school/generators.md) documentation.
22
22
23```hoon
23```hoon
24|= [* [n=@ud ~] ~]
24|= [* [n=@ud ~] ~]
tutorials/hoon/doors.md → tutorials/hoon/hoon-school/doors.mdrenamed+1−1
@@ -369,7 +369,7 @@ In the above example we created a door `c` with sample `b=@` and found that the
369 ++ greater |=(a=@ (gth a b))
369 ++ greater |=(a=@ (gth a b))
370 --
370 --
371```
371```
372−Here the type of `b` is inferred to be `@` based on the example value `7`, similar to how we've seen casting done by example. You will learn more about how types are inferred in [Lesson 2.2](@docs/tutorials/hoon/type-checking-and-type-inference).
372+Here the type of `b` is inferred to be `@` based on the example value `7`, similar to how we've seen casting done by example. You will learn more about how types are inferred in [Lesson 2.2](@docs/tutorials/hoon/hoon-school/type-checking-and-type-inference).
373
373
374### Doors in the Hoon Standard Library
374### Doors in the Hoon Standard Library
375
375
tutorials/hoon/egg-timer.md → tutorials/hoon/hoon-school/egg-timer.mdrenamed

The content is the same.

tutorials/hoon/fibonacci.md → tutorials/hoon/hoon-school/fibonacci.mdrenamed

The content is the same.

tutorials/hoon/gall.md → tutorials/hoon/hoon-school/gall.mdrenamed

The content is the same.

tutorials/hoon/gates.md → tutorials/hoon/hoon-school/gates.mdrenamed

The content is the same.

tutorials/hoon/generators.md → tutorials/hoon/hoon-school/generators.mdrenamed

The content is the same.

tutorials/hoon/hoon-syntax.md → tutorials/hoon/hoon-school/hoon-syntax.mdrenamed+7−7
@@ -84,7 +84,7 @@ We start with atom literals. Each of these is a basic expression of Hoon that ev
84~zod
84~zod
85```
85```
86
86
87−Recall from [Lesson 1.2](@/docs/tutorials/hoon/nouns.md) that even though atoms are unsigned integers, they can be pretty-printed in different ways. The way an atom is to be represented depends on its aura. The literal syntax for each of the hard-coded auras will be explained further in [Lesson 2.1](@/docs/tutorials/hoon/atoms-auras-and-simple-cell-types.md).
87+Recall from [Lesson 1.2](@/docs/tutorials/hoon/hoon-school/nouns.md) that even though atoms are unsigned integers, they can be pretty-printed in different ways. The way an atom is to be represented depends on its aura. The literal syntax for each of the hard-coded auras will be explained further in [Lesson 2.1](@/docs/tutorials/hoon/hoon-school/atoms-auras-and-simple-cell-types.md).
88
88
89Cell literals can be written in Hoon using `[ ]`. Cell literals are complex, because other expressions are put inside the square brackets. Examples:
89Cell literals can be written in Hoon using `[ ]`. Cell literals are complex, because other expressions are put inside the square brackets. Examples:
90
90
@@ -124,7 +124,7 @@ Let’s start with the base case: a single limb. A limb expression is a trivial
124- `add`
124- `add`
125- `mul`
125- `mul`
126
126
127−As a special limb we also have `$`. This is the name of the [arm](/docs/glossary/arm/) in special one-armed [cores](/docs/glossary/core/) called “gates”. (We’ll cover the role of `$` in [Lesson 1.4](@/docs/tutorials/hoon/gates.md).)
127+As a special limb we also have `$`. This is the name of the [arm](/docs/glossary/arm/) in special one-armed [cores](/docs/glossary/core/) called “gates”. (We’ll cover the role of `$` in [Lesson 1.4](@/docs/tutorials/hoon/hoon-school/gates.md).)
128
128
129Wing expressions with multiple limbs are complex expressions. Examples:
129Wing expressions with multiple limbs are complex expressions. Examples:
130
130
@@ -141,7 +141,7 @@ Wing expressions with multiple limbs are complex expressions. Examples:
141
141
142Hoon is a statically typed language. You’ll learn more about the type system later in the chapter. For now, just know that Hoon’s type system uses special symbols to indicate certain fundamental types: `~` (null), `*` (noun), `@` (atom), `^` (cell), and `?` (flag). Each of these symbols can be used as a stand-alone expression of Hoon. In the case of `@` there may be a series of letters following it, to indicate an atom aura; e.g., `@s`, `@rs`, `@tas`, and `@tD`.
142Hoon is a statically typed language. You’ll learn more about the type system later in the chapter. For now, just know that Hoon’s type system uses special symbols to indicate certain fundamental types: `~` (null), `*` (noun), `@` (atom), `^` (cell), and `?` (flag). Each of these symbols can be used as a stand-alone expression of Hoon. In the case of `@` there may be a series of letters following it, to indicate an atom aura; e.g., `@s`, `@rs`, `@tas`, and `@tD`.
143
143
144−They may also be put in brackets to indicate compound types, e.g., `[@ ^]`, `[@ud @sb]`, `[[? *] ^]`. (Technically these expressions don’t _always_ indicate compound types. In certain contexts they’re interpreted in a different way. We’ll address this variation of meaning in [Lesson 2.3](@/docs/tutorials/hoon/structures-and-complex-types.md).)
144+They may also be put in brackets to indicate compound types, e.g., `[@ ^]`, `[@ud @sb]`, `[[? *] ^]`. (Technically these expressions don’t _always_ indicate compound types. In certain contexts they’re interpreted in a different way. We’ll address this variation of meaning in [Lesson 2.3](@/docs/tutorials/hoon/hoon-school/structures-and-complex-types.md).)
145
145
146### Rune Expressions
146### Rune Expressions
147
147
@@ -213,7 +213,7 @@ What Hoon expression does the following figure correspond to, and what does it e
213Right. This represents the Hoon expression `:- 2 :- 3 4`,
213Right. This represents the Hoon expression `:- 2 :- 3 4`,
214and evaluates to `[2 [3 4]]`. Remember, though, that if you input this into dojo it will print as `[2 3 4]`.
214and evaluates to `[2 [3 4]]`. Remember, though, that if you input this into dojo it will print as `[2 3 4]`.
215
215
216−Thinking in terms of these “LEGO block” diagrams, as well as the more literal binary tree diagrams utilized in [Lesson 1.2](@/docs/tutorials/hoon/nouns.md), can be a helpful learning and debugging tactic.
216+Thinking in terms of these “LEGO block” diagrams, as well as the more literal binary tree diagrams utilized in [Lesson 1.2](@/docs/tutorials/hoon/hoon-school/nouns.md), can be a helpful learning and debugging tactic.
217
217
218##### Exercise 1.3a
218##### Exercise 1.3a
219
219
@@ -341,11 +341,11 @@ The Hoon syntax can be intimidating for the uninitiated, so it’s good to remem
341- The [Runes](@/docs/reference/hoon-expressions/rune/_index.md) page will show you how to use any Hoon rune.
341- The [Runes](@/docs/reference/hoon-expressions/rune/_index.md) page will show you how to use any Hoon rune.
342- The [Cheat Sheet](@/docs/reference/cheat-sheet.md) is a more compact place to look up rune expressions.
342- The [Cheat Sheet](@/docs/reference/cheat-sheet.md) is a more compact place to look up rune expressions.
343- The [Standard Library](@/docs/reference/library/table-of-contents.md) section has its sub-pages arranged by category. So arithmetic functions, for example, are all found on the same page.
343- The [Standard Library](@/docs/reference/library/table-of-contents.md) section has its sub-pages arranged by category. So arithmetic functions, for example, are all found on the same page.
344−- The [Hoon Style Guide](@/docs/tutorials/hoon/style.md) will show you how to write your Hoon code so that it’s idiomatic and easily understood by others.
344+- The [Hoon Style Guide](@/docs/tutorials/hoon/hoon-school/style.md) will show you how to write your Hoon code so that it’s idiomatic and easily understood by others.
345
345
346### Debugging
346### Debugging
347
347
348−When you have an error in your Hoon code, one of two things can happen. Either the code does not run at all and you get an error (such as `nest-fail`), or your code _does_ run but produces the wrong results. The [Troubleshooting](@/docs/tutorials/hoon-errors.md) page is a good resource for figuring out how to debug your code.
348+When you have an error in your Hoon code, one of two things can happen. Either the code does not run at all and you get an error (such as `nest-fail`), or your code _does_ run but produces the wrong results. The [Troubleshooting](@/docs/tutorials/hoon/hoon-errors.md) page is a good resource for figuring out how to debug your code.
349
349
350There are a couple useful runes associated with debugging:
350There are a couple useful runes associated with debugging:
351
351
@@ -353,4 +353,4 @@ There are a couple useful runes associated with debugging:
353
353
354`~&` (sigpam) is used to print its argument every time that argument executes. So, if you wanted to see how many times your program executed `foo`, you would write `foo bar`. Then, when your program runs, it will print `foo` on a new line of output every time the program comes across it by recursion.
354`~&` (sigpam) is used to print its argument every time that argument executes. So, if you wanted to see how many times your program executed `foo`, you would write `foo bar`. Then, when your program runs, it will print `foo` on a new line of output every time the program comes across it by recursion.
355
355
356−But there are more. Check out the aforementioned [Troubleshooting](@/docs/tutorials/hoon-errors.md) page to see other handy debugging runes and how to use them.
356+But there are more. Check out the aforementioned [Troubleshooting](@/docs/tutorials/hoon/hoon-errors.md) page to see other handy debugging runes and how to use them.
tutorials/hoon/iron-polymorphism.md → tutorials/hoon/hoon-school/iron-polymorphism.mdrenamed

The content is the same.

tutorials/hoon/lead-polymorphism.md → tutorials/hoon/hoon-school/lead-polymorphism.mdrenamed

The content is the same.

tutorials/hoon/libraries.md → tutorials/hoon/hoon-school/libraries.mdrenamed

The content is the same.

tutorials/hoon/list-of-numbers.md → tutorials/hoon/hoon-school/list-of-numbers.mdrenamed

The content is the same.

tutorials/hoon/lists.md → tutorials/hoon/hoon-school/lists.mdrenamed

The content is the same.

tutorials/hoon/molds.md → tutorials/hoon/hoon-school/molds.mdrenamed+1−1
@@ -44,7 +44,7 @@ To coerce using a gate, it's good practice to use the `;;` rune, which can parse
44`|$` implements [parametric
44`|$` implements [parametric
45polymorphism](https://en.wikipedia.org/wiki/Parametric_polymorphism) in Hoon,
45polymorphism](https://en.wikipedia.org/wiki/Parametric_polymorphism) in Hoon,
46and as such we call gates produced with `|$` a **wet gate**. We discuss what this
46and as such we call gates produced with `|$` a **wet gate**. We discuss what this
47−means in further detail in the upcoming lesson on [polymorphism](@/docs/tutorials/hoon/type-polymorphism.md).
47+means in further detail in the upcoming lesson on [polymorphism](@/docs/tutorials/hoon/hoon-school/type-polymorphism.md).
48
48
49Let's look at some examples from `hoon.hoon`.
49Let's look at some examples from `hoon.hoon`.
50```hoon
50```hoon
tutorials/hoon/nouns.md → tutorials/hoon/hoon-school/nouns.mdrenamed+1−1
@@ -283,7 +283,7 @@ You can force Hoon to interpret an atom differently by using the aura symbols in
283
283
284The atoms in the examples above are all exactly the same value. Only they're interpreted and printed differently, depending on the aura.
284The atoms in the examples above are all exactly the same value. Only they're interpreted and printed differently, depending on the aura.
285
285
286−You'll learn more about atoms and auras in [Lesson 2.1](@docs/tutorials/hoon/atoms-auras-and-simple-cell-types.md).
286+You'll learn more about atoms and auras in [Lesson 2.1](@docs/tutorials/hoon/hoon-school/atoms-auras-and-simple-cell-types.md).
287
287
288## Cells
288## Cells
289
289
tutorials/hoon/recursion.md → tutorials/hoon/hoon-school/recursion.mdrenamed

The content is the same.

tutorials/hoon/setup.md → tutorials/hoon/hoon-school/setup.mdrenamed+2−2
@@ -61,7 +61,7 @@ You'll see:
6117
6117
62```
62```
63
63
64−You asked Dojo to evaluate `17` and it echoed the number back at you. This value is a "noun". We'll talk more about [nouns](/docs/glossary/noun/) in [Lesson 1.2](@/docs/tutorials/hoon/nouns.md), but first let's write a very basic program.
64+You asked Dojo to evaluate `17` and it echoed the number back at you. This value is a "noun". We'll talk more about [nouns](/docs/glossary/noun/) in [Lesson 1.2](@/docs/tutorials/hoon/hoon-school/nouns.md), but first let's write a very basic program.
65
65
66## Generators
66## Generators
67
67
@@ -69,7 +69,7 @@ Generators are the most straightforward way to write Hoon programs. They are a c
69
69
70The simplest type of generator is the **naked generator**. All naked generators are `gates`: functions that take an argument and produce an output. Before creating a generator you need to [mount](https://urbit.org/using/install/#the-dojo) your `desk` to Unix. To create a generator, all you need to do is write a `gate` and put it into a file in the `/home/gen/` directory of your ship as a `.hoon` file. (Assuming you've already mounted with `|mount /=home=`.) After this, you need to run `|commit %home` in Dojo and the new file will be recognized by your ship. To run a generator named `mygen.hoon`, you would type `+mygen <argument>` in your ship's Dojo.
70The simplest type of generator is the **naked generator**. All naked generators are `gates`: functions that take an argument and produce an output. Before creating a generator you need to [mount](https://urbit.org/using/install/#the-dojo) your `desk` to Unix. To create a generator, all you need to do is write a `gate` and put it into a file in the `/home/gen/` directory of your ship as a `.hoon` file. (Assuming you've already mounted with `|mount /=home=`.) After this, you need to run `|commit %home` in Dojo and the new file will be recognized by your ship. To run a generator named `mygen.hoon`, you would type `+mygen <argument>` in your ship's Dojo.
71
71
72−If this doesn't make sense yet, that's okay. In the [next lesson](@/docs/tutorials/hoon/list-of-numbers.md), we will walk you through an example `gate` that is run as a generator.
72+If this doesn't make sense yet, that's okay. In the [next lesson](@/docs/tutorials/hoon/hoon-school/list-of-numbers.md), we will walk you through an example `gate` that is run as a generator.
73
73
74## Text editors
74## Text editors
75
75
tutorials/hoon/structures-and-complex-types.md → tutorials/hoon/hoon-school/structures-and-complex-types.mdrenamed+1−1
@@ -352,5 +352,5 @@ Often `$@` is used to define a type with a null or trivial case for the `@` case
352
352
353Now the `~` value is included as a possible value for `user`.
353Now the `~` value is included as a possible value for `user`.
354
354
355−We will see types arise again, in the context of polymorphism in [Lesson 2.5](@/docs/tutorials/hoon/type-polymorphism.md).
355+We will see types arise again, in the context of polymorphism in [Lesson 2.5](@/docs/tutorials/hoon/hoon-school/type-polymorphism.md).
356
356
tutorials/hoon/style.md → tutorials/hoon/hoon-school/style.mdrenamed

The content is the same.

tutorials/hoon/the-subject-and-its-legs.md → tutorials/hoon/hoon-school/the-subject-and-its-legs.mdrenamed+1−1
@@ -11,7 +11,7 @@ Hoon isn't an object-oriented programming language; it's a "subject-oriented" pr
11
11
12For now we can say three things about the subject: (1) every Hoon expression is evaluated relative to some subject; (2) roughly, the subject defines the environment in which a Hoon expression is evaluated; and (3) the subject is a [noun](/docs/glossary/noun/).
12For now we can say three things about the subject: (1) every Hoon expression is evaluated relative to some subject; (2) roughly, the subject defines the environment in which a Hoon expression is evaluated; and (3) the subject is a [noun](/docs/glossary/noun/).
13
13
14−In fact, you already learned about the noun address system in [Lesson 1.2](@/docs/tutorials/hoon/nouns.md) when you used `+` to return a fragment of a noun:
14+In fact, you already learned about the noun address system in [Lesson 1.2](@/docs/tutorials/hoon/hoon-school/nouns.md) when you used `+` to return a fragment of a noun:
15
15
16```
16```
17> +1:[[11 22] 33]
17> +1:[[11 22] 33]
tutorials/hoon/trees-sets-and-maps.md → tutorials/hoon/hoon-school/trees-sets-and-maps.mdrenamed

The content is the same.

tutorials/hoon/type-checking-and-type-inference.md → tutorials/hoon/hoon-school/type-checking-and-type-inference.mdrenamed

The content is the same.

tutorials/hoon/type-polymorphism.md → tutorials/hoon/hoon-school/type-polymorphism.mdrenamed+1−1
@@ -192,7 +192,7 @@ As is the case with dry arms, there is a type-check associated with each wet arm
192### Parametric Polymorphism and `|$`
192### Parametric Polymorphism and `|$`
193
193
194We first encountered `|$` in the lesson on
194We first encountered `|$` in the lesson on
195−[molds](@/docs/tutorials/hoon/molds.md) as a wet gate that is a mold builder rune which takes in a
195+[molds](@/docs/tutorials/hoon/hoon-school/molds.md) as a wet gate that is a mold builder rune which takes in a
196list of molds and produces a new mold. Here we take another look at this rune as
196list of molds and produces a new mold. Here we take another look at this rune as
197an implementation of **parametric polymorphism** in Hoon.
197an implementation of **parametric polymorphism** in Hoon.
198
198
tutorials/arvo/parsing.md → tutorials/hoon/parsing.mdrenamed+4−4
@@ -1,6 +1,6 @@
1+++
1+++
2−title = "Parsing tutorial"
2+title = "Parsing"
3−weight = 12
3+weight = 3
4template = "doc.html"
4template = "doc.html"
5+++
5+++
6
6
@@ -246,7 +246,7 @@ is `%foo`.
246```
246```
247
247
248One common scenario where `+cold` sees play is when writing [command line
248One common scenario where `+cold` sees play is when writing [command line
249−interface (CLI) apps](@/docs/tutorials/arvo/cli-tutorial.md). We usher the
249+interface (CLI) apps](@/docs/tutorials/hoon/cli-tutorial.md). We usher the
250reader there to find an example where `+cold` is used.
250reader there to find an example where `+cold` is used.
251
251
252
252
@@ -435,7 +435,7 @@ syntax error
435
435
436## Parsing atoms
436## Parsing atoms
437
437
438−[Recall](@/docs/tutorials/hoon/lists.md) that `cord`s are atoms with the aura
438+[Recall](@/docs/tutorials/hoon/hoon-school/lists.md) that `cord`s are atoms with the aura
439`@t` and are typically used to represent strings internally as data, as atoms
439`@t` and are typically used to represent strings internally as data, as atoms
440are faster for the computer to work with than `tape`s, which are `list`s of
440are faster for the computer to work with than `tape`s, which are `list`s of
441`@tD` atoms. `+rash` and `+rush` are for parsing atoms, with `+rash` being
441`@tD` atoms. `+rash` and `+rush` are for parsing atoms, with `+rash` being
tutorials/hoon/workbook/digits.md+1−1
@@ -22,7 +22,7 @@ of its digits.
22==
22==
23```
23```
24
24
25−We're creating a [`%say` generator](@/docs/tutorials/hoon/generators.md). That means we
25+We're creating a [`%say` generator](@/docs/tutorials/hoon/hoon-school/generators.md). That means we
26need some "boilerplate" code in the format of `[%say [%noun "data"]]`:
26need some "boilerplate" code in the format of `[%say [%noun "data"]]`:
27
27
28```hoon
28```hoon
tutorials/hoon/workbook/eightball.md+1−1
@@ -60,7 +60,7 @@ is good practice whenever developing something in Hoon.
60
60
61To make our program produce a random result, we need entropy. To get entropy,
61To make our program produce a random result, we need entropy. To get entropy,
62we need data from Arvo. To get data from Arvo, we use a generator of the
62we need data from Arvo. To get data from Arvo, we use a generator of the
63−[`%say`](@/docs/tutorials/hoon/generators.md) variety. The above code chunk is
63+[`%say`](@/docs/tutorials/hoon/hoon-school/generators.md) variety. The above code chunk is
64the template that is followed for all `%say` generators.
64the template that is followed for all `%say` generators.
65
65
66`:- %say` creates a cell with `%say` as that cell's head to define
66`:- %say` creates a cell with `%say` as that cell's head to define
tutorials/hoon/workbook/traffic-light.md+1−1
@@ -37,7 +37,7 @@ Let's look at the code piece-by-piece.
37```
37```
38
38
39Here's the boilerplate code to designate our generator as being a
39Here's the boilerplate code to designate our generator as being a
40−[`%say` generator](@/docs/tutorials/hoon/generators.md). We're using this variant because
40+[`%say` generator](@/docs/tutorials/hoon/hoon-school/generators.md). We're using this variant because
41it allows us to run the generator without any arguments. It's otherwise not
41it allows us to run the generator without any arguments. It's otherwise not
42relevant to the functionality of our program.
42relevant to the functionality of our program.
43
43