Urbit
  • Introduction
  • Development

    • Getting Started
    • Environment Setup
    • Grants Program
    • Project Repositories
    • Precepts
    • System Overview

      • Arvo
      • Hoon
      • Nock
      • Vere
      • Azimuth
      • Cryptography
      • Arvo

        • Overview
        • Ames

          • Overview
          • Cryptography
          • API Reference
          • Scry Reference
          • Data Types
          • Behn

            • Overview
            • API Reference
            • Scry Reference
            • Examples
            • Clay

              • Overview
              • Architecture
              • Using Clay
              • Data Types
              • Scry Reference
              • API Reference
              • Examples
              • Marks

                • Overview
                • Writing Marks
                • Using Marks
                • Examples
              • Dill

                • Overview
                • API Reference
                • Scry Reference
                • Data Types
                • Eyre

                  • Overview
                  • External API Reference
                  • Internal API Reference
                  • Scry Reference
                  • Data Types
                  • Guide
                  • Ford

                    • Overview
                    • Gall

                      • Overview
                      • API Reference
                      • Data Types
                      • Iris

                        • Overview
                        • API Reference
                        • Data Types
                        • Example
                        • Jael

                          • Overview
                          • API Reference
                          • Scry Reference
                          • Data Types
                          • Examples
                          • Concepts

                            • Scries
                            • Subscriptions
                            • Tutorials

                              • Move Trace
                              • Reference

                                • Cryptography
                                • Filesystem Hierarchy
                              • Userspace

                                • Overview
                                • HTTP API Guide
                                • Gall Guide

                                  • Introduction
                                  • 1. Arvo
                                  • 2. The Agent Core
                                  • 3. Imports and Aliases
                                  • 4. Lifecycle
                                  • 5. Cards
                                  • 6. Pokes
                                  • 7. Structures and Marks
                                  • 8. Subscriptions
                                  • 9. Vanes
                                  • 10. Scries
                                  • 11. Failure
                                  • 12. Next Steps
                                  • Appendix: Types
                                  • Full-Stack Walkthrough

                                    • 1. Introduction
                                    • 2. Types
                                    • 3. Agent
                                    • 4. JSON
                                    • 5. Marks
                                    • 6. Eyre
                                    • 7. React app setup
                                    • 8. React app logic
                                    • 9. Desk and glob
                                    • 10. Summary
                                    • Graph Store

                                      • Graph Store Overview
                                      • Data Structure Overview
                                      • Validator Walkthrough
                                      • Sample Application: Library
                                      • Graph Store - Reference
                                      • Advanced Info
                                      • Threads

                                        • Overview
                                        • HTTP API
                                        • Reference
                                        • Basics

                                          • Fundamentals
                                          • Bind
                                          • Input
                                          • Output
                                          • Summary
                                          • Gall

                                            • Start Thread
                                            • Take Result
                                            • Take Facts
                                            • Stop Thread
                                            • Poke Thread
                                            • Examples

                                              • Fetch JSON
                                              • Child Thread
                                              • Main-loop
                                              • Poke Agent
                                              • Scry
                                              • Take Fact
                                            • Distribution

                                              • Overview
                                              • Guide
                                              • Docket File
                                              • Glob
                                              • Dojo Tools
                                            • Hoon

                                              • Overview
                                              • Hoon School

                                                • 1.1 Introduction
                                                • 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
                                                • Guides

                                                  • CLI apps
                                                  • Parsing
                                                  • JSON
                                                  • Strings
                                                  • Sail (HTML)
                                                  • Writing Aqua Tests
                                                  • Reference

                                                    • Cheat Sheet
                                                    • Irregular forms
                                                    • Hoon Errors
                                                    • Hoon Style Guide
                                                    • Basic Types
                                                    • Advanced Types
                                                    • Auras
                                                    • Runes

                                                      • Atoms and strings
                                                      • Nock . ('dot')
                                                      • Wild ! ('zap')
                                                      • Change Subject = ('tis')
                                                      • Conditionals ? ('wut')
                                                      • Cores | ('bar')
                                                      • Arms + ('lus')
                                                      • Cells : ('col')
                                                      • Calls % ('cen')
                                                      • Casts ^ ('ket')
                                                      • Structures $ ('buc')
                                                      • Make ; ('mic')
                                                      • Hints ~ ('sig')
                                                      • Imports / ('fas')
                                                      • Terminators -- and ==
                                                      • Limbs and wings

                                                        • Limbs
                                                        • Wings
                                                        • Standard library

                                                          • Table of Contents
                                                          • 1a: Basic Arithmetic
                                                          • 1b: Tree Addressing
                                                          • 1c: Molds and Mold-Builders
                                                          • 2a: Unit Logic
                                                          • 2b: List Logic
                                                          • 2c: Bit Arithmetic
                                                          • 2d: Bit Logic
                                                          • 2e: Insecure Hashing
                                                          • 2f: Noun Ordering
                                                          • 2g: Unsigned Powers
                                                          • 2h: Set Logic
                                                          • 2i: Map Logic
                                                          • 2j: Jar and Jug Logic
                                                          • 2k: Queue Logic
                                                          • 2l: Container from Container
                                                          • 2m: Container from Noun
                                                          • 2n: Functional Hacks
                                                          • 2o: Normalizing Containers
                                                          • 2p: Serialization
                                                          • 2q: Molds and Mold-Builders
                                                          • 3a: Modular and Signed Ints
                                                          • 3b: Floating Point
                                                          • 3c: Urbit Time
                                                          • 3d: SHA Hash Family
                                                          • 3e: AES encryption (Removed)
                                                          • 3f: Scrambling
                                                          • 3g: Molds and Mold-Builders
                                                          • 4a: Exotic Bases
                                                          • 4b: Text Processing
                                                          • 4c: Tank Printer
                                                          • 4d: Parsing (Tracing)
                                                          • 4e: Parsing (Combinators)
                                                          • 4f: Parsing (Rule-Builders)
                                                          • 4g: Parsing (Outside Caller)
                                                          • 4h: Parsing (ASCII Glyphs)
                                                          • 4i: Parsing (Useful Idioms)
                                                          • 4j: Parsing (Bases and Base Digits)
                                                          • 4k: Atom Printing
                                                          • 4l: Atom Parsing
                                                          • 4m: Formatting Functions
                                                          • 4n: Virtualization
                                                          • 4o: Molds
                                                          • 5a: Compiler Utilities
                                                          • 5b: Macro Expansion
                                                          • 5c: Compiler Backend & Prettyprinter
                                                          • 5d: Parser
                                                          • 5e: Molds and mold builders
                                                          • 5f: Profiling support
                                                          • Zuse

                                                            • Table of Contents
                                                            • 2d(1-5): To JSON, Wains
                                                            • 2d(6): From JSON
                                                            • 2d(7): From JSON (unit)
                                                            • 2e(2-3): Print & Parse JSON
                                                        • Nock

                                                          • Nock Definition
                                                          • Explanation
                                                          • Example
                                                          • Implementations
                                                          • Vere

                                                            • C Runtime System
                                                            • Land of Nouns
                                                            • API overview by prefix
                                                            • C in Urbit
                                                            • Writing Jets
                                                            • Cryptography
                                                            • Azimuth

                                                              • Overview
                                                              • Urbit HD Wallet
                                                              • Azimuth Data Flow
                                                              • Azimuth.eth
                                                              • Ecliptic.eth
                                                              • Advanced Azimuth Tools
                                                              • Life and Rift
                                                              • Layer 2

                                                                • Layer 2 Overview
                                                                • Layer 2 Actions
                                                                • Transaction Format
                                                                • Rollers
                                                                • Roller HTTP RPC-API
                                                                • Custom Roller Tutorial
                                                              • Glossary

                                                                • Ames
                                                                • Aqua
                                                                • Arm
                                                                • Arvo
                                                                • Atom
                                                                • Azimuth
                                                                • Battery
                                                                • Behn
                                                                • Bridge
                                                                • Censures
                                                                • Ceremony
                                                                • chat
                                                                • Claims
                                                                • Clay
                                                                • Comet
                                                                • Core
                                                                • Delegated Sending
                                                                • Desk
                                                                • Dill
                                                                • Document Proposal
                                                                • Dojo
                                                                • Door
                                                                • Ecliptic
                                                                • Event Log
                                                                • Eyre
                                                                • Ford
                                                                • Galaxy
                                                                • Gall
                                                                • Gate
                                                                • HD Wallet
                                                                • Hoon
                                                                • Invite Tree
                                                                • Iris
                                                                • Jael
                                                                • Jaque
                                                                • Keyfile
                                                                • Landscape
                                                                • Mark
                                                                • Moon
                                                                • Nock
                                                                • Noun
                                                                • OTA Updates
                                                                • Payload
                                                                • pH
                                                                • Pier
                                                                • Pill
                                                                • Planet
                                                                • Proxies
                                                                • Replay
                                                                • Factory Reset
                                                                • Naive rollups
                                                                • Sail/Udon
                                                                • Senate
                                                                • Ship
                                                                • ship.arvo.network
                                                                • Star
                                                                • |sync
                                                                • Trap
                                                                • Upgrade Proposal
                                                                • Vane
                                                                • Vere
                                                                • Voting
                                                                • Wallet-Generator
                                                                Urbit
                                                                • Introduction
                                                                • Development

                                                                  • Getting Started
                                                                  • Environment Setup
                                                                  • Grants Program
                                                                  • Project Repositories
                                                                  • Precepts
                                                                  • System Overview

                                                                    • Arvo
                                                                    • Hoon
                                                                    • Nock
                                                                    • Vere
                                                                    • Azimuth
                                                                    • Cryptography
                                                                    • Arvo

                                                                      • Overview
                                                                      • Ames

                                                                        • Overview
                                                                        • Cryptography
                                                                        • API Reference
                                                                        • Scry Reference
                                                                        • Data Types
                                                                        • Behn

                                                                          • Overview
                                                                          • API Reference
                                                                          • Scry Reference
                                                                          • Examples
                                                                          • Clay

                                                                            • Overview
                                                                            • Architecture
                                                                            • Using Clay
                                                                            • Data Types
                                                                            • Scry Reference
                                                                            • API Reference
                                                                            • Examples
                                                                            • Marks

                                                                              • Overview
                                                                              • Writing Marks
                                                                              • Using Marks
                                                                              • Examples
                                                                            • Dill

                                                                              • Overview
                                                                              • API Reference
                                                                              • Scry Reference
                                                                              • Data Types
                                                                              • Eyre

                                                                                • Overview
                                                                                • External API Reference
                                                                                • Internal API Reference
                                                                                • Scry Reference
                                                                                • Data Types
                                                                                • Guide
                                                                                • Ford

                                                                                  • Overview
                                                                                  • Gall

                                                                                    • Overview
                                                                                    • API Reference
                                                                                    • Data Types
                                                                                    • Iris

                                                                                      • Overview
                                                                                      • API Reference
                                                                                      • Data Types
                                                                                      • Example
                                                                                      • Jael

                                                                                        • Overview
                                                                                        • API Reference
                                                                                        • Scry Reference
                                                                                        • Data Types
                                                                                        • Examples
                                                                                        • Concepts

                                                                                          • Scries
                                                                                          • Subscriptions
                                                                                          • Tutorials

                                                                                            • Move Trace
                                                                                            • Reference

                                                                                              • Cryptography
                                                                                              • Filesystem Hierarchy
                                                                                            • Userspace

                                                                                              • Overview
                                                                                              • HTTP API Guide
                                                                                              • Gall Guide

                                                                                                • Introduction
                                                                                                • 1. Arvo
                                                                                                • 2. The Agent Core
                                                                                                • 3. Imports and Aliases
                                                                                                • 4. Lifecycle
                                                                                                • 5. Cards
                                                                                                • 6. Pokes
                                                                                                • 7. Structures and Marks
                                                                                                • 8. Subscriptions
                                                                                                • 9. Vanes
                                                                                                • 10. Scries
                                                                                                • 11. Failure
                                                                                                • 12. Next Steps
                                                                                                • Appendix: Types
                                                                                                • Full-Stack Walkthrough

                                                                                                  • 1. Introduction
                                                                                                  • 2. Types
                                                                                                  • 3. Agent
                                                                                                  • 4. JSON
                                                                                                  • 5. Marks
                                                                                                  • 6. Eyre
                                                                                                  • 7. React app setup
                                                                                                  • 8. React app logic
                                                                                                  • 9. Desk and glob
                                                                                                  • 10. Summary
                                                                                                  • Graph Store

                                                                                                    • Graph Store Overview
                                                                                                    • Data Structure Overview
                                                                                                    • Validator Walkthrough
                                                                                                    • Sample Application: Library
                                                                                                    • Graph Store - Reference
                                                                                                    • Advanced Info
                                                                                                    • Threads

                                                                                                      • Overview
                                                                                                      • HTTP API
                                                                                                      • Reference
                                                                                                      • Basics

                                                                                                        • Fundamentals
                                                                                                        • Bind
                                                                                                        • Input
                                                                                                        • Output
                                                                                                        • Summary
                                                                                                        • Gall

                                                                                                          • Start Thread
                                                                                                          • Take Result
                                                                                                          • Take Facts
                                                                                                          • Stop Thread
                                                                                                          • Poke Thread
                                                                                                          • Examples

                                                                                                            • Fetch JSON
                                                                                                            • Child Thread
                                                                                                            • Main-loop
                                                                                                            • Poke Agent
                                                                                                            • Scry
                                                                                                            • Take Fact
                                                                                                          • Distribution

                                                                                                            • Overview
                                                                                                            • Guide
                                                                                                            • Docket File
                                                                                                            • Glob
                                                                                                            • Dojo Tools
                                                                                                          • Hoon

                                                                                                            • Overview
                                                                                                            • Hoon School

                                                                                                              • 1.1 Introduction
                                                                                                              • 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
                                                                                                              • Guides

                                                                                                                • CLI apps
                                                                                                                • Parsing
                                                                                                                • JSON
                                                                                                                • Strings
                                                                                                                • Sail (HTML)
                                                                                                                • Writing Aqua Tests
                                                                                                                • Reference

                                                                                                                  • Cheat Sheet
                                                                                                                  • Irregular forms
                                                                                                                  • Hoon Errors
                                                                                                                  • Hoon Style Guide
                                                                                                                  • Basic Types
                                                                                                                  • Advanced Types
                                                                                                                  • Auras
                                                                                                                  • Runes

                                                                                                                    • Atoms and strings
                                                                                                                    • Nock . ('dot')
                                                                                                                    • Wild ! ('zap')
                                                                                                                    • Change Subject = ('tis')
                                                                                                                    • Conditionals ? ('wut')
                                                                                                                    • Cores | ('bar')
                                                                                                                    • Arms + ('lus')
                                                                                                                    • Cells : ('col')
                                                                                                                    • Calls % ('cen')
                                                                                                                    • Casts ^ ('ket')
                                                                                                                    • Structures $ ('buc')
                                                                                                                    • Make ; ('mic')
                                                                                                                    • Hints ~ ('sig')
                                                                                                                    • Imports / ('fas')
                                                                                                                    • Terminators -- and ==
                                                                                                                    • Limbs and wings

                                                                                                                      • Limbs
                                                                                                                      • Wings
                                                                                                                      • Standard library

                                                                                                                        • Table of Contents
                                                                                                                        • 1a: Basic Arithmetic
                                                                                                                        • 1b: Tree Addressing
                                                                                                                        • 1c: Molds and Mold-Builders
                                                                                                                        • 2a: Unit Logic
                                                                                                                        • 2b: List Logic
                                                                                                                        • 2c: Bit Arithmetic
                                                                                                                        • 2d: Bit Logic
                                                                                                                        • 2e: Insecure Hashing
                                                                                                                        • 2f: Noun Ordering
                                                                                                                        • 2g: Unsigned Powers
                                                                                                                        • 2h: Set Logic
                                                                                                                        • 2i: Map Logic
                                                                                                                        • 2j: Jar and Jug Logic
                                                                                                                        • 2k: Queue Logic
                                                                                                                        • 2l: Container from Container
                                                                                                                        • 2m: Container from Noun
                                                                                                                        • 2n: Functional Hacks
                                                                                                                        • 2o: Normalizing Containers
                                                                                                                        • 2p: Serialization
                                                                                                                        • 2q: Molds and Mold-Builders
                                                                                                                        • 3a: Modular and Signed Ints
                                                                                                                        • 3b: Floating Point
                                                                                                                        • 3c: Urbit Time
                                                                                                                        • 3d: SHA Hash Family
                                                                                                                        • 3e: AES encryption (Removed)
                                                                                                                        • 3f: Scrambling
                                                                                                                        • 3g: Molds and Mold-Builders
                                                                                                                        • 4a: Exotic Bases
                                                                                                                        • 4b: Text Processing
                                                                                                                        • 4c: Tank Printer
                                                                                                                        • 4d: Parsing (Tracing)
                                                                                                                        • 4e: Parsing (Combinators)
                                                                                                                        • 4f: Parsing (Rule-Builders)
                                                                                                                        • 4g: Parsing (Outside Caller)
                                                                                                                        • 4h: Parsing (ASCII Glyphs)
                                                                                                                        • 4i: Parsing (Useful Idioms)
                                                                                                                        • 4j: Parsing (Bases and Base Digits)
                                                                                                                        • 4k: Atom Printing
                                                                                                                        • 4l: Atom Parsing
                                                                                                                        • 4m: Formatting Functions
                                                                                                                        • 4n: Virtualization
                                                                                                                        • 4o: Molds
                                                                                                                        • 5a: Compiler Utilities
                                                                                                                        • 5b: Macro Expansion
                                                                                                                        • 5c: Compiler Backend & Prettyprinter
                                                                                                                        • 5d: Parser
                                                                                                                        • 5e: Molds and mold builders
                                                                                                                        • 5f: Profiling support
                                                                                                                        • Zuse

                                                                                                                          • Table of Contents
                                                                                                                          • 2d(1-5): To JSON, Wains
                                                                                                                          • 2d(6): From JSON
                                                                                                                          • 2d(7): From JSON (unit)
                                                                                                                          • 2e(2-3): Print & Parse JSON
                                                                                                                      • Nock

                                                                                                                        • Nock Definition
                                                                                                                        • Explanation
                                                                                                                        • Example
                                                                                                                        • Implementations
                                                                                                                        • Vere

                                                                                                                          • C Runtime System
                                                                                                                          • Land of Nouns
                                                                                                                          • API overview by prefix
                                                                                                                          • C in Urbit
                                                                                                                          • Writing Jets
                                                                                                                          • Cryptography
                                                                                                                          • Azimuth

                                                                                                                            • Overview
                                                                                                                            • Urbit HD Wallet
                                                                                                                            • Azimuth Data Flow
                                                                                                                            • Azimuth.eth
                                                                                                                            • Ecliptic.eth
                                                                                                                            • Advanced Azimuth Tools
                                                                                                                            • Life and Rift
                                                                                                                            • Layer 2

                                                                                                                              • Layer 2 Overview
                                                                                                                              • Layer 2 Actions
                                                                                                                              • Transaction Format
                                                                                                                              • Rollers
                                                                                                                              • Roller HTTP RPC-API
                                                                                                                              • Custom Roller Tutorial
                                                                                                                            • Glossary

                                                                                                                              • Ames
                                                                                                                              • Aqua
                                                                                                                              • Arm
                                                                                                                              • Arvo
                                                                                                                              • Atom
                                                                                                                              • Azimuth
                                                                                                                              • Battery
                                                                                                                              • Behn
                                                                                                                              • Bridge
                                                                                                                              • Censures
                                                                                                                              • Ceremony
                                                                                                                              • chat
                                                                                                                              • Claims
                                                                                                                              • Clay
                                                                                                                              • Comet
                                                                                                                              • Core
                                                                                                                              • Delegated Sending
                                                                                                                              • Desk
                                                                                                                              • Dill
                                                                                                                              • Document Proposal
                                                                                                                              • Dojo
                                                                                                                              • Door
                                                                                                                              • Ecliptic
                                                                                                                              • Event Log
                                                                                                                              • Eyre
                                                                                                                              • Ford
                                                                                                                              • Galaxy
                                                                                                                              • Gall
                                                                                                                              • Gate
                                                                                                                              • HD Wallet
                                                                                                                              • Hoon
                                                                                                                              • Invite Tree
                                                                                                                              • Iris
                                                                                                                              • Jael
                                                                                                                              • Jaque
                                                                                                                              • Keyfile
                                                                                                                              • Landscape
                                                                                                                              • Mark
                                                                                                                              • Moon
                                                                                                                              • Nock
                                                                                                                              • Noun
                                                                                                                              • OTA Updates
                                                                                                                              • Payload
                                                                                                                              • pH
                                                                                                                              • Pier
                                                                                                                              • Pill
                                                                                                                              • Planet
                                                                                                                              • Proxies
                                                                                                                              • Replay
                                                                                                                              • Factory Reset
                                                                                                                              • Naive rollups
                                                                                                                              • Sail/Udon
                                                                                                                              • Senate
                                                                                                                              • Ship
                                                                                                                              • ship.arvo.network
                                                                                                                              • Star
                                                                                                                              • |sync
                                                                                                                              • Trap
                                                                                                                              • Upgrade Proposal
                                                                                                                              • Vane
                                                                                                                              • Vere
                                                                                                                              • Voting
                                                                                                                              • Wallet-Generator
                                                                                                                              Urbit/Documentation/Hoon/Reference/Standard library

                                                                                                                              4o: Molds

                                                                                                                              +$abel

                                                                                                                              Original sin: type

                                                                                                                              Old type, same as the new type.

                                                                                                                              Source

                                                                                                                              +$  abel  typo
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *abel
                                                                                                                              #t/*

                                                                                                                              +$alas

                                                                                                                              Alias list

                                                                                                                              This is the type used in %brcb (|_ door) hoon type for +* alias arms.

                                                                                                                              Source

                                                                                                                              +$  alas  (list (pair term hoon))
                                                                                                                              

                                                                                                                              +$atom

                                                                                                                              Just an atom

                                                                                                                              This is the same as @.

                                                                                                                              Source

                                                                                                                              +$  atom  @
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *atom
                                                                                                                              0
                                                                                                                              
                                                                                                                              > `atom`'foo'
                                                                                                                              7.303.014

                                                                                                                              +$aura

                                                                                                                              'type' of atom

                                                                                                                              By convention, a short name for a category of atom. aura is circularly defined, with @ta being the aura of the ASCII subset commonly used in urbit.

                                                                                                                              Source

                                                                                                                              +$  aura  @ta
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              See also: +$base, aura reference

                                                                                                                              > `aura`'ux'
                                                                                                                              ~.ux

                                                                                                                              +$base

                                                                                                                              Base type

                                                                                                                              A base type that nouns are built from. A base is either a noun, atom with aura, cell, boolean, null, or an empty set.

                                                                                                                              Source

                                                                                                                              +$  base            ::  base mold
                                                                                                                                $@  $?  %noun     ::  any noun
                                                                                                                                        %cell     ::  any cell
                                                                                                                                        %flag     ::  loobean
                                                                                                                                        %null     ::  ~ == 0
                                                                                                                                        %void     ::  empty set
                                                                                                                                    ==            ::
                                                                                                                                [%atom p=aura]    ::  atom
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *base
                                                                                                                              %void
                                                                                                                              
                                                                                                                              > (ream '=|(^ !!)')
                                                                                                                              [%tsbr p=[%base p=%cell] q=[%zpzp ~]]

                                                                                                                              +$woof

                                                                                                                              Simple embed

                                                                                                                              An atom or some hoon.

                                                                                                                              Source

                                                                                                                              +$  woof  $@(@ [~ p=hoon])
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *woof
                                                                                                                              0
                                                                                                                              
                                                                                                                              > `woof`[~ %base p=%cell]
                                                                                                                              [~ p=[%base p=%cell]]
                                                                                                                              
                                                                                                                              > `woof`'foo'
                                                                                                                              7.303.014

                                                                                                                              +$chum

                                                                                                                              Jet hint information

                                                                                                                              Jet hint information that must be present in the body of a ~/ or ~% rune. A chum can optionally contain a kelvin version, jet vendor, and version number.

                                                                                                                              Source

                                                                                                                              +$  chum  $?  lef=term                                  ::  jet name
                                                                                                                                            [std=term kel=@]                          ::  kelvin version
                                                                                                                                            [ven=term pro=term kel=@]                 ::  vendor and product
                                                                                                                                            [ven=term pro=term ver=@ kel=@]           ::  all of the above
                                                                                                                                        ==                                            ::
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > `chum`'hi'
                                                                                                                              lef=%hi
                                                                                                                              
                                                                                                                              > (ream '~/(%lob.314 !!)')
                                                                                                                              [%sgfs p=[std=%lob kel=314] q=[%zpzp ~]]

                                                                                                                              +$coil

                                                                                                                              Tuple of core information

                                                                                                                              Variance p, subject type q, and r: optional compiled nock, and arms. Used as an intermediate step during compilation and converted to a core.

                                                                                                                              Source

                                                                                                                              +$  coil  $:  p=garb                               ::  name, wet=dry, vary
                                                                                                                                            q=type                               ::  context
                                                                                                                                            r=(pair seminoun (map term tome))    ::  chapters
                                                                                                                                        ==                                       ::
                                                                                                                              

                                                                                                                              +$garb

                                                                                                                              Core metadata

                                                                                                                              A triple of an optional name, polarity (wet/dry), and variance (%iron, etc).

                                                                                                                              Source

                                                                                                                              +$  garb  (trel (unit term) poly vair)
                                                                                                                              

                                                                                                                              +$poly

                                                                                                                              Polarity

                                                                                                                              Whether a core is wet or dry.

                                                                                                                              Source

                                                                                                                              +$  poly  ?(%wet %dry)
                                                                                                                              

                                                                                                                              +$foot

                                                                                                                              Cases of arms by variance model.

                                                                                                                              Source

                                                                                                                              +$  foot  $%  [%dry p=hoon]    ::  dry arm, geometric
                                                                                                                                            [%wet p=hoon]    ::  wet arm, generic
                                                                                                                                        ==
                                                                                                                              

                                                                                                                              +$link

                                                                                                                              Lexical segment

                                                                                                                              Used for documentation.

                                                                                                                              Source

                                                                                                                              +$  link                               ::  lexical segment
                                                                                                                                        $%  [%chat p=term]           ::  |chapter
                                                                                                                                            [%cone p=aura q=atom]    ::  %constant
                                                                                                                                            [%frag p=term]           ::  .leg
                                                                                                                                            [%funk p=term]           ::  +arm
                                                                                                                                        ==
                                                                                                                              

                                                                                                                              +$crib

                                                                                                                              Summary and details

                                                                                                                              Summary and details for documentation.

                                                                                                                              Source

                                                                                                                              +$  crib  [summary=cord details=(list sect)]
                                                                                                                              

                                                                                                                              +$help

                                                                                                                              Documentation

                                                                                                                              Source

                                                                                                                              +$  help  [links=(list link) =crib]
                                                                                                                              

                                                                                                                              +$limb

                                                                                                                              Wing element

                                                                                                                              Reference into subject by tree address or name.

                                                                                                                              Source

                                                                                                                              +$  limb  $@  term                                      ::  wing element
                                                                                                                                        $%  [%& p=axis]                               ::  by geometry
                                                                                                                                            [%| p=@ud q=(unit term)]                  ::  by name
                                                                                                                                        ==                                            ::
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > (ream '^^$')
                                                                                                                              [%wing p=~[[%.n p=2 q=[~ %$]]]]

                                                                                                                              +$null

                                                                                                                              Null, nil, etc

                                                                                                                              Just ~.

                                                                                                                              Source

                                                                                                                              +$  null  ~
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *null
                                                                                                                              ~

                                                                                                                              +$onyx

                                                                                                                              Arm activation

                                                                                                                              Source

                                                                                                                              +$  onyx  (list (pair type foot))
                                                                                                                              

                                                                                                                              +$opal

                                                                                                                              Wing match

                                                                                                                              Arm or leg of a wing.

                                                                                                                              Source

                                                                                                                              +$  opal                                            ::  limb match
                                                                                                                                        $%  [%& p=type]                           ::  leg
                                                                                                                                            [%| p=axis q=(set [p=type q=foot])]   ::  arm
                                                                                                                                        ==                                        ::
                                                                                                                              

                                                                                                                              +$pica

                                                                                                                              Prose or code

                                                                                                                              A (pair ? cord). If %.y it's prose and if %.n it's code. Used in documentation.

                                                                                                                              Source

                                                                                                                              +$  pica  (pair ? cord)
                                                                                                                              

                                                                                                                              +$palo

                                                                                                                              Wing trace, match

                                                                                                                              A $vein and a $opal.

                                                                                                                              Source

                                                                                                                              +$  palo  (pair vein opal)
                                                                                                                              

                                                                                                                              +$plat

                                                                                                                              %hoon, %type, %nock or %tank

                                                                                                                              Source

                                                                                                                              +$  plat
                                                                                                                                        $?  %hoon
                                                                                                                                            %type
                                                                                                                                            %nock
                                                                                                                                            %tank
                                                                                                                                        ==
                                                                                                                              

                                                                                                                              +$pock

                                                                                                                              Changes

                                                                                                                              Source

                                                                                                                              +$  pock  (pair axis nock)
                                                                                                                              

                                                                                                                              +$port

                                                                                                                              Successful wing match

                                                                                                                              Source

                                                                                                                              +$  port  (each palo (pair type nock))
                                                                                                                              

                                                                                                                              +$spec

                                                                                                                              Structure definition AST.

                                                                                                                              Source

                                                                                                                              +$  spec                                                ::  structure definition
                                                                                                                                        $~  [%base %null]                             ::
                                                                                                                                        $%  [%base p=base]                            ::  base type
                                                                                                                                            [%dbug p=spot q=spec]                     ::  set debug
                                                                                                                                            [%leaf p=term q=@]                        ::  constant atom
                                                                                                                                            [%like p=wing q=(list wing)]              ::  reference
                                                                                                                                            [%loop p=term]                            ::  hygienic reference
                                                                                                                                            [%made p=(pair term (list term)) q=spec]  ::  annotate synthetic
                                                                                                                                            [%make p=hoon q=(list spec)]              ::  composed spec
                                                                                                                                            [%name p=term q=spec]                     ::  annotate simple
                                                                                                                                            [%over p=wing q=spec]                     ::  relative to subject
                                                                                                                                        ::                                            ::
                                                                                                                                            [%bcgr p=spec q=spec]                     ::  $>, filter: require
                                                                                                                                            [%bcbc p=spec q=(map term spec)]          ::  $$, recursion
                                                                                                                                            [%bcbr p=spec q=hoon]                     ::  $|, verify
                                                                                                                                            [%bccb p=hoon]                            ::  $_, example
                                                                                                                                            [%bccl p=[i=spec t=(list spec)]]          ::  $:, tuple
                                                                                                                                            [%bccn p=[i=spec t=(list spec)]]          ::  $%, head pick
                                                                                                                                            [%bcdt p=spec q=(map term spec)]          ::  $., read-write core
                                                                                                                                            [%bcgl p=spec q=spec]                     ::  $<, filter: exclude
                                                                                                                                            [%bchp p=spec q=spec]                     ::  $-, function core
                                                                                                                                            [%bckt p=spec q=spec]                     ::  $^, cons pick
                                                                                                                                            [%bcls p=stud q=spec]                     ::  $+, standard
                                                                                                                                            [%bcfs p=spec q=(map term spec)]          ::  $/, write-only core
                                                                                                                                            [%bcmc p=hoon]                            ::  $;, manual
                                                                                                                                            [%bcpm p=spec q=hoon]                     ::  $&, repair
                                                                                                                                            [%bcsg p=hoon q=spec]                     ::  $~, default
                                                                                                                                            [%bctc p=spec q=(map term spec)]          ::  $`, read-only core
                                                                                                                                            [%bcts p=skin q=spec]                     ::  $=, name
                                                                                                                                            [%bcpt p=spec q=spec]                     ::  $@, atom pick
                                                                                                                                            [%bcwt p=[i=spec t=(list spec)]]          ::  $?, full pick
                                                                                                                                            [%bczp p=spec q=(map term spec)]          ::  $!, opaque core
                                                                                                                                        ==                                            ::
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *spec
                                                                                                                              [%base p=%null]
                                                                                                                              
                                                                                                                              > `spec`[%bccl ~[leaf+ud+1 leaf+ud+2]]
                                                                                                                              [%bccl p=[i=[%leaf p=%ud q=1] t=~[[%leaf p=%ud q=2]]]]

                                                                                                                              +$tent

                                                                                                                              Model builder

                                                                                                                              Source

                                                                                                                              +$  tent
                                                                                                                                        $%  [%| p=wing q=tent r=(list spec)]    ::  ~(p q r...)
                                                                                                                                            [%& p=(list wing)]                  ::  a.b:c.d
                                                                                                                                        ==                                      ::
                                                                                                                              

                                                                                                                              +$tiki

                                                                                                                              Test case

                                                                                                                              This is used when compiling ?- expressions and similar.

                                                                                                                              Source

                                                                                                                              +$  tiki                                                ::  test case
                                                                                                                                        $%  [%& p=(unit term) q=wing]                 ::  simple wing
                                                                                                                                            [%| p=(unit term) q=hoon]                 ::  named wing
                                                                                                                                        ==                                            ::
                                                                                                                              

                                                                                                                              +$skin

                                                                                                                              Texture

                                                                                                                              This type is used for faces and similar by the compiler.

                                                                                                                              Source

                                                                                                                              +$  skin                             ::  texture
                                                                                                                                        $@  =term                  ::  name/~[term %none]
                                                                                                                                        $%  [%base =base]          ::  base match
                                                                                                                                            [%cell =skin =skin]    ::  pair
                                                                                                                                            [%dbug =spot =skin]    ::  trace
                                                                                                                                            [%leaf =aura =atom]    ::  atomic constant
                                                                                                                                            [%help =help =skin]    ::  describe
                                                                                                                                            [%name =term =skin]    ::  apply label
                                                                                                                                            [%over =wing =skin]    ::  relative to
                                                                                                                                            [%spec =spec =skin]    ::  cast to
                                                                                                                                            [%wash depth=@ud]      ::  strip faces
                                                                                                                                        ==                         ::
                                                                                                                              

                                                                                                                              +$tome

                                                                                                                              Core chapter

                                                                                                                              This type is used by the compiler for the contents of arms in cores.

                                                                                                                              Source

                                                                                                                              +$  tome  (pair what (map term hoon))
                                                                                                                              

                                                                                                                              +$tope

                                                                                                                              Topographic type

                                                                                                                              Describes the structure of a noun.

                                                                                                                              Source

                                                                                                                              +$  tope              ::  topographic type
                                                                                                                                $@  $?  %&          ::  cell or atom
                                                                                                                                        %|          ::  atom
                                                                                                                                    ==              ::
                                                                                                                                (pair tope tope)    ::  cell
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *tope
                                                                                                                              %.n
                                                                                                                              
                                                                                                                              > `tope`[%| %&]
                                                                                                                              [p=%.n q=%.y]

                                                                                                                              ++hoot

                                                                                                                              Hoon tools

                                                                                                                              Container core for internally-used XML structure types. XML structure types you'd typically use directly are defined in Standard Library section 5e.

                                                                                                                              Source

                                                                                                                              ++  hoot
                                                                                                                                |%
                                                                                                                              

                                                                                                                              +$beer:hoot

                                                                                                                              Simple embed

                                                                                                                              Either a tape element or interpolated hoon expression in an XML attribute.

                                                                                                                              Source

                                                                                                                              +$  beer  $@(char [~ p=hoon])
                                                                                                                              

                                                                                                                              +$mane:hoot

                                                                                                                              XML name+space

                                                                                                                              XML tag name and optional namespace.

                                                                                                                              Source

                                                                                                                              +$  mane  $@(@tas [@tas @tas])
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > (en-xml:html ;foo;)
                                                                                                                              "<foo></foo>"
                                                                                                                              
                                                                                                                              > (en-xml:html ;foo_bar;)
                                                                                                                              "<foo:bar></foo:bar>"
                                                                                                                              
                                                                                                                              > `manx:hoot`;foo_bar;
                                                                                                                              [g=[n=[%foo %bar] a=~] c=~]
                                                                                                                              
                                                                                                                              > `mane:hoot`n.g:`manx`;foo_bar;
                                                                                                                              [%foo %bar]
                                                                                                                              
                                                                                                                              > `mane:hoot`n.g:`manx:hoot`;foo;
                                                                                                                              %foo

                                                                                                                              +$manx:hoot

                                                                                                                              Dynamic XML node

                                                                                                                              An XML element which may contain text, attributes, and other elements.

                                                                                                                              g is a $marx:hoot (a tag) and c is a $marl:hoot (its contents).

                                                                                                                              Source

                                                                                                                              +$  manx  $~([[%$ ~] ~] [g=marx c=marl])
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *manx:hoot
                                                                                                                              [g=[n=%$ a=~] c=~
                                                                                                                              
                                                                                                                              > `manx:hoot`;foo;
                                                                                                                              [g=[n=%foo a=~] c=~]
                                                                                                                              
                                                                                                                              > (en-xml:html `manx:hoot`;foo;)
                                                                                                                              "<foo></foo>"
                                                                                                                              
                                                                                                                              > =a ^-  manx:hoot
                                                                                                                                   ;foo
                                                                                                                                     ;bar: abc
                                                                                                                                     ;baz
                                                                                                                                       ;xxx: hello
                                                                                                                                     ==
                                                                                                                                   ==
                                                                                                                              
                                                                                                                              > a
                                                                                                                              [ g=[n=%foo a=~]
                                                                                                                                  c
                                                                                                                                ~[
                                                                                                                                  [ g=[n=%bar a=~]
                                                                                                                                    c=~[[g=[n=%$ a=~[[n=%$ v="abc"]]] c=~]]
                                                                                                                                  ]
                                                                                                                                  [ g=[n=%baz a=~]
                                                                                                                                      c
                                                                                                                                    ~[
                                                                                                                                      [ g=[n=%xxx a=~]
                                                                                                                                        c=~[[g=[n=%$ a=~[[n=%$ v="hello"]]] c=~]]
                                                                                                                                      ]
                                                                                                                                    ]
                                                                                                                                  ]
                                                                                                                                ]
                                                                                                                              ]
                                                                                                                              
                                                                                                                              > (en-xml:html a)
                                                                                                                              "<foo><bar>abc</bar><baz><xxx>hello</xxx></baz></foo>"

                                                                                                                              +$marl:hoot

                                                                                                                              Dynamic XML nodes

                                                                                                                              A list of XML nodes - maybe with interpolation and recursion. See $tuna:hoot.

                                                                                                                              Source

                                                                                                                              +$  marl  (list tuna)
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *marl
                                                                                                                              ~
                                                                                                                              
                                                                                                                              > ^-  marl:hoot
                                                                                                                                ;=
                                                                                                                                  ;foo: abc
                                                                                                                                  ;bar: def
                                                                                                                                ==
                                                                                                                              ~[
                                                                                                                                [g=[n=%foo a=~] c=~[[g=[n=%$ a=~[[n=%$ v=~['a' 'b' 'c']]]] c=~]]]
                                                                                                                                [g=[n=%bar a=~] c=~[[g=[n=%$ a=~[[n=%$ v=~['d' 'e' 'f']]]] c=~]]]
                                                                                                                              ]
                                                                                                                              
                                                                                                                              > %-  en-xml:html
                                                                                                                                ;baz
                                                                                                                                  ;=
                                                                                                                                    ;foo: abc
                                                                                                                                    ;bar: def
                                                                                                                                  ==
                                                                                                                                ==
                                                                                                                              "<baz><foo>abc</foo><bar>def</bar></baz>"

                                                                                                                              +$mart:hoot

                                                                                                                              Dynamic XML attributes

                                                                                                                              A list of atributes for an XML tag. For each list item, n is a $mane:hoot (an attribute name with optional namespace) and v is a (list beer:hoot) (the attribute itself, maybe with interpolated hoon).

                                                                                                                              Source

                                                                                                                              +$  mart  (list [n=mane v=(list beer)])
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *mart:hoot
                                                                                                                              ~
                                                                                                                              
                                                                                                                              > `manx:hoot`;foo.bar;
                                                                                                                              [g=[n=%foo a=~[[n=%class v=~['b' 'a' 'r']]]] c=~]
                                                                                                                              
                                                                                                                              > `mart:hoot`a.g:`manx:hoot`;foo.bar;
                                                                                                                              ~[[n=%class v=~['b' 'a' 'r']]]
                                                                                                                              
                                                                                                                              > (en-xml:html ;foo.bar;)
                                                                                                                              "<foo class=\"bar\"></foo>"

                                                                                                                              +$marx:hoot

                                                                                                                              Dynamic XML tag

                                                                                                                              An XML tag with optional attributes. n is a $mane:hoot (the tag name with optional namespace) and a is a $mart:hoot (any XML attributes).

                                                                                                                              Source

                                                                                                                              +$  marx  $~([%$ ~] [n=mane a=mart])
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > `manx:hoot`;foo.bar;
                                                                                                                              [g=[n=%foo a=~[[n=%class v=~['b' 'a' 'r']]]] c=~]
                                                                                                                              
                                                                                                                              > `marx:hoot`g:`manx:hoot`;foo.bar;
                                                                                                                              [n=%foo a=~[[n=%class v=~['b' 'a' 'r']]]]
                                                                                                                              
                                                                                                                              > (en-xml:html ;foo.bar;)
                                                                                                                              "<foo class=\"bar\"></foo>"

                                                                                                                              +$mare:hoot

                                                                                                                              Node or nodes

                                                                                                                              If %.y, a $manx:hoot (single XML node). If %.n, a $marl:hoot (list of XML nodes).

                                                                                                                              Source

                                                                                                                              +$  mare  (each manx marl)
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *mare:hoot
                                                                                                                              [%.y p=[g=[n=%$ a=~] c=~]]
                                                                                                                              
                                                                                                                              > `mare:hoot`[%.y ;foo.bar;]
                                                                                                                              [%.y p=[g=[n=%foo a=~[[n=%class v=~['b' 'a' 'r']]]] c=~]]
                                                                                                                              
                                                                                                                              > `mare:hoot`[%.n ~[;foo.bar; ;baz;]]
                                                                                                                              [%.n p=~[[g=[n=%foo a=~[[n=%class v=~['b' 'a' 'r']]]] c=~] [g=[n=%baz a=~] c=~]]]

                                                                                                                              +$maru:hoot

                                                                                                                              Interpolation or nodes

                                                                                                                              If %.y, a $tuna:hoot. If %.n, a $marl:hoot.

                                                                                                                              Source

                                                                                                                              +$  maru  (each tuna marl)
                                                                                                                              

                                                                                                                              +$tuna:hoot

                                                                                                                              Maybe interpolation

                                                                                                                              Kinds of nodes. Either an ordinary $manx:hoot, or else a plain tape, a $marl:hoot, or a function call.

                                                                                                                              Source

                                                                                                                              +$  tuna
                                                                                                                                  $~  [[%$ ~] ~]
                                                                                                                                  $^  manx
                                                                                                                                  $:  ?(%tape %manx %marl %call)
                                                                                                                                      p=hoon
                                                                                                                                  ==
                                                                                                                              

                                                                                                                              +$hoon

                                                                                                                              Hoon AST

                                                                                                                              See the Rune section of the Hoon reference for details of what many of these relate to.

                                                                                                                              Source

                                                                                                                              +$  hoon                                                ::
                                                                                                                                $~  [%zpzp ~]
                                                                                                                                $^  [p=hoon q=hoon]                                   ::
                                                                                                                                $%                                                    ::
                                                                                                                                  [%$ p=axis]                                         ::  simple leg
                                                                                                                                ::                                                    ::
                                                                                                                                  [%base p=base]                                      ::  base spec
                                                                                                                                  [%bust p=base]                                      ::  bunt base
                                                                                                                                  [%dbug p=spot q=hoon]                               ::  debug info in trace
                                                                                                                                  [%eror p=tape]                                      ::  assembly error
                                                                                                                                  [%hand p=type q=nock]                               ::  premade result
                                                                                                                                  [%note p=note q=hoon]                               ::  annotate
                                                                                                                                  [%fits p=hoon q=wing]                               ::  underlying ?=
                                                                                                                                  [%knit p=(list woof)]                               ::  assemble string
                                                                                                                                  [%leaf p=(pair term @)]                             ::  symbol spec
                                                                                                                                  [%limb p=term]                                      ::  take limb
                                                                                                                                  [%lost p=hoon]                                      ::  not to be taken
                                                                                                                                  [%rock p=term q=*]                                  ::  fixed constant
                                                                                                                                  [%sand p=term q=*]                                  ::  unfixed constant
                                                                                                                                  [%tell p=(list hoon)]                               ::  render as tape
                                                                                                                                  [%tune p=$@(term tune)]                             ::  minimal face
                                                                                                                                  [%wing p=wing]                                      ::  take wing
                                                                                                                                  [%yell p=(list hoon)]                               ::  render as tank
                                                                                                                                  [%xray p=manx:hoot]                                 ::  ;foo; templating
                                                                                                                                ::                                            ::::::  cores
                                                                                                                                  [%brbc sample=(lest term) body=spec]                ::  |$
                                                                                                                                  [%brcb p=spec q=alas r=(map term tome)]             ::  |_
                                                                                                                                  [%brcl p=hoon q=hoon]                               ::  |:
                                                                                                                                  [%brcn p=(unit term) q=(map term tome)]             ::  |%
                                                                                                                                  [%brdt p=hoon]                                      ::  |.
                                                                                                                                  [%brkt p=hoon q=(map term tome)]                    ::  |^
                                                                                                                                  [%brhp p=hoon]                                      ::  |-
                                                                                                                                  [%brsg p=spec q=hoon]                               ::  |~
                                                                                                                                  [%brtr p=spec q=hoon]                               ::  |*
                                                                                                                                  [%brts p=spec q=hoon]                               ::  |=
                                                                                                                                  [%brpt p=(unit term) q=(map term tome)]             ::  |@
                                                                                                                                  [%brwt p=hoon]                                      ::  |?
                                                                                                                                ::                                            ::::::  tuples
                                                                                                                                  [%clcb p=hoon q=hoon]                               ::  :_ [q p]
                                                                                                                                  [%clkt p=hoon q=hoon r=hoon s=hoon]                 ::  :^ [p q r s]
                                                                                                                                  [%clhp p=hoon q=hoon]                               ::  :- [p q]
                                                                                                                                  [%clls p=hoon q=hoon r=hoon]                        ::  :+ [p q r]
                                                                                                                                  [%clsg p=(list hoon)]                               ::  :~ [p ~]
                                                                                                                                  [%cltr p=(list hoon)]                               ::  :* p as a tuple
                                                                                                                                ::                                            ::::::  invocations
                                                                                                                                  [%cncb p=wing q=(list (pair wing hoon))]            ::  %_
                                                                                                                                  [%cndt p=hoon q=hoon]                               ::  %.
                                                                                                                                  [%cnhp p=hoon q=hoon]                               ::  %-
                                                                                                                                  [%cncl p=hoon q=(list hoon)]                        ::  %:
                                                                                                                                  [%cntr p=wing q=hoon r=(list (pair wing hoon))]     ::  %*
                                                                                                                                  [%cnkt p=hoon q=hoon r=hoon s=hoon]                 ::  %^
                                                                                                                                  [%cnls p=hoon q=hoon r=hoon]                        ::  %+
                                                                                                                                  [%cnsg p=wing q=hoon r=(list hoon)]                 ::  %~
                                                                                                                                  [%cnts p=wing q=(list (pair wing hoon))]            ::  %=
                                                                                                                                ::                                            ::::::  nock
                                                                                                                                  [%dtkt p=spec q=hoon]                               ::  .^  nock 11
                                                                                                                                  [%dtls p=hoon]                                      ::  .+  nock 4
                                                                                                                                  [%dttr p=hoon q=hoon]                               ::  .*  nock 2
                                                                                                                                  [%dtts p=hoon q=hoon]                               ::  .=  nock 5
                                                                                                                                  [%dtwt p=hoon]                                      ::  .?  nock 3
                                                                                                                                ::                                            ::::::  type conversion
                                                                                                                                  [%ktbr p=hoon]                                      ::  ^|  contravariant
                                                                                                                                  [%ktdt p=hoon q=hoon]                               ::  ^.  self-cast
                                                                                                                                  [%ktls p=hoon q=hoon]                               ::  ^+  expression cast
                                                                                                                                  [%kthp p=spec q=hoon]                               ::  ^-  structure cast
                                                                                                                                  [%ktpm p=hoon]                                      ::  ^&  covariant
                                                                                                                                  [%ktsg p=hoon]                                      ::  ^~  constant
                                                                                                                                  [%ktts p=skin q=hoon]                               ::  ^=  label
                                                                                                                                  [%ktwt p=hoon]                                      ::  ^?  bivariant
                                                                                                                                  [%kttr p=spec]                                      ::  ^*  example
                                                                                                                                  [%ktcl p=spec]                                      ::  ^:  filter
                                                                                                                                ::                                            ::::::  hints
                                                                                                                                  [%sgbr p=hoon q=hoon]                               ::  ~|  sell on trace
                                                                                                                                  [%sgcb p=hoon q=hoon]                               ::  ~_  tank on trace
                                                                                                                                  [%sgcn p=chum q=hoon r=tyre s=hoon]                 ::  ~%  general jet hint
                                                                                                                                  [%sgfs p=chum q=hoon]                               ::  ~/  function j-hint
                                                                                                                                  [%sggl p=$@(term [p=term q=hoon]) q=hoon]           ::  ~<  backward hint
                                                                                                                                  [%sggr p=$@(term [p=term q=hoon]) q=hoon]           ::  ~>  forward hint
                                                                                                                                  [%sgbc p=term q=hoon]                               ::  ~$  profiler hit
                                                                                                                                  [%sgls p=@ q=hoon]                                  ::  ~+  cache=memoize
                                                                                                                                  [%sgpm p=@ud q=hoon r=hoon]                         ::  ~&  printf=priority
                                                                                                                                  [%sgts p=hoon q=hoon]                               ::  ~=  don't duplicate
                                                                                                                                  [%sgwt p=@ud q=hoon r=hoon s=hoon]                  ::  ~?  tested printf
                                                                                                                                  [%sgzp p=hoon q=hoon]                               ::  ~!  type on trace
                                                                                                                                ::                                            ::::::  miscellaneous
                                                                                                                                  [%mcts p=marl:hoot]                                 ::  ;=  list templating
                                                                                                                                  [%mccl p=hoon q=(list hoon)]                        ::  ;:  binary to nary
                                                                                                                                  [%mcfs p=hoon]                                      ::  ;/  [%$ [%$ p ~] ~]
                                                                                                                                  [%mcgl p=spec q=hoon r=hoon s=hoon]                 ::  ;<  bind
                                                                                                                                  [%mcsg p=hoon q=(list hoon)]                        ::  ;~  kleisli arrow
                                                                                                                                  [%mcmc p=spec q=hoon]                               ::  ;;  normalize
                                                                                                                                ::                                            ::::::  compositions
                                                                                                                                  [%tsbr p=spec q=hoon]                               ::  =|  push bunt
                                                                                                                                  [%tscl p=(list (pair wing hoon)) q=hoon]            ::  =:  q w= p changes
                                                                                                                                  [%tsfs p=skin q=hoon r=hoon]                        ::  =/  typed variable
                                                                                                                                  [%tsmc p=skin q=hoon r=hoon]                        ::  =;  =/(q p r)
                                                                                                                                  [%tsdt p=wing q=hoon r=hoon]                        ::  =.  r with p as q
                                                                                                                                  [%tswt p=wing q=hoon r=hoon s=hoon]                 ::  =?  conditional =.
                                                                                                                                  [%tsgl p=hoon q=hoon]                               ::  =<  =>(q p)
                                                                                                                                  [%tshp p=hoon q=hoon]                               ::  =-  =+(q p)
                                                                                                                                  [%tsgr p=hoon q=hoon]                               ::  =>  q w=subject p
                                                                                                                                  [%tskt p=skin q=wing r=hoon s=hoon]                 ::  =^  state machine
                                                                                                                                  [%tsls p=hoon q=hoon]                               ::  =+  q w=[p subject]
                                                                                                                                  [%tssg p=(list hoon)]                               ::  =~  hoon stack
                                                                                                                                  [%tstr p=(pair term (unit spec)) q=hoon r=hoon]     ::  =*  new style
                                                                                                                                  [%tscm p=hoon q=hoon]                               ::  =,  overload p in q
                                                                                                                                ::                                            ::::::  conditionals
                                                                                                                                  [%wtbr p=(list hoon)]                               ::  ?|  loobean or
                                                                                                                                  [%wthp p=wing q=(list (pair spec hoon))]            ::  ?-  pick case in q
                                                                                                                                  [%wtcl p=hoon q=hoon r=hoon]                        ::  ?:  if=then=else
                                                                                                                                  [%wtdt p=hoon q=hoon r=hoon]                        ::  ?.  ?:(p r q)
                                                                                                                                  [%wtkt p=wing q=hoon r=hoon]                        ::  ?^  if p is a cell
                                                                                                                                  [%wtgl p=hoon q=hoon]                               ::  ?<  ?:(p !! q)
                                                                                                                                  [%wtgr p=hoon q=hoon]                               ::  ?>  ?:(p q !!)
                                                                                                                                  [%wtls p=wing q=hoon r=(list (pair spec hoon))]     ::  ?+  ?-  w=default
                                                                                                                                  [%wtpm p=(list hoon)]                               ::  ?&  loobean and
                                                                                                                                  [%wtpt p=wing q=hoon r=hoon]                        ::  ?@  if p is atom
                                                                                                                                  [%wtsg p=wing q=hoon r=hoon]                        ::  ?~  if p is null
                                                                                                                                  [%wthx p=skin q=wing]                               ::  ?#  if q matches p
                                                                                                                                  [%wtts p=spec q=wing]                               ::  ?=  if q matches p
                                                                                                                                  [%wtzp p=hoon]                                      ::  ?!  loobean not
                                                                                                                                ::                                            ::::::  special
                                                                                                                                  [%zpcm p=hoon q=hoon]                               ::  !,
                                                                                                                                  [%zpgr p=hoon]                                      ::  !>
                                                                                                                                  [%zpgl p=spec q=hoon]                               ::  !<
                                                                                                                                  [%zpmc p=hoon q=hoon]                               ::  !;
                                                                                                                                  [%zpts p=hoon]                                      ::  !=
                                                                                                                                  [%zppt p=(list wing) q=hoon r=hoon]                 ::  !@
                                                                                                                                  [%zpwt p=$@(p=@ [p=@ q=@]) q=hoon]                  ::  !?
                                                                                                                                  [%zpzp ~]                                           ::  !!
                                                                                                                                ==                                                    ::
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *hoon
                                                                                                                              [%zpzp ~]
                                                                                                                              
                                                                                                                              > `hoon`(ream '|=([a=@ b=@] [b a])')
                                                                                                                              [ %brts
                                                                                                                                  p
                                                                                                                                [ %bccl
                                                                                                                                    p
                                                                                                                                  [ i=[%bcts p=term=%a q=[%base p=[%atom p=~.]]]
                                                                                                                                    t=~[[%bcts p=term=%b q=[%base p=[%atom p=~.]]]]
                                                                                                                                  ]
                                                                                                                                ]
                                                                                                                                q=[%cltr p=~[[%wing p=~[%b]] [%wing p=~[%a]]]]
                                                                                                                              ]

                                                                                                                              +$tyre

                                                                                                                              List, term hoon

                                                                                                                              Associative list of term hoon, used in jet hint processing.

                                                                                                                              Source

                                                                                                                              +$  tyre  (list [p=term q=hoon])                        ::
                                                                                                                              

                                                                                                                              +$tyke

                                                                                                                              List of 'maybe' hoons

                                                                                                                              List of unit hoon, or gaps left to be inferred, in path parsing. When you use a path such as /=base=/gen/code the path is in fact a tyke, where the = are inferred from your current path.

                                                                                                                              Source

                                                                                                                              +$  tyke  (list (unit hoon))
                                                                                                                              

                                                                                                                              +$nock

                                                                                                                              Virtual nock.

                                                                                                                              See the Nock documentation for details.

                                                                                                                              Source

                                                                                                                              +$  nock  $^  [p=nock q=nock]                      ::  autocons
                                                                                                                                        $%  [%1 p=*]                             ::  constant
                                                                                                                                            [%2 p=nock q=nock]                   ::  compose
                                                                                                                                            [%3 p=nock]                          ::  cell test
                                                                                                                                            [%4 p=nock]                          ::  increment
                                                                                                                                            [%5 p=nock q=nock]                   ::  equality test
                                                                                                                                            [%6 p=nock q=nock r=nock]            ::  if, then, else
                                                                                                                                            [%7 p=nock q=nock]                   ::  serial compose
                                                                                                                                            [%8 p=nock q=nock]                   ::  push onto subject
                                                                                                                                            [%9 p=@ q=nock]                      ::  select arm and fire
                                                                                                                                            [%10 p=[p=@ q=nock] q=nock]          ::  edit
                                                                                                                                            [%11 p=$@(@ [p=@ q=nock]) q=nock]    ::  hint
                                                                                                                                            [%12 p=nock q=nock]                  ::  grab data from sky
                                                                                                                                            [%0 p=@]                             ::  axis select
                                                                                                                                        ==                                       ::
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > !=([+(.) 20 -<])
                                                                                                                              [[4 0 1] [1 20] 0 4]
                                                                                                                              
                                                                                                                              > (nock !=([+(.) 20]))
                                                                                                                              [p=[%4 p=[%0 p=1]] q=[%1 p=20]]

                                                                                                                              +$note

                                                                                                                              Type annotation

                                                                                                                              Used for documentation.

                                                                                                                              Source

                                                                                                                              +$  note                                             ::  type annotation
                                                                                                                                        $%  [%help p=help]                         ::  documentation
                                                                                                                                            [%know p=stud]                         ::  global standard
                                                                                                                                            [%made p=term q=(unit (list wing))]    ::  structure
                                                                                                                                        ==                                         ::
                                                                                                                              

                                                                                                                              +$type

                                                                                                                              Hoon type type

                                                                                                                              Source

                                                                                                                              +$  type  $~  %noun                                ::
                                                                                                                                        $@  $?  %noun                            ::  any nouns
                                                                                                                                                %void                            ::  no noun
                                                                                                                                            ==                                   ::
                                                                                                                                        $%  [%atom p=term q=(unit @)]            ::  atom / constant
                                                                                                                                            [%cell p=type q=type]                ::  ordered pair
                                                                                                                                            [%core p=type q=coil]                ::  object
                                                                                                                                            [%face p=$@(term tune) q=type]       ::  namespace
                                                                                                                                            [%fork p=(set type)]                 ::  union
                                                                                                                                            [%hint p=(pair type note) q=type]    ::  annotation
                                                                                                                                            [%hold p=type q=hoon]                ::  lazy evaluation
                                                                                                                                        ==                                       ::
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > `type`[%cell [%atom %ud ~] [%atom %ud ~]]
                                                                                                                              #t/[@ud @ud]

                                                                                                                              +$tony

                                                                                                                              $tone done right

                                                                                                                              An intermediate Nock computation result. Similar to a $toon but without a rendered stack trace.

                                                                                                                              Source

                                                                                                                              +$  tony                               ::  ++tone done right
                                                                                                                                        $%  [%0 p=tine q=*]          ::  success
                                                                                                                                            [%1 p=(set)]             ::  blocks
                                                                                                                                            [%2 p=(list [@ta *])]    ::  error ~_s
                                                                                                                                        ==                           ::
                                                                                                                              

                                                                                                                              +$tine

                                                                                                                              Partial noun

                                                                                                                              Source

                                                                                                                              +$  tine                            ::  partial noun
                                                                                                                                        $@  ~                     ::  open
                                                                                                                                        $%  [%& p=tine q=tine]    ::  half-blocked
                                                                                                                                            [%| p=(set)]          ::  fully blocked
                                                                                                                                        ==                        ::
                                                                                                                              

                                                                                                                              +$tool

                                                                                                                              Type decoration

                                                                                                                              Source

                                                                                                                              +$  tool  $@(term tune)
                                                                                                                              

                                                                                                                              +$tune

                                                                                                                              Complex

                                                                                                                              Source

                                                                                                                              +$  tune                                  ::  complex
                                                                                                                                        $~  [~ ~]                       ::
                                                                                                                                        $:  p=(map term (unit hoon))    ::  aliases
                                                                                                                                            q=(list hoon)               ::  bridges
                                                                                                                                        ==                              ::
                                                                                                                              

                                                                                                                              +$typo

                                                                                                                              Old type

                                                                                                                              Same as $type

                                                                                                                              Source

                                                                                                                              +$  typo  type
                                                                                                                              

                                                                                                                              +$vase

                                                                                                                              Type-value pair

                                                                                                                              Typed data. A $vase is used wherever typed data is explicitly worked with.

                                                                                                                              Source

                                                                                                                              +$  vase  [p=type q=*]
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > *vase
                                                                                                                              [#t/* q=0]
                                                                                                                              
                                                                                                                              > !>([2 2])
                                                                                                                              [#t/[@ud @ud] q=[2 2]]
                                                                                                                              
                                                                                                                              > !>('foo')
                                                                                                                              [#t/@t q=7.303.014]

                                                                                                                              +$vise

                                                                                                                              Old vase

                                                                                                                              Same as a $vase.

                                                                                                                              Source

                                                                                                                              +$  vise  [p=typo q=*]
                                                                                                                              

                                                                                                                              +$vial

                                                                                                                              co/contra/in/bi

                                                                                                                              Covariant, contravariant, invariant, bivariant.

                                                                                                                              Source

                                                                                                                              +$  vial  ?(%read %rite %both %free)
                                                                                                                              

                                                                                                                              +$vair

                                                                                                                              in/contra/bi/co

                                                                                                                              Core variance.

                                                                                                                              • %gold - invariant payload.
                                                                                                                              • %iron - contravariant sample.
                                                                                                                              • %lead - bivariant sample.
                                                                                                                              • %zinc - covariant sample.

                                                                                                                              See the Hoon School lesson on type polymorphism for more details.

                                                                                                                              Source

                                                                                                                              +$  vair  ?(%gold %iron %lead %zinc)
                                                                                                                              

                                                                                                                              +$vein

                                                                                                                              Search trace

                                                                                                                              Noun search trace.

                                                                                                                              Source

                                                                                                                              +$  vein  (list (unit axis))
                                                                                                                              

                                                                                                                              +$sect

                                                                                                                              Paragraph

                                                                                                                              Used in documentation.

                                                                                                                              Source

                                                                                                                              +$  sect  (list pica)
                                                                                                                              

                                                                                                                              +$whit

                                                                                                                              Documentation

                                                                                                                              Source

                                                                                                                              +$  whit                                                ::
                                                                                                                                        $:  lab=(unit term)                           ::  label
                                                                                                                                            boy=(unit (pair cord (list sect)))        ::  body
                                                                                                                                            def=(map term (pair cord (list sect)))    ::  definitions
                                                                                                                                            use=(set term)                            ::  defs used
                                                                                                                                        ==                                            ::
                                                                                                                              

                                                                                                                              +$what

                                                                                                                              Help slogan/section

                                                                                                                              Source

                                                                                                                              +$  what  (unit (pair cord (list sect)))
                                                                                                                              

                                                                                                                              +$wing

                                                                                                                              Search path

                                                                                                                              Address in subject. A $wing is a path to a value in the subject. A term alone is the trivial case of a $wing.

                                                                                                                              Source

                                                                                                                              +$  wing  (list limb)
                                                                                                                              

                                                                                                                              Examples

                                                                                                                              > (ream 'a.+.c')
                                                                                                                              [%wing p=~[%a [%.y p=3] %c]]
                                                                                                                              
                                                                                                                              > (wing +:(ream 'a.+.c'))
                                                                                                                              ~[%a [%.y p=3] %c]

                                                                                                                              +$block

                                                                                                                              Abstract identity of resource awaited

                                                                                                                              Source

                                                                                                                              +$  block
                                                                                                                                path
                                                                                                                              

                                                                                                                              +$result

                                                                                                                              Internal interpreter result

                                                                                                                              Source

                                                                                                                              +$  result
                                                                                                                                $@(~ seminoun)
                                                                                                                              

                                                                                                                              +$thunk

                                                                                                                              Fragment constructor

                                                                                                                              Source

                                                                                                                              +$  thunk
                                                                                                                                $-(@ud (unit noun))
                                                                                                                              

                                                                                                                              +$doss

                                                                                                                              Profiling

                                                                                                                              Source

                                                                                                                              +$  doss
                                                                                                                                $:  mon=moan               ::  sample count
                                                                                                                                    hit=(map term @ud)     ::  hit points
                                                                                                                                    cut=(map path hump)    ::  cut points
                                                                                                                                ==
                                                                                                                              

                                                                                                                              +$moan

                                                                                                                              Profiling: sample metric

                                                                                                                              Source

                                                                                                                              +$  moan         ::  sample metric
                                                                                                                                $:  fun=@ud    ::  samples in C
                                                                                                                                    noc=@ud    ::  samples in nock
                                                                                                                                    glu=@ud    ::  samples in glue
                                                                                                                                    mal=@ud    ::  samples in alloc
                                                                                                                                    far=@ud    ::  samples in frag
                                                                                                                                    coy=@ud    ::  samples in copy
                                                                                                                                    euq=@ud    ::  samples in equal
                                                                                                                                ==             ::
                                                                                                                              

                                                                                                                              +$hump

                                                                                                                              Profiling

                                                                                                                              Source

                                                                                                                              +$  hump
                                                                                                                                $:  mon=moan              ::  sample count
                                                                                                                                    out=(map path @ud)    ::  calls out of
                                                                                                                                    inn=(map path @ud)    ::  calls into
                                                                                                                                ==
                                                                                                                              

                                                                                                                              <-

                                                                                                                              4n: Virtualization

                                                                                                                              5a: Compiler Utilities

                                                                                                                              ->

                                                                                                                              Edit this page on GitHub
                                                                                                                              • 4o: Molds
                                                                                                                              • +$abel
                                                                                                                              • +$alas
                                                                                                                              • +$atom
                                                                                                                              • +$aura
                                                                                                                              • +$base
                                                                                                                              • +$woof
                                                                                                                              • +$chum
                                                                                                                              • +$coil
                                                                                                                              • +$garb
                                                                                                                              • +$poly
                                                                                                                              • +$foot
                                                                                                                              • +$link
                                                                                                                              • +$crib
                                                                                                                              • +$help
                                                                                                                              • +$limb
                                                                                                                              • +$null
                                                                                                                              • +$onyx
                                                                                                                              • +$opal
                                                                                                                              • +$pica
                                                                                                                              • +$palo
                                                                                                                              • +$plat
                                                                                                                              • +$pock
                                                                                                                              • +$port
                                                                                                                              • +$spec
                                                                                                                              • +$tent
                                                                                                                              • +$tiki
                                                                                                                              • +$skin
                                                                                                                              • +$tome
                                                                                                                              • +$tope
                                                                                                                              • ++hoot
                                                                                                                                • +$beer:hoot
                                                                                                                                • +$mane:hoot
                                                                                                                                • +$manx:hoot
                                                                                                                                • +$marl:hoot
                                                                                                                                • +$mart:hoot
                                                                                                                                • +$marx:hoot
                                                                                                                                • +$mare:hoot
                                                                                                                                • +$maru:hoot
                                                                                                                                • +$tuna:hoot
                                                                                                                              • +$hoon
                                                                                                                              • +$tyre
                                                                                                                              • +$tyke
                                                                                                                              • +$nock
                                                                                                                              • +$note
                                                                                                                              • +$type
                                                                                                                              • +$tony
                                                                                                                              • +$tine
                                                                                                                              • +$tool
                                                                                                                              • +$tune
                                                                                                                              • +$typo
                                                                                                                              • +$vase
                                                                                                                              • +$vise
                                                                                                                              • +$vial
                                                                                                                              • +$vair
                                                                                                                              • +$vein
                                                                                                                              • +$sect
                                                                                                                              • +$whit
                                                                                                                              • +$what
                                                                                                                              • +$wing
                                                                                                                              • +$block
                                                                                                                              • +$result
                                                                                                                              • +$thunk
                                                                                                                              • +$doss
                                                                                                                              • +$moan
                                                                                                                              • +$hump