# Hoon

- [Why Hoon?](https://docs.urbit.org/hoon/why-hoon.md): Rationale for Hoon programming language design.
- [Advanced Types](https://docs.urbit.org/hoon/advanced.md): Advanced Hoon type system concepts including polymorphism, variance, wet and dry arms, core nesting rules, and advanced features like aliasing and bridges for complex programming scenarios.
- [Arvo](https://docs.urbit.org/hoon/arvo.md): Arvo types and functions reference including fundamental types like $arch, $beak, $beam, $cage, $duct, $move, $ship, and utilities for Clay nodes, global paths, event processing, and namespace.
- [Auras](https://docs.urbit.org/hoon/auras.md): Hoon aura system reference covering soft type annotation for atoms including text, numbers, dates, addresses, and their nesting behavior, bitwidth specifications, and literal syntax examples.
- [Basic Types](https://docs.urbit.org/hoon/basic.md): Hoon type system fundamentals covering the recursive type data structure including atoms, cells, cores, faces, forks, and auras with explanations of type inference and nest checking.
- [Cheat Sheet](https://docs.urbit.org/hoon/cheat-sheet.md): Quick reference guide to Hoon programming language syntax, operators, and functions available as a downloadable PDF for developers learning Urbit development.
- [Cryptography](https://docs.urbit.org/hoon/cryptography.md): Cryptography functions reference for Hoon including Suite B cryptography implementation with AES encryption, elliptic curve digital signatures, Diffie-Hellman key exchange, and Ames security.
- [Examples](https://docs.urbit.org/hoon/examples.md): Programming exercise solutions in Hoon covering algorithms like spell checking with blocks, competitive programming challenges, prime number calculations, path finding, and encryption implementations.
- [ABC Blocks](https://docs.urbit.org/hoon/examples/abc-blocks.md): Programming challenge solution for spelling words with letter blocks in Hoon including input validation, alphabet checking, and backtracking algorithm implementation with unit tests.
- [Competitive Programming](https://docs.urbit.org/hoon/examples/competitive.md): Programming implementations in Hoon for common algorithmic tasks including sorting, bitwise operations, prime calculation, functional operators, floating-point math, and debugging techniques.
- [Emirp](https://docs.urbit.org/hoon/examples/emirp.md): Programming challenge for calculating emirp numbers (primes whose reverses are also primes) in Hoon with efficient prime checking algorithms and multiple solution implementations including unit tests.
- [Gleichniszahlenreihe](https://docs.urbit.org/hoon/examples/gleichniszahlenreihe.md): Challenge to implement the look-and-say sequence (Gleichniszahlenreihe) in Hoon with sample solutions.
- [Islands](https://docs.urbit.org/hoon/examples/islands.md): Challenge to find the largest connected island in a 2D grid using graph traversal algorithms.
- [Luhn Number](https://docs.urbit.org/hoon/examples/luhn-number.md): Challenge to implement the Luhn algorithm for credit card number validation in Hoon.
- [Minimum Path Sum](https://docs.urbit.org/hoon/examples/min-path.md): Challenge to find the minimum cost path through a 2D grid using dynamic programming.
- [Phone Letters](https://docs.urbit.org/hoon/examples/phone-letters.md): Challenge to generate all possible letter combinations from phone keypad number sequences.
- [Restore IP](https://docs.urbit.org/hoon/examples/restore-ip.md): Challenge to restore valid IPv4 addresses from strings of digits by inserting dots.
- [Rhonda Numbers](https://docs.urbit.org/hoon/examples/rhonda.md): Challenge to find and validate Rhonda numbers based on prime factorization and base conversion.
- [Roman Numerals](https://docs.urbit.org/hoon/examples/roman.md): Challenge to implement conversion between Roman numerals and decimal numbers in Hoon.
- [Solitaire Cipher](https://docs.urbit.org/hoon/examples/solitaire.md): Challenge to implement the Solitaire cryptographic cipher algorithm using playing cards as keys.
- [Water Towers](https://docs.urbit.org/hoon/examples/water-towers.md): Challenge to calculate water trapped between tower heights using dynamic programming.
- [Generators](https://docs.urbit.org/hoon/generators.md): Guide to building and using Hoon generator scripts for Dojo interaction, including bare generators for standalone calculations, %say generators with system knowledge access, and %ask generators.
- [Hoon Errors](https://docs.urbit.org/hoon/hoon-errors.md): Guide to debugging Hoon code, covering common syntax and semantic errors, error traces, debugging modes, and stack trace interpretation.
- [Hoon Style Guide](https://docs.urbit.org/hoon/style.md): Official Hoon style guide covering layout conventions, naming standards, commenting practices, and code quality.
- [Implementing an Aura](https://docs.urbit.org/hoon/aura-guide.md): Step-by-step guide to creating custom auras in Hoon, covering aura design, base logic, pretty-printing, and parsing rules with a sexagesimal degrees example.
- [Irregular forms](https://docs.urbit.org/hoon/irregular.md): Reference guide to Hoon's irregular syntax forms, showing both the irregular and regular forms for common patterns with quick lookup table and detailed explanations.
- [JSON](https://docs.urbit.org/hoon/json-guide.md): Guide to working with JSON in Hoon, covering conversion between Hoon data structures and JSON using +enjs and +dejs functions, with practical examples and mark file creation.
- [Lagoon (Linear Algebra)](https://docs.urbit.org/hoon/lagoon.md): Documentation for the %base desk's /lib/lagoon.hoon library, which contains linear algebra operations.
- [Convenience functions](https://docs.urbit.org/hoon/lagoon/conv.md)
- [Builders](https://docs.urbit.org/hoon/lagoon/build.md)
- [Structures](https://docs.urbit.org/hoon/lagoon/structure.md)
- [Arithmetic](https://docs.urbit.org/hoon/lagoon/math.md)
- [Limbs and wings](https://docs.urbit.org/hoon/limbs.md): Introduction to limbs and wings in Hoon, which provide the primary mechanism for accessing data from the subject without traditional scope or environment concepts.
- [Limbs](https://docs.urbit.org/hoon/limbs/limb.md): Reference for limbs in Hoon, which are attributes of the subject used to resolve to pieces of data (legs) or computations (arms) within the subject tree.
- [Wings](https://docs.urbit.org/hoon/limbs/wing.md): Reference for wings in Hoon, which are lists of limbs forming search paths into the subject to access nested data and computations.
- [Mathematics](https://docs.urbit.org/hoon/math.md): Documentation for the %base desk's /lib/math.hoon library, which contains mathematical operations.
- [Mips (Maps of Maps)](https://docs.urbit.org/hoon/mip.md): Reference for working with mips (maps of maps) in Hoon using the mip library, covering mip operations like insertion, deletion, and retrieval.
- [Parsing Text](https://docs.urbit.org/hoon/parsing.md): Guide to parsing text in Hoon using functional parsers and combinators, covering basic types like hair/nail/edge/rule and common parsing patterns.
- [Runes](https://docs.urbit.org/hoon/rune.md): Reference documentation for Hoon's rune expressions organized by family.
- [| bar · Cores](https://docs.urbit.org/hoon/rune/bar.md): Reference for the core rune family, including gates, doors, traps, and wet cores with detailed syntax and examples for each variant.
- [$ buc · Structures](https://docs.urbit.org/hoon/rune/buc.md): Reference for Hoon's structure runes, including mold creation, validation, and type construction.
- [% cen · Calls](https://docs.urbit.org/hoon/rune/cen.md): Reference for the function call rune family, evaluating arms in cores and doors with various calling patterns and argument arrangements.
- [: col · Cells](https://docs.urbit.org/hoon/rune/col.md): Reference for Hoon's cell constructor runes, with various forms including irregular syntax for common patterns.
- [. dot · Nock](https://docs.urbit.org/hoon/rune/dot.md): Reference for Hoon's Nock runes, including scrying with .^ and basic Nock operations like increment.
- [/ fas · Imports](https://docs.urbit.org/hoon/rune/fas.md): Reference for build system runes, used to import files from /sur and /lib directories among other locations.
- [^ ket · Casts](https://docs.urbit.org/hoon/rune/ket.md): Reference for Hoon's type-casting rune family, which allows safe type transformations without violating constraints.
- [+ lus · Arms](https://docs.urbit.org/hoon/rune/lus.md): Reference for the arm rune family used to define functions and other named expressions in cores, including normal computations, structure definitions, and constructors.
- [; mic · Make](https://docs.urbit.org/hoon/rune/mic.md): Reference for the make rune family used for miscellaneous useful macros, including n-ary function calls and monadic notation.
- [~ sig · Hints](https://docs.urbit.org/hoon/rune/sig.md): Reference for the hint runes used to pass non-semantic information to the interpreter using Nock 11, including debugging and tracing.
- [= tis · Subject](https://docs.urbit.org/hoon/rune/tis.md): Reference for Hoon's subject modification runes.
- [? wut · Conditionals](https://docs.urbit.org/hoon/rune/wut.md): Reference for the conditional runes used for logical operations, including branching, type testing, and boolean logic with type inference.
- [! zap · Wild](https://docs.urbit.org/hoon/rune/zap.md): Reference for the wild runes used for special operations, including AST introspection and vase creation for dynamic types.
- [Constants (Atoms and Strings)](https://docs.urbit.org/hoon/rune/constants.md): Reference for constant expressions in Hoon, including cold atoms, strings with interpolation, and path syntax with examples.
- [--, == · Terminators](https://docs.urbit.org/hoon/rune/terminators.md): Reference for Hoon terminators -- and == used to end core expressions and other variable-length expression sequences respectively.
- [Sail (HTML)](https://docs.urbit.org/hoon/sail.md): Guide to Sail, Urbit's domain-specific language for composing HTML and XML structures directly in Hoon, with syntax and examples for creating web interfaces.
- [Serialization](https://docs.urbit.org/hoon/serialization.md): Guide to noun serialization in Hoon using jamming and cuing techniques for converting nouns to atoms and back, with compression through internal references.
- [Sets](https://docs.urbit.org/hoon/sets.md): Guide to working with sets in Hoon. Set creation, membership testing, and set operations like union, intersection, and difference.
- [Standard Library](https://docs.urbit.org/hoon/stdlib.md): Reference documentation for the Hoon standard library, organized by layer from basic arithmetic to advanced compiler operations and text processing.
- [1a: Basic Arithmetic](https://docs.urbit.org/hoon/stdlib/1a.md): Reference for basic arithmetic functions in Hoon including addition, subtraction, multiplication, division, and comparison operations for unsigned integers.
- [1b: Tree Addressing](https://docs.urbit.org/hoon/stdlib/1b.md): Reference for tree addressing functions in Hoon using Nock's tree addressing scheme to navigate and manipulate tree structures.
- [1c: Molds and Mold-Builders](https://docs.urbit.org/hoon/stdlib/1c.md): Reference for fundamental container types and molds in Hoon including pair, list, unit, tree, gate, and other essential type definitions.
- [2a: Unit Logic](https://docs.urbit.org/hoon/stdlib/2a.md): Reference for unit logic functions in Hoon, providing operations for working with optional values including binding, replacing null, and unit transformations.
- [2b: List Logic](https://docs.urbit.org/hoon/stdlib/2b.md): Reference for \`+list\` manipulation functions in Hoon including searching, sorting, filtering, and transforming operations on \`+list\` data structures.
- [2c: Bit Arithmetic](https://docs.urbit.org/hoon/stdlib/2c.md): Reference for bit arithmetic functions in Hoon used for assembling, disassembling, and manipulating atoms at the bit level using block-based operations.
- [2d: Bit Logic](https://docs.urbit.org/hoon/stdlib/2d.md): Reference for bit logic functions in Hoon providing bitwise logical operations including binary AND, OR, XOR, and other bit manipulation functions.
- [2e: Insecure Hashing](https://docs.urbit.org/hoon/stdlib/2e.md): Reference for non-cryptographic hash functions in Hoon including MurmurHash3 and other fast hashing algorithms for data structures and scrambling.
- [2f: Noun Ordering](https://docs.urbit.org/hoon/stdlib/2f.md): Reference for noun ordering functions in Hoon used for comparing and sorting nouns with different ordering schemes including alphabetical and depth order.
- [2g: Unsigned Powers](https://docs.urbit.org/hoon/stdlib/2g.md): Exponentiation and power-related operations for unsigned integers.
- [2h: Set Logic](https://docs.urbit.org/hoon/stdlib/2h.md): Set data structure operations including union, intersection, difference, and membership testing.
- [2i: Map Logic](https://docs.urbit.org/hoon/stdlib/2i.md): Functions for working with key-value \`+map\`s, including insertion, deletion, lookup, and \`+map\` transformations.
- [2j: Jar and Jug Logic](https://docs.urbit.org/hoon/stdlib/2j.md): Operations for \`+jar\` (map of lists) and jug (map of sets) data structures.
- [2k: Queue Logic](https://docs.urbit.org/hoon/stdlib/2k.md): Queue data structure operations for first-in, first-out data handling.
- [2l: Container from Container](https://docs.urbit.org/hoon/stdlib/2l.md): Functions for converting between container types like lists, maps, and sets.
- [2m: Container from Noun](https://docs.urbit.org/hoon/stdlib/2m.md): Functions for creating typed containers (lists, maps, sets) from raw nouns.
- [2n: Functional Hacks](https://docs.urbit.org/hoon/stdlib/2n.md): Functional programming utilities including composition, currying, and common higher-order functions.
- [2o: Normalizing Containers](https://docs.urbit.org/hoon/stdlib/2o.md): Mold generators for common container types including maps, sets, queues, jars, and jugs.
- [2p: Serialization](https://docs.urbit.org/hoon/stdlib/2p.md): Serialization functions for packing and unpacking \`$noun\`s to and from atoms.
- [2q: Molds and Mold-Builders](https://docs.urbit.org/hoon/stdlib/2q.md): Core molds and mold builders for basic types like paths, dates, tanks, and strings.
- [3a: Modular and Signed Ints](https://docs.urbit.org/hoon/stdlib/3a.md): Signed integer arithmetic and modular arithmetic operations.
- [3b: Floating Point](https://docs.urbit.org/hoon/stdlib/3b.md): Floating-point arithmetic operations for binary and decimal floating-point numbers.
- [3c: Urbit Time](https://docs.urbit.org/hoon/stdlib/3c.md): Time and date manipulation functions for Urbit's datetime format.
- [3d: SHA Hash Family](https://docs.urbit.org/hoon/stdlib/3d.md): SHA cryptographic hash functions including SHA-1, SHA-256, and SHA-512.
- [3e: AES encryption (Removed)](https://docs.urbit.org/hoon/stdlib/3e.md): Deprecated section for AES encryption functions that have been removed from the standard library.
- [3f: Scrambling](https://docs.urbit.org/hoon/stdlib/3f.md): Reversible scrambling operations used in Urbit's phonetic base encoding systems (@p and @q).
- [3g: Molds and Mold-Builders](https://docs.urbit.org/hoon/stdlib/3g.md): Molds for syntax parsing including coin literals, dimes, and format specifiers.
- [4a: Exotic Bases](https://docs.urbit.org/hoon/stdlib/4a.md): Phonetic base encoding functions for Urbit's naming system and ship identities.
- [4b: Text Processing](https://docs.urbit.org/hoon/stdlib/4b.md): Text processing functions for printing, formatting, and converting between text types.
- [4c: Tank Printer](https://docs.urbit.org/hoon/stdlib/4c.md): Tank printing and rendering functions for formatting structured output text.
- [4d: Parsing (Tracing)](https://docs.urbit.org/hoon/stdlib/4d.md): Parsing utilities for tracking line and column positions during text parsing.
- [4e: Parsing (Combinators)](https://docs.urbit.org/hoon/stdlib/4e.md): Parser combinators for composing and combining parsing rules.
- [4f: Parsing (Rule-Builders)](https://docs.urbit.org/hoon/stdlib/4f.md): Parser rule builders for constructing parsing rules and modifying parser behavior.
- [4g: Parsing (Outside Caller)](https://docs.urbit.org/hoon/stdlib/4g.md): Top-level parsing functions for parsing text from external sources.
- [4h: Parsing (ASCII Glyphs)](https://docs.urbit.org/hoon/stdlib/4h.md): Parsers for individual ASCII characters and punctuation marks.
- [4i: Parsing (Useful Idioms)](https://docs.urbit.org/hoon/stdlib/4i.md): Common parsing patterns for alphabetic, numeric, and whitespace characters.
- [4j: Parsing (Bases and Base Digits)](https://docs.urbit.org/hoon/stdlib/4j.md): Parsers for numeric literals in various bases including binary, hex, and decimal.
- [4k: Atom Printing](https://docs.urbit.org/hoon/stdlib/4k.md): Functions for rendering atoms and coins as human-readable text output.
- [4l: Atom Parsing](https://docs.urbit.org/hoon/stdlib/4l.md): Functions for parsing atoms from text strings in various formats and bases.
- [4m: Formatting Functions](https://docs.urbit.org/hoon/stdlib/4m.md): Functions for formatting and rendering dimes, atoms, and other data types as text.
- [4n: Virtualization](https://docs.urbit.org/hoon/stdlib/4n.md): Nock virtualization functions for safe execution and computation wrapping.
- [4o: Molds](https://docs.urbit.org/hoon/stdlib/4o.md): Advanced molds for Hoon's type system including type definitions and abstract syntax tree structures.
- [5a: Compiler Utilities](https://docs.urbit.org/hoon/stdlib/5a.md): Internal compiler utilities and functions used by the Hoon compiler backend.
- [5b: Macro Expansion](https://docs.urbit.org/hoon/stdlib/5b.md): Internal macro expansion utilities used by the Hoon compiler for syntax transformations.
- [5c: Compiler Backend & Prettyprinter](https://docs.urbit.org/hoon/stdlib/5c.md): Hoon compiler backend and pretty-printing functions for code formatting and output.
- [5d: Parser](https://docs.urbit.org/hoon/stdlib/5d.md): Hoon language parser with core parsing functions and rules for syntax analysis.
- [5e: Molds and mold builders](https://docs.urbit.org/hoon/stdlib/5e.md): XML and markup-related molds for handling structured document formats.
- [5f: Profiling support](https://docs.urbit.org/hoon/stdlib/5f.md): Profiling and performance monitoring utilities for code analysis and optimization.
- [Strings](https://docs.urbit.org/hoon/strings.md): Guide to Hoon's string types including cords, tapes, and text manipulation functions.
- [The Engine Pattern](https://docs.urbit.org/hoon/engine-pattern.md): Guide to the engine pattern in Hoon for managing nested cores and state with +abet.
- [Udon (Markdown-esque)](https://docs.urbit.org/hoon/udon.md): Udon markup language for document composition, similar to Markdown with Urbit-related affordances.
- [Vases](https://docs.urbit.org/hoon/vases.md): Guide to vases, pairs of type and data used for runtime type information in Urbit.
- [Zuse](https://docs.urbit.org/hoon/zuse.md): Documentation for the %base desk's /sys/zuse.hoon library, which contains helper functions for the kernel.
- [2d(1-5): To JSON, Wains](https://docs.urbit.org/hoon/zuse/2d_1-5.md): Text formatting functions. Convert cords to wains (line lists), JSON encoding functions, format library utilities.
- [2d(6): From JSON](https://docs.urbit.org/hoon/zuse/2d_6.md): JSON decoding functions that crash on failure. Fast JSON parsing without unit wrapping. dejs format library.
- [2d(7): From JSON (unit)](https://docs.urbit.org/hoon/zuse/2d_7.md): JSON decoding functions that return units. Safe JSON parsing with error handling. dejs-soft format library.
- [2e(2-3): Print & Parse JSON](https://docs.urbit.org/hoon/zuse/2e_2-3.md): JSON encoding and decoding functions. Print JSON to cord, parse JSON from cord. Part of format library.
- [2m: Ordered Maps](https://docs.urbit.org/hoon/zuse/2m.md): Ordered maps (mop) data structure and operations. Maps with custom ordering functions, not hash-ordered.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.urbit.org/hoon.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
