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.
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, and writing apps, and the workings of the Arvo kernel.
- 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 Walkthough: 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.4 Standard Library: Trees, Sets, and Maps
- 2.5 Type Polymorphism
- 2.5.1 Walkthrough: Iron Polymorphism
- 2.5.2 Walkthrough: Lead Polymorphism
- 2.6 Behn
- 2.7 Gall
- 2.7.1 Gall Walkthrough: Egg Timer
- 2.7.2 Gall: Async Monad
- 2.8 Ford
- 2.8.1 Walkthrough Ford Testing Suite Walkthrough
- 2.9.1 Walkthrough: Landscape Tile
Want to know how to style your code? Check out the style guide.
Consult the standard library documentation or rune reference to look up any unknown rune or standard library function you don't understand.
As you work your way through these lessons you may want to work on example problems from the Hoon Workbook 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 documentation. Learn about Udon and Sail, Urbit's stripped-down version of Markdown, and a subset of Hoon used for generating XML nodes respectively.
Last major revision of this section: November 2019