Nock is a purely functional typeless programming language and acts as Urbit's lowest-level language. To be more precise, it is a Turing complete combinator interpreter not based on the lambda calculus. It could be thought of as the assembly-level language of Urbit, and is implemented by the runtime system Vere.
The only basic data type in Nock is the atom, which is a non-negative integer. Computation in Nock occurs through the use of nouns (e.g. binary trees whose leaves are atoms) utilized in three different manners: formulas, subjects, and products. A formula is a noun utilized as a function that takes in a noun, its subject, and returns a noun, its product.
Code written in Hoon is compiled to Nock, though it is unnecessary to learn Nock to write code in Hoon.
Further Reading
- The Nock Tutorial: An-in depth technical guide.