Hoon
- 1.1 Introduction
- 1.1.1 Welcome!
- 1.1.2 So what are we going to learn in this course, Beginning Hoon?
- 1.2 Our Goals
- 1.3 Why would anyone want to learn Hoon?
- 1.4 Let’s begin.
- 1.4.1 What is a Program?
- 1.4.2 How we will display things
- 1.5 Learning paths that wander and then return
- 1.5.1 What are Urbit, Nock and Hoon? (the basics)
- 1.6 Hoon Programs and Hoon’s weaknesses
- 1.6.1 Types of Naivety in Hoon:
- 1.6.2 Aura/Type
- 1.7 Naivety: Stopping / finishing a program
- 1.7.1 Naivety: The ‘work product’ must be declared
- 1.8 What you need to know and do before beginning
- 1.8.1 Setup
- 1.8.2 How & where to run Urbit
- 1.9 “Mounting” your “desk.”
- 2.1 |commit programs so that your Urbit can “see” it
- 2.1.1 Introduction to the dojo: finally getting into it
- 2.2 Concepts covered in the intro to dojo video:
- 2.3 The “Landscape” interface: we won’t be using it
- 2.3.1 Just to be sure: let’s |commit a program
- 2.4 Important Basic Concepts for Hoon: Atoms, Auras, Cells, Nouns, Lists, Runes
- 2.4 Nock
- 2.5 What are: Atoms, Auras, Cells and Nouns?
- 2.5.1 Why do we need cells?
- 2.6 So then what are Nouns?
- 2.7
Hoon Syntax: Commands, Runes, Tall and Flat Forms - 2.8 Anki Flash Card Deck: Hoon Rune Phonetics
- 2.8.2 Anki Flash Card Deck: Hoon rune families
- 2.8.3 Anki Flash Card Deck: Hoon runes in plain English
- 2.8.4 Essential skills: beginning debugging concepts
2.8.4 Essential skills: beginning debugging concepts
Oftentimes, most of the time at first, your generators will not work initially. Your ability to identify the error and fix them is an important skill that comes with time. Some helpful basic information on how to identify errors can be found here:
https://urbit.org/docs/tutorials/hoon-errors/
We do plan on making a “beginner debugging” and “systematic generator debugging” videos, but those are still pending at this time.
In addition to the knowledge above, here are some additional principles that can really help:
After reading the urbit.org error documentation above, you can look at your error and know where the compiler found the error (this is not always where the error exists). So once you have that location, you should look at the program code row & column in question, and look if a rune prior to that has failed to terminate (does not have enough children), check your syntax (and number of spaces or inadvertent mixing of long and tall form), and also make sure that you have declared types properly and early on, and have followed the types you have declared. Those steps are some “low hanging fruit.”
Then, you might consider entering the problematic section of your code into the dojo line by line to see where the errors occur, and also whether the dojo is able to “close out” (i.e. complete) the section of code.
Of course, there are a lot of people eager to help in the hooniverse chats and hoon school office hours. You’ll get there, and we’ll help you. Keep plugging away! Your best learning will be when you fix things with as little help as possible.