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.
If you're curious about why Urbit is written in this new language, we recommend reading the Hoon overview that covers the high-level design decisions behind the language.
Chapter 1 introduces and explains the fundamental concepts you need in order to understand Hoon's semantics.
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, 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.
Chapter 2 covers the type system, writing basic apps, and the workings of the Arvo kernel.
You should also consider enrolling in Hooniversity, a regularly held community-run course which follows along the Hoon School curriculum and may be found at Hooniversity.
- 1.1 Setup
- 1.1.1 Walkthrough: List of Numbers
- 1.2 Nouns
- 1.3 Hoon Syntax
- 1.3.1 Walkthrough: Conditionals
- 1.4 Gates (Hoon Functions)
- 1.4.1 Walkthrough: Recursion
- 1.5 Lists
- 1.5.1 Walkthrough: Fibonacci Sequence
- 1.6 The Subject and Its Legs
- 1.6.1 Walkthrough: Ackermann Function
- 1.7 Arms and Cores
- 1.7.1 Walkthrough: Caesar Cipher
- 1.8 Doors
- 1.8.1 Bank Account
- 1.9 Generators
- 2.1 Atoms, Auras, and Simple Cell Types
- 2.2 Type Checking and Type Inference
- 2.3 Structures and Complex Types
- 2.3.1 Walkthrough: Libraries
- 2.3.2 Molds
- 2.4 Standard Library: Trees, Sets, and Maps
- 2.5 Type Polymorphism
- 2.5.1 Walkthrough: Iron Polymorphism and Wet Polymorphism
- 2.5.2 Walkthrough: Lead Polymorphism
- 2.6 Behn
- 2.7 Gall
- 2.7.1 Gall Walkthrough: Egg Timer