5template = "sections/docs/chapters.html"
6aliases = ["/docs/byte/0/", "/docs/byte", "/docs/learn/hoon/hoon-tutorial/"]
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.
11Chapter 1 introduces and explains the fundamental concepts you need in order to understand Hoon's semantics.
13Hoon 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**, which are an important data structure in Hoon. Once you get the hang of cores you'll be able to write your own functions in Hoon.
15Chapter 2 covers the type system, and writing apps, and the workings of the Arvo kernel.
23- [1.1.1 Walkthrough: List of Numbers](list-of-numbers)
25- [1.3 Hoon Syntax](hoon-syntax)
26- [1.3.1 Walkthrough: Conditionals](conditionals)
28- [1.4.1 Walkthrough: Fibonacci Sequence](fibonacci)
29- [1.5 Gates (Hoon Functions)](gates)
30- [1.5.1 Walkthrough: Recursion](recursion)
31- [1.6 The Subject and Its Legs](the-subject-and-its-legs)
32- [1.6.1 Walkthrough: Ackerman Function](ackermann)
33- [1.7 Arms and Cores](arms-and-cores)
34- [1.7.1 Walkthrough: Caesar Cipher](caesar)
36- [1.8.1 Walkthough: Bank Account](bank-account)
37- [1.9 Generators](generators)
41- [2.1 Atoms, Auras, and Simple Cell Types](atoms-auras-and-simple-cell-types)
42- [2.2 Type Checking and Type Inference](type-checking-and-type-inference)
43- [2.3 Structures and Complex Types](structures-and-complex-types)
44- [2.3.1 Walkthrough: Libraries](libraries)
45- [2.4 Standard Library: Trees, Sets, and Maps](trees-sets-and-maps)
46- [2.5 Type Polymorphism](type-polymorphism)
47- [2.5.1 Walkthrough: Iron Polymorphism](iron-polymorphism)
48- [2.5.2 Walkthrough: Lead Polymorphism](lead-polymorphism)
50- [2.7.1 Walkthrough: Egg Timer](egg-timer)
55Want to know how to style your code? Check out the [style guide](../style).
57Consult the [standard library documentation](@/docs/hoon/library/_index.md) or [rune reference](@/docs/hoon/hoon-expressions/_index.md) to look up any unknown rune or standard library function you don't understand.
59As you work your way through these lessons you may want to work on example problems from the [Hoon Workbook](@/docs/hoon/workbook/_index.md) for practice. Once you finish the lessons here you may want to write more versatile Hoon programs which can make use of more of your urbit's environment, in which case you'll want to check out the [Generators](@/docs/hoon/hoon-tutorial/generators.md) documentation. Or maybe you'd like to learn how to write a [Gall app](@/docs/arvo/gall.md). Learn about [Udon](@/docs/arvo/sail-and-udon.md), Urbit's stripped-down version of Markdown. Or learn [Sail](@/docs/arvo/sail-and-udon.md), a subset of Hoon used for generating XML nodes.
62> Last major revision of this section: February 2019
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list