on master help sign in
Merge remote-tracking branch 'upstream/master' into anchor-links
commit96c74280a8d8abed7f882200b7778b7c067a0505 authorYaseen <yaseen.nvt@gmail.com> dateThu 18 Mar 2021, 09:47 (6 years ago) parent816e782e6f4b90
243 files changed+9713−8020
_index.md+43−13 tutorials/arvo/_index.md → arvo/_index.md+20−14 arvo/ames/_index.md+6 reference/vane-apis/ames.md → arvo/ames/ames-api.md+3−3 tutorials/arvo/ames.md → arvo/ames/ames.md+8−8 arvo/behn/_index.md+6 reference/vane-apis/behn.md → arvo/behn/behn-api.md+2−2 tutorials/arvo/behn.md → arvo/behn/behn.md+3−3 arvo/clay/_index.md+36 arvo/clay/architecture.md+254 arvo/clay/clay.md+64 arvo/clay/data-types.md+760 arvo/clay/foreign.md+412 arvo/clay/local-reads.md+783 arvo/clay/local-sub.md+249 arvo/clay/using.md+209 arvo/concepts/_index.md+12 arvo/concepts/subscriptions.md+162 arvo/dill/_index.md+6 reference/vane-apis/dill.md → arvo/dill/dill-api.md+5−5 tutorials/arvo/dill.md → arvo/dill/dill.md+2−2 arvo/eyre/_index.md+15 tutorials/arvo/eyre.md → arvo/eyre/eyre.md+2−2 arvo/eyre/using-eyre.md+230 arvo/ford/_index.md+6 arvo/ford/ford.md+223 arvo/gall/_index.md+6 reference/vane-apis/gall.md → arvo/gall/gall-api.md+2−2 tutorials/arvo/gall.md → arvo/gall/gall.md+3−3 arvo/gall/tutorial.md+14 arvo/iris/_index.md+6 reference/vane-apis/iris.md → arvo/iris/iris-api.md+2−2 arvo/jael/_index.md+6 arvo/jael/jael-api.md+393 tutorials/arvo/arvo.md → arvo/overview.md+20−22 arvo/tutorials/_index.md+8 tutorials/arvo/move-trace.md → arvo/tutorials/move-trace.md+6−6 azimuth/_index.md+16 tutorials/advanced-azimuth-tools.md → azimuth/advanced-azimuth-tools.md+1−1 tutorials/concepts/azimuth.md → azimuth/azimuth.md+4−4 development/_index.md+32 development/develop.md+115 development/environment.md+62 development/grants.md+85 development/precepts.md+336 development/project-repositories.md+49 glossary/_index.md+1 glossary/ames.md+3−3 glossary/aqua.md+1−1 glossary/arm.md+2−2 glossary/arvo.md+2−2 glossary/atom.md+3−3 glossary/azimuth.md+2−2 glossary/battery.md+2−2 glossary/behn.md+1−1 glossary/breach.md+2−2 glossary/bridge.md+2−2 glossary/chat.md+1−1 glossary/clay.md+2−2 glossary/comet.md+1−1 glossary/core.md+2−2 glossary/desk.md+1−1 glossary/dill.md+1−1 glossary/dojo.md+1−2 glossary/door.md+2−2 glossary/eyre.md+1−1 glossary/ford.md+1−1 glossary/gall.md+3−3 glossary/gate.md+2−2 glossary/hdwallet.md+1−1 glossary/hoon.md+2−2 glossary/jaque.md+1−1 glossary/keyfile.md+1−1 glossary/mark.md+2−2 glossary/moon.md+2−1 glossary/nock.md+1−1 glossary/noun.md+3−3 glossary/payload.md+2−2 glossary/pier.md+2−2 glossary/proxies.md+1−1 glossary/replay.md+1−1 glossary/ship.md+2−2 glossary/sync.md+1−1 glossary/trap.md+2−2 glossary/vane.md+1−1 glossary/vere.md+2−2 hoon/_index.md+26 hoon/guides/_index.md+12 tutorials/hoon/hoon-school/aqua.md → hoon/guides/aqua.md tutorials/hoon/cli-tutorial.md → hoon/guides/cli-tutorial.md+2−2 tutorials/hoon/parsing.md → hoon/guides/parsing.md+13−13 hoon/hoon-school/_index.md+41 tutorials/hoon/hoon-school/ackermann.md → hoon/hoon-school/ackermann.md tutorials/hoon/hoon-school/arms-and-cores.md → hoon/hoon-school/arms-and-cores.md+3−3 tutorials/hoon/hoon-school/atoms-auras-and-simple-cell-types.md → hoon/hoon-school/atoms-auras-and-simple-cell-types.md+3−1 tutorials/hoon/hoon-school/bank-account.md → hoon/hoon-school/bank-account.md+2−2 tutorials/hoon/hoon-school/behn.md → hoon/hoon-school/behn.md+5−3 tutorials/hoon/hoon-school/caesar.md → hoon/hoon-school/caesar.md+2−2 tutorials/hoon/hoon-school/conditionals.md → hoon/hoon-school/conditionals.md+2−2 tutorials/hoon/hoon-school/doors.md → hoon/hoon-school/doors.md+2−2 tutorials/hoon/hoon-school/egg-timer.md → hoon/hoon-school/egg-timer.md tutorials/hoon/hoon-school/fibonacci.md → hoon/hoon-school/fibonacci.md+1−1 tutorials/hoon/hoon-school/gall.md → hoon/hoon-school/gall.md+1−1 tutorials/hoon/hoon-school/gates.md → hoon/hoon-school/gates.md tutorials/hoon/hoon-school/generators.md → hoon/hoon-school/generators.md tutorials/hoon/hoon-school/hoon-syntax.md → hoon/hoon-school/hoon-syntax.md+15−15 tutorials/hoon/hoon-school/iron-polymorphism.md → hoon/hoon-school/iron-polymorphism.md tutorials/hoon/hoon-school/lead-polymorphism.md → hoon/hoon-school/lead-polymorphism.md tutorials/hoon/hoon-school/libraries.md → hoon/hoon-school/libraries.md+11−3 tutorials/hoon/hoon-school/list-of-numbers.md → hoon/hoon-school/list-of-numbers.md+1−1 tutorials/hoon/hoon-school/lists.md → hoon/hoon-school/lists.md+3−3 tutorials/hoon/hoon-school/molds.md → hoon/hoon-school/molds.md+2−2 tutorials/hoon/hoon-school/nouns.md → hoon/hoon-school/nouns.md+1−1 tutorials/hoon/hoon-school/recursion.md → hoon/hoon-school/recursion.md+1−1 tutorials/hoon/hoon-school/setup.md → hoon/hoon-school/setup.md+5−5 tutorials/hoon/hoon-school/structures-and-complex-types.md → hoon/hoon-school/structures-and-complex-types.md+2−2 tutorials/hoon/hoon-school/the-subject-and-its-legs.md → hoon/hoon-school/the-subject-and-its-legs.md+1−1 tutorials/hoon/hoon-school/trees-sets-and-maps.md → hoon/hoon-school/trees-sets-and-maps.md+2−2 tutorials/hoon/hoon-school/type-checking-and-type-inference.md → hoon/hoon-school/type-checking-and-type-inference.md+2−2 tutorials/hoon/hoon-school/type-polymorphism.md → hoon/hoon-school/type-polymorphism.md+1−1 hoon/overview.md+276 hoon/reference/_index.md+49 reference/hoon-expressions/advanced.md → hoon/reference/advanced.md+25−22 hoon/reference/auras.md+77 reference/hoon-expressions/basic.md → hoon/reference/basic.md+2−2 reference/cheat-sheet.md → hoon/reference/cheat-sheet.md+2−2 tutorials/hoon/hoon-errors.md → hoon/reference/hoon-errors.md+7−7 reference/hoon-expressions/irregular.md → hoon/reference/irregular.md+20−20 reference/hoon-expressions/limb/_index.md → hoon/reference/limbs/_index.md+3−3 reference/hoon-expressions/limb/limb.md → hoon/reference/limbs/limb.md reference/hoon-expressions/limb/wing.md → hoon/reference/limbs/wing.md reference/hoon-expressions/rune/_index.md → hoon/reference/rune/_index.md+16−16 reference/hoon-expressions/rune/bar.md → hoon/reference/rune/bar.md+8−8 reference/hoon-expressions/rune/buc.md → hoon/reference/rune/buc.md+112−27 reference/hoon-expressions/rune/cen.md → hoon/reference/rune/cen.md+4−4 reference/hoon-expressions/rune/col.md → hoon/reference/rune/col.md reference/hoon-expressions/rune/constants.md → hoon/reference/rune/constants.md reference/hoon-expressions/rune/dot.md → hoon/reference/rune/dot.md+1−1 reference/hoon-expressions/rune/ket.md → hoon/reference/rune/ket.md+1−1 reference/hoon-expressions/rune/lus.md → hoon/reference/rune/lus.md reference/hoon-expressions/rune/mic.md → hoon/reference/rune/mic.md reference/hoon-expressions/rune/sig.md → hoon/reference/rune/sig.md+4−1 reference/hoon-expressions/rune/terminators.md → hoon/reference/rune/terminators.md reference/hoon-expressions/rune/tis.md → hoon/reference/rune/tis.md+1−1 reference/hoon-expressions/rune/wut.md → hoon/reference/rune/wut.md+1−1 reference/hoon-expressions/rune/zap.md → hoon/reference/rune/zap.md reference/library/1a.md → hoon/reference/stdlib/1a.md reference/library/1b.md → hoon/reference/stdlib/1b.md+1−1 reference/library/1c.md → hoon/reference/stdlib/1c.md+1−1 reference/library/2a.md → hoon/reference/stdlib/2a.md reference/library/2b.md → hoon/reference/stdlib/2b.md reference/library/2c.md → hoon/reference/stdlib/2c.md+14−14 reference/library/2d.md → hoon/reference/stdlib/2d.md+2−2 reference/library/2e.md → hoon/reference/stdlib/2e.md+2−2 reference/library/2f.md → hoon/reference/stdlib/2f.md+4−4 reference/library/2g.md → hoon/reference/stdlib/2g.md reference/library/2h.md → hoon/reference/stdlib/2h.md+2−2 reference/library/2i.md → hoon/reference/stdlib/2i.md+1−1 reference/library/2j.md → hoon/reference/stdlib/2j.md reference/library/2k.md → hoon/reference/stdlib/2k.md reference/library/2l.md → hoon/reference/stdlib/2l.md reference/library/2m.md → hoon/reference/stdlib/2m.md reference/library/2n.md → hoon/reference/stdlib/2n.md reference/library/2o.md → hoon/reference/stdlib/2o.md+5−5 reference/library/2p.md → hoon/reference/stdlib/2p.md reference/library/2q.md → hoon/reference/stdlib/2q.md+2−2 reference/library/3a.md → hoon/reference/stdlib/3a.md reference/library/3b.md → hoon/reference/stdlib/3b.md reference/library/3c.md → hoon/reference/stdlib/3c.md reference/library/3d.md → hoon/reference/stdlib/3d.md+2−2 reference/library/3e.md → hoon/reference/stdlib/3e.md reference/library/3f.md → hoon/reference/stdlib/3f.md+3−3 reference/library/3g.md → hoon/reference/stdlib/3g.md+4−4 reference/library/4a.md → hoon/reference/stdlib/4a.md reference/library/4b.md → hoon/reference/stdlib/4b.md reference/library/4c.md → hoon/reference/stdlib/4c.md reference/library/4d.md → hoon/reference/stdlib/4d.md reference/library/4e.md → hoon/reference/stdlib/4e.md reference/library/4f.md → hoon/reference/stdlib/4f.md reference/library/4g.md → hoon/reference/stdlib/4g.md reference/library/4h.md → hoon/reference/stdlib/4h.md+1−1 reference/library/4i.md → hoon/reference/stdlib/4i.md reference/library/4j.md → hoon/reference/stdlib/4j.md reference/library/4k.md → hoon/reference/stdlib/4k.md reference/library/4l.md → hoon/reference/stdlib/4l.md reference/library/4m.md → hoon/reference/stdlib/4m.md reference/library/4n.md → hoon/reference/stdlib/4n.md reference/library/4o.md → hoon/reference/stdlib/4o.md reference/library/5a.md → hoon/reference/stdlib/5a.md reference/library/5b.md → hoon/reference/stdlib/5b.md reference/library/5c.md → hoon/reference/stdlib/5c.md reference/library/5d.md → hoon/reference/stdlib/5d.md reference/library/5e.md → hoon/reference/stdlib/5e.md reference/library/5f.md → hoon/reference/stdlib/5f.md reference/library/5g.md → hoon/reference/stdlib/5g.md hoon/reference/stdlib/_index.md+1736 hoon/reference/stdlib/table-of-contents.md+1733 tutorials/hoon/hoon-school/style.md → hoon/reference/style.md+3−3 landscape/_index.md+17 landscape/overview.md+195 landscape/reference/_index.md+10 tutorials/hoon/graph.md → landscape/reference/graph-store.md+6−4 tutorials/nock/_index.md → nock/_index.md+5−5 tutorials/nock/definition.md → nock/definition.md tutorials/nock/example.md → nock/example.md tutorials/nock/explanation.md → nock/explanation.md tutorials/nock/implementations.md → nock/implementations.md+1−1 reference/_index.md−20 reference/hoon-expressions/_index.md−28 reference/library/_index.md−1736 reference/library/table-of-contents.md−1733 reference/vane-apis/_index.md−10 reference/vane-apis/airlock.md−135 system-overview/_index.md+73 system-overview/arvo.md+33 system-overview/azimuth.md+34 system-overview/hoon.md+28 system-overview/nock.md+34 system-overview/vere.md+45 tutorials/_index.md−27 tutorials/arvo/clay.md−2749 tutorials/arvo/ford.md−9 tutorials/azure-container-instances.md+120 tutorials/concepts/_index.md−11 tutorials/concepts/arch.md−21 tutorials/concepts/technical-overview.md−172 tutorials/creating-an-invite-pool.md−39 tutorials/guide-to-breaches.md−90 tutorials/hoon/_index.md−16 tutorials/hoon/hoon-school/_index.md−20 tutorials/hoon/workbook/_index.md−17 tutorials/hoon/workbook/bomb.md−140 tutorials/hoon/workbook/digits.md−113 tutorials/hoon/workbook/eightball.md−158 tutorials/hoon/workbook/traffic-light.md−155 tutorials/ship-troubleshooting.md−212 tutorials/urbit-azure.jq+64 tutorials/vere/_index.md → vere/_index.md+6−6 tutorials/vere/api.md → vere/api.md tutorials/vere/c.md → vere/c.md tutorials/vere/jetting.md → vere/jetting.md+2−2 tutorials/vere/nouns.md → vere/nouns.md tutorials/vere/runtime.md → vere/runtime.md
_index.md+43−13
@@ -1,27 +1,57 @@
11+++
2−title = "Docs"
2+title = "Development Docs"
3+weight = 1
34template = "sections/docs.html"
45+++
56
6−Welcome to the documentation for the Urbit project. This documentation is maintained by [Tlon](https://tlon.io) in a public [Github repository](https://github.com/urbit/docs). Issues and contributions are welcome.
7+Welcome to the developer documentation for the Urbit project. This documentation
8+is maintained by [Tlon](https://tlon.io) and the Urbit community in a public
9+[Github repository](https://github.com/urbit/docs). Issues and contributions are
10+welcome.
711
8−### [Glossary](@/docs/glossary/_index.md)
12+This documentation provides a series of explainers, guides, tutorials and
13+reference material for assisting you in developing on the Urbit platform, or
14+contributing to the Urbit project. If you're looking for documentation on how to
15+*use* your Urbit ship, see our [usage docs](@/using/_index.md).
916
10−We recommend getting started with the Glossary, which explains Urbit concepts in an accessible, wiki-like format. Glossary pages will point you in the direction of more substantial documentation in other sections like Tutorials and Reference, so browsing it will help you discover the rest of the docs. Also note the search box, which is a handy way to look a term up.
17+### [Development](@/docs/development/_index.md)
1118
12−| Featured Glossary Terms |
13−|:--:|
14−| [Arvo](@/docs/glossary/arvo.md) - [Azimuth](@/docs/glossary/azimuth.md) - [Hoon](@/docs/glossary/hoon.md) - [Landscape](@/docs/glossary/landscape.md) - [Planet](@/docs/glossary/planet.md) - [Ship](@/docs/glossary/ship.md)|
19+The Development section is recommended reading for developers interested in
20+contributing to Urbit itself, or building apps on top of Urbit. It serves as a
21+high-level orientation to how to set up a development environment, the various
22+codebases that comprise the project, our grants program, and the precepts that
23+drive the development of Urbit.
1524
25+### [System Overview](@/docs/system-overview/_index.md)
1626
17−### [Tutorials](@/docs/tutorials/_index.md)
27+This section gives a high-level overview to all the major components of the
28+Urbit tech stack - namely, the operating system Arvo, the programming languages
29+Nock and Hoon, the runtime Vere, and the decentralized ID system Azimuth.
1830
19−Tutorials contains learning materials about the system, enough where you can develop on Urbit.
31+### [Arvo (Urbit OS)](@/docs/arvo/_index.md)
2032
21−### [Reference](@/docs/reference/_index.md)
33+This section covers the kernel of Urbit OS, called Arvo, as well as its kernel modules.
2234
23−Reference contains technical reference documentation for Hoon and other components of the system. Keep reading if you need to look up a Hoon expression or a standard-library function.
35+### [Hoon (High-level Language)](@/docs/hoon/_index.md)
2436
25−### [Troubleshooting Knowledgebase](https://github.com/urbit/support/wiki)
37+Here is contained all official documentation on Hoon, the high-level purely
38+functional programming language in which Arvo and much of userspace is written.
2639
27−While not a part of the docs proper, our troubleshooting wiki is the best place to go if you're trying to find a solution to an Urbit technical problem.
40+### [Nock (Low-level Language)](@/docs/nock/_index.md)
41+
42+Official guidance on Nock, the functional assembly-level language which serves
43+as the basis for Hoon.
44+
45+### [Vere (Interpreter)](@/docs/vere/_index.md)
46+
47+Documentation on Vere, the Nock virtual machine which serves as the interface
48+between Urbit and Unix.
49+
50+### [Azimuth (Urbit ID)](@/docs/azimuth/_index.md)
51+
52+The workings of Azimuth, the decentralized ID system utilized by Urbit.
53+
54+### [Landscape (Web Client)](@/docs/landscape/_index.md)
55+
56+Developer guides to Landscape, the web client by which most users interact
57+with their ship.
tutorials/arvo/_index.md → arvo/_index.mdrenamed+20−14
@@ -1,49 +1,55 @@
11+++
22title = "Arvo"
3−weight = 1
3+weight = 300
44sort_by = "weight"
55template = "sections/docs/chapters.html"
66aliases = ["/docs/learn/arvo/"]
77+++
88
9−## [Arvo](@/docs/tutorials/arvo/arvo.md)
9+Resources about the Urbit OS.
1010
11−Arvo is Urbit's functional operating system, written in [Hoon](@/docs/tutorials/hoon/hoon-school/_index.md). It's composed of modules called _vanes_:
11+## [Overview](@/docs/arvo/overview.md)
1212
13−## Vanes
13+Arvo is Urbit's functional operating system, written in [Hoon](@/docs/hoon/hoon-school/_index.md). It's composed of modules called _vanes_, each of which has its own folder:
1414
15−### [Ames](@/docs/tutorials/arvo/ames.md)
15+## [Ames](@/docs/arvo/ames/ames.md)
1616
1717Ames is the name of our network and the vane that communicates over it. It's an encrypted P2P network composed of instances of the Arvo operating system.
1818
19−### [Behn](@/docs/tutorials/arvo/behn.md)
19+## [Behn](@/docs/arvo/behn/behn.md)
2020
2121Behn is our timer. It allows vanes and applications to set and timer events, which are managed in a simple priority queue.
2222
23−### [Clay](@/docs/tutorials/arvo/clay.md)
23+## [Clay](@/docs/arvo/clay/clay.md)
2424
2525Clay is our filesystem and revision-control system.
2626
27−### [Dill](@/docs/tutorials/arvo/dill.md)
27+## [Dill](@/docs/arvo/dill/dill.md)
2828
2929Dill is our terminal driver. Unix sends keyboard events to dill from the terminal, and dill produces terminal output.
3030
31−### [Eyre](@/docs/tutorials/arvo/eyre.md)
31+## [Eyre](@/docs/arvo/eyre/eyre.md)
3232
3333Eyre is our HTTP server. Unix sends HTTP messages to `%eyre`, and `%eyre` produces HTTP messages in response.
3434
35−### [Ford](@/docs/tutorials/arvo/ford.md)
35+## [Ford](@/docs/arvo/ford/ford.md)
3636
3737Ford is our build system. It handles resources and publishing.
3838
39−### [Gall](@/docs/tutorials/arvo/gall.md)
39+## [Gall](@/docs/arvo/gall/gall.md)
4040
4141Gall is the vane for controlling userspace apps.
4242
43−### Iris
43+## [Iris](@/docs/arvo/iris/iris-api.md)
4444
4545Iris is our HTTP client.
4646
47−## [Move trace tutorial](@/docs/tutorials/arvo/move-trace.md)
47+## [Concepts](@/docs/arvo/concepts/_index.md)
48+
49+Explanations of design decisions that are pervasive throughout Arvo.
50+
51+## [Tutorials](@/docs/arvo/tutorials/_index.md)
52+
53+Walkthroughs that teach you more about how Arvo works.
54+
4855
49−A walkthrough of what the Arvo kernel does to respond to a simple command.
arvo/ames/_index.mdnew file+6
@@ -0,0 +1,6 @@
1++++
2+title = "Ames"
3+weight = 10
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
reference/vane-apis/ames.md → arvo/ames/ames-api.mdrenamed+3−3
@@ -1,6 +1,6 @@
11+++
2−title = "Ames"
3−weight = 2
2+title = "API Reference"
3+weight = 10
44template = "doc.html"
55+++
66
@@ -189,7 +189,7 @@ Ames does not `give` a `gift` in response to a `%crud` `task`, but it does
189189## `%init`
190190
191191`%init` is called a single time during the very first boot process, immediately
192−after the [larval stage](@/docs/tutorials/arvo/arvo.md#larval-stage-core)
192+after the [larval stage](@/docs/arvo/overview.md#larval-stage-core)
193193is completed. This initializes the vane. Jael is initialized first, followed by
194194other vanes such as Ames.
195195
tutorials/arvo/ames.md → arvo/ames/ames.mdrenamed+8−8
@@ -1,6 +1,6 @@
11+++
2−title = "Ames"
3−weight = 2
2+title = "Overview"
3+weight = 1
44template = "doc.html"
55aliases = ["/docs/learn/arvo/ames/"]
66+++
@@ -11,7 +11,7 @@ over it. When Unix receives a packet over the correct UDP port, it pipes
1111it straight into Ames for handling. Also, all packets sent over the
1212Ames network are sent by the Ames vane. Apps and vanes may use
1313Ames to directly send messages to other ships. In general, apps use
14−[Gall](@/docs/tutorials/arvo/gall.md) and [Clay](@/docs/tutorials/arvo/clay.md)
14+[Gall](@/docs/arvo/gall/gall.md) and [Clay](@/docs/arvo/clay/clay.md)
1515to communicate with other ships rather than using Ames
1616directly, but this isn't a requirement. Of course, Gall and Clay use
1717Ames behind the scenes to communicate across the network. Jael is the only other
@@ -28,7 +28,7 @@ vane or app, is defined in Ames.
2828This section summarizes the design of Ames. Beyond this section are deeper
2929elaborations on the concepts presented here.
3030
31−Ames extends [Arvo's](@/docs/tutorials/arvo/arvo.md) `%pass`/`%give` `move` semantics across the network.
31+Ames extends [Arvo's](@/docs/arvo/overview.md) `%pass`/`%give` `move` semantics across the network.
3232
3333Ames receives packets as Arvo events and emits packets as Arvo
3434effects. The runtime is responsible for transferring the bytes in
@@ -130,7 +130,7 @@ The 32-bit header is given by the following data, presented in order:
130130
131131 - 3 bits: Ames `protocol-version`,
132132 - 20 bits: a checksum as a truncated insecure hash of the body, done with
133− [`+mug`](@/docs/reference/library/2e.md#mug),
133+ [`+mug`](@/docs/hoon/reference/stdlib/2e.md#mug),
134134 - 2 bits: the bit width of the sender address encoded as a 2-bit enum,
135135 - 2 bits: the bit width of the receiver address encoded as a 2-bit enum,
136136 - 1 bit: whether the packet is encrypted or not,
@@ -144,7 +144,7 @@ The body is of variable length and consists of three parts in this order:
144144
145145 - The `@p` of the sending ship,
146146 - The `@p` of the receiving ship,
147− - The payload, which is the [`+jam`](@/docs/reference/library/2p.md#jam) (i.e. serialization) of the noun `[origin content]`.
147+ - The payload, which is the [`+jam`](@/docs/hoon/reference/stdlib/2p.md#jam) (i.e. serialization) of the noun `[origin content]`.
148148
149149 `origin` is the IP and port of the original sender if the packet was proxied
150150 through a relay and null otherwise. `content` is a noun that is either an encrypted ack or an
@@ -367,7 +367,7 @@ using the Diffie-Hellman symmetric key that was previously computed.
367367
368368`~zod` receives the packet and reads the body. It sees that it is not the
369369intended recipient of the packet, and so gets ready to forward it to
370−`~worwel-sipnum`. First, it [`+cue`s](@/docs/reference/library/2p.md#cue)
370+`~worwel-sipnum`. First, it [`+cue`s](@/docs/hoon/reference/stdlib/2p.md#cue)
371371(deserializes) the payload and changes the `origin` to the IP and port of
372372`~bacbel-tagfeb`. Then it `+jam`s `[origin content]` to form a new payload, and
373373`+mug`s that payload to get a new checksum. It replaces the old payload and
@@ -386,7 +386,7 @@ until one of them changes their IP address, port, or networking keys.
386386
387387Urbit's functionality is split between the two binaries `urbit-worker` (sometimes
388388called the Serf) and `urbit-king` (sometimes called the King). This division of
389−labor is currently not well-documented outside of the [Vere documents](@/docs/tutorials/vere/_index.md), but we summarize it here.
389+labor is currently not well-documented outside of the [Vere documents](@/docs/vere/_index.md), but we summarize it here.
390390
391391In short, the Serf is the Nock runtime and so keeps track of the current state
392392of Arvo as a Nock noun and updates the state by `%poke`ing it with nouns, and
arvo/behn/_index.mdnew file+6
@@ -0,0 +1,6 @@
1++++
2+title = "Behn"
3+weight = 20
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
reference/vane-apis/behn.md → arvo/behn/behn-api.mdrenamed+2−2
@@ -1,6 +1,6 @@
11+++
2−title = "Behn"
3−weight = 3
2+title = "API Reference"
3+weight = 10
44template = "doc.html"
55+++
66
tutorials/arvo/behn.md → arvo/behn/behn.mdrenamed+3−3
@@ -1,6 +1,6 @@
11+++
2−title = "Behn"
3−weight = 3
2+title = "Overview"
3+weight = 1
44template = "doc.html"
55+++
66Our simple timer.
@@ -18,4 +18,4 @@ for keeping track of time-specified file requests. `%ames` should
1818probably use `%behn` to keep track of things like network timeouts and
1919retry timing, but it currently uses its own alarm system.
2020
21−This article is a stub. For more information, see either `behn.hoon` or [Lesson 2.6 - Behn](@/docs/tutorials/hoon/hoon-school/behn.md) of the Hoon tutorial.
21+This article is a stub. For more information, see either `behn.hoon` or [Lesson 2.6 - Behn](@/docs/hoon/hoon-school/behn.md) of the Hoon tutorial.
arvo/clay/_index.mdnew file+36
@@ -0,0 +1,36 @@
1++++
2+title = "Clay"
3+weight = 30
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+[Overview](@/docs/arvo/clay/clay.md)
9+
10+High-level overview of Clay.
11+
12+[Architecture](@/docs/arvo/clay/architecture.md)
13+
14+A conceptual overview of how Clay was designed.
15+
16+[Using Clay](@/docs/arvo/clay/using.md)
17+
18+A quick overview of how the most common tasks involving Clay are performed:
19+reading and subscribing, syncing to Unix, and merging.
20+
21+[Data Types](@/docs/arvo/clay/data-types.md)
22+
23+Explanations of the many data types found throughout Clay.
24+
25+[Local Reads and Writes](@/docs/arvo/clay/local-reads.md)
26+
27+How local reads and writes work.
28+
29+[Local Subscriptions](@/docs/arvo/clay/local-sub.md)
30+
31+How local subscriptions work.
32+
33+[Foreign Requests](@/docs/arvo/clay/foreign.md)
34+
35+How foreign reads and subscriptions work.
36+
arvo/clay/architecture.mdnew file+254
@@ -0,0 +1,254 @@
1+++
2+title = "Architecture"
3+weight = 2
4+template = "doc.html"
5+++
6+
7+Clay is the primary filesystem for the [Arvo](@/docs/Arvo/overview.md) operating system,
8+which is the [core](/docs/glossary/core/) of an urbit. The architecture of Clay is
9+intrinsically connected with Arvo, but for this section we assume no knowledge of
10+either Arvo or Urbit. We will point out only those features of
11+Arvo that are necessary for an understanding of Clay, and we will
12+do so only when they arise.
13+
14+The first relevant feature of Arvo is that it is a deterministic
15+system where input and output are defined as a series of events
16+and effects. The state of Arvo is simply a pure function of its event
17+log. None of the effects from an event are emitted until the
18+event is entered in the log and persisted, either to disk or
19+another trusted source of persistence, such as a Kafka cluster.
20+Consequently, Arvo is a single-level store: everything in its
21+state is persistent.
22+
23+In a more traditional OS, everything in RAM can be erased at any
24+time by power failure, and is always erased on reboot. Thus, a
25+primary purpose of a filesystem is to ensure files persist across
26+power failures and reboots. In Arvo, both power failures and
27+reboots are special cases of suspending computation, which is
28+done safely since our event log is already persistent. Therefore,
29+Clay is not needed in Arvo for persistence. Why, then, do we have a
30+filesystem? There are two answers to this question.
31+
32+First, Clay provides a filesystem tree, which is a convenient
33+user interface for some applications. Unix has the useful concept
34+of virtual filesystems, which are used for everything from direct
35+access to devices, to random number generators, to the /proc
36+tree. It is easy and intuitive to read from and write to a
37+filesystem tree.
38+
39+Second, Clay has a distributed revision-control system baked into
40+it. Traditional filesystems are not revision controlled, so
41+userspace software -- such as git -- is written on top of them to
42+do so. Clay natively provides the same functionality as modern
43+DVCSes, and more.
44+
45+Clay has two other unique properties that we'll cover later on:
46+it supports typed data and is referentially transparent.
47+
48+### Revision Control
49+
50+Every urbit has one or more `desk`s, which are independently
51+revision-controlled branches. Each `desk` contains its own `mark`
52+definitions, apps, and so forth.
53+
54+Traditionally, an urbit has at least a `%home` `desk` and `%kids` `desk`. The
55+`%home` `desk` has all the system software from the distribution, along with your
56+personal files. The `%home` `desk` is a fork of the `%kids` desk of whichever ship
57+you download [OTAs](@/docs/glossary/ota-updates.md) from - typically your sponsor,
58+but theoretically may be any ship. You will also find references to a `%base`
59+`desk` - which is not a real `desk`, rather it just a hash associated to the
60+`desk` from which your `%home` `desk` was forked.
61+
62+A `desk` is a series of numbered commits, the most recent of which
63+represents the current state of the `desk`. A commit is composed of
64+(1) an absolute time when it was created, (2) a list of zero or
65+more parents, and (3) a map from paths to data.
66+
67+Most commits have exactly one parent, but the initial commit on a
68+`desk` may have zero parents, and merge commits have more than one
69+parent.
70+
71+The non-metadata is stored as a `map` of `path`s to data. It's
72+worth noting that no constraints are put on this `map`, so, for
73+example, both `/a/b` and `/a/b/c` could have data. This is impossible
74+in a traditional Unix filesystem since it means that `/a/b` is both
75+a file and a directory. Conventionally, the final element in the
76+path is its `mark` -- much like a filename extension in Unix. Thus,
77+`/doc/readme.md` in Unix is stored as `/doc/readme/md` in urbit.
78+
79+The data is not stored directly in the `map`; rather, a hash of the
80+data is stored, and we maintain a master blob store. Thus, if the
81+same data is referred to in multiple commits (as, for example,
82+when a file doesn't change between commits), only the hash is
83+duplicated.
84+
85+In the master blob store, we either store the data directly, or
86+else we store a diff against another blob. The hash is dependent
87+only on the data within and not on whether or not it's stored
88+directly, so we may on occasion rearrange the contents of the
89+blob store for performance reasons.
90+
91+Recall that a `desk` is a series of numbered commits. Not every
92+commit in a `desk` must be numbered. For example, if the base `desk`
93+has had 50 commits since home was forked from it, then a merge
94+from base to home will only add a single revision number to home,
95+although the full commit history will be accessible by traversing
96+the parentage of the individual commits.
97+
98+We do guarantee that the first commit is numbered 1, commits are
99+numbered consecutively after that (i.e. there are no "holes"),
100+the topmost commit is always numbered, and every numbered commit
101+is an ancestor of every later numbered commit.
102+
103+There are three ways to refer to particular commits in the
104+revision history. Firstly, one can use the revision number.
105+Secondly, one can use any absolute time between the one numbered
106+commit and the next (inclusive of the first, exclusive of the
107+second). Thirdly, every `desk` has a `map` of labels to revision
108+numbers. These labels may be used to refer to specific commits.
109+
110+Additionally, Clay is a global filesystem, so data on other urbits
111+is easily accessible the same way as data on our local urbit. In
112+general, the path to a particular revision of a `desk` is
113+`/~urbit-name/desk-name/revision`. Thus, to get `/try/readme/md`
114+from revision 5 of the home `desk` on `~sampel-sipnym`, we refer to
115+`/~sampel-sipnym/home/5/try/readme/md`. Clay's namespace is thus
116+global and referentially transparent.
117+
118+### A Typed Filesystem
119+
120+Since Clay is a general filesystem for storing data of arbitrary
121+types, in order to revision control correctly it needs to be
122+aware of types all the way through. Traditional revision control
123+does an excellent job of handling source code, so for source code
124+we act very similar to traditional revision control. The
125+challenge is to handle other data similarly well.
126+
127+For example, modern VCSs generally support "binary files", which
128+are files for which the standard textual diffing, patching, and
129+merging algorithms are not helpful. A "diff" of two binary files
130+is just a pair of the files, "patching" this diff is just
131+replacing the old file with the new one, and "merging"
132+non-identical diffs is always a conflict, which can't even be
133+helpfully annotated. Without knowing anything about the structure
134+of a blob of data, this is the best we can do.
135+
136+Often, though, "binary" files have some internal structure, and
137+it is possible to create diff, patch, and merge algorithms that
138+take advantage of this structure. An image may be the result of a
139+base image with some set of operations applied. With algorithms
140+aware of this set of operations, not only can revision control
141+software save space by not having to save every revision of the
142+image individually, these transformations can be made on parallel
143+branches and merged at will.
144+
145+Suppose Alice is tasked with touching up a picture, improving the
146+color balance, adjusting the contrast, and so forth, while Bob
147+has the job of cropping the picture to fit where it's needed and
148+adding textual overlay. Without type-aware revision control,
149+these changes must be made serially, requiring Alice and Bob to
150+explicitly coordinate their efforts. With type-aware revision
151+control, these operations may be performed in parallel, and then
152+the two changesets can be merged programmatically.
153+
154+Of course, even some kinds of text files may be better served by
155+diff, patch, and merge algorithms aware of the structure of the
156+files. Consider a file containing a pretty-printed JSON object.
157+Small changes in the JSON object may result in rather significant
158+changes in how the object is pretty-printed (for example, by
159+addding an indentation level, splitting a single line into
160+multiple lines).
161+
162+A text file wrapped at 80 columns also reacts suboptimally with
163+unadorned Hunt-McIlroy diffs. A single word inserted in a
164+paragraph may push the final word or two of the line onto the
165+next line, and the entire rest of the paragraph may be flagged as
166+a change. Two diffs consisting of a single added word to
167+different sentences may be flagged as a conflict. In general,
168+prose should be diffed by sentence, not by line.
169+
170+As far as we are aware, Clay is the first generalized,
171+type-aware revision control system. We'll go into the workings
172+of this system in some detail.
173+
174+### Marks
175+
176+Central to a typed filesystem is the idea of types. In Clay, we
177+call these `mark`s. A `mark` is a file that defines a type,
178+conversion routines to and from the `mark`, and diff, patch, and
179+merge routines.
180+
181+For example, a `%txt` mark may be a list of lines of text, and it
182+may include conversions to `%mime` to allow it to be serialized
183+and sent to a browser or to the Unix filesystem. It will also
184+include Hunt-McIlroy diff, patch, and merge algorithms.
185+
186+A `%json` `mark` would be defined as a JSON object in the code, and
187+it would have a parser to convert from `%txt` and a printer to
188+convert back to `%txt`. The diff, patch, and merge algorithms are
189+fairly straightforward for JSON, though they're very different
190+from the text ones.
191+
192+More formally, a `mark` is a core with three [arms](/docs/glossary/arm/): `+grab`,
193+`+grow`, and `+grad`. In `+grab` is a series of functions to
194+convert from other `mark`s to the given `mark`. In `+grow` is a
195+series of functions to convert from the given `mark` to other
196+`mark`s. In `+grad` is `+diff`, `+pact`, `+join`, and `+mash`, and
197+`+form`.
198+
199+The types are as follows, in an informal pseudocode:
200+
201+```
202+ ++ grab:
203+ ++ mime: <mime> -> <mark-type>
204+ ++ txt: <txt> -> <mark-type>
205+ ...
206+ ++ grow:
207+ ++ mime: <mark-type> -> <mime>
208+ ++ txt: <mark-type> -> <txt>
209+ ...
210+ ++ grad
211+ ++ form: <mark-type>
212+ ++ diff: (<mark-type>, <mark-type>) -> <diff-type>
213+ ++ pact: (<mark-type>, <diff-type>) -> <mark-type>
214+ ++ join: (<diff-type>, <diff-type>) -> <diff-type> or NULL
215+ ++ mash: (<diff-type>, <diff-type>) -> <diff-type>
216+```
217+
218+These types are basically what you would expect. Not every `mark`
219+has each of these functions defined -- all of them are optional
220+in the general case.
221+
222+In general, for a particular `mark`, the `+grab` and `+grow` entries
223+(if they exist) should be inverses of each other.
224+
225+In `+grad`, `+diff` takes two instances of a `mark` and produces a diff of them
226+whose `mark` is given by `+form`. `+pact` takes an instance of a `mark` and
227+patches it with the given diff. `+join` takes two diffs and attempts to merge
228+them into a single diff. If there are conflicts, it produces null. `+mash` takes
229+two diffs and forces a merge, annotating any conflicts.
230+
231+In general, if `+diff` called with A and B produces diff D, then
232+`+pact` called with A and D should produce B. Also, if `+join`
233+of two diffs does not produce null, then `+mash` of the same
234+diffs should produce the same result.
235+
236+Alternately, instead of `+diff`, `+pact`, `+join`, and
237+`+mash`, a `mark` can provide the same functionality by defining
238+`+grad` to be the name of another `mark` to which we wish to
239+delegate the revision control responsibilities. Then, before
240+running any of those functions, Clay will convert to the other
241+`mark`, and convert back afterward. For example, the `%hoon` `mark`
242+is revision-controlled in the same way as `%txt`, so its `+grad`
243+is simply `++ grad %txt`. Of course, `+txt` must be defined in
244+`+grow` and `+grab` as well.
245+
246+Every file in Clay has a `mark`, and that `mark` must have a
247+fully-functioning `+grad`. `Mark`s are used for more than just
248+Clay, and other `mark`s don't need a `+grad`, but if a piece of
249+data is to be saved to Clay, we must know how to revision-control
250+it.
251+
252+Additionally, if a file is to be synced out to Unix, then it must
253+have conversion routines to and from the `%mime` `mark`.
254+
arvo/clay/clay.mdnew file+64
@@ -0,0 +1,64 @@
1++++
2+title = "Overview"
3+weight = 1
4+template = "doc.html"
5+aliases = ["/docs/learn/arvo/clay/"]
6++++
7+
8+
9+Our filesystem.
10+
11+`%clay` is version-controlled, referentially-transparent, and global.
12+While this filesystem is stored in `%clay`, it is mirrored to Unix for
13+convenience. Unix tells `%clay`s whenever a file changes in the Unix
14+copy of the filesystem so that the change may be applied. `%clay` tells
15+unix whenever an app or vane changes the filesystem so that the change
16+can be effected in Unix. Apps and vanes may use `%clay` to write to the
17+filesystem, query it, and subscribe to changes in it. Ford and gall use
18+`%clay` to serve up apps and web pages.
19+
20+`%clay` includes three components. First is the filesystem/version
21+control algorithms, which are mostly defined in `++ze` and `++zu` in
22+zuse. Second is the write, query, and subscription logic. Finally, there
23+is the logic for communicating requests to, and receiving requests from,
24+foreign ships.
25+
26+Clay documentation is extensive, but the reader much tread carefully as portions
27+of it are out of date as of March 2021. We are actively working on updating
28+them. If you'd like to help, please reach out to us in the Docs channel on Urbit
29+Community or submit a PR at
30+[https://github.com/urbit/docs](https://github.com/urbit/docs).
31+
32+### User documentation
33+
34+[Filesystem](@/using/os/filesystem.md)
35+
36+How to interact with the Clay filesystem via Dojo. This includes basics such as
37+mounting to Unix, changing directory, merging, and listing files.
38+
39+### Developer Documentation
40+
41+[Architecture](@/docs/arvo/clay/architecture.md)
42+
43+A conceptual overview of how Clay was designed. (Up to date as of March 2021)
44+
45+[Using Clay](@/docs/arvo/clay/using.md)
46+
47+A quick overview of how the most common tasks involving Clay are performed:
48+reading and subscribing, syncing to Unix, and merging.
49+
50+[Data Types](@/docs/arvo/clay/data-types.md)
51+
52+Explanations of the many data types found throughout Clay.
53+
54+[Local Reads and Writes](@/docs/arvo/clay/local-reads.md)
55+
56+How local reads and writes work.
57+
58+[Local Subscriptions](@/docs/arvo/clay/local-sub.md)
59+
60+How local subscriptions work.
61+
62+[Foreign Requests](@/docs/arvo/clay/foreign.md)
63+
64+How foreign reads and subscriptions work.
arvo/clay/data-types.mdnew file+760
@@ -0,0 +1,760 @@
1++++
2+title = "Data Types"
3+weight = 4
4+template = "doc.html"
5++++
6+
7+This section will be reference documentation for the data types used by our
8+filesystem. Parts of it may be inaccurate as of March 2021. As a general guide,
9+we recommend reading and attempting to understand the data structures used in
10+any Hoon code before you try to read the code itself. Although complete
11+understanding of the data structures is impossible without seeing them used in
12+the code, an 80% understanding greatly clarifies the code. As another general
13+guide, when reading Hoon, it rarely pays off to understand every line of code
14+when it appears. Try to get the gist of it, and then move on. The next time you
15+come back to it, it'll likely make a lot more sense.
16+
17+### Data Models
18+
19+As you're reading through this section, remember you can always come
20+back to this when you run into these types later on. You're not going to
21+remember everything the first time through, but it is worth reading, or
22+at least skimming, this so that you get a rough idea of how our state is
23+organized.
24+
25+The types that are certainly worth reading are `++raft`, `++room`,
26+`++dome:clay`, `++ankh:clay`, `++rung:clay`, `++rang:clay`, `++blob:clay`, `++yaki:clay`, and `++nori:clay`
27+(possibly in that order). All in all, though, this section isn't too
28+long, so many readers may wish to quickly read through all of it. If you
29+get bored, though, just skip to the next section. You can always come
30+back when you need to.
31+
32+### `++raft`, formal state
33+
34+```hoon
35+ ++ raft :: filesystem
36+ $: fat=(map ship room) :: domestic
37+ hoy=(map ship rung) :: foreign
38+ ran=rang :: hashes
39+ == ::
40+```
41+
42+This is the state of our vane. Anything that must be remembered between
43+calls to clay is stored in this state.
44+
45+`fat` is the set of domestic servers. This stores all the information
46+that is specfic to a particular ship on this pier. The keys to this map
47+are the ships on the current pier. all the information that is specific
48+to a particular foreign ship. The keys to this map are all the ships
49+whose filesystems we have attempted to access through clay.
50+
51+`ran` is the store of all commits and deltas, keyed by hash. The is
52+where all the "real" data we know is stored; the rest is "just
53+bookkeeping".
54+
55+#### `++room`, filesystem per domestic ship
56+
57+```hoon
58+ ++ room :: fs per ship
59+ $: hun=duct :: terminal duct
60+ hez=(unit duct) :: sync duch
61+ dos=(map desk dojo) :: native desk
62+ == ::
63+```
64+
65+This is the representation of the filesystem of a ship on our pier.
66+
67+`hun` is the duct we use to send messages to dill to display
68+notifications of filesystem changes. Only `%note` gifts should be
69+produced along this duct. This is set by the `%init` kiss.
70+
71+`hez`, if present, is the duct we use to send sync messages to unix so
72+that they end up in the pier unix directory. Only `%ergo` gifts should
73+be producd along this duct. This is set by `%into` and `%invo` kisses.
74+
75+`dos` is a well-known operating system released in 1981. It is also the
76+set of desks on this ship, mapped to their data.
77+
78+#### `++desk`, filesystem branch
79+
80+```hoon
81+ ++ desk ,@tas :: ship desk case spur
82+```
83+
84+This is the name of a branch of the filesystem. The default desks are
85+"arvo", "main", and "try". More may be created by simply referencing
86+them. Desks have independent histories and states, and they may be
87+merged into each other.
88+
89+### `++dojo`, domestic desk state
90+
91+```hoon
92+ ++ dojo ,[p=cult q=dome] :: domestic desk state
93+```
94+
95+This is the all the data that is specific to a particular desk on a
96+domestic ship. `p` is the set of subscribers to this desk and `q` is the
97+data in the desk.
98+
99+#### `++cult`, subscriptions
100+
101+```hoon
102+ ++ cult (map duct rave) :: subscriptions
103+```
104+
105+This is the set of subscriptions to a particular desk. The keys are the
106+ducts from where the subscriptions requests came. The results will be
107+produced along these ducts. The values are a description of the
108+requested information.
109+
110+#### `++rave:clay`, general subscription request
111+
112+```hoon
113+ ++ rave :: general request
114+ $% [& p=mood] :: single request
115+ [| p=moat] :: change range
116+ == ::
117+```
118+
119+This represents a subscription request for a desk. The request can be
120+for either a single item in the desk or else for a range of changes on
121+the desk.
122+
123+### `++rove`, stored general subscription request
124+
125+```hoon
126+ ++ rove (each mood moot) :: stored request
127+```
128+
129+When we store a request, we store subscriptions with a little extra
130+information so that we can determine whether new versions actually
131+affect the path we're subscribed to.
132+
133+#### `++mood:clay`, single subscription request
134+
135+```hoon
136+ ++ mood ,[p=care q=case r=path] :: request in desk
137+```
138+
139+This represents a request for the state of the desk at a particular
140+commit, specfied by `q`. `p` specifies what kind of information is
141+desired, and `r` specifies the path we are requesting.
142+
143+#### `++moat:clay`, range subscription request
144+
145+```hoon
146+ ++ moat ,[p=case q=case r=path] :: change range
147+```
148+
149+This represents a request for all changes between `p` and `q` on path
150+`r`. You will be notified when a change is made to the node referenced
151+by the path or to any of its children.
152+
153+### `++moot`, stored range subscription request
154+
155+```hoon
156+ ++ moot ,[p=case q=case r=path s=(map path lobe)] ::
157+```
158+
159+This is just a `++moat:clay` plus a map of paths to lobes. This map
160+represents the data at the node referenced by the path at case `p`, if
161+we've gotten to that case (else null). We only send a notification along
162+the subscription if the data at a new revision is different than it was.
163+
164+### `++care:clay`, clay submode
165+
166+```hoon
167+ ++ care ?(%u %v %w %x %y %z) :: clay submode
168+```
169+
170+This specifies what type of information is requested in a subscription
171+or a scry.
172+
173+`%u` requests the `++rang:clay` at the current moment. Because this
174+information is not stored for any moment other than the present, we
175+crash if the `++case:clay` is not a `%da` for now.
176+
177+`%v` requests the `++dome:clay` at the specified commit.
178+
179+`%w` requests the revsion number of the desk.
180+
181+`%x` requests the file at a specified path at the specified commit. If
182+there is no node at that path or if the node has no contents (that is,
183+if `q:ankh` is null), then this produces null.
184+
185+`%y` requests a `++arch` of the specfied commit at the specified path.
186+
187+`%z` requests the `++ankh` of the specified commit at the specfied path.
188+
189+### `++arch`, shallow filesystem node
190+
191+```hoon
192+ ++ arch ,[p=@uvI q=(unit ,@uvI) r=(map ,@ta ,~)] :: fundamental node
193+```
194+
195+This is analogous to `++ankh:clay` except that the we have neither our
196+contents nor the ankhs of our children. The other fields are exactly the
197+same, so `p` is a hash of the associated ankh, `u.q`, if it exists, is a
198+hash of the contents of this node, and the keys of `r` are the names of
199+our children. `r` is a map to null rather than a set so that the
200+ordering of the map will be equivalent to that of `r:ankh`, allowing
201+efficient conversion.
202+
203+#### `++case:clay`, specifying a commit
204+
205+```hoon
206+ ++ case :: ship desk case spur
207+ $% [%da p=@da] :: date
208+ [%tas p=@tas] :: label
209+ [%ud p=@ud] :: number
210+ == ::
211+```
212+
213+A commit can be referred to in three ways: `%da` refers to the commit
214+that was at the head on date `p`, `%tas` refers to the commit labeled
215+`p`, and `%ud` refers to the commit numbered `p`. Note that since these
216+all can be reduced down to a `%ud`, only numbered commits may be
217+referenced with a `++case:clay`.
218+
219+#### `++dome:clay`, desk data
220+
221+```hoon
222+ ++ dome :: project state
223+ $: ang=agon :: pedigree
224+ ank=ankh :: state
225+ let=@ud :: top id
226+ hit=(map ,@ud tako) :: changes by id
227+ lab=(map ,@tas ,@ud) :: labels
228+ == ::
229+```
230+
231+This is the data that is actually stored in a desk.
232+
233+`ang` is unused and should be removed.
234+
235+`ank` is the current state of the desk. Thus, it is the state of the
236+filesystem at revison `let`. The head of a desk is always a numbered
237+commit.
238+
239+`let` is the number of the most recently numbered commit. This is also
240+the total number of numbered commits.
241+
242+`hit` is a map of numerical ids to hashes of commits. These hashes are
243+mapped into their associated commits in `hut:rang:clay`. In general, the keys
244+of this map are exactly the numbers from 1 to `let`, with no gaps. Of
245+course, when there are no numbered commits, `let` is 0, so `hit` is
246+null. Additionally, each of the commits is an ancestor of every commit
247+numbered greater than this one. Thus, each is a descendant of every
248+commit numbered less than this one. Since it is true that the date in
249+each commit (`t:yaki`) is no earlier than that of each of its parents,
250+the numbered commits are totally ordered in the same way by both
251+pedigree and date. Of course, not every commit is numbered. If that
252+sounds too complicated to you, don't worry about it. It basically
253+behaves exactly as you would expect.
254+
255+`lab` is a map of textual labels to numbered commits. Note that labels
256+can only be applied to numbered commits. Labels must be unique across a
257+desk.
258+
259+#### `++ankh`, filesystem node
260+
261+```hoon
262+ ++ ankh :: fs node (new)
263+ $: p=cash :: recursive hash
264+ q=(unit ,[p=cash q=*]) :: file
265+ r=(map ,@ta ankh) :: folders
266+ == ::
267+```
268+
269+This is a single node in the filesystem. This may be file or a directory
270+or both. In earth filesystems, a node is a file xor a directory. On
271+mars, we're inclusive, so a node is a file ior a directory.
272+
273+`p` is a recursive hash that depends on the contents of the this file or
274+directory and on any children.
275+
276+`q` is the contents of this file, if any. `p.q` is a hash of the
277+contents while `q.q` is the data itself.
278+
279+`r` is the set of children of this node. In the case of a pure file,
280+this is empty. The keys are the names of the children and the values
281+are, recursively, the nodes themselves.
282+
283+#### `++cash`, ankh hash
284+
285+```hoon
286+ ++ cash ,@uvH :: ankh hash
287+```
288+
289+This is a 128-bit hash of an ankh. These are mostly stored within ankhs
290+themselves, and they are used to check for changes in possibly-deep
291+hierarchies.
292+
293+#### `++rung`, filesystem per neighbor ship
294+
295+```hoon
296+ ++ rung $: rus=(map desk rede) :: neighbor desks
297+ == ::
298+```
299+
300+This is the filesystem of a neighbor ship. The keys to this map are all
301+the desks we know about on their ship.
302+
303+#### `++rede`, desk state
304+
305+```hoon
306+ ++ rede :: universal project
307+ $: lim=@da :: complete to
308+ qyx=cult :: subscribers
309+ ref=(unit rind) :: outgoing requests
310+ dom=dome :: revision state
311+ == ::
312+```
313+
314+This is our knowledge of the state of a desk, either foreign or
315+domestic.
316+
317+`lim` is the date of the last full update. We only respond to requests
318+for stuff before this time.
319+
320+`qyx` is the list of subscribers to this desk. For domestic desks, this
321+is simply `p:dojo`, all subscribers to the desk, while in foreign desks
322+this is all the subscribers from our ship to the foreign desk.
323+
324+`ref` is the request manager for the desk. For domestic desks, this is
325+null since we handle requests ourselves.
326+
327+`dom` is the actual data in the desk.
328+
329+#### `++rind`, request manager
330+
331+```hoon
332+ ++ rind :: request manager
333+ $: nix=@ud :: request index
334+ bom=(map ,@ud ,[p=duct q=rave]) :: outstanding
335+ fod=(map duct ,@ud) :: current requests
336+ haw=(map mood (unit)) :: simple cache
337+ == ::
338+```
339+
340+This is the request manager for a foreign desk.
341+
342+`nix` is one more than the index of the most recent request. Thus, it is
343+the next available request number.
344+
345+`bom` is the set of outstanding requests. The keys of this map are some
346+subset of the numbers between 0 and one less than `nix`. The members of
347+the map are exactly those requests that have not yet been fully
348+satisfied.
349+
350+`fod` is the same set as `bom`, but from a different perspective. In
351+particular, the values of `fod` are the same as the values of `bom`, and
352+the `p` out of the values of `bom` are the same as the keys of `fod`.
353+Thus, we can map ducts to their associated request number and `++rave:clay`,
354+and we can map numbers to their associated duct and `++rave:clay`.
355+
356+`haw` is a map from simple requests to their values. This acts as a
357+cache for requests that have already been made. Thus, the second request
358+for a particular `++mood:clay` is nearly instantaneous.
359+
360+#### `++rang:clay`, data store
361+
362+```hoon
363+ ++ rang $: hut=(map tako yaki) ::
364+ lat=(map lobe blob) ::
365+ == ::
366+```
367+
368+This is a set of data keyed by hash. Thus, this is where the "real" data
369+is stored, but it is only meaningful if we know the hash of what we're
370+looking for.
371+
372+`hut` is a map from hashes to commits. We often get the hashes from
373+`hit:dome:clay`, which keys them by logical id. Not every commit has an id.
374+
375+`lat` is a map from hashes to the actual data. We often get the hashes
376+from a `++yaki`, a commit, which references this map to get the data.
377+There is no `++blob:clay` in any `++yaki:clay`. They are only accessible through
378+this map.
379+
380+#### `++tako:clay`, commit reference
381+
382+```hoon
383+ ++ tako ,@ :: yaki ref
384+```
385+
386+This is a hash of a `++yaki:clay`, a commit. These are most notably used as
387+the keys in `hut:rang:clay`, where they are associated with the actual
388+`++yaki:clay`, and as the values in `hit:dome:clay`, where sequential ids are
389+associated with these.
390+
391+#### `++yaki:clay`, commit
392+
393+```hoon
394+ ++ yaki ,[p=(list tako) q=(map path lobe) r=tako t=@da] :: commit
395+```
396+
397+This is a single commit.
398+
399+`p` is a list of the hashes of the parents of this commit. In most
400+cases, this will be a single commit, but in a merge there may be more
401+parents. In theory, there may be an arbitrary number of parents, but in
402+practice merges have exactly two parents. This may change in the future.
403+For commit 1, there is no parent.
404+
405+`q` is a map of the paths on a desk to the data at that location. If you
406+understand what a `++lobe:clay` and a `++blob:clay` is, then the type signature
407+here tells the whole story.
408+
409+`r` is the hash associated with this commit.
410+
411+`t` is the date at which this commit was made.
412+
413+#### `++lobe:clay`, data reference
414+
415+```hoon
416+ ++ lobe ,@ :: blob ref
417+```
418+
419+This is a hash of a `++blob:clay`. These are most notably used in `lat:rang:clay`,
420+where they are associated with the actual `++blob:clay`, and as the values in
421+`q:yaki:clay`, where paths are associated with their data in a commit.
422+
423+#### `++blob:clay`, data
424+
425+```hoon
426+ ++ blob $% [%delta p=lobe q=lobe r=udon] :: delta on q
427+ [%direct p=lobe q=* r=umph] ::
428+ [%indirect p=lobe q=* r=udon s=lobe] ::
429+ == ::
430+```
431+
432+This is a node of data. In every case, `p` is the hash of the blob.
433+
434+`%delta` is the case where we define the data by a delta on other data.
435+In practice, the other data is always the previous commit, but nothing
436+depends on this. `q` is the hash of the parent blob, and `r` is the
437+delta.
438+
439+`%direct` is the case where we simply have the data directly. `q` is the
440+data itself, and `r` is any preprocessing instructions. These almost
441+always come from the creation of a file.
442+
443+`%indirect` is both of the preceding cases at once. `q` is the direct
444+data, `r` is the delta, and `s` is the parent blob. It should always be
445+the case that applying `r` to `s` gives the same data as `q` directly
446+(with the prepreprocessor instructions in `p.r`). This exists purely for
447+performance reasons. This is unused, at the moment, but in general these
448+should be created when there are a long line of changes so that we do
449+not have to traverse the delta chain back to the creation of the file.
450+
451+#### `++udon`, abstract delta
452+
453+```hoon
454+ ++ udon :: abstract delta
455+ $: p=umph :: preprocessor
456+ $= q :: patch
457+ $% [%a p=* q=*] :: trivial replace
458+ [%b p=udal] :: atomic indel
459+ [%c p=(urge)] :: list indel
460+ [%d p=upas q=upas] :: tree edit
461+ == ::
462+ == ::
463+```
464+
465+This is an abstract change to a file. This is a superset of what would
466+normally be called diffs. Diffs usually refer to changes in lines of
467+text while we have the ability to do more interesting deltas on
468+arbitrary data structures.
469+
470+`p` is any preprocessor instructions.
471+
472+`%a` refers to the trival delta of a complete replace of old data with
473+new data.
474+
475+`%b` refers to changes in an opaque atom on the block level. This has
476+very limited usefulness, and is not used at the moment.
477+
478+`%c` refers to changes in a list of data. This is often lines of text,
479+which is your classic diff. We, however, will work on any list of data.
480+
481+`%d` refers to changes in a tree of data. This is general enough to
482+describe changes to any hoon [noun](/docs/glossary/noun/), but often more special-purpose delta
483+should be created for different content types. This is not used at the
484+moment, and may in fact be unimplemented.
485+
486+#### `++urge`, list change
487+
488+```hoon
489+ ++ urge |*(a=_,* (list (unce a))) :: list change
490+```
491+
492+This is a parametrized type for list changes. For example, `(urge ,@t)`
493+is a list change for lines of text.
494+
495+#### `++unce`, change part of a list.
496+
497+```hoon
498+ ++ unce |* a=_,* :: change part
499+ $% [%& p=@ud] :: skip[copy]
500+ [%| p=(list a) q=(list a)] :: p -> q[chunk]
501+ == ::
502+```
503+
504+This is a single change in a list of elements of type `a`. For example,
505+`(unce ,@t)` is a single change in a lines of text.
506+
507+`%&` means the next `p` lines are unchanged.
508+
509+`%|` means the lines `p` have changed to `q`.
510+
511+#### `++umph`, preprocessing information
512+
513+```hoon
514+ ++ umph :: change filter
515+ $| $? %a :: no filter
516+ %b :: jamfile
517+ %c :: LF text
518+ == ::
519+ $% [%d p=@ud] :: blocklist
520+ == ::
521+```
522+
523+This space intentionally left undocumented. This stuff will change once
524+we get a well-typed clay.
525+
526+#### `++upas`, tree change
527+
528+```hoon
529+ ++ upas :: tree change (%d)
530+ $& [p=upas q=upas] :: cell
531+ $% [%0 p=axis] :: copy old
532+ [%1 p=*] :: insert new
533+ [%2 p=axis q=udon] :: mutate!
534+ == ::
535+```
536+
537+This space intentionally left undocumented. This stuff is not known to
538+work, and will likely change when we get a well-typed clay. Also, this
539+is not a complicated type; it is not difficult to work out the meaning.
540+
541+#### `++nori:clay`, repository action
542+
543+```hoon
544+ ++ nori :: repository action
545+ $% [& q=soba] :: delta
546+ [| p=@tas] :: label
547+ == ::
548+```
549+
550+This describes a change that we are asking clay to make to the desk.
551+There are two kinds of changes that may be made: we can modify files or
552+we can apply a label to a commit.
553+
554+In the `|` case, we will simply label the current commit with the given
555+label. In the `&` case, we will apply the given changes.
556+
557+#### `++soba:clay`, delta
558+
559+```hoon
560+ ++ soba ,[p=cart q=(list ,[p=path q=miso])] :: delta
561+```
562+
563+This describes a set of changes to make to a desk. The `cart` is simply
564+a pair of the old hash and the new hash of the desk. The list is a list
565+of changes keyed by the file they're changing. Thus, the paths are paths
566+to files to be changed while `miso` is a description of the change
567+itself.
568+
569+#### `++miso:clay`, ankh delta
570+
571+```hoon
572+ ++ miso :: ankh delta
573+ $% [%del p=*] :: delete
574+ [%ins p=*] :: insert
575+ [%mut p=udon] :: mutate
576+ == ::
577+```
578+
579+There are three kinds of changes that may be made to a node in a desk.
580+We can insert a file, in which case `p` is the contents of the new file.
581+We can delete a file, in which case `p` is the contents of the old file.
582+Finally, we can mutate that file, in which case the `udon` describes the
583+changes we are applying to the file.
584+
585+#### `++mizu:clay`, merged state
586+
587+```hoon
588+ ++ mizu ,[p=@u q=(map ,@ud tako) r=rang] :: new state
589+```
590+
591+This is the input to the `%merg` kiss, which allows us to perform a
592+merge. The `p` is the number of the new head commit. The `q` is a map
593+from numbers to commit hashes. This is all the new numbered commits that
594+are to be inserted. The keys to this should always be the numbers from
595+`let.dom` plus one to `p`, inclusive. The `r` is the maps of all the new
596+commits and data. Since these are merged into the current state, no old
597+commits or data need be here.
598+
599+#### `++riff:clay`, request/desist
600+
601+```hoon
602+ ++ riff ,[p=desk q=(unit rave)] :: request/desist
603+```
604+
605+This represents a request for data about a particular desk. If `q`
606+contains a `rave`, then this opens a subscription to the desk for that
607+data. If `q` is null, then this tells clay to cancel the subscription
608+along this duct.
609+
610+#### `++riot:clay`, response
611+
612+```hoon
613+ ++ riot (unit rant) :: response/complete
614+```
615+
616+A riot is a response to a subscription. If null, the subscription has
617+been completed, and no more responses will be sent. Otherwise, the
618+`rant` is the produced data.
619+
620+#### `++rant:clay`, response data
621+
622+```hoon
623+ ++ rant :: namespace binding
624+ $: p=[p=care q=case r=@tas] :: clade release book
625+ q=path :: spur
626+ r=* :: data
627+ == ::
628+```
629+
630+This is the data at a particular node in the filesystem. `p.p` specifies
631+the type of data that was requested (and is produced). `q.p` gives the
632+specific version reported (since a range of versions may be requested in
633+a subscription). `r.p` is the desk. `q` is the path to the filesystem
634+node. `r` is the data itself (in the format specified by `p.p`).
635+
636+### `++nako`, subscription response data
637+
638+```hoon
639+ ++ nako $: gar=(map ,@ud tako) :: new ids
640+ let=@ud :: next id
641+ lar=(set yaki) :: new commits
642+ bar=(set blob) :: new content
643+ == ::
644+```
645+
646+This is the data that is produced by a request for a range of revisions
647+of a desk. This allows us to easily keep track of a remote repository --
648+all the new information we need is contained in the `nako`.
649+
650+`gar` is a map of the revisions in the range to the hash of the commit
651+at that revision. These hashes can be used with `hut:rang:clay` to find the
652+commit itself.
653+
654+`let` is either the last revision number in the range or the most recent
655+revision number, whichever is smaller.
656+
657+`lar` is the set of new commits, and `bar` is the set of new content.
658+
659+## Public Interface
660+
661+As with all vanes, there are exactly two ways to interact with clay.
662+`%clay` exports a namespace accessible through `.^`, which is described
663+above under `++care:clay`. The primary way of interacting with clay, though,
664+is by sending kisses and receiving gifts.
665+
666+```hoon
667+ ++ gift :: out result <-$
668+ $% [%ergo p=@p q=@tas r=@ud] :: version update
669+ [%note p=@tD q=tank] :: debug message
670+ [%writ p=riot] :: response
671+ == ::
672+ ++ kiss :: in request ->$
673+ $% [%info p=@p q=@tas r=nori] :: internal edit
674+ [%ingo p=@p q=@tas r=nori] :: internal noun edit
675+ [%init p=@p] :: report install
676+ [%into p=@p q=@tas r=nori] :: external edit
677+ [%invo p=@p q=@tas r=nori] :: external noun edit
678+ [%merg p=@p q=@tas r=mizu] :: internal change
679+ [%wart p=sock q=@tas r=path s=*] :: network request
680+ [%warp p=sock q=riff] :: file request
681+ == ::
682+```
683+
684+There are only a small number of possible kisses, so it behooves us to
685+describe each in detail.
686+
687+```hoon
688+ $% [%info p=@p q=@tas r=nori] :: internal edit
689+
690+ [%into p=@p q=@tas r=nori] :: external edit
691+```
692+
693+These two kisses are nearly identical. At a high level, they apply
694+changes to the filesystem. Whenever we add, remove, or edit a file, one
695+of these cards is sent. The `p` is the ship whose filesystem we're
696+trying to change, the `q` is the desk we're changing, and the `r` is the
697+request change. For the format of the requested change, see the
698+documentation for `++nori:clay` above.
699+
700+When a file is changed in the unix filesystem, vere will send a `%into`
701+kiss. This tells clay that the duct over which the kiss was sent is the
702+duct that unix is listening on for changes. From within Arvo, though, we
703+should never send a `%into` kiss. The `%info` kiss is exactly identical
704+except it does not reset the duct.
705+
706+```hoon
707+ [%ingo p=@p q=@tas r=nori] :: internal noun edit
708+
709+ [%invo p=@p q=@tas r=nori] :: external noun edit
710+```
711+
712+These kisses are currently identical to `%info` and `%into`, though this
713+will not always be the case. The intent is for these kisses to allow
714+typed changes to clay so that we may store typed data. This is currently
715+unimplemented.
716+
717+```hoon
718+ [%init p=@p] :: report install
719+```
720+
721+Init is called when a ship is started on our pier. This simply creates a
722+default `room` to go into our `raft`. Essentially, this initializes the
723+filesystem for a ship.
724+
725+```hoon
726+ [%merg p=@p q=@tas r=mizu] :: internal change
727+```
728+
729+This is called to perform a merge. This is most visibly called by
730+:update to update the filesystem of the current ship to that of its
731+sein. The `p` and `q` are as in `%info`, and the `r` is the description
732+of the merge. See `++mizu:clay` above.
733+
734+XX
735+`XX [%wake ~] :: timer activate XX`
736+XX\
737+XX This card is sent by unix at the time specified by `++doze`. This
738+time is XX usually the closest time specified in a subscription request.
739+When `%wake` is XX called, we update our subscribers if there have been
740+any changes.
741+
742+```hoon
743+ [%wart p=sock q=@tas r=path s=*] :: network request
744+```
745+
746+This is a request that has come across the network for a particular
747+file. When another ship asks for a file from us, that request comes to
748+us in the form of a `%wart` kiss. This is handled by trivially turning
749+it into a `%warp`.
750+
751+```hoon
752+ [%warp p=sock q=riff] :: file request
753+```
754+
755+This is a request for information about a particular desk. This is, in
756+its most general form, a subscription, though in many cases it is the
757+trivial case of a subscription -- a read. See `++riff:clay` for the format of
758+the request.
759+
760+
arvo/clay/foreign.mdnew file+412
@@ -0,0 +1,412 @@
1++++
2+title = "Foreign Requests"
3+weight = 7
4+template = "doc.html"
5++++
6+
7+Parts of this document may be out of date as of March 2021.
8+
9+Foreign reads and subscriptions are handled in much the same way as
10+local ones. The interface is the same -- a vane or app sends a `%warp`
11+kiss with the request. The difference is simply that the `sock` refers
12+to the foreign ship.
13+
14+Thus, we start in the same place -- in `++call`, handling `%warp`.
15+However, since the two side of the `sock` are different, we follow a
16+different path.
17+
18+```hoon
19+ =+ wex=(do now p.q.hic p.q.q.hic ruf)
20+ =+ ^= woo
21+ ?~ q.q.q.hic
22+ abet:(ease:wex hen)
23+ abet:(eave:wex hen u.q.q.q.hic)
24+ [-.woo (posh q.p.q.hic p.q.q.hic +.woo ruf)]
25+```
26+
27+If we compare this to how the local case was handled, we see that it's
28+not all that different. We use `++do` rather than `++un` and `++de` to
29+set up the core for the foreign ship. This gives us a `++de` core, so we
30+either cancel or begin the request by calling `++ease` or `++eave`,
31+exactly as in the local case. In either case, we call `++abet:de` to
32+resolve our various types of output into actual moves, as described in
33+the local case. Finally, we call `++posh` to update our raft, putting
34+the modified rung into the raft.
35+
36+We'll first trace through `++do`.
37+
38+```hoon
39+ ++ do
40+ |= [now=@da [who=ship him=ship] syd=@tas ruf=raft]
41+ =+ ^= rug ^- rung
42+ =+ rug=(~(get by hoy.ruf) him)
43+ ?^(rug u.rug *rung)
44+ =+ ^= red ^- rede
45+ =+ yit=(~(get by rus.rug) syd)
46+ ?^(yit u.yit `rede`[~2000.1.1 ~ [~ *rind] *dome])
47+ ((de now ~ ~) [who him] syd red ran.ruf)
48+```
49+
50+If we already have a rung for this foreign ship, then we use that.
51+Otherwise, we create a new blank one. If we already have a rede in this
52+rung, then we use that, otherwise we create a blank one. An important
53+point to note here is that we let `ref` in the rede be `[~ *rind]`.
54+Recall, for domestic desks `ref` is null. We use this to distinguish
55+between foreign and domestic desks in `++de`.
56+
57+With this information, we create a `++de` core as usual.
58+
59+Although we've already covered `++ease` and `++eave`, we'll go through
60+them quickly again, highlighting the case of foreign request.
61+
62+```hoon
63+ ++ ease :: release request
64+ |= hen=duct
65+ ^+ +>
66+ ?~ ref +>
67+ =+ rov=(~(got by qyx) hen)
68+ =. qyx (~(del by qyx) hen)
69+ (mabe rov (cury best hen))
70+ =. qyx (~(del by qyx) hen)
71+ |- ^+ +>+.$
72+ =+ nux=(~(get by fod.u.ref) hen)
73+ ?~ nux +>+.$
74+ %= +>+.$
75+ say [[hen [(scot %ud u.nux) ~] for [u.nux syd ~]] say]
76+ fod.u.ref (~(del by fod.u.ref) hen)
77+ bom.u.ref (~(del by bom.u.ref) u.nux)
78+ ==
79+```
80+
81+Here, we still remove the duct from our cult (we maintain a cult even
82+for foreign desks), but we also need to tell the foreign desk to cancel
83+our subscription. We do this by sending a request (by appending to
84+`say`, which gets resolved in `++abet:de` to a `%want` kiss to ames) to
85+the foreign ship to cancel the subscription. Since we don't anymore
86+expect a response on this duct, we remove it from `fod` and `bom`, which
87+are the maps between ducts, raves, and request sequence numbers.
88+Basically, we remove every trace of the subscription from our request
89+manager.
90+
91+In the case of `++eave`, where we're creating a new request, everything
92+is exactly identical to the case of the local request except `++duce`.
93+We said that `++duce` simply puts the request into our cult. This is
94+true for a domestic request, but distinctly untrue for foreign requests.
95+
96+```hoon
97+ ++ duce :: produce request
98+ |= [hen=duct rov=rove]
99+ ^+ +>
100+ =. qyx (~(put by qyx) hen rov)
101+ ?~ ref +>.$
102+ |- ^+ +>+.$ :: XX why?
103+ =+ rav=(reve rov)
104+ =+ ^= vaw ^- rave
105+ ?. ?=([%& %v *] rav) rav
106+ [%| [%ud let.dom] `case`q.p.rav r.p.rav]
107+ =+ inx=nix.u.ref
108+ %= +>+.$
109+ say [[hen [(scot %ud inx) ~] for [inx syd ~ vaw]] say]
110+ nix.u.ref +(nix.u.ref)
111+ bom.u.ref (~(put by bom.u.ref) inx [hen vaw])
112+ fod.u.ref (~(put by fod.u.ref) hen inx)
113+ ==
114+```
115+
116+If we have a request manager (i.e. this is a foreign desk), then we do
117+the approximate inverse of `++ease`. We create a rave out of the given
118+request and send it off to the foreign desk by putting it in `say`. Note
119+that the rave is created to request the information starting at the next
120+revision number. Since this is a new request, we put it into `fod` and
121+`bom` to associate the request with its duct and its sequence number.
122+Since we're using another sequence number, we must increment `nix`,
123+which represents the next available sequence number.
124+
125+And that's really it for this side of the request. Requesting foreign
126+information isn't that hard. Let's see what it looks like on the other
127+side. When we get a request from another ship for information on our
128+ship, that comes to us in the form of a `%wart` from ames.
129+
130+We handle a `%wart` in `++call`, right next to where we handle the
131+`%warp` case.
132+
133+```hoon
134+ %wart
135+ ?> ?=(%re q.q.hic)
136+ =+ ryf=((hard riff) s.q.hic)
137+ :_ ..^$
138+ :~ :- hen
139+ :^ %pass [(scot %p p.p.q.hic) (scot %p q.p.q.hic) r.q.hic]
140+ %c
141+ [%warp [p.p.q.hic p.p.q.hic] ryf]
142+ ==
143+```
144+
145+Every request we receive should be of type `riff`, so we coerce it into
146+that type. We just convert this into a new `%warp` kiss that we pass to
147+ourself. This gets handled like normal, as a local request. When the
148+request produces a value, it does so like normal as a `%writ`, which is
149+returned to `++take` along the path we just sent it on.
150+
151+```hoon
152+ %writ
153+ ?> ?=([@ @ *] tea)
154+ =+ our=(need (slaw %p i.tea))
155+ =+ him=(need (slaw %p i.t.tea))
156+ :_ ..^$
157+ :~ :- hen
158+ [%pass ~ %a [%want [our him] [%r %re %c t.t.tea] p.+.q.hin]]
159+ ==
160+```
161+
162+Since we encoded the ship we need to respond to in the path, we can just
163+pass our `%want` back to ames, so that we tell the requesting ship about
164+the new data.
165+
166+This comes back to the original ship as a `%waft` from ames, which comes
167+into `++take`, right next to where we handled `%writ`.
168+
169+```hoon
170+ %waft
171+ ?> ?=([@ @ ~] tea)
172+ =+ syd=(need (slaw %tas i.tea))
173+ =+ inx=(need (slaw %ud i.t.tea))
174+ =+ ^= zat
175+ =< wake
176+ (knit:(do now p.+.q.hin syd ruf) [inx ((hard riot) q.+.q.hin)])
177+ =^ mos ruf
178+ =+ zot=abet.zat
179+ [-.zot (posh q.p.+.q.hin syd +.zot ruf)]
180+ [mos ..^$(ran.ruf ran.zat)] :: merge in new obj
181+```
182+
183+This gets the desk and sequence number from the path the request was
184+sent over. This determines exactly which request is being responded to.
185+We call `++knit:de` to apply the changes to our local desk, and we call
186+`++wake` to update our subscribers. Then we call `++abet:de` and
187+`++posh` as normal (like in `++eave`).
188+
189+We'll examine `++knit` and `++wake`, in that order.
190+
191+```hoon
192+ ++ knit :: external change
193+ |= [inx=@ud rot=riot]
194+ ^+ +>
195+ ?> ?=(^ ref)
196+ |- ^+ +>+.$
197+ =+ ruv=(~(get by bom.u.ref) inx)
198+ ?~ ruv +>+.$
199+ => ?. |(?=(~ rot) ?=(& -.q.u.ruv)) .
200+ %_ .
201+ bom.u.ref (~(del by bom.u.ref) inx)
202+ fod.u.ref (~(del by fod.u.ref) p.u.ruv)
203+ ==
204+ ?~ rot
205+ =+ rav=`rave`q.u.ruv
206+ %= +>+.$
207+ lim
208+ ?.(&(?=(| -.rav) ?=(%da -.q.p.rav)) lim `@da`p.q.p.rav)
209+ ::
210+ haw.u.ref
211+ ?. ?=(& -.rav) haw.u.ref
212+ (~(put by haw.u.ref) p.rav ~)
213+ ==
214+ ?< ?=(%v p.p.u.rot)
215+ =. haw.u.ref
216+ (~(put by haw.u.ref) [p.p.u.rot q.p.u.rot q.u.rot] ~ r.u.rot)
217+ ?. ?=(%w p.p.u.rot) +>+.$
218+ |- ^+ +>+.^$
219+ =+ nez=[%w [%ud let.dom] ~]
220+ =+ nex=(~(get by haw.u.ref) nez)
221+ ?~ nex +>+.^$
222+ ?~ u.nex +>+.^$ :: should never happen
223+ =. +>+.^$ =+ roo=(edis ((hard nako) u.u.nex))
224+ ?>(?=(^ ref.roo) roo)
225+ %= $
226+ haw.u.ref (~(del by haw.u.ref) nez)
227+ ==
228+```
229+
230+This is kind of a long [gate](/docs/glossary/gate/), but don't worry, it's not bad at all.
231+
232+First, we assert that we're not a domestic desk. That wouldn't make any
233+sense at all.
234+
235+Since we have the sequence number of the request, we can get the duct
236+and rave from `bom` in our request manager. If we didn't actually
237+request this data (or the request was canceled before we got it), then
238+we do nothing.
239+
240+Else, we remove the request from `bom` and `fod` unless this was a
241+subscription request and we didn't receive a null riot (which would
242+indicate the last message on the subscription).
243+
244+Now, if we received a null riot, then if this was a subscription request
245+by date, then we update `lim` in our request manager (representing the
246+latest time at which we have complete information for this desk) to the
247+date that was requested. If this was a single read request, then we put
248+the result in our simple cache `haw` to make future requests faster.
249+Then we're done.
250+
251+If we received actual data, then we put it into our cache `haw`. Unless
252+it's a `%w` request, we're done.
253+
254+If it is a `%w` request, then we try to get the `%w` at our current head
255+from the cache. In general, that should be the thing we just put in a
256+moment ago, but that is not guaranteed. The most common case where this
257+is different is when we receive desk updates out of order. At any rate,
258+since we now have new information, we need to apply it to our local copy
259+of the desk. We do so in `++edis`, and then we remove the stuff we just
260+applied from the cache, since it's not really a true "single read", like
261+what should really be in the cache.
262+
263+```hoon
264+ ++ edis :: apply subscription
265+ |= nak=nako
266+ ^+ +>
267+ %= +>
268+ hit.dom (~(uni by hit.dom) gar.nak)
269+ let.dom let.nak
270+ lat.ran %+ roll (~(tap in bar.nak) ~)
271+ =< .(yeb lat.ran)
272+ |= [sar=blob yeb=(map lobe blob)]
273+ =+ zax=(blob-to-lobe sar)
274+ %+ ~(put by yeb) zax sar
275+ hut.ran %+ roll (~(tap in lar.nak) ~)
276+ =< .(yeb hut.ran)
277+ |= [sar=yaki yeb=(map tako yaki)]
278+ %+ ~(put by yeb) r.sar sar
279+ ==
280+```
281+
282+This shows, of course, exactly why nako is defined the way it is. To
283+become completely up to date with the foreign desk, we need to merge
284+`hit` with the foreign one so that we have all the revision numbers. We
285+update `let` so that we know which revision is the head.
286+
287+We merge the new blobs in `lat`, keying them by their hash, which we get
288+from a call to `++blob-to-lobe`. Recall that the hash is stored in the
289+actual blob itself. We do the same thing to the new yakis, putting them
290+in `hut`, keyed by their hash.
291+
292+Now, our local dome should be exactly the same as the foreign one.
293+
294+This concludes our discussion of `++knit`. Now the changes have been
295+applied to our local copy of the desk, and we just need to update our
296+subscribers. We do so in `++wake:de`.
297+
298+```hoon
299+ ++ wake :: update subscribers
300+ ^+ .
301+ =+ xiq=(~(tap by qyx) ~)
302+ =| xaq=(list ,[p=duct q=rove])
303+ |- ^+ ..wake
304+ ?~ xiq
305+ ..wake(qyx (~(gas by *cult) xaq))
306+ ?- -.q.i.xiq
307+ &
308+ =+ cas=?~(ref ~ (~(get by haw.u.ref) `mood`p.q.i.xiq))
309+ ?^ cas
310+ %= $
311+ xiq t.xiq
312+ ..wake ?~ u.cas (blub p.i.xiq)
313+ (blab p.i.xiq p.q.i.xiq u.u.cas)
314+ ==
315+ =+ nao=(~(case-to-aeon ze lim dom ran) q.p.q.i.xiq)
316+ ?~ nao $(xiq t.xiq, xaq [i.xiq xaq])
317+ $(xiq t.xiq, ..wake (balk p.i.xiq u.nao p.q.i.xiq))
318+ ::
319+ |
320+ =+ mot=`moot`p.q.i.xiq
321+ =+ nab=(~(case-to-aeon ze lim dom ran) p.mot)
322+ ?~ nab
323+ $(xiq t.xiq, xaq [i.xiq xaq])
324+ =+ huy=(~(case-to-aeon ze lim dom ran) q.mot)
325+ ?~ huy
326+ =+ ptr=[%ud +(let.dom)]
327+ %= $
328+ xiq t.xiq
329+ xaq [[p.i.xiq [%| ptr q.mot r.mot s.mot]] xaq]
330+ ..wake =+ ^= ear
331+ (~(lobes-at-path ze lim dom ran) let.dom r.p.q.i.xiq)
332+ ?: =(s.p.q.i.xiq ear) ..wake
333+ =+ fud=(~(make-nako ze lim dom ran) u.nab let.dom)
334+ (bleb p.i.xiq let.dom fud)
335+ ==
336+ %= $
337+ xiq t.xiq
338+ ..wake =- (blub:- p.i.xiq)
339+ =+ ^= ear
340+ (~(lobes-at-path ze lim dom ran) u.huy r.p.q.i.xiq)
341+ ?: =(s.p.q.i.xiq ear) (blub p.i.xiq)
342+ =+ fud=(~(make-nako ze lim dom ran) u.nab u.huy)
343+ (bleb p.i.xiq +(u.nab) fud)
344+ ==
345+ ==
346+ --
347+```
348+
349+This is even longer than `++knit`, but it's pretty similar to `++eave`.
350+We loop through each of our subscribers `xiq`, processing each in turn.
351+When we're done, we just put the remaining subscribers back in our
352+subscriber list.
353+
354+If the subscriber is a single read, then, if this is a foreign desk
355+(note that `++wake` is called from other arms, and not only on foreign
356+desks). Obviously, if we find an identical request there, then we can
357+produce the result immediately. Referential transparency for the win. We
358+produce the result with a call to `++blab`. If this is a foreign desk
359+but the result is not in the cache, then we produce `++blub` (canceled
360+subscription with no data) for reasons entirely opaque to me. Seriously,
361+it seems like we should wait until we get an actual response to the
362+request. If someone figures out why this is, let me know. At any rate,
363+it seems to work.
364+
365+If this is a domestic desk, then we check to see if the case exists yet.
366+If it doesn't, then we simply move on to the next subscriber, consing
367+this one onto `xaq` so that we can check again the next time around. If
368+it does exist, then we call `++balk` to fulfill the request and produce
369+it.
370+
371+`++balk` is very simple, so we'll describe it here before we get to the
372+subscription case.
373+
374+```hoon
375+ ++ balk :: read and send
376+ |= [hen=duct oan=@ud mun=mood]
377+ ^+ +>
378+ =+ vid=(~(read-at-aeon ze lim dom ran) oan mun)
379+ ?~ vid (blub hen) (blab hen mun u.vid)
380+```
381+
382+We call `++read-at-aeon` on the given request and aeon. If you recall,
383+this processes a `mood` at a particular aeon and produces the result, if
384+there is one. If there is data at the requested location, then we
385+produce it with `++blab`. Else, we call `++blub` to notify the
386+subscriber that no data can ever come over this subscriptioin since it
387+is now impossible for there to ever be data for the given request.
388+Because referential transparency.
389+
390+At any rate, back to `++wake`. If the given rave is a subscription
391+request, then we proceed similarly to how we do in `++eave`. We first
392+try to get the aeon referred to by the starting case. If it doesn't
393+exist yet, then we can't do anything interesting with this subscription,
394+so we move on to the next one.
395+
396+Otherwise, we try to get the aeon referred to by the ending case. If it
397+doesn't exist yet, then we produce all the information we can. We call
398+`++lobes-at-path` at the given aeon and path to see if the requested
399+path has actually changed. If it hasn't, then we don't produce anything;
400+else, we produce the correct nako by calling `++bleb` on the result of
401+`++make-nako`, as in `++eave`. At any rate, we move on to the next
402+subscription, putting back into our cult the current subscription with a
403+new start case of the next aeon after the present.
404+
405+If the aeon referred to by the ending case does exist, then we drop this
406+subscriber from our cult and satisfy its request immediately. This is
407+the same as before -- we check to see if the data at the path has
408+actually changed, producing it if it has; else, we call `++blub` since
409+no more data can be produced over this subscription.
410+
411+This concludes our discussion of foreign requests.
412+
arvo/clay/local-reads.mdnew file+783
@@ -0,0 +1,783 @@
1++++
2+title = "Local Reads and Writes"
3+weight = 5
4+template = "doc.html"
5++++
6+
7+Parts of this document may be out of date as of March 2021.
8+
9+There are two real types of interaction with a filesystem: you can read,
10+and you can write. We'll describe each process, detailing both the flow
11+of control followed by the kernel and the algorithms involved. The
12+simpler case is that of the read, so we'll begin with that.
13+
14+When a vane or an application wishes to read a file from the filesystem,
15+it sends a `%warp` kiss, as described above. Of course, you may request
16+a file on another ship and, being a global filesystem, clay will happily
17+produce it for you. That code pathway will be described in another
18+section; here, we will restrict ourselves to examining the case of a
19+read from a ship on our own pier.
20+
21+The kiss can request either a single version of a file node or a range
22+of versions of a desk. Here, we'll deal only with a request for a single
23+version.
24+
25+As in all vanes, a kiss enters clay via a call to `++call`. Scanning
26+through the arm, we quickly see where `%warp` is handled.
27+
28+```hoon
29+ ?: =(p.p.q.hic q.p.q.hic)
30+ =+ une=(un p.p.q.hic now ruf)
31+ =+ wex=(di:une p.q.q.hic)
32+ =+ ^= wao
33+ ?~ q.q.q.hic
34+ (ease:wex hen)
35+ (eave:wex hen u.q.q.q.hic)
36+ =+ ^= woo
37+ abet:wao
38+ [-.woo abet:(pish:une p.q.q.hic +.woo ran.wao)]
39+```
40+
41+We're following the familar patern of producing a list of moves and an
42+updated state. In this case, the state is `++raft`.
43+
44+We first check to see if the sending and receiving ships are the same.
45+If they're not, then this is a request for data on another ship. We
46+describe that process later. Here, we discuss only the case of a local
47+read.
48+
49+At a high level, the call to `++un` sets up the core for the domestic
50+ship that contains the files we're looking for. The call to `++di` sets
51+up the core for the particular desk we're referring to.
52+
53+After this, we perform the actual request. If there is no rave in the
54+riff, then that means we are cancelling a request, so we call
55+`++ease:de`. Otherwise, we start a subscription with `++eave:de`. We
56+call `++abet:de` to resolve our various types of output into actual
57+moves. We produce the moves we found above and the `++un` core resolved
58+with `++pish:un` (putting the modified desk in the room) and `++abet:un`
59+(putting the modified room in the raft).
60+
61+Much of this is fairly straightforward, so we'll only describe `++ease`,
62+`++eave`, and `++abet:de`. Feel free to look up the code to the other
63+steps -- it should be easy to follow.
64+
65+Although it's called last, it's usually worth examining `++abet` first,
66+since it defines in what ways we can cause side effects. Let's do that,
67+and also a few of the lines at the beginning of `++de`.
68+
69+```hoon
70+ =| yel=(list ,[p=duct q=gift])
71+ =| byn=(list ,[p=duct q=riot])
72+ =| vag=(list ,[p=duct q=gift])
73+ =| say=(list ,[p=duct q=path r=ship s=[p=@ud q=riff]])
74+ =| tag=(list ,[p=duct q=path c=note])
75+ |%
76+ ++ abet
77+ ^- [(list move) rede]
78+ :_ red
79+ ;: weld
80+ %+ turn (flop yel)
81+ |=([a=duct b=gift] [hun %give b])
82+ ::
83+ %+ turn (flop byn)
84+ |=([a=duct b=riot] [a %give [%writ b]])
85+ ::
86+ %+ turn (flop vag)
87+ |=([a=duct b=gift] [a %give b])
88+ ::
89+ %+ turn (flop say)
90+ |= [a=duct b=path c=ship d=[p=@ud q=riff]]
91+ :- a
92+ [%pass b %a %want [who c] [%q %re p.q.d (scot %ud p.d) ~] q.d]
93+ ::
94+ %+ turn (flop tag)
95+ |=([a=duct b=path c=note] [a %pass b c])
96+ ==
97+```
98+
99+This is very simple code. We see there are exactly five different kinds
100+of side effects we can generate.
101+
102+In `yel` we put gifts that we wish to be sent along the `hun:room` duct
103+to dill. See the documentation for `++room` above. This is how we
104+display messages to the terminal.
105+
106+In `byn` we put riots that we wish returned to subscribers. Recall that
107+a riot is a response to a subscription. These are returned to our
108+subscribers in the form of a `%writ` gift.
109+
110+In `vag` we put gifts along with the ducts on which to send them. This
111+allows us to produce arbitrary gifts, but in practice this is only used
112+to produce `%ergo` gifts.
113+
114+In `say` we put messages we wish to pass to ames. These messages are
115+used to request information from clay on other piers. We must provide
116+not only the duct and the request (the riff), but also the return path,
117+the other ship to talk to, and the sequence number of the request.
118+
119+In `tag` we put arbitrary notes we wish to pass to other vanes. For now,
120+the only notes we pass here are `%wait` and `%rest` to the timer vane.
121+
122+Now that we know what kinds of side effects we may have, we can jump
123+into the handling of requests.
124+
125+```hoon
126+ ++ ease :: release request
127+ |= hen=duct
128+ ^+ +>
129+ ?~ ref +>
130+ =+ rov=(~(got by qyx) hen)
131+ =. qyx (~(del by qyx) hen)
132+ (mabe rov (cury best hen))
133+ =. qyx (~(del by qyx) hen)
134+ |- ^+ +>+.$
135+ =+ nux=(~(get by fod.u.ref) hen)
136+ ?~ nux +>+.$
137+ %= +>+.$
138+ say [[hen [(scot %ud u.nux) ~] for [u.nux syd ~]] say]
139+ fod.u.ref (~(del by fod.u.ref) hen)
140+ bom.u.ref (~(del by bom.u.ref) u.nux)
141+ ==
142+```
143+
144+This is called when we're cancelling a subscription. For domestic desks,
145+`ref` is null, so we're going to cancel any timer we might have created.
146+We first delete the duct from our map of requests, and then we call
147+`++mabe` with `++best` to send a `%rest` kiss to the timer vane if we
148+have started a timer. We'll describe `++best` and `++mabe` momentarily.
149+
150+Although we said we're not going to talk about foreign requests yet,
151+it's easy to see that for foreign desks, we cancel any outstanding
152+requests for this duct and send a message over ames to the other ship
153+telling them to cancel the subscription.
154+
155+```hoon
156+ ++ best
157+ |= [hen=duct tym=@da]
158+ %_(+> tag :_(tag [hen /tyme %t %rest tym]))
159+```
160+
161+This simply pushes a `%rest` note onto `tag`, from where it will be
162+passed back to arvo to be handled. This cancels the timer at the given
163+duct (with the given time).
164+
165+```hoon
166+ ++ mabe :: maybe fire function
167+ |* [rov=rove fun=$+(@da _+>.^$)]
168+ ^+ +>.$
169+ %- fall :_ +>.$
170+ %- bind :_ fun
171+ ^- (unit ,@da)
172+ ?- -.rov
173+ %&
174+ ?. ?=(%da -.q.p.rov) ~
175+ `p.q.p.rov
176+ %|
177+ =* mot p.rov
178+ %+ hunt
179+ ?. ?=(%da -.p.mot) ~
180+ ?.((lth now p.p.mot) ~ [~ p.p.mot])
181+ ?. ?=(%da -.q.mot) ~
182+ ?.((lth now p.q.mot) [~ now] [~ p.q.mot])
183+ ==
184+```
185+
186+This decides whether the given request can only be satsified in the
187+future. In that case, we call the given function with the time in the
188+future when we expect to have an update to give to this request. This is
189+called with `++best` to cancel timers and with `++bait` to start them.
190+
191+For single requests, we have a time if the request is for a particular
192+time (which is assumed to be in the future). For ranges of requests, we
193+check both the start and end cases to see if they are time cases. If so,
194+we choose the earlier time.
195+
196+If any of those give us a time, then we call the given funciton with the
197+smallest time.
198+
199+The more interesting case is, of course, when we're not cancelling a
200+subscription but starting one.
201+
202+```hoon
203+ ++ eave :: subscribe
204+ |= [hen=duct rav=rave]
205+ ^+ +>
206+ ?- -.rav
207+ &
208+ ?: &(=(p.p.rav %u) !=(p.q.p.rav now))
209+ ~& [%clay-fail p.q.p.rav %now now]
210+ !!
211+ =+ ver=(aver p.rav)
212+ ?~ ver
213+ (duce hen rav)
214+ ?~ u.ver
215+ (blub hen)
216+ (blab hen p.rav u.u.ver)
217+```
218+
219+There are two types of subscriptions -- either we're requesting a single
220+file or we're requesting a range of versions of a desk. We'll dicuss the
221+simpler case first.
222+
223+First, we check that we're not requesting the `rang` from any time other
224+than the present. Since we don't store that information for any other
225+time, we can't produce it in a referentially transparent manner for any
226+time other than the present.
227+
228+Then, we try to read the requested `mood:clay` `p.rav`. If we can't access
229+the request data right now, we call `++duce` to put the request in our
230+queue to be satisfied when the information becomes available.
231+
232+This case occurs when we make a request for a case whose (1) date is
233+after the current date, (2) number is after the current number, or (3)
234+label is not yet used.
235+
236+```hoon
237+ ++ duce :: produce request
238+ |= [hen=duct rov=rove]
239+ ^+ +>
240+ =. qyx (~(put by qyx) hen rov)
241+ ?~ ref
242+ (mabe rov (cury bait hen))
243+ |- ^+ +>+.$ :: XX why?
244+ =+ rav=(reve rov)
245+ =+ ^= vaw ^- rave
246+ ?. ?=([%& %v *] rav) rav
247+ [%| [%ud let.dom] `case`q.p.rav r.p.rav]
248+ =+ inx=nix.u.ref
249+ %= +>+.$
250+ say [[hen [(scot %ud inx) ~] for [inx syd ~ vaw]] say]
251+ nix.u.ref +(nix.u.ref)
252+ bom.u.ref (~(put by bom.u.ref) inx [hen vaw])
253+ fod.u.ref (~(put by fod.u.ref) hen inx)
254+ ==
255+```
256+
257+The code for `++duce` is nearly the exact inverse of `++ease`, which in
258+the case of a domestic desk is very simple -- we simply put the duct and
259+rave into `qyx` and possibly start a timer with `++mabe` and `++bait`.
260+Recall that `ref` is null for domestic desks and that `++mabe` fires the
261+given function with the time we need to be woken up at, if we need to be
262+woken up at a particular time.
263+
264+```hoon
265+ ++ bait
266+ |= [hen=duct tym=@da]
267+ %_(+> tag :_(tag [hen /tyme %t %wait tym]))
268+```
269+
270+This sets an alarm by sending a `%wait` card with the given time to the
271+timer vane.
272+
273+Back in `++eave`, if `++aver` returned `[~ ~]`, then we cancel the
274+subscription. This occurs when we make (1) a `%x` request for a file
275+that does not exist, (2) a `%w` request with a case that is not a
276+number, or (3) a `%w` request with a nonempty path. The `++blub` is
277+exactly what you would expect it to be.
278+
279+```hoon
280+ ++ blub :: ship stop
281+ |= hen=duct
282+ %_(+> byn [[hen ~] byn])
283+```
284+
285+We notify the duct that we're cancelling their subscription since it
286+isn't satisfiable.
287+
288+Otherwise, we have received the desired information, so we send it on to
289+the subscriber with `++blab`.
290+
291+```hoon
292+ ++ blab :: ship result
293+ |= [hen=duct mun=mood dat=*]
294+ ^+ +>
295+ +>(byn [[hen ~ [p.mun q.mun syd] r.mun dat] byn])
296+```
297+
298+The most interesting arm called in `++eave` is, of course, `++aver`,
299+where we actually try to read the data.
300+
301+```hoon
302+ ++ aver :: read
303+ |= mun=mood
304+ ^- (unit (unit ,*))
305+ ?: &(=(p.mun %u) !=(p.q.mun now)) :: prevent bad things
306+ ~& [%clay-fail p.q.mun %now now]
307+ !!
308+ =+ ezy=?~(ref ~ (~(get by haw.u.ref) mun))
309+ ?^ ezy ezy
310+ =+ nao=(~(case-to-aeon ze lim dom ran) q.mun)
311+ ?~(nao ~ [~ (~(read-at-aeon ze lim dom ran) u.nao mun)])
312+```
313+
314+We check immediately that we're not requesting the `rang` for any time
315+other than the present.
316+
317+If this is a foreign desk, then we check our cache for the specific
318+request. If either this is a domestic desk or we don't have the request
319+in our cache, then we have to actually go read the data from our dome.
320+
321+We need to do two things. First, we try to find the number of the commit
322+specified by the given case, and then we try to get the data there.
323+
324+Here, we jump into `arvo/zuse.hoon`, which is where much of the
325+algorithmic code is stored, as opposed to the clay interface, which is
326+stored in `arvo/clay.hoon`. We examine `++case-to-aeon:ze`.
327+
328+```hoon
329+ ++ case-to-aeon :: case-to-aeon:ze
330+ |= lok=case :: act count through
331+ ^- (unit aeon)
332+ ?- -.lok
333+ %da
334+ ?: (gth p.lok lim) ~
335+ |- ^- (unit aeon)
336+ ?: =(0 let) [~ 0] :: avoid underflow
337+ ?: %+ gte p.lok
338+ =< t
339+ %- tako-to-yaki
340+ %- aeon-to-tako
341+ let
342+ [~ let]
343+ $(let (dec let))
344+ ::
345+ %tas (~(get by lab) p.lok)
346+ %ud ?:((gth p.lok let) ~ [~ p.lok])
347+ ==
348+```
349+
350+We handle each type of `case:clay` differently. The latter two types are
351+easy.
352+
353+If we're requesting a revision by label, then we simply look up the
354+requested label in `lab` from the given dome. If it exists, that is our
355+aeon; else we produce null, indicating the requested revision does not
356+yet exist.
357+
358+If we're requesting a revision by number, we check if we've yet reached
359+that number. If so, we produce the number; else we produce null.
360+
361+If we're requesting a revision by date, we check first if the date is in
362+the future, returning null if so. Else we start from the most recent
363+revision and scan backwards until we find the first revision committed
364+before that date, and we produce that. If we requested a date before any
365+revisions were committed, we produce `0`.
366+
367+The definitions of `++aeon-to-tako` and `++tako-to-yaki` are trivial.
368+
369+```hoon
370+ ++ aeon-to-tako ~(got by hit)
371+
372+ ++ tako-to-yaki ~(got by hut) :: grab yaki
373+```
374+
375+We simply look up the aeon or tako in their respective maps (`hit` and
376+`hut`).
377+
378+Assuming we got a valid version number, `++aver` calls
379+`++read-at-aeon:ze`, which reads the requested data at the given
380+revision.
381+
382+```hoon
383+ ++ read-at-aeon :: read-at-aeon:ze
384+ |= [oan=aeon mun=mood] :: seek and read
385+ ^- (unit)
386+ ?: &(?=(%w p.mun) !?=(%ud -.q.mun)) :: NB only for speed
387+ ?^(r.mun ~ [~ oan])
388+ (read:(rewind oan) mun)
389+```
390+
391+If we're requesting the revision number with a case other than by
392+number, then we go ahead and just produce the number we were given.
393+Otherwise, we call `++rewind` to rewind our state to the given revision,
394+and then we call `++read` to get the requested information.
395+
396+```hoon
397+ ++ rewind :: rewind:ze
398+ |= oan=aeon :: rewind to aeon
399+ ^+ +>
400+ ?: =(let oan) +>
401+ ?: (gth oan let) !! :: don't have version
402+ +>(ank (checkout-ankh q:(tako-to-yaki (aeon-to-tako oan))), let oan)
403+```
404+
405+If we're already at the requested version, we do nothing. If we're
406+requesting a version later than our head, we are unable to comply.
407+
408+Otherwise, we get the hash of the commit at the number, and from that we
409+get the commit itself (the yaki), which has the map of path to lobe that
410+represents a version of the filesystem. We call `++checkout-ankh` to
411+checkout the commit, and we replace `ank` in our context with the
412+result.
413+
414+```hoon
415+ ++ checkout-ankh :: checkout-ankh:ze
416+ |= hat=(map path lobe) :: checkout commit
417+ ^- ankh
418+ %- cosh
419+ %+ roll (~(tap by hat) ~)
420+ |= [[pat=path bar=lobe] ank=ankh]
421+ ^- ankh
422+ %- cosh
423+ ?~ pat
424+ =+ zar=(lobe-to-noun bar)
425+ ank(q [~ (sham zar) zar])
426+ =+ nak=(~(get by r.ank) i.pat)
427+ %= ank
428+ r %+ ~(put by r.ank) i.pat
429+ $(pat t.pat, ank (fall nak _ankh))
430+ ==
431+```
432+
433+Twice we call `++cosh`, which hashes a commit, updating `p` in an
434+`ankh`. Let's jump into that algorithm before we describe
435+`++checkout-ankh`.
436+
437+```hoon
438+ ++ cosh :: locally rehash
439+ |= ank=ankh :: NB v/unix.c
440+ ank(p rehash:(zu ank))
441+```
442+
443+We simply replace `p` in the hash with the `cash` we get from a call to
444+`++rehash:zu`.
445+
446+```hoon
447+ ++ zu !: :: filesystem
448+ |= ank=ankh :: filesystem state
449+ =| myz=(list ,[p=path q=miso]) :: changes in reverse
450+ =| ram=path :: reverse path into
451+ |%
452+ ++ rehash :: local rehash
453+ ^- cash
454+ %+ mix ?~(q.ank 0 p.u.q.ank)
455+ =+ axe=1
456+ |- ^- cash
457+ ?~ r.ank _@
458+ ;: mix
459+ (shaf %dash (mix axe (shaf %dush (mix p.n.r.ank p.q.n.r.ank))))
460+ $(r.ank l.r.ank, axe (peg axe 2))
461+ $(r.ank r.r.ank, axe (peg axe 3))
462+ ==
463+```
464+
465+`++zu` is a core we set up with a particular filesystem node to traverse
466+a checkout of the filesystem and access the actual data inside it. One
467+of the things we can do with it is to create a recursive hash of the
468+node.
469+
470+In `++rehash`, if this node is a file, then we xor the remainder of the
471+hash with the hash of the contents of the file. The remainder of the
472+hash is `0` if we have no children, else we descend into our children.
473+Basically, we do a half SHA-256 of the xor of the axis of this child and
474+the half SHA-256 of the xor of the name of the child and the hash of the
475+child. This is done for each child and all the results are xored
476+together.
477+
478+Now we return to our discussion of `++checkout-ankh`.
479+
480+We fold over every path in this version of the filesystem and create a
481+great ankh out of them. First, we call `++lobe-to-noun` to get the raw
482+data referred to be each lobe.
483+
484+```hoon
485+ ++ lobe-to-noun :: grab blob
486+ |= p=lobe :: ^- *
487+ %- blob-to-noun
488+ (lobe-to-blob p)
489+```
490+
491+This converts a lobe into the raw data it refers to by first getting the
492+blob with `++lobe-to-blob` and converting that into data with
493+`++blob-to-noun`.
494+
495+```hoon
496+ ++ lobe-to-blob ~(got by lat) :: grab blob
497+```
498+
499+This just grabs the blob that the lobe refers to.
500+
501+```hoon
502+ ++ blob-to-noun :: grab blob
503+ |= p=blob
504+ ?- -.p
505+ %delta (lump r.p (lobe-to-noun q.p))
506+ %direct q.p
507+ %indirect q.p
508+ ==
509+```
510+
511+If we have either a direct or an indirect blob, then the data is stored
512+right in the blob. Otherwise, we have to reconstruct it from the diffs.
513+We do this by calling `++lump` on the diff in the blob with the data
514+obtained by recursively calling the parent of this blob.
515+
516+```hoon
517+ ++ lump :: apply patch
518+ |= [don=udon src=*]
519+ ^- *
520+ ?+ p.don ~|(%unsupported !!)
521+ %a
522+ ?+ -.q.don ~|(%unsupported !!)
523+ %a q.q.don
524+ %c (lurk ((hard (list)) src) p.q.don)
525+ %d (lure src p.q.don)
526+ ==
527+ ::
528+ %c
529+ =+ dst=(lore ((hard ,@) src))
530+ %- roly
531+ ?+ -.q.don ~|(%unsupported !!)
532+ %a ((hard (list ,@t)) q.q.don)
533+ %c (lurk dst p.q.don)
534+ ==
535+ ==
536+```
537+
538+This is defined in `arvo/hoon.hoon` for historical reasons which are
539+likely no longer applicable. Since the `++umph` structure will likely
540+change we convert clay to be a typed filesystem, we'll only give a
541+high-level description of this process. If we have a `%a` udon, then
542+we're performing a trivial replace, so we produce simply `q.q.don`. If
543+we have a `%c` udon, then we're performing a list merge (as in, for
544+example, lines of text). The merge is performed by `++lurk`.
545+
546+```hoon
547+ ++ lurk :: apply list patch
548+ |* [hel=(list) rug=(urge)]
549+ ^+ hel
550+ =+ war=`_hel`~
551+ |- ^+ hel
552+ ?~ rug (flop war)
553+ ?- -.i.rug
554+ &
555+ %= $
556+ rug t.rug
557+ hel (slag p.i.rug hel)
558+ war (weld (flop (scag p.i.rug hel)) war)
559+ ==
560+ ::
561+ |
562+ %= $
563+ rug t.rug
564+ hel =+ gur=(flop p.i.rug)
565+ |- ^+ hel
566+ ?~ gur hel
567+ ?>(&(?=(^ hel) =(i.gur i.hel)) $(hel t.hel, gur t.gur))
568+ war (weld q.i.rug war)
569+ ==
570+ ==
571+```
572+
573+We accumulate our final result in `war`. If there's nothing more in our
574+list of merge instructions (unces), we just reverse `war` and produce
575+it. Otherwise, we process another unce. If the unce is of type `&`, then
576+we have `p.i.rug` lines of no changes, so we just copy them over from
577+`hel` to `war`. If the unice is of type `|`, then we verify that the
578+source lines (in `hel`) are what we expect them to be (`p.i.rug`),
579+crashing on failure. If they're good, then we append the new lines in
580+`q.i.rug` onto `war`.
581+
582+And that's really it. List merges are pretty easy. Anyway, if you
583+recall, we were discussing `++checkout-ankh`.
584+
585+```hoon
586+ ++ checkout-ankh :: checkout-ankh:ze
587+ |= hat=(map path lobe) :: checkout commit
588+ ^- ankh
589+ %- cosh
590+ %+ roll (~(tap by hat) ~)
591+ |= [[pat=path bar=lobe] ank=ankh]
592+ ^- ankh
593+ %- cosh
594+ ?~ pat
595+ =+ zar=(lobe-to-noun bar)
596+ ank(q [~ (sham zar) zar])
597+ =+ nak=(~(get by r.ank) i.pat)
598+ %= ank
599+ r %+ ~(put by r.ank) i.pat
600+ $(pat t.pat, ank (fall nak _ankh))
601+ ==
602+```
603+
604+If the path is null, then we calculate `zar`, the raw data at the path
605+`pat` in this version. We produce the given ankh with the correct data.
606+
607+Otherwise, we try to get the child we're looking at from our parent
608+ankh. If it's already been created, this succeeds; otherwise, we simply
609+create a default blank ankh. We place ourselves in our parent after
610+recursively computing our children.
611+
612+This algorithm really isn't that complicated, but it may not be
613+immediately obvious why it works. An example should clear everything up.
614+
615+Suppose `hat` is a map of the following information.
616+
617+```
618+ /greeting --> "customary upon meeting"
619+ /greeting/english --> "hello"
620+ /greeting/spanish --> "hola"
621+ /greeting/russian/short --> "привет"
622+ /greeting/russian/long --> "Здравствуйте"
623+ /farewell/russian --> "до свидания"
624+```
625+
626+Furthermore, let's say that we process them in this order:
627+
628+```
629+ /greeting/english
630+ /greeting/russian/short
631+ /greeting/russian/long
632+ /greeting
633+ /greeting/spanish
634+ /farewell/russian
635+```
636+
637+Then, the first path we process is `/greeting/english` . Since our path
638+is not null, we try to get `nak`, but because our ankh is blank at this
639+point it doesn't find anything. Thus, update our blank top-level ankh
640+with a child `%greeting`. and recurse with the blank `nak` to create the
641+ankh of the new child.
642+
643+In the recursion, we our path is `/english` and our ankh is again blank.
644+We try to get the `english` child of our ankh, but this of course fails.
645+Thus, we update our blank `/greeting` ankh with a child `english`
646+produced by recursing.
647+
648+Now our path is null, so we call `++lobe-to-noun` to get the actual
649+data, and we place it in the brand-new ankh.
650+
651+Next, we process `/greeting/russian/short`. Since our path is not null,
652+we try to get the child named `%greeting`, which does exist since we
653+created it earlier. We put modify this child by recursing on it. Our
654+path is now `/russian/short`, so we look for a `%russian` child in our
655+`/greeting` ankh. This doesn't exist, so we add it by recursing. Our
656+path is now `/short`, so we look for a `%short` child in our
657+`/greeting/russian` ankh. This doesn't exist, so we add it by recursing.
658+Now our path is null, so we set the contents of this node to `"привет"`,
659+and we're done processing this path.
660+
661+Next, we process `/greeting/russian/long`. This proceeds similarly to
662+the previous except that now the ankh for `/greeting/russian` already
663+exists, so we simply reuse it rather than creating a new one. Of course,
664+we still must create a new `/greeting/russian/long` ankh.
665+
666+Next, we process `/greeting`. This ankh already exists, so after we've
667+recursed once, our path is null, and our ankh is not blank -- it already
668+has two children (and two grandchildren). We don't touch those, though,
669+since a node may be both a file and a directory. We just add the
670+contents of the file -- "customary upon meeting" -- to the existing
671+ankh.
672+
673+Next, we process `/greeting/spanish`. Of course, the `/greeting` ankh
674+already exists, but it doesn't have a `%spanish` child, so we create
675+that, taking care not to disturb the contents of the `/greeting` file.
676+We put "hola" into the ankh and call it good.
677+
678+Finally, we process `/farewell/russian`. Here, the `/farewell` ankh
679+doesn't exist, so we create it. Clearly the newly-created ankh doesn't
680+have any children, so we have to add a `%russian` child, and in this
681+child we put our last content -- "до свидания".
682+
683+We hope it's fairly obvious that the order we process the paths doesn't
684+affect the final ankh tree. The tree will be constructed in a very
685+different order depending on what order the paths come in, but the
686+resulting tree is independent of order.
687+
688+At any rate, we were talking about something important, weren't we? If
689+you recall, that concludes our discussion of `++rewind`, which was
690+called from `++read-at-aeon`. In summary, `++rewind` returns a context
691+in which our current state is (very nearly) as it was when the specified
692+version of the desk was the head. This allows `++read-at-aeon` to call
693+`++read` to read the requested information.
694+
695+```hoon
696+ ++ read :: read:ze
697+ |= mun=mood :: read at point
698+ ^- (unit)
699+ ?: ?=(%v p.mun)
700+ [~ `dome`+<+<.read]
701+ ?: &(?=(%w p.mun) !?=(%ud -.q.mun))
702+ ?^(r.mun ~ [~ let])
703+ ?: ?=(%w p.mun)
704+ =+ ^= yak
705+ %- tako-to-yaki
706+ %- aeon-to-tako
707+ let
708+ ?^(r.mun ~ [~ [t.yak (forge-nori yak)]])
709+ ::?> ?=(^ hit) ?^(r.mun ~ [~ i.hit]) :: what do?? need [@da nori]
710+ (query(ank ank:(descend-path:(zu ank) r.mun)) p.mun)
711+```
712+
713+If we're requesting the dome, then we just return that immediately.
714+
715+If we're requesting the revision number of the desk and we're not
716+requesting it by number, then we just return the current number of this
717+desk. Note of course that this was really already handled in
718+`++read-at-aeon`.
719+
720+If we're requesting a `%w` with a specific revision number, then we do
721+something or other with the commit there. It's kind of weird, and it
722+doesn't seem to work, so we'll ignore this case.
723+
724+Otherwise, we descend into the ankh tree to the given path with
725+`++descend-path:zu`, and then we handle specific request in `++query`.
726+
727+```hoon
728+ ++ descend-path :: descend recursively
729+ |= way=path
730+ ^+ +>
731+ ?~(way +> $(way t.way, +> (descend i.way)))
732+```
733+
734+This is simple recursion down into the ankh tree. `++descend` descends
735+one level, so this will eventually get us down to the path we want.
736+
737+```hoon
738+ ++ descend :: descend
739+ |= lol=@ta
740+ ^+ +>
741+ =+ you=(~(get by r.ank) lol)
742+ +>.$(ram [lol ram], ank ?~(you [*cash ~ ~] u.you))
743+```
744+
745+`ram` is the path that we're at, so to descend one level we push the
746+name of this level onto that path. We update the ankh with the correct
747+one at that path if it exists; else we create a blank one.
748+
749+Once we've decscended to the correct level, we need to actually deal
750+with the request.
751+
752+```hoon
753+ ++ query :: query:ze
754+ |= ren=?(%u %v %x %y %z) :: endpoint query
755+ ^- (unit ,*)
756+ ?- ren
757+ %u [~ `rang`+<+>.query]
758+ %v [~ `dome`+<+<.query]
759+ %x ?~(q.ank ~ [~ q.u.q.ank])
760+ %y [~ as-arch]
761+ %z [~ ank]
762+ ==
763+```
764+
765+Now that everything's set up, it's really easy. If they're requesting
766+the rang, dome, or ankh, we give it to them. If the contents of a file,
767+we give it to them if it is in fact a file. If the `arch`, then we
768+calculate it with `++as-arch`.
769+
770+```hoon
771+ ++ as-arch :: as-arch:ze
772+ ^- arch :: arch report
773+ :+ p.ank
774+ ?~(q.ank ~ [~ p.u.q.ank])
775+ |- ^- (map ,@ta ,~)
776+ ?~ r.ank ~
777+ [[p.n.r.ank ~] $(r.ank l.r.ank) $(r.ank r.r.ank)]
778+```
779+
780+This very simply strips out all the "real" data and returns just our own
781+hash, the hash of the file contents (if we're a file), and a map of the
782+names of our immediate children.
783+
arvo/clay/local-sub.mdnew file+249
@@ -0,0 +1,249 @@
1++++
2+title = "Local Subscriptions"
3+weight = 6
4+template = "doc.html"
5++++
6+
7+Parts of this document may be out of date as of March 2021.
8+
9+A subscription to a range of revisions of a desk initially follows the
10+same path that a single read does. In `++aver`, we checked the head of
11+the given rave. If the head was `&`, then it was a single request, so we
12+handled it above. If `|`, then we handle it with the following code.
13+
14+```hoon
15+ =+ nab=(~(case-to-aeon ze lim dom ran) p.p.rav)
16+ ?~ nab
17+ ?> =(~ (~(case-to-aeon ze lim dom ran) q.p.rav))
18+ (duce hen (rive rav))
19+ =+ huy=(~(case-to-aeon ze lim dom ran) q.p.rav)
20+ ?: &(?=(^ huy) |((lth u.huy u.nab) &(=(0 u.huy) =(0 u.nab))))
21+ (blub hen)
22+ =+ top=?~(huy let.dom u.huy)
23+ =+ sar=(~(lobes-at-path ze lim dom ran) u.nab r.p.rav)
24+ =+ ear=(~(lobes-at-path ze lim dom ran) top r.p.rav)
25+ =. +>.$
26+ ?: =(sar ear) +>.$
27+ =+ fud=(~(make-nako ze lim dom ran) u.nab top)
28+ (bleb hen u.nab fud)
29+ ?^ huy
30+ (blub hen)
31+ =+ ^= ptr ^- case
32+ [%ud +(let.dom)]
33+ (duce hen `rove`[%| ptr q.p.rav r.p.rav ear])
34+ ==
35+```
36+
37+Recall that `++case-to-aeon:ze` produces the revision number that a case
38+corresponds to, if it corresponds to any. If it doesn't yet correspond
39+to a revision, then it produces null.
40+
41+Thus, we first check to see if we've even gotten to the beginning of the
42+range of revisions requested. If not, then we assert that we haven't yet
43+gotten to the end of the range either, because that would be really
44+strange. If not, then we immediately call `++duce`, which, if you
45+recall, for a local request, simply puts this duct and rove into our
46+cult `qyx`, so that we know who to respond to when the revision does
47+appear.
48+
49+If we've already gotten to the first revision, then we can produce some
50+content immediately. If we've also gotten to the final revision, and
51+that revision is earlier than the start revision, then it's a bad
52+request and we call `++blub`, which tells the subscriber that his
53+subscription will not be satisfied.
54+
55+Otherwise, we find the data at the given path at the beginning of the
56+subscription and at the last available revision in the subscription. If
57+they're the same, then we don't send a notification. Otherwise, we call
58+`++gack`, which creates the `++nako` we need to produce. We call
59+`++bleb` to actually produce the information.
60+
61+If we already have the last requested revision, then we also tell the
62+subscriber with `++blub` that the subscription will receive no further
63+updates.
64+
65+If there will be more revisions in the subscription, then we call
66+`++duce`, adding the duct to our subscribers. We modify the rove to
67+start at the next revision since we've already handled all the revisions
68+up to the present.
69+
70+We glossed over the calls to `++lobes-at-path`, `++make-nako`, and
71+`++bleb`, so we'll get back to those right now. `++bleb` is simple, so
72+we'll start with that.
73+
74+```hoon
75+ ++ bleb :: ship sequence
76+ |= [hen=duct ins=@ud hip=nako]
77+ ^+ +>
78+ (blab hen [%w [%ud ins] ~] hip)
79+```
80+
81+We're given a duct, the beginning revision number, and the nako that
82+contains the updates since that revision. We use `++blab` to produce
83+this result to the subscriber. The case is `%w` with a revision number
84+of the beginning of the subscription, and the data is the nako itself.
85+
86+We call `++lobes-at-path:ze` to get the data at the particular path.
87+
88+```hoon
89+ ++ lobes-at-path :: lobes-at-path:ze
90+ |= [oan=aeon pax=path] :: data at path
91+ ^- (map path lobe)
92+ ?: =(0 oan) ~
93+ %- mo
94+ %+ skim
95+ %. ~
96+ %~ tap by
97+ =< q
98+ %- tako-to-yaki
99+ %- aeon-to-tako
100+ oan
101+ |= [p=path q=lobe]
102+ ?| ?=(~ pax)
103+ ?& !?=(~ p)
104+ =(-.pax -.p)
105+ $(p +.p, pax +.pax)
106+ == ==
107+```
108+
109+At revision zero, the theoretical common revision between all
110+repositories, there is no data, so we produce null.
111+
112+We get the list of paths (paired with their lobe) in the revision
113+referred to by the given number and we keep only those paths which begin
114+with `pax`. Converting to a map, we now have a map from the subpaths at
115+the given path to the hash of their data. This is simple and efficient
116+to calculate and compare to later revisions. This allows us to easily
117+tell if a node or its children have changed.
118+
119+Finally, we will describe `++make-nako:ze`.
120+
121+```hoon
122+ ++ make-nako :: gack a through b
123+ |= [a=aeon b=aeon]
124+ ^- [(map aeon tako) aeon (set yaki) (set blob)]
125+ :_ :- b
126+ =- [(takos-to-yakis -<) (lobes-to-blobs ->)]
127+ %+ reachable-between-takos
128+ (~(get by hit) a) :: if a not found, a=0
129+ (aeon-to-tako b)
130+ ^- (map aeon tako)
131+ %- mo %+ skim (~(tap by hit) ~)
132+ |= [p=aeon *]
133+ &((gth p a) (lte p b))
134+```
135+
136+We need to produce four things -- the numbers of the new commits, the
137+number of the latest commit, the new commits themselves, and the new
138+data itself.
139+
140+The first is fairly easy to produce. We simply go over our map of
141+numbered commits and produce all those numbered greater than `a` and not
142+greater than `b`.
143+
144+The second is even easier to produce -- `b` is clearly our most recent
145+commit.
146+
147+The third and fourth are slightly more interesting, though not too
148+terribly difficult. First, we call `++reachable-between-takos`.
149+
150+```hoon
151+ ++ reachable-between-takos
152+ |= [a=(unit tako) b=tako] :: pack a through b
153+ ^- [(set tako) (set lobe)]
154+ =+ ^= sar
155+ ?~ a ~
156+ (reachable-takos r:(tako-to-yaki u.a))
157+ =+ yak=`yaki`(tako-to-yaki b)
158+ %+ new-lobes-takos (new-lobes ~ sar) :: get lobes
159+ |- ^- (set tako) :: walk onto sar
160+ ?: (~(has in sar) r.yak)
161+ ~
162+ =+ ber=`(set tako)`(~(put in `(set tako)`~) `tako`r.yak)
163+ %- ~(uni in ber)
164+ ^- (set tako)
165+ %+ roll p.yak
166+ |= [yek=tako bar=(set tako)]
167+ ^- (set tako)
168+ ?: (~(has in bar) yek) :: save some time
169+ bar
170+ %- ~(uni in bar)
171+ ^$(yak (tako-to-yaki yek))
172+```
173+
174+We take a possible starting commit and a definite ending commit, and we
175+produce the set of commits and the set of data between them.
176+
177+We let `sar` be the set of commits reachable from `a`. If `a` is null,
178+then obviously no commits are reachable. Otherwise, we call
179+`++reachable-takos` to calculate this.
180+
181+```hoon
182+ ++ reachable-takos :: reachable
183+ |= p=tako :: XX slow
184+ ^- (set tako)
185+ =+ y=(tako-to-yaki p)
186+ =+ t=(~(put in _(set tako)) p)
187+ %+ roll p.y
188+ |= [q=tako s=_t]
189+ ?: (~(has in s) q) :: already done
190+ s :: hence skip
191+ (~(uni in s) ^$(p q)) :: otherwise traverse
192+```
193+
194+We very simply produce the set of the given tako plus its parents,
195+recursively.
196+
197+Back in `++reachable-between-takos`, we let `yak` be the yaki of `b`,
198+the ending commit. With this, we create a set that is the union of `sar`
199+and all takos reachable from `b`.
200+
201+We pass `sar` into `++new-lobes` to get all the lobes referenced by any
202+tako referenced by `a`. The result is passed into `++new-lobes-takos` to
203+do the same, but not recomputing those in already calculated last
204+sentence. This produces the sets of takos and lobes we need.
205+
206+```hoon
207+ ++ new-lobes :: object hash set
208+ |= [b=(set lobe) a=(set tako)] :: that aren't in b
209+ ^- (set lobe)
210+ %+ roll (~(tap in a) ~)
211+ |= [tak=tako bar=(set lobe)]
212+ ^- (set lobe)
213+ =+ yak=(tako-to-yaki tak)
214+ %+ roll (~(tap by q.yak) ~)
215+ |= [[path lob=lobe] far=_bar]
216+ ^- (set lobe)
217+ ?~ (~(has in b) lob) :: don't need
218+ far
219+ =+ gar=(lobe-to-blob lob)
220+ ?- -.gar
221+ %direct (~(put in far) lob)
222+ %delta (~(put in $(lob q.gar)) lob)
223+ %indirect (~(put in $(lob s.gar)) lob)
224+ ==
225+```
226+
227+Here, we're creating a set of lobes referenced in a commit in `a`. We
228+start out with `b` as the initial set of lobes, so we don't need to
229+recompute any of the lobes referenced in there.
230+
231+The algorithm is pretty simple, so we won't bore you with the details.
232+We simply traverse every commit in `a`, looking at every blob referenced
233+there, and, if it's not already in `b`, we add it to `b`. In the case of
234+a direct blob, we're done. For a delta or an indirect blob, we
235+recursively add every blob referenced within the blob.
236+
237+```hoon
238+ ++ new-lobes-takos :: garg & repack
239+ |= [b=(set lobe) a=(set tako)]
240+ ^- [(set tako) (set lobe)]
241+ [a (new-lobes b a)]
242+```
243+
244+Here, we just update the set of lobes we're given with the commits we're
245+given and produce both sets.
246+
247+This concludes our discussion of a local subscription.
248+
249+
arvo/clay/using.mdnew file+209
@@ -0,0 +1,209 @@
1++++
2+title = "Using Clay"
3+weight = 3
4+template = "doc.html"
5++++
6+
7+This document covers common uses of Clay for developers. Some parts of it may be
8+out of date as of March 2021.
9+
10+### Reading and Subscribing
11+
12+When reading from Clay, there are three types of requests. A
13+`%sing` request asks for data at single revsion. A `%next`
14+request asks to be notified the next time there's a change to
15+given file. A `%many` request asks to be notified on every
16+change in a desk for a range of changes.
17+
18+For `%sing` and `%next`, there are generally three things to be
19+queried. A `%u` request simply checks for the existence of a
20+file at a path. A `%x` request gets the data in the file at a
21+path. A `%y` request gets a hash of the data in the file at the
22+path combined with all its children and their data. Thus, `%y`
23+of a node changes if it or any of its children change.
24+
25+A `%sing` request is fulfilled immediately if possible. If the
26+requested revision is in the future, or is on another ship for
27+which we don't have the result cached, we don't respond
28+immediately. If the requested revision is in the future, we wait
29+until the revision happens before we respond to the request. If
30+the request is for data on another ship, we pass on the request
31+to the other ship. In general, Clay subscriptions, like most
32+things in Urbit, aren't guaranteed to return immediately.
33+They'll return when they can, and they'll do so in a
34+referentially transparent manner.
35+
36+A `%next` request checks query at the given revision, and it
37+produces the result of the query the next time it changes, along
38+with the revsion number when it changes. Thus, a `%next` of a
39+`%u` is triggered when a file is added or deleted, a `%next` of a
40+`%x` is triggered when a file is added, deleted, or changed, and
41+a `%next` of a `%y` is triggered when a file or any of its
42+children is added, deleted, or changed.
43+
44+A `%many` request is triggered every time the given desk has a
45+new revision. Unlike a `%next`, a `%many` has both a start and
46+an end revsion, after which it stops returning. For `%next`, a
47+single change is reported, and if the caller wishes to hear of
48+the next change, it must resubscribe. For `%many`, every revsion
49+from the start to the end triggers a response. Since a `%many`
50+request doesn't ask for any particular data, there aren't `%u`,
51+`%x`, and `%y` versions for it.
52+
53+For further information, see [Local Reads](@/docs/arvo/clay/local-reads.md),
54+[Local Subscriptions](@/docs/arvo/clay/local-sub.md), and [Foreign
55+Requests](@/docs/arvo/clay/foreign.md)
56+
57+### Unix sync
58+
59+One of the primary functions of clay is as a convenient user
60+interface. While tools exist to use clay from within urbit, it's
61+often useful to be able to treat clay like any other filesystem
62+from the Unix perspective -- to "mount" it, as it were.
63+
64+From urbit, you can run `|mount /path/to/directory %mount-point`,
65+and this will mount the given clay directory to the mount-point
66+directory in Unix. Every file is converted to `%mime` before it's
67+written to Unix, and converted back when read from Unix. The
68+entire directory is watched (a la Dropbox), and every change is
69+committed once you run `|commit %mount-point`.
70+
71+### Merging
72+
73+This section is up to date as of March 2021.
74+
75+Usage:
76+```
77+|merge %destination-desk ~source-ship %source-desk
78+|merge %destination-desk ~source-ship %source-desk, =gem %strategy
79+|merge %destination-desk ~source-ship %source-desk, =cas ud+5
80+```
81+
82+Clay supports various merge strategies. A "commit" is a snapshot of
83+the files with a list of parents plus a date. Most commits have
84+one parent; a "merge" commit is a commit with two parents. The
85+%home desk starts with an initial commit with no parents; commits
86+with several parents ("octopus merges") are possible but we don't
87+generate them right now.
88+
89+Unless otherwise specified, all of the following create a new commit
90+with the source and destination commits as parents.
91+
92+Several strategies need a "merge-base". They find it by identifying
93+the most recent common ancestor of the two desks. If none, fail
94+with `%merge-no-merge-base`; if there are two or more, pick one.
95+
96+#### Strategies
97+
98+**`%init`**: the only way to create a desk. Not a true merge, since it
99+simply assigns the source commit to the destination.
100+
101+**`%fine`**: if source or destination are in the ancestry of each other,
102+use the newer one; else abort. If the destination is ahead of the
103+source, succeed but do nothing. If the source is ahead of the
104+destination, assign the next revision number to the source commit.
105+Some call this "fast-forward".
106+
107+**`%meet`**: combine changes, failing if both sides changed the same file.
108+Specifically, take diff(merge-base,source) and
109+diff(merge-base,destination) and combine them as long as those diffs
110+touch different files.
111+
112+**`%mate`**: combine changes, failing if both sides changed the same part
113+of a file. Identical to `%meet`, except that some marks, like `%hoon`,
114+allow intelligent merge of changes to different parts of a file.
115+
116+**`%meld`**: combine changes; if both sides changed the same part of a
117+file, use the version of the file in the merge-base.
118+
119+**`%only-this`**: create a merge commit with exactly the contents of the
120+destination desk.
121+
122+**`%only-that`**: create a merge commit with exactly the contents of the
123+source commit.
124+
125+**`%take-this`**: create a merge commit with exactly the contents of the
126+destination desk except take any files from the source commit which
127+are not in the destination desk.
128+
129+**`%take-that`**: create a merge commit with exactly the contents of the
130+source commit except preserve any files from the destination desk
131+which are not in the source commit.
132+
133+**`%meet-this`**: merge as in `%meet`, except if both sides changed the same
134+file, use the version in the destination desk.
135+
136+**`%meet-that`**: merge as in `%meet`, except if both sides changed the same
137+file, use the version in the source commit.
138+
139+#### Examples and notes:
140+
141+The most common merge strategy is %mate, which is a normal 3-way
142+merge which aborts on conflict.
143+
144+`%take-that` is useful to "force" an OTA. After running `%take-that`,
145+you're guaranteed to have exactly the files in the source commit plus
146+any files you separately added.
147+
148+We speak of merging into a destination *desk* from a source *commit*
149+because while you can only merge on top of a desk, you can merge from
150+historical commits. For example,
151+```
152+|merge %old our %home, =cas ud+5, =gem %init
153+```
154+will create a new desk called `%old` with the 5th commit in `%home`.
155+You can revert the contents of a desk to what they were yesterday
156+with
157+```
158+|merge %home our %home, =cas da+(sub now ~d1), =gem %only-that
159+```
160+
161+Note this is a normal `%only-that merge`, which means you're creating a
162+*new* commit with the old *contents*.
163+
164+`%meld` is rarely used on its own, however if you specify `%auto` or
165+omit the merge strategy, `%kiln` will run a `%meld` merge into a scratch
166+desk and then annotate the conflicts there.
167+
168+If you resolve merge conflicts manually, for example by mounting the
169+desks, copying the files in Unix and then running `|commit`, you
170+should usually run an `%only-this merge`. This will not change the
171+newly-fixed contents of your desk, but it will record that the merge
172+happened so that those conflicts don't reappear in later merges.
173+
174+If you get a `%merge-no-merge-base` error, this means you're trying to
175+merge two desks which have no common ancestors. You need to give
176+them a common ancestor by choosing a merge strategy which doesn't
177+need a merge-base, like `%only-this`, `%only-that`, `%take-this`, or
178+`%take-that`.
179+
180+`%take-this` could be useful to install 3rd party software, but you
181+couldn't get subsequent updates this way, since the files would
182+already exist in the destination desk. Something like "take only
183+the files which aren't in my OTA source or any other 3rd party app"
184+would be basically correct. This would require a parameter listing
185+the desks to not conflict with.
186+
187+`%meet-this` and `%meet-that` imply the existence of `%mate-this` and
188+`%mate-that`, but those don't exist yet.
189+
190+### Autosync
191+
192+Tracking and staying in sync with another desk is another
193+fundamental operation. We call this "autosync". This doesn't mean
194+simply mirroring a desk, since that wouldn't allow local changes.
195+We simply want to apply changes as they are made upstream, as
196+long as there are no conflicts with local changes.
197+
198+This is implemented by watching the other desk, and, when it has
199+changes, merging these changes into our desk with the usual merge
200+strategies.
201+
202+Note that it's quite reasonable for two desks to be autosynced to
203+each other. This results in any change on one desk being mirrored
204+to the other and vice versa.
205+
206+Additionally, it's fine to set up an autosync even if one desk,
207+the other desk, or both desks do not exist. The sync will be
208+activated when the upstream desk comes into existence and will
209+create the downstream desk if needed.
arvo/concepts/_index.mdnew file+12
@@ -0,0 +1,12 @@
1++++
2+title = "Concepts"
3+weight = 100
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+Other concepts related to the way Arvo works.
9+
10+## [Subscriptions](@/docs/arvo/concepts/subscriptions.md)
11+
12+Urbit relies heavily on subscriptions throughout the stack. We strongly prefer reactive data flow compared to querying or polling, which is why for example our equivalent to git natively supports subscriptions to its data.
arvo/concepts/subscriptions.mdnew file+162
@@ -0,0 +1,162 @@
1++++
2+title = "Subscriptions"
3+weight = 50
4+template = "doc.html"
5++++
6+
7+Urbit relies heavily on subscriptions throughout the stack. We strongly
8+prefer reactive data flow compared to querying or polling, which is why
9+for example our equivalent to git natively supports subscriptions to its
10+data.
11+
12+We have many application-level styles of subscription, but we only have
13+three true subscription types in Arvo, named for the vane they're
14+implemented in: Clay subscriptions (filesystem), Gall subscriptions
15+(applications), and Jael subscriptions (Urbit ID info). They're at
16+three different points in the idea maze of subscriptions, and we'll
17+encounter each of them here.
18+
19+For our purposes, a subscription is a stream of events from a publisher
20+to a subscriber, where (1) the publisher has indicated interest in that
21+stream, (2) any update sent to one subscriber is sent to all subscribers
22+on the same stream, and (3) when the publisher has a new update ready,
23+they send it immediately to their subscribers instead of waiting for a
24+later request.
25+
26+## Basic properties
27+
28+### Exactly-once updates
29+
30+Some subscriptions need the subscriber to receive each update separately
31+instead of collapsing them into a single diff. Sometimes a subscription
32+is really a sequence of commands, in which case there's no meaningful
33+way to collapse them. Similarly, software updates may be expected to be
34+applied in order.
35+
36+### Syncing data
37+
38+Other times, it's more natural to think of a subscription as
39+communicating a data structure, where the only goal is to keep the data
40+structure on the subscriber's side up-to-date with what's on the
41+publisher's side. In this case, it's perfectly fine to collapse several
42+updates into one large update, or even to resend the entire data
43+structure. Partial updates exist only as an optimization.
44+
45+For this sort of subscription, we commonly use terms like "diff" instead
46+of "message" or "update", and we say that we "apply a diff" instead of
47+"process an update". We also often identify the subscription with the
48+data structure itself.
49+
50+## Memory pressure
51+
52+Naively implemented, subscriptions pose a memory leak risk if the
53+subscriber can't receive updates as fast as the publisher wants to send
54+them. This commonly happens when the subscriber goes offline for an
55+extended period of time (possibly forever; especially for comets). It's
56+sufficient to bound the amount of memory dedicated to any particular
57+subscriber.
58+
59+In a synchronous system, you don't have to worry about what happens if
60+one side or the other ceases to be available. All of our subscriptions,
61+though, can happen between ships.
62+
63+### Small data
64+
65+For particularly low-volume subscriptions, it may be acceptable to
66+ignore the problem. Jael uses this approach, since the only time it's
67+used across ships is to update moon keys, which is very low-volume and
68+less than 1KB per update. If these subscriptions are used for more,
69+this strategy will have to be revisited.
70+
71+### Buffers
72+
73+A common solution to this problem is the venerable buffer. If more than
74+N updates need to be sent, start dropping updates. There are several
75+options for what to do when the buffer is full and the publisher wishes
76+to send another message:
77+
78+- Drop the oldest message. Particularly suitable for systems where new
79+messages obsolete old ones. For example, if you just need the latest
80+ticker price for an asset, you could use a buffer size of one and
81+replaced it any time you have a new price.
82+
83+- Don't add the new message to the buffer. Semantically this is usually
84+less helpful, but mechanically it can be simpler and reduce memory
85+churn, since the buffer stops changing and new messages are simply
86+ignored.
87+
88+- Drop the newest message and close the subscription. Unlike the
89+previous two, this is compatible with the principle of exactly-once
90+messaging. Specifically, it preserves the guarantee that you won't
91+receive two non-consecutive subscription updates, at the cost of making
92+you resubscribe if you fall behind.
93+
94+Gall subscriptions use the last of these. The buffer is bounded by a
95+simple heuristic, and when a subscription exceeds that buffer, it is
96+closed and the app is expected to resubscribe when they come back
97+online. Note that even though the subscription is closed, messages in
98+flight cannot be removed until they've been acknowledged since Ames
99+guarantees exactly-once messaging, so those last few messages will be
100+stuck in memory until the subscriber comes back online.
101+
102+Buffers are commonly bounded by size, but this puts constraints on the
103+types of messages may be sent. They may also be bounded in time: if the
104+subscriber stops taking messages for at least X time, the buffer is
105+full. Gall taks a hybrid approach; currently the heuristic is that the
106+buffer counts as full if it has at least five messages and it has been
107+30 seconds since a message was acknowledged.
108+
109+### One at a time
110+
111+Another scheme is to avoid multi-message subscriptions. Instead of
112+allowing the subscriber to subscribe to all future updates on a path,
113+allow them to "subscribe" to the *next* update only. When they get that
114+update, they subscribe to the new next update, so that they ultimately
115+get every message.
116+
117+Commonly this is implemented where each update is given a version
118+number, and every time you hear update N you request update N+1 (even
119+though you won't get an answer for an indeterminate period of time).
120+
121+This is near the theoretical ideal for memory usage, since you'll never
122+queue up several messages to send to the subscriber.
123+
124+It also encourages processing each update in order rather than zooming
125+forward from time to time. It's possible (if a little awkward) to
126+simulate this with buffers though, and it's possible to allow zooming
127+forward in the one-at-a-time scheme by having the requests be "most
128+recent after update N" instead of "next after update N".
129+
130+This scheme is at its strongest, then, when you're already storing
131+intermediate states or updates, or when you don't care about
132+intermediate states and always send the most recent one. Otherwise,
133+buffers are a convenient place to temporarily store updates that you
134+don't want to store internally. Of course, if it's semantically
135+important that you give each update separately, buffers won't save you
136+from having to store the intermediate updates, since they may fill up.
137+
138+Another conceptual advantage is that it has no notion of "connectivity".
139+It operates forever in a single mode. By contrast, buffer-based
140+solutions must keep track of whether the buffer is full and react to
141+that. This increases complexity in the system, and complexity is the
142+great evil.
143+
144+The biggest disadvantage of this system is that it takes much longer to
145+process many small updates. With buffers, the publisher could have a
146+dozen small updates in flight at the same time, while in this scheme
147+they would only send one at a time, waiting for a response between each
148+one. Losing this pipelining can be quite significant for some
149+applications, but for low-volume subscriptions (certainly anything that
150+updates less than once per minute) this will have no noticeable effect.
151+
152+Clay uses this scheme. It's low-volume, it stores all previous states
153+anyway (since it's a revision-control system), and it's sometimes
154+important to get updates one at a time (for example when downloading OTA
155+software updates). Ships that send OTA updates often have many ships
156+subscribed to them, and the updates themselves may be large, so it's
157+important they don't queue up when ships inevitably disappear.
158+
159+I tend to think most Gall subscriptions should follow this pattern as
160+well. Our most latency-sensitive subscriptions are chat messages, and
161+while I haven't tested it, I would guess that even those wouldn't be
162+affected by this scheme.
arvo/dill/_index.mdnew file+6
@@ -0,0 +1,6 @@
1++++
2+title = "Dill"
3+weight = 40
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
reference/vane-apis/dill.md → arvo/dill/dill-api.mdrenamed+5−5
@@ -1,6 +1,6 @@
11+++
2−title = "Dill"
3−weight = 4
2+title = "API Reference"
3+weight = 10
44template = "doc.html"
55+++
66
@@ -68,7 +68,7 @@ Dill returns no `gift` in response to a `%blew` `task`.
6868### `%boot`
6969
7070This `task` is used only once, when Arvo first enters the [adult
71−stage](@/docs/tutorials/arvo/arvo.md#structural-interface-core). Dill is
71+stage](@/docs/arvo/overview.md#structural-interface-core). Dill is
7272technically the first vane to be activated, via the `%boot` `task`, which then
7373send Jael (considered the the "true" first vane) an `%init` `task`, which then goes on to
7474call `%init` `task`s for other vanes (including Dill).
@@ -176,7 +176,7 @@ This `task` is not used.
176176### `%init`
177177
178178This `task` is called only once, when Arvo first enters the [adult
179−stage](@/docs/tutorials/arvo/arvo.md#structural-interface-core). It performs
179+stage](@/docs/arvo/overview.md#structural-interface-core). It performs
180180initial setup for Dill, such as setting the width of the console.
181181
182182Note that this is not actually the first `task` passed to Dill - see [%boot](#%boot).
@@ -353,7 +353,7 @@ This `task` returns no `gift`s.
353353
354354This `task` toggles verbose mode for all of Arvo, which is located here since
355355Dill is the vane that prints errors. To be precise, `%verb` toggles the laconic
356−bit `lac` in the [Arvo state](@/docs/tutorials/arvo/arvo.md#the-state).
356+bit `lac` in the [Arvo state](@/docs/arvo/overview.md#the-state).
357357
358358#### Accepts
359359
tutorials/arvo/dill.md → arvo/dill/dill.mdrenamed+2−2
@@ -1,6 +1,6 @@
11+++
2−title = "Dill"
3−weight = 5
2+title = "Overview"
3+weight = 1
44template = "doc.html"
55aliases = ["/docs/learn/arvo/dill/"]
66+++
arvo/eyre/_index.mdnew file+15
@@ -0,0 +1,15 @@
1++++
2+title = "Eyre"
3+weight = 50
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+## [Overview](@/docs/arvo/eyre/eyre.md)
9+
10+A high-level overview of `eyre`, Urbit's HTTP server vane.
11+
12+## [Using Eyre](@/docs/arvo/eyre/using-eyre.md)
13+
14+How to use Urbit's HTTP API.
15+
tutorials/arvo/eyre.md → arvo/eyre/eyre.mdrenamed+2−2
@@ -1,6 +1,6 @@
11+++
2−title = "Eyre"
3−weight = 6
2+title = "Overview"
3+weight = 1
44template = "doc.html"
55aliases = ["/docs/learn/arvo/eyre/"]
66+++
arvo/eyre/using-eyre.mdnew file+230
@@ -0,0 +1,230 @@
1++++
2+title = "Using Eyre"
3+description = "How to work with eyre from outside Urbit."
4+weight = 20
5+template = "doc.html"
6++++
7+
8+This guide is aimed at developers who have a working knowledge of HTTP grammar (`PUT`, `GET`), and should not require any special knowledge of Urbit's internals. To learn more about a specific application within Urbit, please search for that with the docs once you have finished this guide.
9+
10+## Prerequisites
11+
12+You'll need a working development ship to follow along with this guide. It's
13+recommended that you set up a new "fakezod" on port 8080: Run this code,
14+substituting the appropriate path to your Urbit binary:
15+
16+```bash
17+/path/to/urbit -p 8080 -F zod
18+```
19+
20+For the unfamiliar, this will create a folder named "zod" in your working directory, from which the ship will run. Use `/path/to/urbit -p 8080 zod` in the future. For more information on this process, see our guide on [Environment Setup](@/docs/development/environment.md).
21+
22+## Authentication
23+
24+We'll authenticate with a code that can be retrieved from the dojo. You can run
25+`+code` in the dojo to obtain it, but a fakezod's code is always
26+`lidlut-tabwed-pillex-ridrup`.
27+
28+Run this code in your bash terminal (requires cURL):
29+
30+```bash
31+curl -i localhost:8080/~/login -X POST -d "password=lidlut-tabwed-pillex-ridrup"
32+```
33+Let's explain what this does:
34+
35+ - `-i` displays the headers, so that you can see the cookie that gets sent
36+ - `localhost:8080/~/login` is the URL to which you are POSTing. You will note this is also the URL you visit when you log into Landscape.
37+ - `-X POST` specifies that you are POSTing data, not GETting.
38+ - `-d "password=lidlut-tabwed-pillex-ridrup"` specifies the code for your Urbit that we retrieved above. It is sent as form data, as if it were sent from an HTML form input field (which it is in Landscape)
39+
40+You should see the following:
41+
42+```bash
43+HTTP/1.1 200 ok
44+Date: Sun, 01 Jan 2020 00:00:00 GMT
45+Connection: keep-alive
46+Server: urbit/vere-0.10.8
47+set-cookie: urbauth-~zod=0v3.fvaqc.nnjda.vude1.vb5l6.kmjmg; Path=/; Max-Age=604800
48+transfer-encoding: chunked
49+```
50+
51+The `Date` and `set-cookie` will be slightly different of course.
52+
53+Take a look at the `set-cookie` line. This is now your session authentication, and will need to be sent with any future requests. It consists of three parts:
54+
55+ - `urbauth` is a prefix that Eyre uses to check for presence of authentication
56+ - `~zod` is the name of the ship you are logging in as
57+ - `0v3.fvaqc.nnjda.vude1.vb5l6.kmjmg` is the actual authentication token.
58+
59+At present there is no way to separate these parts — you must pass a cookie *as* a cookie. This string must be in the `Cookie` header. The `set-cookie` header is only used for this request upon response. It is what browsers expect when receiving a cookie.
60+
61+## Interacting with Eyre
62+
63+Once authenticated, you will perform all your operations on a channel. You may open as many channels as needed using the same authentication token, but this will increase complexity and memory usage on your Urbit ship.
64+
65+Interacting with Urbit comprises two parts:
66+
67+1. Sending information via PUT requests, which receive HTTP status code `204` (no content) upon success. We will not receive updated information (as in a POST request).
68+2. Receiving data on channels, which must first be subscribed to via an initial request. These come in the form of SSEs ([Server-Sent Events](https://www.w3.org/TR/eventsource/))
69+
70+These can be used independently, i.e. you may choose to only send information or only receive information from your Urbit, based on your application. Both can take place on the same channel.
71+
72+### Creating a Channel
73+
74+For this example, we will use the following channel:
75+
76+```
77+http://localhost:8080/~/channel/1601844290-ae45b
78+```
79+
80+Let's examine the parts. A channel is simply a URL in this pattern: `{url}/~/channel/{uid}` where `{uid}` is a string of your choosing. Most libraries default to the current unix time plus six hexadecimal characters. Your program should determine a channel for its current session and store that in its state.
81+
82+The channel does not yet exist in Urbit, however. To subscribe to events on this URL, you must first make a request (PUT) to Urbit on this URL. The simplest way to do this is to `hi` ourselves, as if we had entered `|hi our` in the dojo. A `hi` is analogous to a ping, and does not manipulate state. Let's learn how to make requests using this as an example.
83+
84+### Making Requests
85+
86+All requests will take the form of sending a message. Messages can take different forms, such as `subscribe`s, `ack`s, and `poke`s. These are called actions and there are more than these, but these will cover most basic use cases. You can think of them as a somewhat more sophisticated HTTP grammar. A message always requires an `id` and an `action`. Other fields depend on the specific action.
87+
88+Let's look at the structure of a message by examining the most basic `hi` we will send.
89+
90+```js
91+{
92+ 'id': 1, // Required. A sequential ID. Keep track of which messages you have sent.
93+ 'action': 'poke', // Required. The action to take. poke is the most basic way of sending data, like HTTP POST
94+ 'ship': 'zod', // Required by poke. The ship on which to perform the poke. You can only poke foreign ships with JSON, but this is the authenticated ship.
95+ 'app': 'hood', // Required by poke. The Urbit app to which to send the data.
96+ 'mark': 'helm-hi', // Required by poke. The "mark," or type, of data being sent.
97+ 'json': 'Opening airlock' // Required by poke. The actual data being sent.
98+}
99+```
100+
101+Let's open our channel by sending the following request using cURL (**remember to change the cookie**):
102+
103+```bash
104+curl --header "Content-Type: application/json" \
105+ --cookie "urbauth-~zod=0v3.fvaqc.nnjda.vude1.vb5l6.kmjmg" \
106+ --request PUT \
107+ --data '[{"id":1,"action":"poke","ship":"zod","app":"hood","mark":"helm-hi","json":"Opening airlock"}]' \
108+ http://localhost:8080/~/channel/1601844290-ae45b
109+```
110+
111+If you switch to your fakezod's dojo, you should see `< ~zod: Opening airlock`.
112+
113+Note that in the JSON that we sent via `--data`, the payload is wrapped in `[]`. This is because we can send multiple messages in a single payload, and Eyre expects a list of items, even if we are only sending one.
114+
115+You will always receive a `204` status code if the `PUT` request successfully reached Urbit, authentication succeeded, and the payload was valid. This is merely an HTTP status code, however. If the request failed within Urbit itself, however, you will receive a "nack" event that you will have to process separately.
116+
117+Let's look at how to receive events from Urbit.
118+
119+### Subscribing to Events
120+
121+Now that Urbit has opened an Eyre channel at our URL, we can watch for events on that URL by sending a `subscribe` message. Let's look at the anatomy of a `susbcribe`:
122+
123+```js
124+{
125+ 'id': 2, // Required. This is the next message we are sending, so we give it the next ID.
126+ 'action': 'subscribe', // Required.
127+ 'ship': 'zod', // Required by subscribe.
128+ 'app': 'chat-view', // Required by subscribe. In this case, we want to watch events that occur in the chat-view app, which is responsible for handling incoming chats.
129+ 'path': '/primary' // Required by subscribe. All apps have different path structures. In the case of chat-view, this is where we see all incoming chats.
130+}
131+```
132+
133+This is all we need to send Urbit to say "On this URL through which I am sending information, send me SSEs whenever something occurs on this app at this path."
134+
135+You should be able to send this information if you were able to send the above cURL example. However, we now need to be able to listen to the SSEs. The `EventSource` object is available for JavaScript in the browser context, as this is why SSEs were invented, but there should be a library for it in your chosen language. Take a look at a Browser JavaScript example:
136+
137+```js
138+const eventSource = new EventSource('http://localhost:8080/~/channel/1601844290-ae45b', {
139+ withCredentials: true // Required, sends your cookie
140+});
141+
142+eventSource.addEventListener('message', function (event) {
143+ ack(Number(event.lastEventId)); // See section below
144+ const payload = JSON.parse(event.data); // Data is sent in JSON format
145+ payload.id === event.lastEventId; // The SSE spec includes event IDs. This information is duplicated in the payload.
146+ const data = payload.json; // Beyond this, the actual data will vary between apps
147+});
148+
149+eventSource.addEventListener('error', function (event) {
150+ handleError(event);
151+});
152+
153+```
154+
155+### Handling Received Events
156+
157+Once you have received an event, it is expected that you will "ack" or "acknowledge" that you have received them. To do so, simply send a message in the following format:
158+
159+```js
160+{
161+ 'id': 3, // Required. Picking up where we left off
162+ 'action': 'ack', // Required.
163+ 'event-id': 15, // Required by ack. Whichever SSE of which you are acknowledging receipt
164+}
165+```
166+
167+### Unsubscribing from Events
168+
169+You may want to stop receiving events from a particular app path, but you don't want to close the channel altogether yet. Let's look at how to do that. Take a look at the example for subscribing. We sent that message with `id: 2`. We will use that ID to cancel the relevant subscription:
170+
171+```javascript
172+{
173+ 'id': 4, // Required. We always increment the ID as we send messages.
174+ 'action': 'unsubscribe', // Required.
175+ 'subscription': 2 // Required by unsubscribe. This corresponds to the id of a subscribe message sent earlier.
176+}
177+```
178+
179+### Deleting a Channel
180+
181+You should clean up your channel when able. To do so, simply send a `delete` message and Eyre will handle the rest so your program can safely exit.
182+
183+```javascript
184+{
185+ 'id': 5, // Required.
186+ 'action': 'delete' // Required.
187+}
188+```
189+
190+## Other Operations
191+
192+There are other operations which require authentication but do not require the use of a channel. Some operations are app-specific and will not be enumerated here, but there are two operations that exist across Urbit: `scry` and `spider`.
193+
194+### Scrying
195+
196+Scrying lets you see what an app has exposed at a particular path. It does not manipulate state.
197+
198+It takes the form `{url}/~/scry/{app}{path}.{mark}`
199+
200+ Let's get the base hash of our fakezod in the same way that Landscape does it.
201+
202+```bash
203+curl --header "Content-Type: application/json" \
204+ --cookie "urbauth-~zod=0v3.fvaqc.nnjda.vude1.vb5l6.kmjmg" \
205+ --request GET \
206+ http://localhost:8080/~/scry/file-server/clay/base/hash.json
207+```
208+
209+Note the use of a `GET` request.
210+
211+In this example we're scrying the `file-server` app at the path `/clay/base/hash` and using the `json` mark, which is most common. We receive `"0"` which is correct because we are at the top level of the hierarchy using a fake ship.
212+
213+Scry will fail with a 500 or return a 404 if no data is found.
214+
215+### Running Threads with Spider
216+
217+Running threads is an exception to the rule that we outlined in the section on channels. It uses a `POST` request and both manipulates state and receives information back. It also exposes the ability to send a sequence of commands, i.e. a "thread," hence the name.
218+
219+It takes the form `{url}/spider/{inputMark}/{threadname}/{outputmark}.json`
220+
221+This should be considered an advanced technique, but the basic structure of a request can be seen here:
222+
223+```bash
224+curl --header "Content-Type: application/json" \
225+ --cookie "urbauth-~zod=0v3.fvaqc.nnjda.vude1.vb5l6.kmjmg" \
226+ --request POST \
227+ --data '[{"foo": "bar"}]' \
228+ http://localhost:8080/spider/graph-view-action/graph-create/json.json
229+
230+```
arvo/ford/_index.mdnew file+6
@@ -0,0 +1,6 @@
1++++
2+title = "Ford"
3+weight = 60
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
arvo/ford/ford.mdnew file+223
@@ -0,0 +1,223 @@
1++++
2+title = "Overview"
3+weight = 1
4+template = "doc.html"
5+aliases = ["/docs/learn/arvo/ford/"]
6++++
7+
8+*The Ford vane was refactored so drastically in 2020 that it was completely
9+ removed as a standalone vane, with its functionality merged into
10+ [clay](@/docs/arvo/clay/clay.md). The following is a reproduced [blog
11+ post](https://urbit.org/blog/ford-fusion/) that documents this transformation,
12+ which we called "Ford Fusion".*
13+
14+Ford Fusion was an overhaul of Urbit's over-the-air upgrade process and a rewrite of its build system. The new update system corrects a few long-standing bugs with the previous one, and the new build system is simpler, smaller (by around 5,000 lines), and easier to manage.
15+
16+Since deployment of Ford Fusion to the livenet in late June, over-the-air updates (OTAs) have been much smoother. Before Ford Fusion, it was common for an OTA to take several hours, use too much memory, and leave ships in inconsistent states. After Ford Fusion, multiple OTAs have been pushed out, including kernelspace changes, and most users didn't even notice.
17+
18+Urbit has always been able to update itself OTA, but this process has often been rocky. Updating an operating system kernel on-the-fly is a difficult problem in general, like performing heart replacement surgery on yourself while running a marathon. Code that allows Linux to update its kernel in this way became a startup called Ksplice, won multiple awards, and sold to Oracle. Even that, as impressive as it is, and as brilliant as its [programmers](https://nelhage.com) are, can only perform certain limited kinds of patches to the kernel.
19+
20+Urbit isn't exactly a traditional operating system, so the comparison is somewhat unfair, but the purpose of better architecture is to create unfair comparisons. In this case, because the Nock layer is frozen, upgrading everything above that layer is easier. Upgrades are also facilitated by pure-functional semantics, transactional event processing, a type system oriented toward concrete data, and orthogonal persistence. These features make it feasible for Urbit to upgrade
21+itself in the general case, not just some special cases.
22+
23+Ford Fusion has fixed the major upgrade issues of the past by guaranteeing three properties that in retrospect are obvious requirements, but, like much of Urbit, took many years and rewrites to identify as such:
24+- Atomic: the update should complete or fail in one transaction. If it
25+ fails, the system shouldn't get stuck.
26+- Self-contained: there must be no implicit dependencies or hysteresis
27+ (dependence on previous system states) when building the new software
28+ from source.
29+- Ordered: updates must be monotonically sequenced from the system's
30+ lowest layer to highest.
31+
32+Let’s walk through them one by one.
33+
34+### Atomic
35+
36+In previous versions of Urbit, updates failed atomicity by deferring parts of the update to later events, which are separate transactions that can fail independently. Generally, each deferral causes an exponential increase in the number of failure states that needed to be handled.
37+
38+We've learned that asynchronicity is an entropic state. A system will tend toward more asynchronicity over time unless effort is put into keeping it synchronous. [As Jonathan Blow has noted](https://youtu.be/pW-SOdj4Kkk?t=2547), the language server protocol has turned every editor plugin into a distributed system, since now it has to communicate asynchronously with the main editor process.
39+
40+Consider an update system that took multiple Arvo events to complete. An ad-hoc higher-level transaction system would need to be built to roll back the effects of the first few events in case of failure. It’s important for various parts of the system to be able to emit effects on upgrade; since those effects would need to be rolled back if a later event in this upgrade fails, the system would need to maintain a queue of those events and only apply them once all the other upgrade events have completed.
41+
42+Note that the asynchronicity has now spread. Some effects that would normally be guaranteed to be processed synchronously might now be asynchronous. Entropy has begun to take hold, chipping away at the set of invariants the system is capable of guaranteeing.
43+
44+This observation is not purely theoretical. False modularity was the cause of internal asynchronicity in Clay where it had to wait for responses in a complex dance with Ford, which was another vane (Arvo kernel module); moving Ford into Clay allowed function calls that were synchronous from Clay’s perspective, which allowed further simplifications, culminating in about a twenty percent reduction of source code size of the Arvo kernelspace.
45+
46+[Steve Yegge's "platform
47+rant"](https://gist.github.com/chitchcock/1281611) describes a Bezosian
48+edict prohibiting synchronous communication among modules through direct
49+linking. This can be seen as an acknowledgment of the difficulty Amazon
50+was going to have when it needed to turn internal services external. If
51+your software needs to run in hell, build it that way from the start.
52+
53+An Urbit ship is not an enterprise SaaS product and does not need to run in this hell; it exists for just one person, with natural pressure pushing it in the opposite direction from Amazon’s web services. Instead of needing a ship’s state and functionality sharded into microservices strewn across multiple clusters, an Urbit instance is easiest to manage as a single server with all its state unified into one data structure and its event log stored as one totally ordered sequence of state updates -- the antithesis of a distributed system.
54+
55+### Self-Contained
56+
57+Before Ford Fusion, each commit to the Clay filesystem validated its files using filetypes (called “marks”) defined by files in the previous commit. This could cause bugs if the filetype definitions had changed in a backward-incompatible manner. It also meant a commit could not add both a new filetype and new files of that type; instead, you needed two commits: one to define the filetypes, and a second to add files of that new type. More theoretically, it caused history-dependence. The validated contents of files in a commit could vary based on the history of commits that led to this one.
58+
59+Another way source code failed to be self-contained was that it had access to symmetry-breaking information at build-time, namely ship, desk (Urbit's answer to a git branch), and (faked) date. A build recipe should be able to shared, cached, and rerun without dependence on local conditions, so user code now no longer learns its ship, desk, or date until runtime.
60+
61+Source code also had build-time access to Urbit's immutable global namespace, called the “scry namespace”, which the kernel makes available as an implicit argument to userspace Hoon code. The scry namespace is immutable and referentially transparent, i.e. a request must always yield the same result for all time, but if an agent asks the kernel for a resource that’s from the future, hosted on another ship, or to which that agent doesn’t have permission, the kernel will deny the request.
62+
63+If the kernel denies a scry request that user code made during the build process, the build system has no choice but to treat it as a nondeterministic error. Nondeterministic errors can never be fully eradicated, if for no other reason than that the user always has the option to defenestrate the machine—there's nothing deterministic about that. But we try to minimize them, and especially to minimize uncertainty as to under what conditions they might occur.
64+
65+No build should be killed by the absence of files outside the desk, so as of this update, user code can no longer scry at build time. Once built, userspace programs can scry if run in a context with a scry handler; a Gall agent's runtime scry requests still work just fine.
66+
67+### Ordered
68+
69+The final kind of failure fixed by Ford Fusion was the lack of ordered layering during a software update. The most common form of this failure was that old Ford had a tendency to try to build userspace code using the previous version's standard library. This didn't work too well, unsurprisingly.
70+
71+Emerging from this underworld required making a number of changes to the Arvo kernel, Clay, Gall, and the procedure for kernel updates. To avoid turning into a pillar of salt, I'll skip the details of how the old system worked and instead describe the new update procedure.
72+
73+## How Updates Work Now
74+
75+These are the layers of the stack that update themselves on the fly, from lowest to highest:
76+
77++ hoon: the hoon language definition and compiler, defined in `/sys/hoon/hoon`
78++ arvo: the arvo kernel proper and related type definitions, in `/sys/arvo/hoon`
79++ zuse: the standard library, in `/sys/zuse/hoon`
80++ vanes: arvo kernel modules, including clay itself, in folder `/sys/vane`
81++ userspace: apps, marks, ancillary source code like libraries, and user data
82+
83+An update to one layer necessitates a reload of all layers above it; e.g. a change to Zuse should trigger updates to the vanes and userspace. Conversely, an update to a higher layer should not cause a spurious reload of lower layers, which should not be affected by the change; for example, an update to just userspace should not cause any reloads of system code.
84+
85+Clay is responsible for enforcing the layering of updates. An update to a module is triggered when an attempt is made to commit a change to Clay that affects one or more files needed to build the module. For example, if the 'foo' agent's source, defined in `/app/foo/hoon`, imports the 'bar' library from `/lib/bar/hoon`, then a modification to `/lib/bar/hoon` triggers an update to the 'foo' agent. All vanes and userspace files depend on Zuse, which depends on the Arvo and Hoon sources, so a change to the Hoon, Arvo, or Zuse sources will trigger updates to all vanes and userspace files.
86+
87+When asked to perform a commit, Clay determines which layers need to be updated based on which files have changed and which modules depend on those files. For now, all running programs load their source from the `%home` desk, so only changes to `%home` trigger stateful updates. Files in other desks can be built, but not installed into the system. This might be relaxed in the future.
88+
89+The process of updating varies by layer. The Hoon and Zuse layers are stateless, so their newly rebuilt cores (Nock executables) must be stored (somewhere in the system’s Nock tree, in memory; remember, Urbit is a single-level store), but they have no state that would need to be migrated. The Arvo kernel, vanes, and userspace agents are all live, stateful programs, so in order to update one of those, the system must extract the state from the old program, pass that data into the newly built program, then discard the old program and store the new one. Arvo and agent state injection routines can emit effects, but vane updates cannot.
90+
91+To work around this limitation, Gall has a two-phase update process. First it enters a dormant “pupal” phase that stores not running agent cores, but only the agent states that the old Gall had extracted from its agents. When Clay notifies Gall that its agents have been rebuilt, Gall “molts” back into normal functionality by loading the agent cores from Clay and then running their `+on-load` routines to inject the old state.
92+
93+If there's a change to files in `/sys` on the `%home` desk, Clay asks Arvo to update kernelspace. Clay sends a sequence of moves (effects) to Arvo to ask Arvo to perform any necessary updates to hoon, the kernel, Zuse, and vanes. This sequence is terminated by an extra move back to Clay itself, which will be received by the updated version of Clay after migrating its state. The rebuilt Clay can then use the newly rebuilt version of Zuse to rebuild userspace and notify clients of the update. One client is Gall, which molts when Clay notifies it.
94+
95+Clay triggers updates, but the Arvo kernel is responsible for performing updates to all kernelspace layers, and Gall is responsible for updating userspace agents. Agents are stored in Gall's state, but all other layers are stored directly in the Arvo core's state, so the Arvo kernel contains the routines that reload Hoon, the kernel itself, Zuse, and the vanes.
96+
97+The Arvo kernel reloads itself by receiving its new source code as a `%lyra` move from Clay, compiling this source into a core with empty state, then calling the new core's `+load` routine with the relevant parts of the old state. The state passed to the new Arvo now includes not just the vane cores and their states, but also the Arvo "duct" call `stack`, which maintains a stack of queues of moves to be passed from one vane to another, and a list of effects to emit to Unix at the end of the current Arvo event. If needed, Arvo could migrate the outstanding moves themselves -- if, say, the duct datatype changes.
98+
99+Passing the Arvo call stack state to new Arvo allows a kernel update to happen in the middle of a more complex event without disturbing other sequences of processing steps happening concurrently in the vanes.
100+
101+This entire update process happens in one Arvo event and doesn’t break event-dispatching semantics. This not only provides atomic rollback, but allows the update to be combined with other actions into a larger transaction -- for example, to stage complex changes, user code could trigger two kernel updates in a row, both in the same event.
102+
103+Note that this is the opposite situation from the entropically leaking asynchronicity described earlier. Now the guarantees don’t deteriorate; they can be composed into stronger guarantees.
104+
105+## How Clay Validates a Desk
106+
107+A desk is Urbit's answer to a git branch. It's almost identical, except all files are typed and validated, and whenever a commit becomes the equivalent of git’s ‘HEAD’, it’s assigned a semantically meaningful revision number, and all files are typed and validated.
108+
109+If Clay has been asked to perform a commit, it needs to validate all the files in this desk and notify all subscribers to live queries of this desk's data. Gall, for example, maintains live queries on builds of its live agents. Validation uses the Ford build system, which as of this update is no longer a standalone vane but a core within Clay.
110+
111+A Clay commit, like a git commit, is specified as the current value of all its changed files (and, separately, references its parent commits by hash), not as the diff from a parent commit. Unlike git, Clay is typed, and every file must be validated according to its "mark". A mark is named like a file extension, e.g. `%txt`, `%png`, or `%noun`, and Clay maintains a mapping from that name to behaviors of values of that type under various operations. The last segment of any Clay path specifies the mark to use for operations on that file, including validation.
112+
113+Mark operations include conversion to and from other marks (such as converting `%json` to `%txt`), revision control operations (diff, patch, and merge), and validating an untyped noun. Operations for mark `%foo-bar` are defined by a core built using the source code at `/mar/foo-bar/hoon`, or if that doesn't exist, at `/mar/foo/bar/hoon`.
114+
115+Consider a file at `/web/foo/json`. In order to validate this file, Clay must load the mark definition core and use its validation routine to ensure the untyped value of `/web/foo/json` is in fact valid JSON. To obtain this core, Clay must build the file at `/mar/json/hoon` from source and then process the resulting raw mark core using some mild metaprogramming to get a standard interface core for dealing with marks, called a `$dais`, whose type is defined in Zuse.
116+
117+Since building a source file only makes sense if the file has been validated as a `%hoon` file, but mark definitions themselves must be built from source, there's a logical dependency cycle -- who validates the validators? To break this cycle, Clay hard-codes the validation of `%hoon` files. This allows mark definitions to be built from source, and in fact any file can depend on any other file of any mark as long as there are no cycles. As of Ford Fusion, Ford performs a cycle check to ensure acyclicity.
118+
119+Since building a file is a pure function, Clay memoizes the results of all builds, including builds of marks, mark conversions, and hoon source files. These memoization results are stored along with the desk and are used by later revisions of that desk. Future work should allow merge commits to pull memoized builds from all parents, but for now only the previous revision of the current desk is used. This is a major simplification of previous Ford architectures, which maintained much more complex caches with less clear eviction semantics. Now on every commit, we just throw away any unused memoized builds from the previous revision's Ford cache.
120+
121+Once Clay has validated every file in this new revision of a desk, it constructs and sends updates to any subscriptions that other vanes or agents have requested. More Ford builds may be run to fulfill these requests, including builds for any running agents whose dependencies changed in this commit.
122+
123+When Gall receives a newly rebuilt agent from Clay, it calls the gate produced by the `+on-load` arm of the new agent with the state extracted from the old agent. If there is a crash in any `+on-load` calls or in the handling of any effects they emit (which can include more agent activations), then the whole event crashes, canceling the commit. This effectively gives any agent the ability to abort a commit by crashing.
124+
125+It is a bit counterintuitive that an app reload failure could prevent a kernel update. The reason is that we don't want the system to update itself into a broken state. An Urbit can be rendered practically unusable by the presence of broken agents, even if the kernel hasn't lost integrity,
126+so it's kinder to the user not to break their agents by installing an incompatible kernel update. This also puts virtuous pressure on kernel developers not to "break userspace", the importance of which has been insisted on for decades by Linus Torvalds, among others.
127+
128+If an agent does crash a commit event that included a kernel update, the attempted commit is now trivially rolled back, and the system can deliver an error message to the user. This does not leave the system in an inconsistent or stuck state, so the user could modify the failing agent and try the kernel update again later. Supporting better workflows for keeping third-party agents up-to-date will be an important aspect of Urbit’s upcoming software distribution work.
129+
130+## Ford Build Semantics
131+
132+### The Three Types of Ford Builds: Files, Marks, and Casts
133+
134+The Ford build semantics have been simplified. There are now three kinds of builds that Ford can perform: files, marks, and casts, all of which happen synchronously as function calls inside Clay and are available (without memoization) as scry interfaces.
135+
136+#### File Builds
137+
138+A file build takes in a filepath containing Ford runes and Hoon source, runs the Ford runes to perform imports, and then compiles the source, producing a `$vase`, a noun tagged with its Hoon type.
139+
140+Clay exposes file builds into the scry namespace with `%ca`: as an example, `.^(vase %ca /~zod/home/3/lib/sole/hoon)` will build the `sole` library.
141+
142+#### Mark Builds
143+
144+A mark build produces a `$dais` mark-interface core. It first performs a file build on the Hoon file in `/mar` that defines the mark core, then it does some metaprogramming to make the operations more convenient to use. If the raw mark core delegated revision control operations to another mark core, the mark build will also load the delegate mark core and resolve the result into the `$dais`.
145+
146+Clay exposes mark builds into the scry namespace with `%cb`: as an example, `.^(dais:clay %cb /~zod/home/3/mar/foo/hoon)` builds a `$dais` for the `%foo` mark.
147+
148+#### Cast Builds
149+
150+A cast build produces a `$tube`: a gate that takes a value of one mark as input and converts it to a valid value of another mark or crashes. To convert from mark `%foo` to mark `%bar`, Clay tries the following operations, in order:
151+
152++ direct grow from `%foo`
153++ direct grab from `%bar`
154++ indirect jump from `%foo` through `%qux`
155++ indirect grab from `%bar` through `%qux`
156+
157+The `%foo` mark can “grow to” `%bar` by providing an arm in its `+grow` core named `+bar`. `%bar` can convert from `%foo` using a `+foo` arm in its `+grab` core. `%foo` can also chain a conversion through an intermediary using an arm in its `+jump` core, and `%bar` can specify an “indirect grab” by having a `+grab` arm produce a delegate mark instead of directly defining a conversion gate.
158+
159+Clay exposes cast builds into the scry namespace with `%cc`: as an example, `.^(tube:clay %cc
160+/~zod/home/3/foo/bar)` builds a `$tube` conversion gate from `%foo` to `%bar`.
161+
162+### Ford Runes
163+
164+There are now only four Ford runes. A file can contain zero, one, or many of each, but each Ford expression can only be one line, and they must be in the standard order of `/-`s, `/+`s, `/=`s, and then `/*`s.
165+
166+```
167+/- foo, *bar, baz=qux
168+```
169+
170+The `/-` rune imports a structures file from `/sur`. You can import it as just `foo`, in which case the build result of that file (usually a core with mold definitions) will be pinned into the compilation subject with the face `foo`. If you prefix it with a `*` as in `*bar`, the result will be pinned into the subject with no face; if the structures file compiled to a core, this exposes all the arms into the namespace of the compilation subject. Finally, if you import it as `baz=qux`, the `baz` face will be applied instead of `qux`. This is similar to "import as" in other languages.
171+
172+```
173+/+ foo, *bar, baz=qux
174+```
175+
176+The `/+` rune imports a library file from `/lib`. Aside from the different source folder, the syntax and semantics are the same as for `/-`.
177+
178+```
179+/= clay-raw /sys/vane/clay
180+```
181+
182+The `/=` rune imports the result of building a hoon file from a user-specified path (the second argument), wrapping it in a face specified by the first argument. The final `/hoon` at the end of the path must be omitted. This is mostly useful for importing a file for testing. The file at the specified path will be built as a normal userspace hoon file; i.e. its compilation subject will be Zuse augmented with the results of any Ford runes it has at the top of the file.
183+
184+```
185+/* hello-gen %hoon /gen/hello/hoon
186+```
187+
188+The `/*` rune imports the contents of a file in the desk, specified as the third argument with the full path including the trailing mark, converted to the mark specified by the second argument, and pinned into the compilation subject wrapped in the face specified by the first argument. This can be used to import static data at build-time, such as a data file, a media file, or, in the case of this example, a hoon file as source text rather than already built.
189+
190+A valid userspace hoon file must contain a nonempty list of hoons (hoon source expressions) below the Ford runes, separated by gap (more than one space, or at least one newline). The system wraps this list of hoons in a `=~` expression so that the result of the previous hoon is used as the subject of the next hoon. The result of the Ford runes is used as the compilation subject for this `=~` hoon; informally, the shape of the compilation subject can be thought of as:
191+
192+```
193+:* fastar-2 fastar-1
194+ fastis-2 fastis-1
195+ faslus-2 faslus-1
196+ fashep-2 fashep-1
197+ <zuse>
198+==
199+```
200+
201+## Future Work
202+
203+Urbit still needs to make better use of desks other than `%home` and the development process should be adjusted given the tighter coupling between source code and kernel and tighter criteria for accepting an update.
204+
205+This work also hopefully provides a good foundation of a package management and software distribution system for Urbit. As `~wicdev-wisryt` has said, a user should be able to run `|install
206+~norsyr-torryn/canvas` to load and build remote source. No one should experience dependency hell on Urbit, but we're not there yet.
207+
208+At least now, building a desk has no dependencies, other than a Ford with a compatible Hoon compiler. No decisions have been made on this yet, but
209+Ford might get moved to inside the desk, possibly by making Zuse callable. This could allow a desk to expose a Nock interface in addition to a typed Hoon interface, which could even let a desk be used as a "pill" bootloader.
210+
211+## Conclusion
212+
213+`~littel-ponnys` and I spent most of 2018 rewriting Ford with the intent of improving its performance. Compared to its predecessor, its result was better in some ways but worse in others. The caching system was labyrinthine and poorly factored, making the system difficult to debug or prove correct, even informally. Some things were faster, but the caching and dependency tracking were actually complex enough that a number of common operations, like mark conversion, were too slow.
214+
215+In early 2020, `~master-morzod` suggested moving Ford into Clay to reduce asynchronicity. It seemed absurd at first, but at some point I realized I could combine that idea with a simpler build-caching scheme and self-contained desk builds, and `~wicdev-wisryt` realized he could use that to further simplify Clay’s commit and merge code, which he did as part of this project.
216+
217+The first time I rewrote Ford, it took me six months, with help from `~littel-ponnys`, and it weighed in at 6,000 lines of code. The second time, in late 2018, took a few weeks. The third time, in January 2020, took a week. I wrote `+ford` in Ford Fusion in one long day, and it’s about 500 lines of synchronous, functional code.
218+
219+It has taken me two or three years to understand this problem as well as I do, and I expect there are parts of it I still don’t understand. The code itself isn’t the issue; it’s finding the right answer to ontological and teleological questions. What *is* Ford? What will it be in a hundred years? I’m confident Ford Fusion is more similar than its predecessor to the Ford of 2120, because it’s smaller, more functional, and easier to understand and administer.
220+
221+As an engineering discipline and organizational practice, working on a system intended to be frozen yields surprising simplifications like this every so often. Urbit is now reaching the point where we’re starting to see more of the obsidian edges of the frozen future system emerge from the lava.
222+
223+
arvo/gall/_index.mdnew file+6
@@ -0,0 +1,6 @@
1++++
2+title = "Gall"
3+weight = 70
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
reference/vane-apis/gall.md → arvo/gall/gall-api.mdrenamed+2−2
@@ -1,6 +1,6 @@
11+++
2−title = "Gall"
3−weight = 5
2+title = "API Reference"
3+weight = 10
44template = "doc.html"
55+++
66
tutorials/arvo/gall.md → arvo/gall/gall.mdrenamed+3−3
@@ -1,6 +1,6 @@
11+++
2−title = "Gall Apps"
3−weight = 8
2+title = "Overview"
3+weight = 1
44template = "doc.html"
55aliases = ["/docs/learn/arvo/gall/"]
66+++
@@ -780,7 +780,7 @@ computation time. You can run this at the dojo with `-time ~s1`.
780780```
781781
782782This is uses `lib/ph/io` to run a pH test. Aqua and pH are described
783−[elsewhere](@/docs/tutorials/hoon/hoon-school/aqua.md), but if you've initialized Aqua by running `|start %aqua` and
783+[elsewhere](@/docs/hoon/guides/aqua.md), but if you've initialized Aqua by running `|start %aqua` and
784784`:aqua +solid`, then you can run `-ph-add` to execute this thread.
785785
786786It starts by running some virtualization initialization with
arvo/gall/tutorial.mdnew file+14
@@ -0,0 +1,14 @@
1++++
2+title = "Tutorial"
3+weight = 5
4+template = "doc.html"
5++++
6+
7+[**The Complete Guide to Gall and Userspace Apps on
8+Urbit**](https://github.com/timlucmiptev/gall-guide), or more colloquially
9+referred to as just "the Gall Guide," was contributed by a member of our
10+community named `~timluc-miptev`.
11+
12+Our plan is ultimately to make this part of the official documentation found
13+here, but for now, know that it has our official seal of approval and is
14+actively maintained.
arvo/iris/_index.mdnew file+6
@@ -0,0 +1,6 @@
1++++
2+title = "Iris"
3+weight = 80
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
reference/vane-apis/iris.md → arvo/iris/iris-api.mdrenamed+2−2
@@ -1,6 +1,6 @@
11+++
2−title = "Iris"
3−weight = 6
2+title = "API Reference"
3+weight = 10
44template = "doc.html"
55+++
66
arvo/jael/_index.mdnew file+6
@@ -0,0 +1,6 @@
1++++
2+title = "Jael"
3+weight = 90
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
arvo/jael/jael-api.mdnew file+393
@@ -0,0 +1,393 @@
1++++
2+title = "API Reference"
3+weight = 10
4+template = "doc.html"
5++++
6+
7+In this document we describe the public interface for Jael. Namely, we describe
8+each `task` that Jael can be `%pass`ed, and which `gift`(s) Jael can `%give` in return.
9+
10+
11+## Tasks
12+
13+### `%dawn`
14+
15+This `task` is called once per ship during the vane initialization
16+phase immediately following the beginning of the [adult
17+stage](@/docs/arvo/overview.md#structural-interface-core). This `task` is `%pass`ed to Jael by Dill, as Dill is the first vane to be loaded for
18+technical reasons, though we consider Jael to be the true "first" vane. This
19+`task` is only used for ships that will join the Ames network - fake ships (i.e.
20+made with `./urbit -F zod`) use the `%fake` `task` instead.
21+
22+`%dawn` is used to perform a sequence of initialization tasks related to saving
23+information about Azimuth and the Ames network and booting other vanes for the first time. Upon
24+receipt of a `%dawn` `task`, Jael will:
25+ - record the Ethereum block the public key is registered to,
26+ - record the URL of the Ethereum node used,
27+ - save the signature of the parent planet (if the ship is a moon),
28+ - load the initial public and private keys for the ship,
29+ - set the DNS suffix(es) used by the network (currently just `arvo.network`),
30+ - save the public keys of all galaxies,
31+ - set Jael to subscribe to `%azimuth-tracker`,
32+ - `%slip` a `%init` `task` to Ames, Clay, Gall, Dill, and Eyre, and `%give` an `%init`
33+`gift` to Arvo, which then informs Unix that the initialization process has concluded.
34+
35+#### Accepts
36+
37+`%dawn` accepts a `dawn-event`:
38+
39+```hoon
40+ +$ dawn-event
41+ $: =seed
42+ spon=(list [=ship point:azimuth-types])
43+ czar=(map ship [=rift =life =pass])
44+ turf=(list turf)
45+ bloq=@ud
46+ node=(unit purl:eyre)
47+ ==
48+```
49+
50+The `seed` is `[who=ship lyf=life key=ring sig=(unit oath:pki)]`. `who` is the
51+`@p` of the ship running the `task`, `lyf` is the current ship key revision,
52+`key` is the ship's private key, and `sig` is the signature of the ship's parent
53+planet if the ship is moon and `[~]` otherwise.
54+
55+`spon` is a `list` of ships and their `point`s in the ship's sponsorship chain,
56+all the way to the galaxy level. `point:azimuth-types` contains all Azimuth
57+related data and can be found in `zuse.hoon`.
58+
59+`czar` is a map from each galaxy's `@p` to its `rift`, `life`, and public key (`pass`).
60+
61+`turf` is a `list` of DNS suffixes used by the Ames network, which for now is
62+just `arvo.network`.
63+
64+`bloq` is the number of the Ethereum block in which the ship registered its keys
65+with the Azimuth smart contract.
66+
67+`node` is the URL of the Ethereum node used to register the ship's keys with Azimuth.
68+
69+#### Returns
70+
71+Jael `%give`s an `%init` `gift` to Unix. This occurs after the Dill `%slip`
72+init.
73+
74+#### Slips
75+
76+Jael `%slip`s `%init` `task`s to each of Eyre, Dill, Gall, Clay, and Ames, in
77+that order.
78+
79+
80+### `%fake`
81+
82+This `task` is used instead of `%dawn` when creating a fake ship via the `-F`
83+flag when calling the Urbit binary. It performs a subset of the actions that
84+`%dawn` performs, modified to accommodate the fake ship.
85+
86+`%fake` endows the ship with a private key and a public key deterministically derived from the
87+ship's `@p`. It sets `fak.own.pki` to `%.y`, which is the bit that determines
88+whether or not a ship is fake. Other parts of the Jael state, such as the
89+sponsorship chain and galaxy public keys are left at their bunted values.
90+
91+#### Accepts
92+
93+```hoon
94+[=ship]
95+```
96+`ship` is the `@p` of the fake ship being created.
97+
98+#### Returns
99+
100+Jael `%give`s a `%init` `gift` to Unix.
101+
102+#### Slips
103+
104+In response to a `%fake` `task`, Jael `%slip`s a `%init` `task` to each of Eyre, Dill, Gall,
105+Clay, and Ames, in that order.
106+
107+
108+### `%listen`
109+
110+Sets the source that the public keys for a set of `ship`s should be obtained
111+from. This can either be a Gall app that communicates with an Ethereum node such
112+as `%azimuth-tracker`, as in the case for galaxies, stars,
113+and planets, or a ship, as in the case of a moon or comet.
114+
115+After setting the source, Jael will then subscribe to the source for updates on
116+public keys for the given ships.
117+
118+
119+#### Accepts
120+
121+```hoon
122+[whos=(set ship) =source]
123+```
124+
125+`whos` is the set of ships whose key data source is to be altered. `source` is
126+`(each ship term)`, where `term` will ultimately be treated as a handle for a
127+Gall app.
128+
129+A `%listen` `task` with empty `whos` will set the default source to `source`.
130+This is the source used for all ships unless otherwise specified.
131+
132+When the `source` is a `term`, Jael looks into its state to find what source has
133+been previously assigned to that `term` and will henceforth obtain public keys for
134+ships in `(set ship)` from there. In practice, this is always
135+`%azimuth-tracker`, but the ability to use other sources is present.
136+
137+When the `source` is a ship, Jael will obtain public keys for ships in `(set ship)` from
138+the given ship. By default, the `source` for a moon will be the planet that
139+spawned that moon, and the `source` for a comet will be the comet itself.
140+
141+#### Returns
142+
143+This `task` returns no `gift`s.
144+
145+#### Passes
146+
147+If the `source` is a `term`, Jael will `%pass` a `%deal` `task` to Gall asking to
148+`%watch` the app given by `source` at path `/`.
149+
150+If the `source` is a `ship`, Jael will `%pass` a `%plea` `task` to Ames wrapping
151+a `%public-keys` `task` intended for Jael on the `ship` specified by `source`.
152+
153+
154+### `%meet`
155+
156+This `task` is deprecated and does not perform any actions.
157+
158+#### Accepts
159+
160+```hoon
161+[=ship =life =pass]
162+```
163+
164+#### Returns
165+
166+This `task` returns no `gift`s.
167+
168+
169+### `%moon`
170+
171+This `task` sets the public keys of a moon.
172+
173+#### Accepts
174+
175+```hoon
176+[=ship =udiff:point]
177+```
178+
179+The `ship` is the `@p` of the moon. The `task` will be a no-op if the `@p` is not that
180+of a moon, or if the moon does not belong to the ship.
181+
182+`udiff:point` contains the new public keys to be stored for the moon.
183+
184+#### Returns
185+
186+This `task` returns no `gift`s.
187+
188+
189+### `%nuke`
190+
191+This `task` cancels subscriptions to Jael's state from a given set of `ship`s.
192+This `task` works differently depending on whether the `task` originated locally
193+or remotely.
194+
195+#### Accepts
196+
197+```hoon
198+[whos=(set ship)]
199+```
200+`whos` is the `set` of `ship`s from which subscriptions are to be canceled.
201+
202+#### Returns
203+
204+This `task` returns no `gift`s.
205+
206+
207+### `%plea`
208+
209+This `task` is `%pass`ed to Jael from Ames. `%plea`s are wrappers for `task`s
210+that originate from a remote source, as the `%plea` pattern
211+is used to extend the `%pass`/`%give` semantics over the Ames network. Jael
212+attempts to perform the `task` wrapped in the `%plea`.
213+
214+Jael accepts two kinds of `%plea`s: [`%nuke`](#nuke) and
215+[`%public-keys`](#public-keys) and will crash if passed anything else. See the
216+relevant entries to learn how Jael responds to these.
217+
218+#### Accepts
219+
220+```hoon
221+[=ship =plea:ames]
222+```
223+`ship` is the origin of the plea, and `plea:ames` is `[vane=@tas =path
224+payload=*]`. Here, `vane=%j`, `path` is the internal route on the receiving ship, and `payload` is either a `%nuke` or
225+a `%public-keys` `task`.
226+
227+#### Returns
228+
229+Jael `%give`s a `%done` `gift` in response to a `%plea` `task`.
230+
231+#### Passes
232+
233+Jael `%pass`es itself the wrapped `task`.
234+
235+
236+### `%private-keys`
237+
238+This `task` creates a subscription to the private keys kept by Jael.
239+
240+We note that there are two `+private-keys` arms in Jael - one located in the
241+`+feed` core and the other located in the `+feel` core. This `task` calls the
242+arm in the `+feed` core.
243+
244+#### Accepts
245+
246+```hoon
247+[~]
248+```
249+
250+#### Returns
251+
252+```hoon
253+[%private-keys =life vein=(map life ring)]
254+```
255+
256+In response to a `%private-keys` `task`, Jael `%give`s a `%private-keys` `gift`.
257+`life=@ud` is the current `life` of the ship, and `vein` is a `map` from
258+`life`s to `ring`s that keeps track of all `life`-`ring` pairs throughout the
259+history of the ship.
260+
261+
262+### `%public-keys`
263+
264+This `task` creates a subscription for the callee to a selection of the public
265+keys kept by Jael. This `task` can originate locally or remotely.
266+
267+#### Accepts
268+
269+```hoon
270+[ships=(set ship)]
271+```
272+`ships` is the `set` of `ship`s whos' public keys are being subscribed to.
273+
274+#### Returns
275+
276+```hoon
277+[%public-keys =public-keys-result]
278+```
279+If the `task` originated locally, Jael `%give`s a `%public-keys` `gift` in
280+response. If it originated remotely, Jael `%give`s a `%boon` `gift` to back
281+to Ames wrapping a `%public-keys` `gift`.
282+
283+A `$public-keys-result` is the following.
284+```hoon
285+ +$ public-keys-result
286+ $% [%full points=(map ship point)]
287+ [%diff who=ship =diff:point]
288+ [%breach who=ship]
289+```
290+The first time Jael receives a `%public-keys` `task` from a ship it will return
291+a `[%public-keys-result %full]` `gift`, which contains all information about ships and
292+their associated points that Jael knows. Subsequent updates will typically be
293+`[%public-keys-result %diff]`, which tells the caller what has changed
294+since last time they sent a `%public-keys` `task`, and `[%public-keys-result
295+%breach]`, which informs the caller of ship breaches.
296+
297+
298+### `%rekey`
299+
300+This `task` updates the ship's private keys.
301+
302+#### Accepts
303+
304+```hoon
305+[=life =ring]
306+```
307+
308+`life` is a `@ud` that is the new ship key revision number. `ring` is a `@` that is the new private key.
309+
310+#### Returns
311+
312+```hoon
313+[%private-keys =life vein=(map life ring)]
314+```
315+
316+In response to a `%rekey` `task`, Jael `%give`s a `%private-keys` `gift`. `life`
317+is the new `life` given in the original `task`, and `vein` is a `map` from
318+`life`s to `ring`s that keeps track of all `life`-`ring` pairs throughout the
319+history of the ship.
320+
321+
322+### `%trim`
323+
324+This `task` is sent by the interpreter in order to free up memory.
325+ This `task` is empty for Jael, since it is not a good idea to forget your
326+ private keys and other cryptographic data.
327+
328+#### Accepts
329+
330+```hoon
331+[p=@ud]
332+```
333+This argument is unused by Jael.
334+
335+#### Returns
336+
337+This task returns nothing.
338+
339+
340+
341+### `%turf`
342+
343+This `task` is a request for Jael to provide its list of `turf`s, e.g. DNS
344+suffixes for the Ames network. Currently `arvo.network` is the only `turf` in use.
345+
346+#### Accepts
347+
348+```hoon
349+[~]
350+```
351+
352+#### Returns
353+
354+```hoon
355+[%turn tuf.own.pki]
356+```
357+
358+Jael `%give`s a `%turf` `gift` in response to a `%turf` `task`. `tuf.own.pki` is
359+a `(list turf)`, which is Jael's list of `turf`s.
360+
361+
362+### `%vega`
363+
364+`%vega` is called whenever the kernel is updated. Jael currently does not do
365+anything in response to this.
366+
367+#### Accepts
368+
369+`%vega` takes no arguments.
370+
371+#### Returns
372+
373+This `task` returns no `gift`s.
374+
375+
376+
377+### `%wegh`
378+
379+This `task` is a request to Jael to produce a memory usage report.
380+
381+#### Accepts
382+
383+This `task` has no arguments.
384+
385+#### Returns
386+
387+In response to this `task,` Jael `%give`s a `%mass` `gift` containing Ames'
388+current memory usage.
389+
390+
391+
392+
393+
tutorials/arvo/arvo.md → arvo/overview.mdrenamed+20−22
@@ -1,16 +1,14 @@
11+++
2−title = "Arvo"
2+title = "Overview"
33weight = 1
4−template = "doc.html"
54aliases = ["/docs/learn/arvo/arvo/"]
5+template = "doc.html"
66+++
77
88Arvo, also called Urbit OS, is our operating system.
99
1010# Introduction
1111
12−## Overview
13−
1412This article is intended to provide a thorough summary of all of the most
1513important aspects of the Arvo kernel and how this functionality gives life to
1614the ambitions of the Urbit platform. We work on two levels: a conceptual level
@@ -25,10 +23,10 @@ companion to this document, and some segments are direct quotes or paraphrases,
2523The conceptual section titled [What is Arvo?](#what-is-arvo-) can be understood
2624without knowing Hoon, the Urbit programming language. The technical section
2725titled [The kernel](#the-kernel) will require Chapter One of the [Hoon
28−tutorial](@/docs/tutorials/hoon/hoon-school/_index.md) for full understanding, and some
26+tutorial](@/docs/hoon/hoon-school/_index.md) for full understanding, and some
2927material from Chapter Two will be helpful as well. At the bare minimum, we
3028presume that the reader has read through the [Technical
31−Overview](@/docs/tutorials/concepts/technical-overview.md).
29+Overview](@/docs/system-overview/_index.md).
3230
3331We also suggest to the reader to peruse the [glossary](@/docs/glossary/_index.md) before diving into this article. It will provide the initial scaffolding that you will be able to gradually fill in as you read this article and go deeper into the alternate universe of computing that is Urbit.
3432
@@ -127,7 +125,7 @@ The formal state of an Arvo instance is an event history, as a linked list of [n
127125
128126The Arvo event log is a list of every action ever performed on your ship that
129127lead up to the current state. In principle, this event log is maintained by the
130−[Nock runtime environment](@/docs/tutorials/vere/_index.md), but in practice
128+[Nock runtime environment](@/docs/vere/_index.md), but in practice
131129event logs become too long over time to keep, as the event log has a size of
132130O(n) where n is the number of events. Thus it is our intention to
133131implement a feature whereby periodic snapshots of the state of Arvo are taken
@@ -176,7 +174,7 @@ Typically, updates to an operating system are given via a pre-compiled binary,
176174which is why some updates will work on some systems but not on others where the
177175hardware and environment may differ. This is not so on Arvo - because it is an
178176[interpreter](#solid-state-interpreter), Arvo may update itself by receiving
179−source code from your sponsor over [Ames](@/docs/tutorials/arvo/ames.md), our
177+source code from your sponsor over [Ames](@/docs/arvo/ames/ames.md), our
180178network. As Hoon compiles down to Nock, which is an axiomatic representation of
181179a deterministic computer, this code is guaranteed to run identically on your machine as it
182180would on anybody else's.
@@ -207,7 +205,7 @@ Database theory studies in precise terms the possible properties of anything tha
207205 Arvo
208206 transactions are sequential and performed by the daemon, persistence and effect application are performed
209207 in parallel by the worker; see [worker and
210− daemon](@/docs/tutorials/vere/_index.md) for more detail.
208+ daemon](@/docs/vere/_index.md) for more detail.
211209
212210 - Durability: Completed transactions will survive permanently. In other words,
213211 since the event log is stored on disk, if power is lost you are guaranteed
@@ -216,7 +214,7 @@ Database theory studies in precise terms the possible properties of anything tha
216214It is easy to think that "completed transaction will survive permanently"
217215along with "the state of Arvo is pure function of its event log" implies that
218216nothing can ever be deleted. This is not quite true.
219−[Clay](@/docs/tutorials/arvo/clay.md) is our [referentially
217+[Clay](@/docs/arvo/clay/clay.md) is our [referentially
220218transparency](https://en.wikipedia.org/wiki/Referential_transparency)
221219file system, which could naively be thought to mean that since data must be
222220immutable, files cannot be deleted. However, Clay can replace a file with a
@@ -250,10 +248,10 @@ cooperative multitasking.
250248
251249The Arvo kernel, stored in `sys/arvo.hoon`, is about 1k lines of Hoon whose primary purpose is to implement the transition function, `+poke`. In this section we point out the most important parts of `arvo.hoon` and describe their role in the greater system. We also give brief descriptions of Arvo's kernel modules, known as vanes, and how Arvo interfaces with them.
252250
253−This section requires an understanding of Hoon of at least the level of Chapter One of the [Hoon tutorial](@/docs/tutorials/hoon/hoon-school/_index.md).
251+This section requires an understanding of Hoon of at least the level of Chapter One of the [Hoon tutorial](@/docs/hoon/hoon-school/_index.md).
254252
255253After concluding this section, the reader is encouraged to follow along with the
256−[move trace tutorial](@/docs/tutorials/arvo/move-trace.md),
254+[move trace tutorial](@/docs/arvo/tutorials/move-trace.md),
257255which applies many of the concepts covered below.
258256
259257## Overall structure
@@ -266,7 +264,7 @@ which applies many of the concepts covered below.
266264 + Larval stage core
267265 + Formal interface
268266
269−See [Section 1.7](@/docs/tutorials/hoon/hoon-school/arms-and-cores.md) of the Hoon tutorial for further explanation of what is meant here by "nesting". We now describe the functionality of each of these components.
267+See [Section 1.7](@/docs/hoon/hoon-school/arms-and-cores.md) of the Hoon tutorial for further explanation of what is meant here by "nesting". We now describe the functionality of each of these components.
270268
271269### Formal interface
272270
@@ -444,7 +442,7 @@ A short summary of the purpose of each these arms are as follows:
444442 - `+poke` is the transition function that `move`s Arvo from one state to the
445443 next. It is the most fundamental arm in the entire system. It is a typed
446444 transactional message that is processed at most once. If the `+poke` causes
447− Arvo to send an message over [Ames](@/docs/tutorials/arvo/ames.md) Ames
445+ Arvo to send an message over [Ames](@/docs/arvo/ames/ames.md) Ames
448446 guarantees that the message will be delivered exactly once. This is sometimes said
449447 to be impossible, and it is for standard operating systems, but that is not the case for single-level stores engaged in
450448 a permanent session, as is the case among Arvo ships.
@@ -561,14 +559,14 @@ data that directly causes the desired outcome of a `move`. This event data is co
561559
562560As of this writing, we have nine vanes, which each provide the following services:
563561
564−- [Ames](@/docs/tutorials/arvo/ames.md): the name of both our network and the vane that communicates over it.
565−- [Behn](@/docs/tutorials/arvo/behn.md): a simple timer.
566−- [Clay](@/docs/tutorials/arvo/clay.md): our version-controlled, referentially- transparent, and global filesystem.
567−- [Dill](@/docs/tutorials/arvo/dill.md): a terminal driver. Unix sends keyboard events to `%dill` from the console, and `%dill` produces terminal output.
568−- [Eyre](@/docs/tutorials/arvo/eyre.md): an http server. Unix sends http messages to `%eyre`, and `%eyre` produces http messages in response.
569−- [Ford](@/docs/tutorials/arvo/ford.md): a build system also utilized for marks
562+- [Ames](@/docs/arvo/ames/ames.md): the name of both our network and the vane that communicates over it.
563+- [Behn](@/docs/arvo/behn/behn.md): a simple timer.
564+- [Clay](@/docs/arvo/clay/clay.md): our version-controlled, referentially- transparent, and global filesystem.
565+- [Dill](@/docs/arvo/dill/dill.md): a terminal driver. Unix sends keyboard events to `%dill` from the console, and `%dill` produces terminal output.
566+- [Eyre](@/docs/arvo/eyre/eyre.md): an http server. Unix sends http messages to `%eyre`, and `%eyre` produces http messages in response.
567+- [Ford](@/docs/arvo/ford/ford.md): a build system also utilized for marks
570568 (file types) and debugging.
571−- [Gall](@/docs/tutorials/arvo/gall.md): manages our userspace applications. `%gall` keeps state and manages subscribers.
569+- [Gall](@/docs/arvo/gall/gall.md): manages our userspace applications. `%gall` keeps state and manages subscribers.
572570- `Iris`: an http client.
573571- `Jael`: storage for Azimuth information.
574572
@@ -576,4 +574,4 @@ As of this writing, we have nine vanes, which each provide the following service
576574
577575Now that you've learned about the nuts and bolts of the Arvo kernel, why not
578576check it out in action? An in-depth "move trace" tutorial for running a timer app
579−is available [here](@/docs/tutorials/arvo/move-trace.md).
577+is available [here](@/docs/arvo/tutorials/move-trace.md).
arvo/tutorials/_index.mdnew file+8
@@ -0,0 +1,8 @@
1++++
2+title = "Tutorials"
3+weight = 200
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+Tutorials aimed at broadening understanding of Arvo.
tutorials/arvo/move-trace.md → arvo/tutorials/move-trace.mdrenamed+6−6
@@ -1,5 +1,5 @@
11+++
2−title = "Move trace"
2+title = "Move Trace"
33weight = 12
44template = "doc.html"
55+++
@@ -7,7 +7,7 @@ template = "doc.html"
77In this tutorial we will run a simple "move trace" and use the output to get a
88picture of what the Arvo kernel proper does during the routine task of setting a
99timer. Some level of familiarity with the kernel is required for this section,
10−which can be obtained in our [Arvo kernel tutorial](@/docs/tutorials/arvo/arvo.md#the-kernel).
10+which can be obtained in our [Arvo kernel tutorial](@/docs/arvo/overview.md#the-kernel).
1111
1212## Running a move trace
1313
@@ -20,7 +20,7 @@ has elapsed.
2020To follow along yourself, boot up a fake `~zod` and enter `|verb` into the dojo
2121and press Enter to enable verbose mode (this is tracked by the laconic bit
2222introduced in the section on [the
23−state](@/docs/tutorials/arvo/arvo.md#the-state)) in the kernel documentation, followed by `-time ~s1`
23+state](@/docs/arvo/overview.md#the-state)) in the kernel documentation, followed by `-time ~s1`
2424followed by Enter. Your terminal should pretty print a series of `move`s that looks something like this:
2525
2626```
@@ -105,7 +105,7 @@ arrow to Vane B, this represents either a `%pass` `note/task` sequence or a
105105`%give` `gift/sign` sequence that actually has the Arvo kernel in the middle.
106106That is to say, Vane A `%pass`es a `note` to the Arvo kernel addressed to Vane
107107B, and the Arvo kernel then `%pass`es a `task` to Vane B. For more information,
108−see the [Arvo kernel tutorial](@/docs/tutorials/arvo/arvo.md#the-kernel).
108+see the [Arvo kernel tutorial](@/docs/arvo/overview.md#the-kernel).
109109
110110This simple action ends up involving four vanes - Dill, Gall, Behn, and Ford -
111111as well as four applications - hood, spider, dojo, and time.
@@ -118,7 +118,7 @@ This tells us that Unix has sent a `%belt` `card`, which corresponds to
118118terminal input (the Enter keystroke) at time `~2020.1.14..19.01.25..7556`
119119
120120Here is the line of code in `arvo.hoon`, found in the [section
121−3bE core](@/docs/tutorials/arvo/arvo.md#section-3be-core), that generated the output:
121+3bE core](@/docs/arvo/overview.md#section-3be-core), that generated the output:
122122
123123```hoon
124124 ~? !lac ["" %unix -.q.ovo p.ovo now]
@@ -170,7 +170,7 @@ Here, Dill `%pass`es a `task` `card` saying to `%poke` Gall's hood app (with the
170170Enter keystroke).
171171
172172Let's glance at part of the `+jack` arm in `arvo.hoon`, located in the [section 3bE
173−core](@/docs/tutorials/arvo/arvo.md#section-3be-core). This arm is what the Arvo kernel uses to send `card`s,
173+core](@/docs/arvo/overview.md#section-3be-core). This arm is what the Arvo kernel uses to send `card`s,
174174and here we look at the segment that includes `%pass` `move`s.
175175
176176```hoon
azimuth/_index.mdnew file+16
@@ -0,0 +1,16 @@
1++++
2+title = "Azimuth"
3+weight = 700
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+
9+## [Azimuth](@/docs/azimuth/azimuth.md)
10+
11+An overview of the Ethereum-based public key infrastructure utilized by Urbit.
12+
13+## [Advanced Azimuth Tools](@/docs/azimuth/advanced-azimuth-tools.md)
14+
15+Expert-level tooling for generating, signing, and sending Azimuth-related
16+transactions from within Urbit itself.
tutorials/advanced-azimuth-tools.md → azimuth/advanced-azimuth-tools.mdrenamed+1−1
@@ -1,6 +1,6 @@
11+++
22title = "Advanced Azimuth Tools"
3−weight = 4
3+weight = 3
44template = "doc.html"
55+++
66
tutorials/concepts/azimuth.md → azimuth/azimuth.mdrenamed+4−4
@@ -1,12 +1,12 @@
11+++
2−title = "Azimuth"
3−weight = 4
2+title = "Overview"
3+weight = 2
44template = "doc.html"
55aliases = ["/docs/learn/azimuth"]
66+++
77Azimuth is a general-purpose public-key infrastructure (PKI) on the Ethereum blockchain, used as a platform for _Urbit identities_. You need such an identity to use the Arvo network.
88
9−The primary way to interact with Azimuth is through our [Bridge](https://github.com/urbit/bridge) application and the node libraries that it depends on, [azimuth-js](https://github.com/urbit/azimuth-js) and [urbit-key-generation](https://github.com/urbit/urbit-key-generation). Take a look at the source and play around, or see [Getting Started](@/using/install.md).
9+The primary way to interact with Azimuth is through our [Bridge](https://github.com/urbit/bridge) application and the node libraries that it depends on, [azimuth-js](https://github.com/urbit/azimuth-js) and [urbit-key-generation](https://github.com/urbit/urbit-key-generation). Take a look at the source and play around, or see [Getting Started](@/getting-started.md).
1010
1111## Arvo vs. Azimuth
1212
@@ -128,7 +128,7 @@ wallet address you generated on your hardware wallet for ownership.
128128Next, login to Bridge using your hardware wallet. While Bridge supports Trezor
129129and Ledger natively, this may require using Metamask as an intermediary anyways,
130130depending on which firmware you are running. Then [accept the
131−transfer](@/using/operations/using-bridge.md#accept-your-transfer). Your Azimuth
131+transfer](@/using/id/using-bridge.md#accept-your-transfer). Your Azimuth
132132point is now stored on your hardware wallet.
133133
134134To finish the process, use Bridge to set your management, voting, and spawn
development/_index.mdnew file+32
@@ -0,0 +1,32 @@
1++++
2+title = "Development"
3+weight = 100
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+This section covers the development process in general.
9+
10+## [Getting Started](@/docs/development/develop.md)
11+
12+An orientation to the various development paths within the Urbit ecosystem
13+
14+## [Environment Setup](@/docs/development/environment.md)
15+
16+How to get your development environment ready for Urbit development.
17+
18+## [Grants Program](@/docs/development/grants.md)
19+
20+An introduction to our grants program, where you can earn address space for
21+contributing to the project.
22+
23+## [Project Repositories](@/docs/development/project-repositories.md)
24+
25+A directory of official code repositories, and unofficial community-maintained
26+ones.
27+
28+## [Precepts](@/docs/development/precepts.md)
29+
30+The principles behind Urbit's architecture and continued development.
31+
32+
development/develop.mdnew file+115
@@ -0,0 +1,115 @@
1++++
2+title = "Getting Started"
3+description = "How to get started developing on Urbit."
4+weight = 10
5+template = "doc.html"
6+aliases = ["/docs/using/creating-a-development-ship/", "/docs/getting-started/contributing"]
7++++
8+
9+There are many ways to get involved as a developer. This guide serves to give
10+you a "lay of the land" for developing on Urbit. Let's start with what you can
11+contribute to. At a high level, you can:
12+
13+- [Build clients](#clients), which use Urbit as their back-end to store data and
14+ interact with the network
15+- [Develop agents](#agents), or more precisely [*gall*
16+ agents](@/docs/arvo/gall/gall.md), which are written in [Hoon](/docs/hoon/)
17+ and can best be thought of as microservices
18+- [Contribute to Urbit's core](#core), which involves contributing to Urbit
19+ itself &mdash; either the operating system
20+ ([Arvo](https://github.com/urbit/urbit/tree/master/pkg/arvo)), runtime
21+ ([Vere](https://github.com/urbit/urbit/tree/master/pkg/urbit)), or public key
22+ infrastructure ([Azimuth](https://github.com/urbit/azimuth))
23+
24+Below we'll go into more detail about each of these options and do our best to
25+point you towards a number of additional helpful resources that can be found
26+throughout the docs.
27+
28+### Build Clients {#clients}
29+
30+Urbit ships with [Landscape](@/docs/landscape/overview.md), which can be thought
31+of as its flagship client. Landscape can be broken into two different technical
32+components: there's the collection of [agents](#agents) that utilize the
33+Urbit for networking and data persistence, and the JavaScript client, which is
34+an [interface](https://github.com/urbit/urbit/tree/master/pkg/interface) built
35+with [React](https://reactjs.org).
36+
37+Additionally, you can [contribute to
38+Landscape](https://github.com/urbit/urbit/blob/master/pkg/interface/CONTRIBUTING.md)
39+by tackling issues in its [issue
40+tracker](https://github.com/urbit/landscape/issues) and/or running the the
41+[development stream](https://groups.google.com/a/urbit.org/g/dev/c/r2hv4ajCLwk).
42+
43+You can create your own clients that uses Urbit to store data and interact with
44+other Urbit ships without writing any Hoon code thanks to Urbit's HTTP APIs.
45+This could be a chat client, a writing app, a game, or anything else that can
46+communicate over HTTP.
47+
48+To get started quickly with the language of your choice, see the list
49+libraries that provide HTTP interfaces to Urbit [here](https://github.com/urbit/awesome-urbit#http-apis-airlock).
50+
51+To learn more about how to work with Urbit's HTTP interface, follow [this
52+guide](@/docs/arvo/eyre/using-eyre.md).
53+
54+Alternatively, command-line interface (CLI) applications can be built using a
55+library called `shoe`, which you can learn more about
56+[here](@/docs/hoon/guides/cli-tutorial.md). This does require Hoon knowledge.
57+
58+### Develop Agents {#agents}
59+
60+Gall agents can be best thought of as individual services with a
61+statically-typed interface and built-in database. They're written in
62+[Hoon](@/docs/hoon/overview.md) and all conform to a specific
63+[interface](@/docs/arvo/gall/gall-api.md) that's defined by the kernel vane
64+called [Gall](@/docs/arvo/gall/gall.md).
65+
66+Applications built on Urbit utilize a collection of different agents, each of
67+which handle specific functionality. The [Landscape
68+architecture](@/docs/landscape/overview.md) is a good reference implementation
69+to see how this pattern works in practice.
70+
71+If you want to learn how to build gall agents, your best bet is to first [learn
72+the Hoon programming language](@/docs/hoon/hoon-school/_index.md), and then follow that
73+up with the [Gall guide](@/docs/arvo/gall/tutorial.md).
74+
75+### Contribute to Urbit Core {#core}
76+
77+Working on the core means improving the Urbit project itself, working with the
78+existing community of Urbit developers. The kernel is much more stable, but
79+generally more challenging from an engineering standpoint.
80+
81+Just arrived and unsure what to work on? An ideal way to get started is by
82+experimenting with the system, talking to other developers, and reading (or
83+[contributing to](https://github.com/urbit/docs)) the [documentation](/docs/).
84+
85+Prefer learning with an instructor? Our community runs an online course that
86+covers the basics of Urbit development called
87+[Hooniversity](https://hooniversity.org/). If course-based learning works well
88+for you, we recommend you sign up.
89+
90+The Urbit developer community congregates around [the urbit-dev mailing
91+list](https://groups.google.com/a/urbit.org/forum/#!forum/dev), the
92+`~bitbet-bolbel/urbit-community` group on Landscape, and [Urbit’s GitHub
93+repository](https://github.com/urbit/urbit). It’s a good idea to sign up, see
94+what people are talking about, and introduce yourself.
95+
96+Once you’re comfortable working with Urbit, check out the [project’s issues on
97+GitHub](https://github.com/urbit/urbit/issues) or some of our [contribution
98+bounties](https://grants.urbit.org/).
99+
100+If you’re looking for some guidance, need help, or would prefer direct
101+communication for your ideas, you can also always reach out to us directly at
102+[support@urbit.org](mailto:support@urbit.org).
103+
104+## Next Steps
105+
106+From here, you'll probably want to learn more about:
107+
108+- How to set up a [development environment](@/docs/development/environment.md)
109+- Our [grants program](@/docs/development/grants.md), where you can earn address
110+ space for helping the project grow
111+- The different [project
112+ repositories](@/docs/development/project-repositories.md), both official and
113+ community-maintained
114+- Our development [Precepts](@/docs/development/precepts.md), which outline the
115+ philosophies that drive Urbit development
development/environment.mdnew file+62
@@ -0,0 +1,62 @@
1++++
2+title = "Environment Setup"
3+description = "How to set up an environment for Urbit development."
4+weight = 10
5+template = "doc.html"
6++++
7+
8+This guide covers best practices for preparing your environment to develop
9+within the Urbit ecosystem.
10+
11+## Creating a development ship
12+
13+To do work with Hoon, we recommended using a "fake" ship -- one that's not
14+connected to the network.
15+
16+Because such a ship has no presence on the network, you don't need an Azimuth
17+identity. You just need to have [installed the Urbit binary](/getting-started).
18+
19+To create a fake ship named `~zod`, run the command below. You can replace `zod`
20+with any valid Urbit ship-name.
21+
22+```
23+./urbit -F zod
24+```
25+
26+This should take a couple of minutes, during which you should see a block of boot
27+messages, starting with the Urbit version number.
28+
29+
30+## Hoon support in text editors
31+
32+A variety of plugins have been built to provide support for the Hoon language in
33+different text editors:
34+
35+#### Atom
36+Atom is free and open-source and runs on all major operating systems. It is
37+available [here](https://atom.io/). A package for Hoon support is maintained by
38+Tlon and may be obtained using the package manager within the editor by
39+searching for `Hoon`.
40+
41+#### Sublime Text
42+Sublime Text is closed-source, but may be downloaded for free and there is no
43+enforced time limit for evaluation. It runs on all major operating systems. It
44+is available [here](https://www.sublimetext.com/).
45+
46+#### Visual Studio Code
47+Visual Studio Code is free and open-source and runs on all major operating
48+systems. It is available [here](https://code.visualstudio.com/). Hoon support
49+may be acquired in the Extensions menu within the editor by searching for
50+`Hoon`.
51+
52+#### Emacs
53+
54+Emacs is free and open-source and runs on all major operating systems. It is
55+available [here](https://www.gnu.org/software/emacs/). Hoon support is available
56+with [hoon-mode.el](https://github.com/urbit/hoon-mode.el).
57+
58+#### Vim
59+
60+Vim is free and open-source and runs on all major operating systems. It is
61+available [here](https://www.vim.org/). Hoon support is available with
62+[hoon.vim](https://github.com/urbit/hoon.vim) and is maintained by Tlon.
development/grants.mdnew file+85
@@ -0,0 +1,85 @@
1++++
2+title = "Grants Program"
3+weight = 20
4+template = "doc.html"
5+aliases = ["/docs/using/creating-a-development-ship/", "/docs/getting-started/contributing"]
6++++
7+
8+The [Urbit Foundation](https://urbit.org/blog/first-steps-towards-urbit-org/)
9+runs a [Grants program](https://grants.urbit.org), where you can earn address
10+space ([stars](@/docs/glossary/star.md)) in exchange for contributing to the
11+project.
12+
13+Grants come in four different flavors at present: [bounties](#bounties),
14+[proposals](#proposals), [scholarships](#scholarships) and [gifts](#gifts).
15+
16+If you're curious about grants, join the conversation in Landscape at
17+`~wolref-podlex/foundation` or book some time to [talk with
18+us](https://calendly.com/wolref/30min).
19+
20+### Bounties {#bounties}
21+
22+[Bounties](https://grants.urbit.org/bounties) are specific, tightly-scoped
23+pieces of work that we at the Urbit Foundation think are of high value to the
24+ecosystem at large. They're frequently development-focused, but also often
25+relate to marketing, community-building or technical writing.
26+
27+Bounties are usually competitive&mdash;worker requests should provide plenty of
28+information about why the requester is right candidate for the job.
29+
30+### Proposals {#proposals}
31+
32+Where Bounties are put forward by the Foundation,
33+[Proposals](https://grants.urbit.org/proposals) come from the community. These
34+are things that our community thinks Urbit needs, and span a wide range of
35+topics: we've got [books being
36+written](https://grants.urbit.org/proposals/1590647060-a-book-about-urbit),
37+[videos being
38+produced](https://grants.urbit.org/proposals/1350087489-urbit-explainer-video),
39+help with [production of
40+events](https://grants.urbit.org/proposals/1751024973-urbit-event-series),
41+[marketing](https://grants.urbit.org/proposals/1395578140-smol-future-sustained-knowledge-sharing-and-marketing)
42+and
43+[documentation](https://grants.urbit.org/proposals/1888977136-graph-store-documenation-guide),
44+and
45+[ambitious](https://grants.urbit.org/proposals/21131866-webrtc-gall-agent-and-external-app)
46+[development](https://grants.urbit.org/proposals/1760204192-urbit-lfs)
47+[projects](https://grants.urbit.org/proposals/337545546-urbian-a-customized-linux-distribution-for-urbit-appliances)
48+all happening. If you've got skills and time to put into Urbit, we'll put you to
49+work.
50+
51+Proposals are more likely to be approved if their relevance to the project is
52+made clear, their scope is clearly defined, the proposer is qualified, and it's
53+obvious that a lot of thought has gone into the idea.
54+
55+If you've got an idea and want some help turning it into a proposal, book some
56+time with us [here](https://calendly.com/wolref/30min).
57+
58+### Scholarships {#scholarships}
59+
60+Scholarships are the newest addition to the grants program that pairs
61+contributors with core Urbit developers to tackle infrastructure projects. These
62+generally take the form of contributions to
63+[Arvo](@/docs/system-overview/arvo.md) or
64+[Vere](@/docs/system-overview/vere.md).
65+
66+Tackling a scholarship requires an advanced understanding of Urbit. It's
67+expected that you've got a demonstrated command of the Hoon language or other
68+part of Urbit through existing contributions on our repositories or successfully
69+completed grants.
70+
71+New scholarships are posted within the Foundation group in Landscape
72+(`~wolref-podlex/foundation`), and you can sign up for the waitlist using [this
73+form](https://airtable.com/shr6Xmo55h8dZ0O46).
74+
75+### Gifts {#gifts}
76+
77+Not every contribution is made with a plan or according to a specification.
78+Sometimes people just fix issues, help newcomers, or promote the project because
79+they want to.
80+
81+Roughly every six months we [give
82+out](https://urbit.org/blog/urbit-grants-and-mid-2019-gifts/) a [bunch of
83+address space](https://urbit.org/blog/gifts-q3-2020/) to those that have helped
84+the project without asking for anything in return, just because we want to. It
85+just feels good, man.
development/precepts.mdnew file+336
@@ -0,0 +1,336 @@
1++++
2+title = "Precepts"
3+weight = 40
4+template = "doc.html"
5++++
6+
7+<br>
8+
9+<img class="ba" src="https://media.urbit.org/site/posts/essays/pre-01.jpg">
10+
11+Urbit is a principled approach to system design and programming, but it's often not obvious what those principles are. We have many specific terms for the different parts of the project: Arvo is the OS, Hoon is the language, Tlon is the company, Azimuth is the identity system, Ames is the network. But the word most associated with the project is "Urbit", and it's not clear what technically it refers to. It's only a small stretch to say that "Urbit" *is* this set of principles, and that if anybody follows these principles strictly they will create a system that is isomorphic to the Urbit.
12+
13+Some of these are commonly held among many software projects, and some are not. Some are only debatably better than the alternatives, but Urbit exclusively chooses them.
14+
15+We’ll start with a brief description of many principles, then we’ll go into a long-form justification.
16+
17+
18+
19+### A: General Design
20+
21+1) Data is better than code.
22+
23+ Store data in your state, send data over the wire, dispatch based
24+ on data.
25+
26+2) Everything should be CQRS.
27+
28+3) (Almost) Everything should be pubsub.
29+
30+4) A subscriber shouldn't affect a publisher.
31+
32+5) Communication between nodes should be communication between
33+ independent actors.
34+
35+ Each message should do one complete thing, and there shouldn't
36+ need to be a sequence of coupled messages.
37+
38+6) Represent your data as closely as possible to the essential structure
39+ of the problem.
40+
41+7) A client's representation of data should be as close as possible to
42+ that of the server.
43+
44+ This blurs the distinction between client and server. It allows
45+ offline-mode, reduces communication to syncing, and decentralizes.
46+
47+8) When mating different paradigms, build one cleanly on top of the
48+ other.
49+
50+ Never try to make them work on some of the same primitives. Never
51+ abuse one to make the other work. For example, ducts in
52+ themselves are very general - if you want to do pubsub, that can
53+ easily be built on top of ducts, but don't pretend that pubsub is
54+ a *part* of the duct system.
55+
56+9) Never misuse an abstraction.
57+
58+ An abstraction provides a certain set of tools; use them and only
59+ them.
60+
61+10) Correctness is more important than performance.
62+
63+11) Be simple and uncompromising in defining what's correct; go crazy
64+ with optimizations.
65+
66+ Nock is a great example of this. It contains the character of the
67+ virtual machine, but its asymptotics are bad. Add jets to fix the
68+ asymptotics.
69+
70+ Another example is the ACID nature of Arvo. Arvo is a pure
71+ function f(logs) of its event log, so formally Arvo is just a
72+ function run against an event log. A naive implementation has
73+ very bad asymptotics; processing each new event is O(n) in the
74+ number of historical events. Choose the function g(state,log)
75+ such that f(logs ++ log) = g(f(logs),log). Then, as long as you
76+ keep the state in memory, processing each new event is constant in
77+ the number of previous events. This still requires O(n) restart
78+ from disk, but you can also periodically (and non-blockingly)
79+ write a checkpoint of the state to disk, so that restart from disk
80+ is only linear in the number of events since the last checkpoint.
81+
82+12) Correctness is more important than optimality.
83+
84+13) If you don't completely understand your code and the semantics of
85+ all the code it depends on, your code is wrong.
86+
87+14) Deterministic beats heuristic.
88+
89+ Heuristics are evil and should only be used where determinism is
90+ infeasible, such as in cache reclamation.
91+
92+15) Stateless is better than stateful.
93+
94+16) Explicit state is better than implicit state.
95+
96+17) Referential transparency is honesty and stability.
97+
98+ Lack of referential transparency and other forms of
99+ disingenuousness are some of the world's big problems. Only
100+ deviate from referential transparency if absolutely necessary.
101+
102+18) Responsibilities should be clearly separated.
103+
104+ This applies from kernel modules through network citizens.
105+
106+19) Dualities must be faced head-on and analyzed differently at
107+ different layers.
108+
109+ Statically typed vs. dynamically typed, imperative vs. functional,
110+ code vs. data, and effectful vs. pure can all be a matter of
111+ perspective, and all relevant perspectives must have coherent
112+ answers.
113+
114+20) One hundred lines of simplicity is better than twenty lines of
115+ complexity.
116+
117+ It's not enough for an abstraction to reduce code duplication; it
118+ must actually make the code simpler.
119+
120+21) Prefer mechanical simplicity to mathematical simplicity.
121+
122+ Often mechanical simplicity and mathematical simplicity go
123+ together.
124+
125+22) The Law of Leaky Abstractions is a lie; abstract airtightly.
126+
127+ If your abstractions are leaking, it's not due to some law of the
128+ universe; you just suck at abstracting. Usually, you didn't
129+ specify the abstraction narrowly enough.
130+
131+23) Some cliches are repeated because they are true; others must be
132+ repeated because they are not.
133+
134+<br>
135+
136+<img class="ba" src="https://media.urbit.org/site/posts/essays/pre-03.jpg">
137+
138+### B: Specific Design
139+
140+1) Always ack a dupe; never ack an ack.
141+
142+ It's okay to ack a nack as long as you never nack a nack.
143+
144+2) Never construct or deconstruct a duct.
145+
146+3) Route on wire before sign, never sign before wire.
147+
148+4) Only go from statically typed to dynamically typed if you must.
149+
150+ Once you go into a dynamically typed world, it's hard to go back.
151+ Statically typed is better than dynamically typed, so if something
152+ can be made static, it should be.
153+
154+ Each timeless data structure is a brick in the foundation of
155+ digital civilization.
156+
157+5) Anything with business logic speaks one paradigm; anything that
158+ translates paradigms has no business logic.
159+
160+6) Functionally enforced semantic rules are better security primitives
161+ than memory access restrictions.
162+
163+ A compiler can use type safety as an effective tool to enforce
164+ some classes of security guarantees.
165+
166+
167+### C: Attitude
168+
169+1) Code courageously.
170+
171+ If you avoid changing a section of code for fear of awakening the
172+ demons therein, you are living in fear. If you stay in the
173+ comfortable confines of the small section of the code you wrote or
174+ know well, you will never write legendary code. All code was
175+ written by humans and can be mastered by humans.
176+
177+ It's natural to feel fear of code; however, you must act as though
178+ you are able to master and change any part of it. To code
179+ courageously is to walk into any abyss, bring light, and make it
180+ right.
181+
182+2) No time for lazy people.
183+
184+ If there's clearly a right way to do something and a wrong way, do
185+ it the right way. Coding requires incredible discipline. Always
186+ follow conventions, and fire anyone who won't. Anything that can
187+ be solved by discipline is not a real problem.
188+
189+ > "To him who knows to do good and does not do it, to him it is
190+ sin."
191+
192+3) When a smart person makes an obviously stupid suggestion, before
193+ responding take a full 60 seconds to envision how you would implement
194+ it and what the effects would be.
195+
196+
197+### D: Theory
198+
199+1) Academia is a succubus.
200+
201+ Academia has a really high ratio of smart people to useful
202+ products. Academia has many genuinely smart and interesting
203+ ideas, but always remember that pursuing them whole-heartedly will
204+ never result in a useful product.
205+
206+2) Never fear math.
207+
208+ Academia is inefficient, but it's also correct. Those people
209+ wasted a lot of time finding the right answer, but now that
210+ they've done it, you must exploit it. If you don't know the
211+ theory, learn it. No excuse for being "bad at math". Most who
212+ are "bad at math" are simply lazy or fearful. Be strong and of
213+ good courage. If you're truly so bad at math that you cannot
214+ learn it, you should not design systems.
215+
216+3) Not being qualified to solve a problem is no reason not to solve it.
217+
218+ If you don't know how to do it, do it anyway. "We are too young
219+ to realize that certain things are impossible. So, we will do
220+ them anyway."
221+
222+4) The best way to get the right answer is to try it the wrong way.
223+
224+ You cannot design a good system without spending most of your time
225+ in contact with the problem. The bad parts about systems are
226+ rarely obvious in theory, but often in practice.
227+
228+5) Practice tells you that things are good or bad; theory tells you why.
229+
230+ Never use theory to design a good system from scratch; only
231+ practice can tell whether the system is good.
232+
233+6) Everyone must regularly alternate between theory and practice.
234+
235+ There is an eternal wheel of system design. Given a system, use
236+ practice to discover what is bad, missing, or unnecessary. Then,
237+ use theory to fix the bad, add the missing, and remove the
238+ unnecessary. Repeat.
239+
240+
241+### E: Text Style
242+
243+1) No code should extend beyond 80 characters, most within 55.
244+
245+2) Tabs aren't real.
246+
247+3) A text file is a series of lines, each ending with a newline
248+ character.
249+
250+ Corollary: all non-empty text files end with a newline (often
251+ hidden by editors). An empty text file does not end with a
252+ newline.
253+
254+4) One block comment is better than interleaved comments on every line.
255+
256+5) Don't name anything you don't have to.
257+
258+ This includes conventional names for variables of particular
259+ types. For example, the conventional name for a variable of type
260+ `path` is `pax`. You should have a good reason for using any
261+ other name for a `path`.
262+
263+ A more recent convention that follows the same principle is to
264+ give the variable the same name as its type.
265+
266+6) If it's the same thing, give it the same name.
267+
268+7) Humans are good at memorizing.
269+
270+8) Abbreviations aren't worth it.
271+
272+
273+### F: Real Software
274+
275+1) If it's not deterministic, it isn't real.
276+
277+2) If it's centralized, it isn't real.
278+
279+3) If it's owned by someone else, it isn't yours.
280+
281+4) If it's managed by someone else and you can't change who that is, it
282+ isn't yours.
283+
284+5) If it's not yours, it isn't permanent.
285+
286+6) If it's not permanent, it isn't real.
287+
288+7) The way it is isn't always the way it ought to be.
289+
290+ If you can make it the way it ought to be, do so.
291+
292+8) The way it ought to be isn't always the way it is.
293+
294+ Some things can't be made more elegant.
295+
296+ For every ailment under the sun
297+ There is a remedy, or there is none;
298+ If there be one, try to find it;
299+ If there be none, never mind it.
300+
301+9) Timeless software is good software.
302+
303+10) System modules should be designed to be frozen permanently;
304+ conversely, Urbit consists of that system software which admits of a
305+ Kelvin version.
306+
307+11) The two procedures for achieving timelessness are distillation and
308+ generalization.
309+
310+ Every temporary or contingent feature in a system module should
311+ eventually either be removed (distillation) or relaxed into
312+ timelessness (generalization). For an example of the result of
313+ both procedures, consider the abstraction of the core in Nock and
314+ Hoon.
315+
316+12) Standardization is better than perfection.
317+
318+ Kelvin versioning stops when we run out of versions, not when
319+ every defect has been rectified.
320+
321+13) That which cannot be Kelvin-versioned should update fluidly and
322+ automatically.
323+
324+ All incompatible upgrades should provide permanent and automatic
325+ upgrade paths. This is principled permanent backward
326+ compatibility.
327+
328+14) Humans are interactive and temporal; technology is permanent and
329+ exhaustive.
330+
331+15) Communities are autonomous.
332+
333+16) Sovereignty necessitates understanding.
334+
335+ If you don't understand a system you're using, you don't control
336+ it. If nobody understands the system, the system is in control.
development/project-repositories.mdnew file+49
@@ -0,0 +1,49 @@
1++++
2+title = "Project Repositories"
3+weight = 30
4+template = "doc.html"
5++++
6+
7+Here's a breakdown of the various repositories that comprise the project. All of
8+our code is hosted on GitHub, so you can of course peruse it there at
9+[https://github.com/urbit](https://github.com/urbit).
10+
11+### Urbit
12+
13+Urbit OS, the Landscape interface and Vere are all contained in one monolithic
14+repository that can be found [here](https://github.com/urbit/urbit). The repo is
15+large, so here's some links to its various high-level components
16+
17+- [Arvo](https://github.com/urbit/urbit/tree/master/pkg/arvo): the part of the urbit pepo that comprises Arvo, the Urbit OS.
18+- [Vere](https://github.com/urbit/urbit/tree/master/pkg/urbit): the part of the
19+ urbit repo that comprises the C and Haskell interpreters.
20+- [Landscape
21+ interface](https://github.com/urbit/urbit/tree/master/pkg/interface): the part
22+ of the urbit repo that contains the interface code for Landscape.
23+ - [Issue Tracker](https://github.com/urbit/landscape/issues): the Landscape issue
24+ tracker is a separate repository.
25+
26+### Urbit ID
27+
28+- [azimuth](https://github.com/urbit/azimuth): the public-key infrastructure
29+ (PKI) that comprises Urbit ID, live on the Etheereum blockchain.
30+- [bridge](https://github.com/urbit/bridge): an application for interacting with
31+ Azimuth that can be accessed at [bridge.urbit.org](https://bridge.urbit.org).
32+- [urbit-key-generation](https://github.com/urbit/urbit-key-generation): a javascript library for key derivation and HD
33+ wallet generation functions.
34+- [sigil-js](https://github.com/urbit/sigil-js): a javascript library for
35+ generating sigils.
36+
37+### Content
38+
39+- [urbit.org](https://github.com/urbit/urbit.org): the source for the urbit.org
40+ website.
41+- [docs](https://github.com/urbit/docs): the source for the documentation that
42+ you're currently reading.
43+ - *Note:* the documentation is loaded into the
44+ [urbit.org](https://github.com/urbit/urbit.org) repo as a submodule.
45+
46+### Community
47+
48+The best way to keep track of the various community projects is via our
49+[**awesome-urbit**](https://github.com/urbit/awesome-urbit) repository.
glossary/_index.md+1
@@ -1,6 +1,7 @@
11+++
22title = "Glossary"
33sort_by = "none"
4+weight = 900
45template = "sections/docs/glossary.html"
56[extra]
67nav = "link"
glossary/ames.md+3−3
@@ -14,6 +14,6 @@ level to fix networking issues or at a network-wide level to update Arvo beyond
1414what OTA updates are capable of doing. These events are called [breaches](../breach).
1515### Further Reading
1616
17−- [The Ames tutorial](@/docs/tutorials/arvo/ames.md): An in-depth technical guide to the Ames protocol.
18−- [A Guide to Breaches](@/docs/tutorials/guide-to-breaches.md): Instructions on handling continuity breaches (resets) on the Ames network.
19−- [Ship Troubleshooting](@/docs/tutorials/ship-troubleshooting.md): General instructions on getting your ship to work, which includes network connectivity issues.
17+- [The Ames tutorial](@/docs/arvo/ames/ames.md): An in-depth technical guide to the Ames protocol.
18+- [A Guide to Breaches](@/using/id/guide-to-breaches.md): Instructions on handling continuity breaches (resets) on the Ames network.
19+- [Ship Troubleshooting](@/using/os/ship-troubleshooting.md): General instructions on getting your ship to work, which includes network connectivity issues.
glossary/aqua.md+1−1
@@ -13,4 +13,4 @@ Aqua is jetted with the usual [Nock](../nock) interpreter and thus virtual ships
1313
1414### Further Reading
1515
16−- [The Gall tutorial](@/docs/tutorials/arvo/gall.md): A technical guide to the Gall vane.
16+- [The Gall tutorial](@/docs/arvo/gall/gall.md): A technical guide to the Gall vane.
glossary/arm.md+2−2
@@ -10,5 +10,5 @@ An **arm** is a Hoon expression encoded as a noun. You can find them as part of
1010
1111### Further Reading
1212
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.7: Arms and Cores](@/docs/tutorials/hoon/hoon-school/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
13+- [The Hoon Tutorial](@/docs/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14+ - [Lesson 1.7: Arms and Cores](@/docs/hoon/hoon-school/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
glossary/arvo.md+2−2
@@ -34,7 +34,7 @@ A ship creates its own copy of Arvo via a bootstrap sequence known as a
3434
3535### Further Reading
3636
37−- [The Arvo tutorial](@/docs/tutorials/arvo/_index.md): An in-depth technical
37+- [The Arvo tutorial](@/docs/arvo/overview.md): An in-depth technical
3838 guide to Arvo and its vanes.
39−- [The Technical Overview](@/docs/tutorials/concepts/technical-overview.md): An
39+- [The Technical Overview](@/docs/system-overview/_index.md): An
4040 overview of all of Urbit.
glossary/atom.md+3−3
@@ -15,6 +15,6 @@ number, etc, and an optional constant. A Hoon atom type is _warm_ or _cold_ base
1515
1616### Further Reading
1717
18−- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
19− - [Lesson 1.2: Nouns](@/docs/tutorials/hoon/hoon-school/nouns.md): A Hoon Tutoral lesson that explains how atoms work.
20−- [The Nock explanation](@/docs/tutorials/nock/explanation.md): Includes an explanation of atoms.
18+- [The Hoon Tutorial](@/docs/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
19+ - [Lesson 1.2: Nouns](@/docs/hoon/hoon-school/nouns.md): A Hoon Tutoral lesson that explains how atoms work.
20+- [The Nock explanation](@/docs/nock/explanation.md): Includes an explanation of atoms.
glossary/azimuth.md+2−2
@@ -13,6 +13,6 @@ It should be noted that Azimuth isn't built just for Arvo. It can be used as an
1313
1414### Further Reading
1515
16−- [The Azimuth concepts page](@/docs/tutorials/concepts/azimuth.md): A more in-depth explanation of Azimuth, including information the storage of Urbit identities.
17−- [Install instructions](@/using/install.md): Guide to installing Urbit, which includes instructions on booting with your Urbit identity.
16+- [The Azimuth concepts page](@/docs/azimuth/advanced-azimuth-tools.md): A more in-depth explanation of Azimuth, including information the storage of Urbit identities.
17+- [Install instructions](@/getting-started.md): Guide to installing Urbit, which includes instructions on booting with your Urbit identity.
1818- [Understanding Urbit ID](@/understanding-urbit/urbit-id.md)
glossary/battery.md+2−2
@@ -10,5 +10,5 @@ A **battery** is a collection of Hoon expressions and the head of a [core](../co
1010
1111### Further Reading
1212
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.7: Arms and Cores](@/docs/tutorials/hoon/hoon-school/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
13+- [The Hoon Tutorial](@/docs/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14+ - [Lesson 1.7: Arms and Cores](@/docs/hoon/hoon-school/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
glossary/behn.md+1−1
@@ -11,4 +11,4 @@ Behn is located in `/home/sys/vane/behn.hoon` within [Arvo](../arvo).
1111
1212### Further Reading
1313
14−- [The Behn tutorial](@/docs/tutorials/arvo/behn.md): A technical guide to the Behn vane.
14+- [The Behn tutorial](@/docs/arvo/behn/behn.md): A technical guide to the Behn vane.
glossary/breach.md+2−2
@@ -30,6 +30,6 @@ directory containing the new binary.
3030
3131### Further Reading
3232
33−- [Guide to breaches](@/docs/tutorials/guide-to-breaches.md): A more in-depth
33+- [Guide to breaches](@/using/id/guide-to-breaches.md): A more in-depth
3434 explanation of breaches, including how to perform a personal breach.
35−- [Ship Troubleshooting](@/docs/tutorials/ship-troubleshooting.md): General instructions on getting your ship to work, which includes network connectivity issues.
35+- [Ship Troubleshooting](@/using/os/ship-troubleshooting.md): General instructions on getting your ship to work, which includes network connectivity issues.
glossary/bridge.md+2−2
@@ -28,5 +28,5 @@ This function allows you to view the public information of any Urbit identity, s
2828### Further Reading
2929
3030- [bridge.urbit.org](https://bridge.urbit.org/): The Bridge website.
31−- [Using Bridge](@/using/operations/using-bridge.md): A guide to starting out with Bridge.
32−- [The Azimuth concepts page](@/docs/tutorials/concepts/azimuth.md): A more in-depth explanation of our identity layer.
31+- [Using Bridge](@/using/id/using-bridge.md): A guide to starting out with Bridge.
32+- [The Azimuth concepts page](@/docs/azimuth/advanced-azimuth-tools.md): A more in-depth explanation of our identity layer.
glossary/chat.md+1−1
@@ -28,5 +28,5 @@ There are two "kinds" of chats:
2828### Further Reading
2929
3030- [Landscape](../landscape) includes a web interface for using Chat.
31−- [Messaging guide](@/using/operations/using-your-ship.md#messaging): A guide to
31+- [Messaging guide](@/using/os/messaging.md): A guide to
3232 using Chat from the command line.
glossary/clay.md+2−2
@@ -14,5 +14,5 @@ Clay is located at `/home/sys/vane/clay.hoon` within Arvo.
1414
1515### Further Reading
1616
17−- [Using Your Ship](@/using/operations/using-your-ship.md#filesystem): A user guide that includes instructions on using Clay.
18−- [The Clay tutorial](@/docs/tutorials/arvo/clay.md): A technical guide to the Clay vane.
17+- [Using Your Ship](@/using/os/filesystem.md): A user guide that includes instructions on using Clay.
18+- [The Clay tutorial](@/docs/arvo/clay/clay.md): A technical guide to the Clay vane.
glossary/comet.md+1−1
@@ -12,4 +12,4 @@ Comets have no presence on [Azimuth](../azimuth) and thus have no associated Urb
1212
1313### Further reading
1414
15−- [Creating a Comet](@/using/install.md#comet): A guide to spinning up a comet of your own.
15+- [Creating a Comet](@/getting-started.md#comet): A guide to spinning up a comet of your own.
glossary/core.md+2−2
@@ -10,5 +10,5 @@ A **core** is a cell of a [battery](../battery) and a [payload](../payload). It
1010
1111### Further Reading
1212
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.7: Arms and Cores](@/docs/tutorials/hoon/hoon-school/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
13+- [The Hoon Tutorial](@/docs/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14+ - [Lesson 1.7: Arms and Cores](@/docs/hoon/hoon-school/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
glossary/desk.md+1−1
@@ -12,4 +12,4 @@ Traditionally a ship has at least a base desk and a home desk. The base desk has
1212
1313### Further Reading
1414
15−- [Using Your Ship](@/using/operations/using-your-ship.md#filesystem): A user guide that includes instructions for using desks.
15+- [Using Your Ship](@/using/os/filesystem.md): A user guide that includes instructions for using desks.
glossary/dill.md+1−1
@@ -19,4 +19,4 @@ Dill is located at `/home/sys/vane/dill.hoon` within [Arvo](../arvo).
1919
2020### Further Reading
2121
22−- [The Dill tutorial](@/docs/tutorials/arvo/dill.md): A technical guide to the Dill vane.
22+- [The Dill tutorial](@/docs/arvo/dill/dill.md): A technical guide to the Dill vane.
glossary/dojo.md+1−2
@@ -11,5 +11,4 @@ The other default command-line app is [Chat](../chat). To switch between Dojo
1111and [Chat](../chat) press Ctrl-X. The Dojo is the first thing you encounter after successfully booting your [ship](../ship).
1212
1313### Further Reading
14−- [Using Your Ship](@/using/operations/using-your-ship.md): The "Shell" section contains instructions on using the Dojo.
15−- [Hoon Tutorial Lesson 1.1: Setup](@/docs/tutorials/hoon/hoon-school/setup.md): A great way to get started with using Hoon in the Dojo.
14+- [Hoon Tutorial Lesson 1.1: Setup](@/docs/hoon/hoon-school/setup.md): A great way to get started with using Hoon in the Dojo.
glossary/door.md+2−2
@@ -10,5 +10,5 @@ A **door** is a [core](../core) the payload of which is a cell of sample and con
1010
1111### Further Reading
1212
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.8: Doors](@/docs/tutorials/hoon/hoon-school/doors.md): A Hoon Tutorial lesson that discusses doors.
13+- [The Hoon Tutorial](@/docs/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14+ - [Lesson 1.8: Doors](@/docs/hoon/hoon-school/doors.md): A Hoon Tutorial lesson that discusses doors.
glossary/eyre.md+1−1
@@ -14,4 +14,4 @@ Eyre is located at `/home/sys/vane/eyre.hoon` within [Arvo](../arvo).
1414
1515### Further Reading
1616
17−- [The Eyre tutorial](@/docs/tutorials/arvo/eyre.md): A technical guide to the Eyre vane.
17+- [The Eyre tutorial](@/docs/arvo/eyre/eyre.md): A technical guide to the Eyre vane.
glossary/ford.md+1−1
@@ -14,4 +14,4 @@ Ford is located at `/home/sys/vane/ford.hoon` within [Arvo](../arvo).
1414
1515### Further Reading
1616
17−- [The Ford tutorial](@/docs/tutorials/arvo/ford.md): A technical guide to the Ford vane.
17+- [The Ford tutorial](@/docs/arvo/ford/ford.md): A technical guide to the Ford vane.
glossary/gall.md+3−3
@@ -12,6 +12,6 @@ Gall is located at `/home/sys/vane/gall.hoon` within Arvo.
1212
1313### Further Reading
1414
15−- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language that will give you the foundation necessary for app development.
16− - [Lesson 2.7: Gall](@/docs/tutorials/hoon/hoon-school/gall.md): A Hoon Tutorial lesson that explains how to write a simple Gall app.
17−- [The Gall tutorial](@/docs/tutorials/arvo/gall.md): A technical guide to the Gall vane.
15+- [The Hoon Tutorial](@/docs/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language that will give you the foundation necessary for app development.
16+ - [Lesson 2.7: Gall](@/docs/hoon/hoon-school/gall.md): A Hoon Tutorial lesson that explains how to write a simple Gall app.
17+- [The Gall tutorial](@/docs/arvo/gall/gall.md): A technical guide to the Gall vane.
glossary/gate.md+2−2
@@ -10,5 +10,5 @@ A **gate** is [core](../core) with one [arm](../arm) named $. They are often cal
1010
1111### Further Reading
1212
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14−- [Lesson 1.4 Gates](@/docs/tutorials/hoon/hoon-school/gates.md): A Hoon tutorial lesson about gates.
13+- [The Hoon Tutorial](@/docs/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14+- [Lesson 1.4 Gates](@/docs/hoon/hoon-school/gates.md): A Hoon tutorial lesson about gates.
glossary/hdwallet.md+1−1
@@ -14,4 +14,4 @@ If a proxy or ownership address is compromised or has its keys lost, it can alwa
1414
1515### Further Reading
1616
17−- [The Azimuth concepts page](@/docs/tutorials/concepts/azimuth.md): A more in-depth explanation of Azimuth, including information about the HD wallet.
17+- [The Azimuth concepts page](@/docs/azimuth/advanced-azimuth-tools.md): A more in-depth explanation of Azimuth, including information about the HD wallet.
glossary/hoon.md+2−2
@@ -10,6 +10,6 @@ The Hoon source file is located in `/home/sys/hoon.hoon` within your Urbit.
1010
1111### Further Reading
1212
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.1: Setup](@/docs/tutorials/hoon/hoon-school/nouns.md): How to set up an environment for programming in Hoon.
13+- [The Hoon Tutorial](@/docs/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14+ - [Lesson 1.1: Setup](@/docs/hoon/hoon-school/nouns.md): How to set up an environment for programming in Hoon.
1515- [Why Hoon?](@/blog/why-hoon.md): A blog post that explains why Urbit uses its own programming language.
glossary/jaque.md+1−1
@@ -12,4 +12,4 @@ The current worker utilized by Vere is written in C, while Jaque is written usin
1212
1313### Further Reading
1414
15−- [The Vere tutorial](@/docs/tutorials/vere/_index.md): Learning information for Vere.
15+- [The Vere tutorial](@/docs/vere/_index.md): Learning information for Vere.
glossary/keyfile.md+1−1
@@ -12,4 +12,4 @@ The keyfile is used as an argument in the command line when booting a ship. Duri
1212
1313### Further Reading
1414
15−- [Installation Guide](@/using/install.md): Instructions on using a keyfile to boot a ship.
15+- [Installation Guide](@/getting-started.md): Instructions on using a keyfile to boot a ship.
glossary/mark.md+2−2
@@ -13,5 +13,5 @@ The [Ford](../ford) [vane](../vane) converts data between marks and validates da
1313
1414### Further Reading
1515
16−- [The Clay tutorial](@/docs/tutorials/arvo/clay.md): A technical guide to the Clay vane.
17−- [The Ford tutorial](@/docs/tutorials/arvo/ford.md): A technical guide to the Ford vane.
16+- [The Clay tutorial](@/docs/arvo/clay/clay.md): A technical guide to the Clay vane.
17+- [The Ford tutorial](@/docs/arvo/ford/ford.md): A technical guide to the Ford vane.
glossary/moon.md+2−1
@@ -12,4 +12,5 @@ Unlike planets, moons have no presence on [Azimuth](../azimuth) and have no asso
1212
1313### Further Reading
1414
15−- [Using Your Ship](@/using/operations/using-your-ship.md#moons): The "Moons" section contains instructions for creating and managing moons.
15+- [Using Your Ship](@/using/os/getting-started.md#moons): The "Moons" section contains instructions for creating and managing moons.
16+
glossary/nock.md+1−1
@@ -14,4 +14,4 @@ Code written in [Hoon](../hoon) is compiled to Nock, though it is unnecessary to
1414
1515### Further Reading
1616
17−- [The Nock Tutorial](@/docs/tutorials/nock/_index.md): An-in depth technical guide.
17+- [The Nock Tutorial](@/docs/nock/_index.md): An-in depth technical guide.
glossary/noun.md+3−3
@@ -10,6 +10,6 @@ A **noun** is an [atom](../atom) or a cell, which is an ordered pair of nouns. T
1010
1111### Further Reading
1212
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.2: Nouns](@/docs/tutorials/hoon/hoon-school/nouns.md): A Hoon Tutoral lesson that explains how nouns work.
15−- [The Nock explanation](@/docs/tutorials/nock/_index.md): Includes a low-level explanation of nouns.
13+- [The Hoon Tutorial](@/docs/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14+ - [Lesson 1.2: Nouns](@/docs/hoon/hoon-school/nouns.md): A Hoon Tutoral lesson that explains how nouns work.
15+- [The Nock explanation](@/docs/nock/_index.md): Includes a low-level explanation of nouns.
glossary/payload.md+2−2
@@ -10,5 +10,5 @@ A **payload** is the set of data needed to run computations in a [core](../core)
1010
1111### Further Reading
1212
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.7: Arms and Cores](@/docs/tutorials/hoon/hoon-school/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
13+- [The Hoon Tutorial](@/docs/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14+ - [Lesson 1.7: Arms and Cores](@/docs/hoon/hoon-school/arms-and-cores.md): A Hoon Tutorial lesson that discusses cores.
glossary/pier.md+2−2
@@ -14,5 +14,5 @@ Note that a backup should usually _not_ be taken of your pier as a means of keep
1414### Further Reading
1515
1616- [Event Log](../eventlog): The main important content of the pier directory.
17−- [A Guide to Breaches](@/docs/tutorials/guide-to-breaches.md): Instructions on handling continuity breaches (resets) on the Ames network.
18−- [Ship Troubleshooting](@/docs/tutorials/ship-troubleshooting.md): General instructions on getting your ship to work, which includes network connectivity issues.
17+- [A Guide to Breaches](@/using/id/guide-to-breaches.md): Instructions on handling continuity breaches (resets) on the Ames network.
18+- [Ship Troubleshooting](@/using/os/ship-troubleshooting.md): General instructions on getting your ship to work, which includes network connectivity issues.
glossary/proxies.md+1−1
@@ -26,4 +26,4 @@ Creates new child points given Ethereum address. For [stars](../stars) and [gala
2626### Further Reading
2727
2828- [Azimuth glossary page](../azimuth): The glossary entry for Azimuth.
29−- [The Azimuth concepts page](@/docs/tutorials/concepts/azimuth.md): A more in-depth explanation of Azimuth, including information the storage of Urbit identities.
29+- [The Azimuth concepts page](@/docs/azimuth/advanced-azimuth-tools.md): A more in-depth explanation of Azimuth, including information the storage of Urbit identities.
glossary/replay.md+1−1
@@ -10,4 +10,4 @@ category = "arvo"
1010
1111### Further Reading
1212
13−- [The Vere tutorial](@/docs/tutorials/vere/_index.md): An in-depth technical guide to Vere.
13+- [The Vere tutorial](@/docs/vere/_index.md): An in-depth technical guide to Vere.
glossary/ship.md+2−2
@@ -20,7 +20,7 @@ To be able to use the Arvo network, planets, stars, and galaxies must be combine
2020
2121### Further Reading
2222
23−- [Using Bridge](@/using/install.md): A guide to installing Urbit and booting a ship.
24−- [Ship Troubleshooting](@/docs/tutorials/ship-troubleshooting.md): General instructions on getting your ship to work, which includes network connectivity issues.
23+- [Using Bridge](@/getting-started.md): A guide to installing Urbit and booting a ship.
24+- [Ship Troubleshooting](@/using/os/ship-troubleshooting.md): General instructions on getting your ship to work, which includes network connectivity issues.
2525- [Understanding Urbit ID](@/understanding-urbit/urbit-id.md)
2626- [Pier](../pier): The directory containing a ship's state.
glossary/sync.md+1−1
@@ -13,4 +13,4 @@ By default, in the [galaxy](../galaxy)/[star](../star)/[planet](../planet)/[moon
1313
1414### Further Reading
1515
16−- [Using Your Ship](@/using/operations/using-your-ship.md#filesystem): A user guide that includes instructions on using Clay commands, including `|sync`.
16+- [Using Your Ship](@/using/os/filesystem.md): A user guide that includes instructions on using Clay commands, including `|sync`.
glossary/trap.md+2−2
@@ -10,5 +10,5 @@ A **trap** is a [core](../core) with one arm named $ and no sample. They are oft
1010
1111### Further Reading
1212
13−- [The Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14− - [Lesson 1.4.1: Walkthrough: Recursion](@/docs/tutorials/hoon/hoon-school/recursion.md): A Hoon Tutorial lesson that uses traps to build recursive functions.
13+- [The Hoon Tutorial](@/docs/hoon/hoon-school/_index.md): Our guide to learning the Hoon programming language.
14+ - [Lesson 1.4.1: Walkthrough: Recursion](@/docs/hoon/hoon-school/recursion.md): A Hoon Tutorial lesson that uses traps to build recursive functions.
glossary/vane.md+1−1
@@ -21,4 +21,4 @@ A **vane** is an [Arvo](../arvo) kernel module that performs essential system op
2121
2222### Further Reading
2323
24−- [The Arvo tutorial](@/docs/tutorials/arvo/_index.md): An in-depth technical guide to Arvo and its vanes.
24+- [The Arvo tutorial](@/docs/arvo/overview.md): An in-depth technical guide to Arvo and its vanes.
glossary/vere.md+2−2
@@ -14,5 +14,5 @@ Vere consists of two processes that communicate via a socket: a daemon process i
1414
1515### Further Reading
1616
17−- [The Technical Overview](@/docs/tutorials/concepts/technical-overview.md)
18−- [The Vere tutorial](@/docs/tutorials/vere/_index.md): An in-depth technical guide to Vere.
17+- [The Technical Overview](@/docs/system-overview/_index.md)
18+- [The Vere tutorial](@/docs/vere/_index.md): An in-depth technical guide to Vere.
hoon/_index.mdnew file+26
@@ -0,0 +1,26 @@
1++++
2+title = "Hoon"
3+weight = 400
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+Hoon is Urbit's high-level general-purpose programming language.
9+
10+### [Overview](@/docs/hoon/overview.md)
11+
12+An overview of why [Arvo](@/docs/arvo/overview.md) was written using Hoon.
13+
14+### [Hoon School](@/docs/hoon/hoon-school/_index.md)
15+
16+A series of lessons designed to get the beginner started with Hoon. This is our
17+recommended starting point for anyone who wishes to learn Hoon.
18+
19+### [Guides](@/docs/hoon/guides/_index.md)
20+
21+Tutorials on how to do specific tasks with Hoon.
22+
23+### [Reference](@/docs/hoon/reference/_index.md)
24+
25+Technical reference material on Hoon, including runes, the type system, and the
26+standard library.
hoon/guides/_index.mdnew file+12
@@ -0,0 +1,12 @@
1++++
2+title = "Guides"
3+weight = 20
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+## [Writing Aqua Tests](@/docs/hoon/guides/aqua.md)
9+
10+## [CLI Apps](@/docs/hoon/guides/cli-tutorial.md)
11+
12+## [Parsing](@/docs/hoon/guides/parsing.md)
tutorials/hoon/hoon-school/aqua.md → hoon/guides/aqua.mdrenamed

The content is the same.

tutorials/hoon/cli-tutorial.md → hoon/guides/cli-tutorial.mdrenamed+2−2
@@ -22,7 +22,7 @@ the functionality of the `%shoe` app and then go through the code line-by-line.
2222
2323This tutorial can be
2424considered to be an application equivalent of the [Hoon school
25−lesson](@/docs/tutorials/hoon/hoon-school/generators.md#ask) on `sole` and `%ask`
25+lesson](@/docs/hoon/hoon-school/generators.md#ask) on `sole` and `%ask`
2626generators, which only covers the bare minimum necessary to write generators
2727that take user input.
2828
@@ -336,7 +336,7 @@ Here begins the implementation of the additional arms required by the
336336`+command-parser` is of central importance - it is what is used to parse user
337337input and transform it into `command`s for the app to execute. Writing a proper
338338command parser requires understanding of the Hoon parsing functions found in the
339−standard library. How to do so may be found in the [parsing tutorial](@/docs/tutorials/hoon/parsing.md). For now, it is sufficient to know that this arm matches the text "demo" and
339+standard library. How to do so may be found in the [parsing tutorial](@/docs/hoon/guides/parsing.md). For now, it is sufficient to know that this arm matches the text "demo" and
340340produces a `[? command]`-shaped noun in response. Note how the `&` signifies that the command will be run as soon as it has been entered, without waiting for the user to press return.
341341
342342
tutorials/hoon/parsing.md → hoon/guides/parsing.mdrenamed+13−13
@@ -145,11 +145,11 @@ words, a parser.
145145
146146These functions are used to build `rule`s (i.e. parsers), and thus are often
147147called rule-builders. For a complete list of parser builders, see [4f: Parsing
148−(Rule-Builders)](@/docs/reference/library/4f.md), but also the more specific
148+(Rule-Builders)](@/docs/hoon/reference/stdlib/4f.md), but also the more specific
149149functions in [4h: Parsing (ASCII
150−Glyphs)](@/docs/reference/library/4h.md), [4i: Parsing (Useful
151−Idioms)](@/docs/reference/library/4i.md), [4j: Parsing (Bases and Base
152−Digits)](@/docs/reference/library/4j.md), [4l: Atom Parsing](@/docs/reference/library/4l.md).
150+Glyphs)](@/docs/hoon/reference/stdlib/4h.md), [4i: Parsing (Useful
151+Idioms)](@/docs/hoon/reference/stdlib/4i.md), [4j: Parsing (Bases and Base
152+Digits)](@/docs/hoon/reference/stdlib/4j.md), [4l: Atom Parsing](@/docs/hoon/reference/stdlib/4l.md).
153153
154154### `+just`
155155
@@ -245,7 +245,7 @@ is `%foo`.
245245```
246246
247247One common scenario where `+cold` sees play is when writing [command line
248−interface (CLI) apps](@/docs/tutorials/hoon/cli-tutorial.md). We usher the
248+interface (CLI) apps](@/docs/hoon/guides/cli-tutorial.md). We usher the
249249reader there to find an example where `+cold` is used.
250250
251251
@@ -270,7 +270,7 @@ alongside a `rule`, and attempt to parse the input with the `rule`. If the
270270parse succeeds, it returns the result. There are crashing and unitized versions
271271of each caller, corresponding to what happens when a parse fails.
272272
273−For additional information including additional examples see [4g: Parsing (Outside Caller)](@/docs/reference/library/4g.md).
273+For additional information including additional examples see [4g: Parsing (Outside Caller)](@/docs/hoon/reference/stdlib/4g.md).
274274
275275### Parsing `tape`s
276276
@@ -300,7 +300,7 @@ need to deal directly with `nail`s except where it is ilustrative to do so.
300300
301301### Parsing atoms
302302
303−[Recall](@/docs/tutorials/hoon/hoon-school/lists.md) that `cord`s are atoms with the aura
303+[Recall](@/docs/hoon/hoon-school/lists.md) that `cord`s are atoms with the aura
304304`@t` and are typically used to represent strings internally as data, as atoms
305305are faster for the computer to work with than `tape`s, which are `list`s of
306306`@tD` atoms. `+rash` and `+rush` are for parsing atoms, with `+rash` being
@@ -312,7 +312,7 @@ similary for `+rust`.
312312
313313The standard library provides a number of gates that take a `rule` and
314314produce a new modified `rule` according to some process. We call these _parser modifiers_. These are
315−documented among the [parser builders](@/docs/reference/library/4f.md).
315+documented among the [parser builders](@/docs/hoon/reference/stdlib/4f.md).
316316
317317
318318### `+ifix`
@@ -326,7 +326,7 @@ surrounded on both sides by text that matches a pair of `rule`s, which is discar
326326```
327327`+pal` and `+par` are shorthand for `(just '(')` and `(just ')')`, respectively. All
328328ASCII glyphs have counterparts of this sort, documented
329−[here](@/docs/reference/library/4h.md).
329+[here](@/docs/hoon/reference/stdlib/4h.md).
330330
331331
332332### `+star` {#star}
@@ -355,8 +355,8 @@ and we note that the parsing ceases when it fails.
355355
356356Building complex parsers from simpler parsers is accomplished in Hoon with the
357357use of two tools: the monadic applicator rune
358−[`;~`](@/docs/reference/hoon-expressions/rune/mic.md#micsig) and [parsing
359−combinators](@/docs/reference/library/4e.md). First we introduce a few
358+[`;~`](@/docs/hoon/reference/rune/mic.md#micsig) and [parsing
359+combinators](@/docs/hoon/reference/stdlib/4e.md). First we introduce a few
360360combinators, then we examine more closely how `;~` is used to chain them together.
361361
362362The syntax to combine `rule`s is
@@ -450,7 +450,7 @@ syntax error
450450## Parsing numbers
451451
452452Functions for parsing numbers are documented in [4j: Parsing (Bases and Base
453−Digits)](@/docs/reference/library/4j.md). In particular, `dem` is a `rule`
453+Digits)](@/docs/hoon/reference/stdlib/4j.md). In particular, `dem` is a `rule`
454454for parsing decimal numbers.
455455
456456```
@@ -595,7 +595,7 @@ and over again. Then it follows the `rule` we described above.
595595An _expression_ is either a term plus an expression or a term.
596596
597597In the case of a term plus an expression, we actually must compute what that equals. Thus we will
598−make use of [`+slug`](@/docs/reference/library/4f.md#slug), which parses a
598+make use of [`+slug`](@/docs/hoon/reference/stdlib/4f.md#slug), which parses a
599599delimited list into `tape`s separated by a given delimiter and then composes
600600them by folding with a binary gate. In this case, our delimiter is `+` and our
601601binary gate is `+add`. That is to say, we will split the input string into terms
hoon/hoon-school/_index.mdnew file+41
@@ -0,0 +1,41 @@
1++++
2+title = "Hoon School"
3+weight = 10
4+sort_by = "weight"
5+template = "sections/docs/hoon.html"
6+aliases = ["/docs/byte/0/", "/docs/byte", "/docs/learn/hoon/hoon-tutorial/"]
7++++
8+
9+This series is designed to teach you Hoon without assuming you have an extensive
10+programming background. In fact, you should be able to follow much of it even if
11+you have no programming experience at all, though of course experience helps. We
12+strongly encourage you to try out all the examples of each lesson. These lessons
13+are meant for the beginner, but they aren't meant to be skimmed. Each lesson
14+falls into one of two categories: **readings**, which are prose-heavy
15+explanations of Hoon fundamentals, and **walkthroughs**, which are line-by-line
16+explanations of example programs. Walkthroughs are found between readings,
17+offering a practical implementation of the concepts taught in the reading
18+before.
19+
20+If you're curious about why Urbit is written in this new language, we recommend
21+reading the [Hoon overview](@/docs/hoon/overview.md) that covers the high-level
22+design decisions behind the language.
23+
24+Chapter 1 introduces and explains the fundamental concepts you need in order to
25+understand Hoon's semantics.
26+
27+Hoon is a "subject-oriented" programming language &mdash; every expression of
28+Hoon is evaluated relative to a **subject**. The subject is a piece of data that
29+represents the environment, or the context, of an expression. After reading
30+Chapter 1 you should understand what the subject is and how to refer to its
31+various parts. In this chapter you'll also learn about
32+**[cores](/docs/glossary/core/)**, which are an important data structure in
33+Hoon. Once you get the hang of [cores](/docs/glossary/core/) you'll be able to
34+write your own functions in Hoon.
35+
36+Chapter 2 covers the type system, writing basic apps, and the workings of the
37+Arvo kernel.
38+
39+You should also consider enrolling in Hooniversity, a regularly held
40+community-run course which follows along the Hoon School curriculum and may be
41+found at [Hooniversity](https://hooniversity.org/).
tutorials/hoon/hoon-school/ackermann.md → hoon/hoon-school/ackermann.mdrenamed

The content is the same.

tutorials/hoon/hoon-school/arms-and-cores.md → hoon/hoon-school/arms-and-cores.mdrenamed+3−3
@@ -181,7 +181,7 @@ To reinforce your newfound understanding of arms and cores, let's go over the va
181181
182182### Address-Based Wings
183183
184−In the [previous lesson](@/docs/tutorials/hoon/hoon-school/the-subject-and-its-legs.md), you saw how the following expressions return legs based on an address in the subject: `+n`, `.`, `-`, `+`, `+>`, `+<`, `->`, `-<`, `&`, `|` etc. When these resolve to the part of the subject containing an arm, they **don't** evaluate the arm. They simply return the indicated noun fragment of the subject, as if it were a leg.
184+In the [previous lesson](@/docs/hoon/hoon-school/the-subject-and-its-legs.md), you saw how the following expressions return legs based on an address in the subject: `+n`, `.`, `-`, `+`, `+>`, `+<`, `->`, `-<`, `&`, `|` etc. When these resolve to the part of the subject containing an arm, they **don't** evaluate the arm. They simply return the indicated noun fragment of the subject, as if it were a leg.
185185
186186Let's use `-.c` to look at the head of `c`, i.e., the battery of the core:
187187
@@ -574,7 +574,7 @@ and so on, down to
574574 $@(~ [~ u=item])
575575--
576576```
577−This core contains the arms in parts [1a-1c of the standard library documentation](@/docs/reference/library/1a.md). If you count them, there are 41 arms in the core from `++ add` down to `++ unit`. We again can see this fact reflected in the dojo by looking at the subject of `add`.
577+This core contains the arms in parts [1a-1c of the standard library documentation](@/docs/hoon/reference/stdlib/1a.md). If you count them, there are 41 arms in the core from `++ add` down to `++ unit`. We again can see this fact reflected in the dojo by looking at the subject of `add`.
578578```
579579> ..add
580580<41.mac 1.ane $141>
@@ -582,7 +582,7 @@ This core contains the arms in parts [1a-1c of the standard library documentatio
582582Here we see that core containing `hoon-version` is in the subject of the
583583section one core.
584584
585−Next, [section two](@/docs/reference/library/2a.md) starts:
585+Next, [section two](@/docs/hoon/reference/stdlib/2a.md) starts:
586586```
587587=>
588588:: ::
tutorials/hoon/hoon-school/atoms-auras-and-simple-cell-types.md → hoon/hoon-school/atoms-auras-and-simple-cell-types.mdrenamed+3−1
@@ -18,7 +18,7 @@ In this lesson we'll cover (1)-(4) as they pertain to atoms and simple cell type
1818
1919## Atoms and Auras
2020
21−In [Lesson 1.2](@/docs/tutorials/hoon/hoon-school/nouns.md) we defined what an atom is: any unsigned integer. In this lesson we'll expand on that discussion, going over how Hoon's type system implements auras.
21+In [Lesson 1.2](@/docs/hoon/hoon-school/nouns.md) we defined what an atom is: any unsigned integer. In this lesson we'll expand on that discussion, going over how Hoon's type system implements auras.
2222
2323In the most straightforward sense, atoms simply are unsigned integers. But they can also be interpreted as representing signed integers, ASCII symbols, floating-point values, dates, binary numbers, hexadecimal numbers, and more. Every atom is, in and of itself, just an unsigned integer; but Hoon keeps track of type information about each atom, and this info tells Hoon how to interpret the atom in question.
2424
@@ -109,6 +109,8 @@ Aura Meaning Example Literal Syntax
109109
110110Some of these auras nest under others. For example, `@u` is for all unsigned auras. But there are other, more specific auras; `@ub` for unsigned binary numbers, `@ux` for unsigned hexadecimal numbers, etc.
111111
112+For a more complete list of auras, see [Auras](@/docs/hoon/reference/auras.md).
113+
112114## Aura Inference in Hoon
113115
114116Let's do more examples in the Dojo using the `?` operator. We'll focus on just the unsigned auras for now:
tutorials/hoon/hoon-school/bank-account.md → hoon/hoon-school/bank-account.mdrenamed+2−2
@@ -51,7 +51,7 @@ In the above code chunk, we're creating a cell. The head of this cell is `%say`.
5151
5252In this code above, we're going to compose two runes using `=<`, which has inverted arguments. We use this rune to keep the heaviest twig to the bottom of the code.
5353
54−`=~` is a rune that composes multiple expressions. We take `new-account` and use that as the subject for the call to `deposit`. `deposit` and `withdraw` both produce a new version of the door that's used in subsequent calls, which is why we are able to chain them in this fashion. The final reference is to `balance`, which is the account balance contained in the [core](/docs/glossary/core/) we that that we examine below.
54+`=~` is a rune that composes multiple expressions. We take `new-account` and use that as the subject for the call to `deposit`. `deposit` and `withdraw` both produce a new version of the door that's used in subsequent calls, which is why we are able to chain them in this fashion. The final reference is to `balance`, which is the account balance contained in the [core](/docs/glossary/core/) that we examine below.
5555
5656```hoon
5757|%
@@ -75,6 +75,6 @@ Each of these arms produces a gate which takes an `@ud` argument. Each of these
7575+>.$(balance (add balance amount))
7676```
7777
78−`+>` is [wing syntax](@/docs/reference/hoon-expressions/limb/wing.md). This particular wing construction looks for the tail of the tail (the third element) in `$`, the subject of the gate we are in. The `withdraw` and `deposit` arms create gates with the entire `new-account` door as the context in their cores' `[battery sample context]`, in the "tail of the tail" slot. We change `balance` to be the result of adding `balance` and `amount` and produce the door as the result. `withdraw` functions the same way only doing subtraction instead of addition.
78+`+>` is [wing syntax](@/docs/hoon/reference/limbs/wing.md). This particular wing construction looks for the tail of the tail (the third element) in `$`, the subject of the gate we are in. The `withdraw` and `deposit` arms create gates with the entire `new-account` door as the context in their cores' `[battery sample context]`, in the "tail of the tail" slot. We change `balance` to be the result of adding `balance` and `amount` and produce the door as the result. `withdraw` functions the same way only doing subtraction instead of addition.
7979
8080It's important to notice that the sample, `balance`, is stored as part of the door rather than existing outside of it.
tutorials/hoon/hoon-school/behn.md → hoon/hoon-school/behn.mdrenamed+5−3
@@ -6,15 +6,17 @@ template = "doc.html"
66
77In this lesson we introduce the notion of a vane, which should be thought of as a kernel module for Arvo (if you don't know what that means yet, just keep reading). We first present a primer on what vanes are and how they communicate, followed by an examination of the simplest vane, known as Behn (pronounced like "bane"), which is Arvo's timekeeper.
88
9−Following this lesson, we will introduce Gall, a vane used to build user space apps. Then we have a walkthrough where we construct an [egg timer](@/docs/tutorials/hoon/hoon-school/egg-timer.md) as a Gall app that interacts with Behn.
9+Following this lesson, we will introduce Gall, a vane used to build user space apps. Then we have a walkthrough where we construct an [egg timer](@/docs/hoon/hoon-school/egg-timer.md) as a Gall app that interacts with Behn.
1010
1111## Vanes
1212
1313In order to introduce vanes, we must first introduce the concept of a [kernel](https://en.wikipedia.org/wiki/Kernel_(operating_system)). The kernel is in some sense the "core" of an operating system, in that it has complete control over all events in the system and may perform any operation. It is the first part of the operating system to boot, and is responsible for spawning all other processes and routing their communication to one another. The tasks a kernel performs are very low level - managing memory, prioritizing processes, keeping track of time, managing hardware I/O, etc.
1414
15−Kernel code is generally kept to be as minimal as possible, and so almost anything non-trivial is put into an extension called a kernel module. **Vanes** are kernel modules for Arvo. Arvo currently has eight vanes known as Ames, Behn, Clay, Dill, Eyre, Ford, Gall, and Hall. You can read a short description of each one in [Arvo](@/docs/tutorials/arvo/_index.md), along with a more thorough explanation of how vanes communicate than the following.
15+Kernel code is generally kept to be as minimal as possible, and so almost anything non-trivial is put into an extension called a kernel module. **Vanes** are kernel modules for Arvo. Arvo currently has eight vanes known as Ames, Behn, Clay, Dill, Eyre, Ford, Gall, and Hall. You can read a short description of each one in [Arvo](@/docs/arvo/_index.md), along with a more thorough explanation of how vanes communicate than the following.
1616
17−Vanes communicate with one another by exchanging chunks of data known as `move`s. We will get into more detail above what a `move` is in our example of Behn below, (and also see [Arvo](@/docs/tutorials/arvo/_index.md)) but at a high level one should think of a `move` as either a request from one vane to another or a response to a request. In our egg timer app, Gall and Behn will be exchanging `move`s.
17+Vanes communicate with one another by exchanging chunks of data known as
18+`move`s. We will get into more detail above what a `move` is in our example of
19+Behn below, (and also see [move traces](@/docs/arvo/tutorials/move-trace.md)) but at a high level one should think of a `move` as either a request from one vane to another or a response to a request. In our egg timer app, Gall and Behn will be exchanging `move`s.
1820
1921Notably, vanes are _not_ something that a user ever interacts with directly. They live in an area of the memory called "kernel space", while all user processes live in [user space](https://en.wikipedia.org/wiki/User_space). Applications in user space make _system calls_ to the kernel, which the kernel may or may not obey (for security and stability purposes). These requests could be things such as asking for the time, getting the input of a hardware device, making an http request, or moving a file. In our egg timer app, we will be making system calls to ask Behn to handle the timer aspect.
2022
tutorials/hoon/hoon-school/caesar.md → hoon/hoon-school/caesar.mdrenamed+2−2
@@ -216,7 +216,7 @@ the second part `q` is welded to the front, and the first part `p` is welded to
216216 $(chart (~(put by chart) i.key-position i.value-result), key-position t.key-position, value-result t.value-result)
217217```
218218
219−The `map-maker` arm, as the name implies, takes two tapes and creates a [`map`](/docs/reference/library/2o/#map) out of them.
219+The `map-maker` arm, as the name implies, takes two tapes and creates a [`map`](/docs/hoon/reference/stdlib/2o/#map) out of them.
220220A `map` is a type equivalent to a dictionary in other languages: it's a data structure that
221221associates a key with a value. If, for example, we wanted to have an association
222222between `a` and 1 and `b` and 2, we could use a `map`.
@@ -256,7 +256,7 @@ that constructs our `map`: `$(chart (~(put by chart) i.a i.b), a t.a, b t.b)`.
256256This code recursively adds an entry in our `map` where the head of the `tape` `a`
257257maps to the value of the head of `tape` `b` with `~(put by chart)`, our calling
258258of the `put` arm of the `by` map-engine core (note that `~(<wing> <door> <sample>`) is
259−a shorthand for `%~ <wing> <door> <sample>` (see the [Calls % ('cen')](/docs/reference/hoon-expressions/rune/cen/#censig)
259+a shorthand for `%~ <wing> <door> <sample>` (see the [Calls % ('cen')](@/docs/hoon/reference/rune/cen.md#censig)
260260documentation for more information). The recursion also "consumes"
261261those heads with every iteration by changing `a` and `b` to their tails using `a t.a, b t.b`.
262262
tutorials/hoon/hoon-school/conditionals.md → hoon/hoon-school/conditionals.mdrenamed+2−2
@@ -18,7 +18,7 @@ In this lesson, we will write a generator that takes an integer and checks if it
1818==
1919```
2020
21−On the very first line, with `:- %say` we are beginning to create a generator of the `%say` variety. The result of a `%say` generator is a cell with a head of `%say` and tail that is a [gate](/docs/glossary/gate/), itself producing a `cask`, a pair of a `mark` and some data. It's not important for understanding conditionals; this is just template code. For more information about `%say` generators, see the [Generators](@/docs/tutorials/hoon/hoon-school/generators.md) documentation.
21+On the very first line, with `:- %say` we are beginning to create a generator of the `%say` variety. The result of a `%say` generator is a cell with a head of `%say` and tail that is a [gate](/docs/glossary/gate/), itself producing a `cask`, a pair of a `mark` and some data. It's not important for understanding conditionals; this is just template code. For more information about `%say` generators, see the [Generators](@/docs/hoon/hoon-school/generators.md) documentation.
2222
2323```hoon
2424|= [* [n=@ud ~] ~]
@@ -101,4 +101,4 @@ Of course, doing so would be needlessly obfuscating -- we mention this only to i
101101
102102- `?|` takes an indefinite number of children. It's the logical "or" operator. It checks if at least one of its children is true.
103103
104−To see an exhaustive list of "wut" runes, check out the [reference documentation on conditionals](@/docs/reference/hoon-expressions/rune/wut.md).
104+To see an exhaustive list of "wut" runes, check out the [reference documentation on conditionals](@/docs/hoon/reference/rune/wut.md).
tutorials/hoon/hoon-school/doors.md → hoon/hoon-school/doors.mdrenamed+2−2
@@ -356,7 +356,7 @@ Readers with some mathematical background may notice that `~( )` expressions all
356356Thus, you may think of the `c` door as a function for making functions. Use the `~(arm c arg)` syntax -- `arm` defines which kind of gate is produced (i.e., which arm of the door is used to create the gate), and `arg` defines the value of `b` in that gate, which in turn affects the product value of the gate produced.
357357
358358The standard library provides [currying
359−functionality](@/docs/reference/library/2n.md#curry) outside of the context of
359+functionality](@/docs/hoon/reference/stdlib/2n.md#curry) outside of the context of
360360doors - see `+curr` and `+cury`.
361361
362362#### Creating Doors with a Modified Sample
@@ -369,7 +369,7 @@ In the above example we created a door `c` with sample `b=@` and found that the
369369 ++ greater |=(a=@ (gth a b))
370370 --
371371```
372−Here the type of `b` is inferred to be `@` based on the example value `7`, similar to how we've seen casting done by example. You will learn more about how types are inferred in [Lesson 2.2](@docs/tutorials/hoon/hoon-school/type-checking-and-type-inference).
372+Here the type of `b` is inferred to be `@` based on the example value `7`, similar to how we've seen casting done by example. You will learn more about how types are inferred in [Lesson 2.2](@docs/hoon/hoon-school/type-checking-and-type-inference.md).
373373
374374### Doors in the Hoon Standard Library
375375
tutorials/hoon/hoon-school/egg-timer.md → hoon/hoon-school/egg-timer.mdrenamed

The content is the same.

tutorials/hoon/hoon-school/fibonacci.md → hoon/hoon-school/fibonacci.mdrenamed+1−1
@@ -27,7 +27,7 @@ On the first line, we use `|=` to produce a [gate](/docs/glossary/gate/) which t
2727%- flop
2828```
2929
30−In the line above, we use `flop` on the output of the rest of the program. `flop` is a [standard library](https://urbit.org/docs/reference/library/) function to reverse a list.
30+In the line above, we use `flop` on the output of the rest of the program. `flop` is a [standard library](https://urbit.org/docs/hoon/reference/stdlib/) function to reverse a list.
3131
3232Why are we using this instead of just producing the list in the order we want it in the first place? Because with lists, adding an element to the end is a computationally expensive operation that gets more expensive the longer the list is, due to the fact that you need to traverse to the end of the tree. Adding an element to the front, however, is cheap. [In Big-O notation](https://en.wikipedia.org/wiki/Big_O_notation), adding to the end of a list is O(n) and the front is O(1).
3333
tutorials/hoon/hoon-school/gall.md → hoon/hoon-school/gall.mdrenamed+1−1
@@ -7,7 +7,7 @@ aliases = ["/docs/learn/hoon/hoon-tutorial/gall/"]
77
88Gall is the Arvo vane responsible for handling user space applications. When writing a Gall application there are several things you will need to understand.
99
10−For another explanation of Gall, take a look at [/tutorial/arvo/gall](/docs/tutorials/arvo/gall)
10+For additional information on Gall, see the [Gall docs](@/docs/arvo/gall/_index.md).
1111
1212## bowl and moves
1313
tutorials/hoon/hoon-school/gates.md → hoon/hoon-school/gates.mdrenamed

The content is the same.

tutorials/hoon/hoon-school/generators.md → hoon/hoon-school/generators.mdrenamed

The content is the same.

tutorials/hoon/hoon-school/hoon-syntax.md → hoon/hoon-school/hoon-syntax.mdrenamed+15−15
@@ -84,7 +84,7 @@ We start with atom literals. Each of these is a basic expression of Hoon that ev
8484~zod
8585```
8686
87−Recall from [Lesson 1.2](@/docs/tutorials/hoon/hoon-school/nouns.md) that even though atoms are unsigned integers, they can be pretty-printed in different ways. The way an atom is to be represented depends on its aura. The literal syntax for each of the hard-coded auras will be explained further in [Lesson 2.1](@/docs/tutorials/hoon/hoon-school/atoms-auras-and-simple-cell-types.md).
87+Recall from [Lesson 1.2](@/docs/hoon/hoon-school/nouns.md) that even though atoms are unsigned integers, they can be pretty-printed in different ways. The way an atom is to be represented depends on its aura. The literal syntax for each of the hard-coded auras will be explained further in [Lesson 2.1](@/docs/hoon/hoon-school/atoms-auras-and-simple-cell-types.md).
8888
8989Cell literals can be written in Hoon using `[ ]`. Cell literals are complex, because other expressions are put inside the square brackets. Examples:
9090
@@ -111,7 +111,7 @@ You can also put complex expressions inside square brackets to make a cell. Thes
111111
112112### Wings
113113
114−A wing expression is a series of limb expressions separated by `.`. A deeper explanation can be found on the [wing](@/docs/reference/hoon-expressions/limb/wing.md) and [limb](@/docs/reference/hoon-expressions/limb/limb.md) reference pages.
114+A wing expression is a series of limb expressions separated by `.`. A deeper explanation can be found on the [wing](@/docs/hoon/reference/limbs/wing.md) and [limb](@/docs/hoon/reference/limbs/limb.md) reference pages.
115115
116116Let’s start with the base case: a single limb. A limb expression is a trivial wing expression -- there is only one limb in the series. Some one-limb wings:
117117
@@ -124,7 +124,7 @@ Let’s start with the base case: a single limb. A limb expression is a trivial
124124- `add`
125125- `mul`
126126
127−As a special limb we also have `$`. This is the name of the [arm](/docs/glossary/arm/) in special one-armed [cores](/docs/glossary/core/) called “gates”. (We’ll cover the role of `$` in [Lesson 1.4](@/docs/tutorials/hoon/hoon-school/gates.md).)
127+As a special limb we also have `$`. This is the name of the [arm](/docs/glossary/arm/) in special one-armed [cores](/docs/glossary/core/) called “gates”. (We’ll cover the role of `$` in [Lesson 1.4](@/docs/hoon/hoon-school/gates.md).)
128128
129129Wing expressions with multiple limbs are complex expressions. Examples:
130130
@@ -141,7 +141,7 @@ Wing expressions with multiple limbs are complex expressions. Examples:
141141
142142Hoon is a statically typed language. You’ll learn more about the type system later in the chapter. For now, just know that Hoon’s type system uses special symbols to indicate certain fundamental types: `~` (null), `*` (noun), `@` (atom), `^` (cell), and `?` (flag). Each of these symbols can be used as a stand-alone expression of Hoon. In the case of `@` there may be a series of letters following it, to indicate an atom aura; e.g., `@s`, `@rs`, `@tas`, and `@tD`.
143143
144−They may also be put in brackets to indicate compound types, e.g., `[@ ^]`, `[@ud @sb]`, `[[? *] ^]`. (Technically these expressions don’t _always_ indicate compound types. In certain contexts they’re interpreted in a different way. We’ll address this variation of meaning in [Lesson 2.3](@/docs/tutorials/hoon/hoon-school/structures-and-complex-types.md).)
144+They may also be put in brackets to indicate compound types, e.g., `[@ ^]`, `[@ud @sb]`, `[[? *] ^]`. (Technically these expressions don’t _always_ indicate compound types. In certain contexts they’re interpreted in a different way. We’ll address this variation of meaning in [Lesson 2.3](@/docs/hoon/hoon-school/structures-and-complex-types.md).)
145145
146146### Rune Expressions
147147
@@ -151,7 +151,7 @@ Expressions with a rune at the beginning are rune expressions. Most runes are us
151151
152152Runes are classified by family (with the exceptions of `--` and `==`). The first of the two symbols indicates the family -- e.g., the `^-` rune is in the `^` family of runes, and the `|=` and `|%` runes are in the `|` family. The runes of particular family usually have related meanings. Two simple examples: the runes in the `|` family are all used to create cores, and the runes in the `:` family are all used to create cells.
153153
154−Rune expressions are usually complex, which means they usually have one or more subexpressions. The appropriate syntax varies from rune to rune; after all, they’re used for different purposes. To see the syntax rules for a particular rune, consult the [rune reference](@/docs/reference/hoon-expressions/rune/_index.md). Nevertheless, there are some general principles that hold of all rune expressions.
154+Rune expressions are usually complex, which means they usually have one or more subexpressions. The appropriate syntax varies from rune to rune; after all, they’re used for different purposes. To see the syntax rules for a particular rune, consult the [rune reference](@/docs/hoon/reference/rune/_index.md). Nevertheless, there are some general principles that hold of all rune expressions.
155155
156156Runes generally do not need to be closed. In other languages you’ll see an abundance of terminators, such as opening and closing parentheses, and this way of doing this is largely absent from Urbit. That’s because all runes take a fixed number of children. Children can themselves be runes (with more children), and Hoon programs work by chaining through these series of children until a value -- not another rune -- is arrived at. This makes Hoon code nice and neat to look at.
157157
@@ -213,7 +213,7 @@ What Hoon expression does the following figure correspond to, and what does it e
213213Right. This represents the Hoon expression `:- 2 :- 3 4`,
214214and evaluates to `[2 [3 4]]`. Remember, though, that if you input this into dojo it will print as `[2 3 4]`.
215215
216−Thinking in terms of these “LEGO block” diagrams, as well as the more literal binary tree diagrams utilized in [Lesson 1.2](@/docs/tutorials/hoon/hoon-school/nouns.md), can be a helpful learning and debugging tactic.
216+Thinking in terms of these “LEGO block” diagrams, as well as the more literal binary tree diagrams utilized in [Lesson 1.2](@/docs/hoon/hoon-school/nouns.md), can be a helpful learning and debugging tactic.
217217
218218##### Exercise 1.3a
219219
@@ -279,7 +279,7 @@ The irregular `( )` gate-calling syntax is versatile -- it is also a shortcut fo
279279
280280The `( )` gate-calling syntax can be used for gates with any number of arguments.
281281
282−You can find other irregular forms in the irregular expression [reference document](@/docs/reference/hoon-expressions/irregular.md).
282+You can find other irregular forms in the irregular expression [reference document](@/docs/hoon/reference/irregular.md).
283283
284284### Expressions That Are Only Irregular
285285
@@ -314,7 +314,7 @@ b=[16 18]
314314[16 18]
315315```
316316
317−To see other irregular expressions, check the irregular expression [reference document](@/docs/reference/hoon-expressions/irregular.md).
317+To see other irregular expressions, check the irregular expression [reference document](@/docs/hoon/reference/irregular.md).
318318
319319
320320## The Standard Library
@@ -336,16 +336,16 @@ Standard library functions are often built with other standard library functions
336336
337337## Reference Materials
338338
339−The Hoon syntax can be intimidating for the uninitiated, so it’s good to remember where you can look up expressions. The [Reference](@/docs/reference/_index.md) section itself is a good place to find the materials that you need. These children sections are likely to be useful:
339+The Hoon syntax can be intimidating for the uninitiated, so it’s good to remember where you can look up expressions. The [Reference](@/docs/hoon/reference/_index.md) section itself is a good place to find the materials that you need. These children sections are likely to be useful:
340340
341−- The [Runes](@/docs/reference/hoon-expressions/rune/_index.md) page will show you how to use any Hoon rune.
342−- The [Cheat Sheet](@/docs/reference/cheat-sheet.md) is a more compact place to look up rune expressions.
343−- The [Standard Library](@/docs/reference/library/table-of-contents.md) section has its sub-pages arranged by category. So arithmetic functions, for example, are all found on the same page.
344−- The [Hoon Style Guide](@/docs/tutorials/hoon/hoon-school/style.md) will show you how to write your Hoon code so that it’s idiomatic and easily understood by others.
341+- The [Runes](@/docs/hoon/reference/rune/_index.md) page will show you how to use any Hoon rune.
342+- The [Cheat Sheet](@/docs/hoon/reference/cheat-sheet.md) is a more compact place to look up rune expressions.
343+- The [Standard Library](@/docs/hoon/reference/stdlib/table-of-contents.md) section has its sub-pages arranged by category. So arithmetic functions, for example, are all found on the same page.
344+- The [Hoon Style Guide](@/docs/hoon/reference/style.md) will show you how to write your Hoon code so that it’s idiomatic and easily understood by others.
345345
346346### Debugging
347347
348−When you have an error in your Hoon code, one of two things can happen. Either the code does not run at all and you get an error (such as `nest-fail`), or your code _does_ run but produces the wrong results. The [Troubleshooting](@/docs/tutorials/hoon/hoon-errors.md) page is a good resource for figuring out how to debug your code.
348+When you have an error in your Hoon code, one of two things can happen. Either the code does not run at all and you get an error (such as `nest-fail`), or your code _does_ run but produces the wrong results. The [Troubleshooting](@/docs/hoon/reference/hoon-errors.md) page is a good resource for figuring out how to debug your code.
349349
350350There are a couple useful runes associated with debugging:
351351
@@ -353,4 +353,4 @@ There are a couple useful runes associated with debugging:
353353
354354`~&` (sigpam) is used to print its argument every time that argument executes. So, if you wanted to see how many times your program executed `foo`, you would write `foo bar`. Then, when your program runs, it will print `foo` on a new line of output every time the program comes across it by recursion.
355355
356−But there are more. Check out the aforementioned [Troubleshooting](@/docs/tutorials/hoon/hoon-errors.md) page to see other handy debugging runes and how to use them.
356+But there are more. Check out the aforementioned [Troubleshooting](@/docs/hoon/reference/hoon-errors.md) page to see other handy debugging runes and how to use them.
tutorials/hoon/hoon-school/iron-polymorphism.md → hoon/hoon-school/iron-polymorphism.mdrenamed

The content is the same.

tutorials/hoon/hoon-school/lead-polymorphism.md → hoon/hoon-school/lead-polymorphism.mdrenamed

The content is the same.

tutorials/hoon/hoon-school/libraries.md → hoon/hoon-school/libraries.mdrenamed+11−3
@@ -124,7 +124,15 @@ The `?+` rune is the rune to switch against a value with a default. The default
124124 (slag n d)
125125```
126126
127−`draw` takes two arguments: `n`, a number; and `d`, a `deck`. It's going to produce a cell of two `decks`. The cell is created using `scag` and `slag`. [`scag`](https://urbit.org/docs/reference/library/2b/#scag) is a standard-library gate produces the first `n` elements from a list, and [`slag`](https://urbit.org/docs/reference/library/2b/#slag) is a standard-library gate that produces the remaining elements of a list starting after the `n`th element. So we use `scag` to produce the drawn hand of `n` cards in the head of the cell as `hand`, and `slag` to produce the remaining deck in the tail of the cell as `rest`.
127+`draw` takes two arguments: `n`, a number; and `d`, a `deck`. It's going to
128+produce a cell of two `decks`. The cell is created using `scag` and `slag`.
129+[`scag`](@/docs/hoon/reference/stdlib/2b.md#scag) is a
130+standard-library gate produces the first `n` elements from a list, and
131+[`slag`](@/docs/hoon/reference/stdlib/2b.md#slag) is a
132+standard-library gate that produces the remaining elements of a list starting
133+after the `n`th element. So we use `scag` to produce the drawn hand of `n` cards
134+in the head of the cell as `hand`, and `slag` to produce the remaining deck in
135+the tail of the cell as `rest`.
128136
129137```hoon
130138++ shuffle-deck
@@ -151,11 +159,11 @@ Finally, in the code above, we come to `shuffle-deck`. This gate takes two argum
151159
152160Next, with `=/ random ~(. og entropy)`, we feed the `og` core the entropy it needs in preparation for using it. Then, with `=/ remaining (lent unshuffled)`, we get the length of the unshuffled deck with `lent`.
153161
154−`?: =(remaining 1)` checks if have only one card remaining. If that's true, we produce a cell of `shuffled` and the one card left in `unshuffled`. We use the `:_` rune here, so that the "heavier" hoon is at the bottom of the expression.
162+`?: =(remaining 1)` checks if we have only one card remaining. If that's true, we produce a cell of `shuffled` and the one card left in `unshuffled`. We use the `:_` rune here, so that the "heavier" hoon is at the bottom of the expression.
155163
156164If the above conditional evaluates to false, we are going to do a little work. `=^` is a rune that pins the head of a pair and changes a leg in the subject with the tail. It's useful for interacting with the `og` core arms, as many of them produce a pair of a random numbers and the next state of the core. We're going to put the random number in the subject with the face `index` and change `random` to be the next core.
157165
158−With completed, we use `%=` to call `$` to recurse back up to `|-` with a few changes.
166+With that completed, we use `%=` to call `$` to recurse back up to `|-` with a few changes.
159167
160168`shuffled` gets the `darc` from `unshuffled` at `index` added to the front of it.
161169
tutorials/hoon/hoon-school/list-of-numbers.md → hoon/hoon-school/list-of-numbers.mdrenamed+1−1
@@ -107,7 +107,7 @@ $(count (add 1 count))
107107
108108The above code is, once again, a compact way of writing a rune expression. All you need to know is that this line of code restarts the program at `|-`, except with the value stored in `count` incremented by `1`. The construction of `(count (add 1 count))` tells the computer, "replace the value of `count` with `count+1`".
109109
110−You'll notice that we use an unfamiliar word here: `add`. Unlike `count` and `end`, `add` is not defined anywhere in our program. That's because it's a gate that's predefined in the Hoon **standard library**. The standard library is filled with pre-defined gates that are generally useful, and these gates can be used just like something that you defined in your own program. You can see this gate, and other mathematical operators, in [section 1a](@/docs/reference/library/1a.md) of the standard library documentation.
110+You'll notice that we use an unfamiliar word here: `add`. Unlike `count` and `end`, `add` is not defined anywhere in our program. That's because it's a gate that's predefined in the Hoon **standard library**. The standard library is filled with pre-defined gates that are generally useful, and these gates can be used just like something that you defined in your own program. You can see this gate, and other mathematical operators, in [section 1a](@/docs/hoon/reference/stdlib/1a.md) of the standard library documentation.
111111
112112## Explanation
113113
tutorials/hoon/hoon-school/lists.md → hoon/hoon-school/lists.mdrenamed+3−3
@@ -96,9 +96,9 @@ You can also use the words `cord` and `tape` for casting:
9696
9797## List Functions in the Hoon Standard Library
9898
99−Lists are a commonly used data structure. Accordingly, there are several functions in the [Hoon standard library](/docs/reference/library/) intended to make lists easier to use.
99+Lists are a commonly used data structure. Accordingly, there are several functions in the [Hoon standard library](/docs/hoon/reference/stdlib/) intended to make lists easier to use.
100100
101−For a complete list of these functions, check out the standard library reference for lists [here](/docs/reference/library/2b/). Here we'll look at a few of these functions.
101+For a complete list of these functions, check out the standard library reference for lists [here](/docs/hoon/reference/stdlib/2b/). Here we'll look at a few of these functions.
102102
103103### `flop`
104104
@@ -299,7 +299,7 @@ c
299299
300300## Using `hoon.hoon` to Learn Hoon
301301
302−The Hoon standard library and compiler are written in Hoon. At this point, you know enough Hoon to be able to explore the standard library portions of `hoon.hoon` and find more functions relevant to lists. Look around in [section 2b](/docs/reference/library/2b/) (and elsewhere).
302+The Hoon standard library and compiler are written in Hoon. At this point, you know enough Hoon to be able to explore the standard library portions of `hoon.hoon` and find more functions relevant to lists. Look around in [section 2b](@/docs/hoon/reference/stdlib/2b.md) (and elsewhere).
303303
304304## Additional Exercises
305305
tutorials/hoon/hoon-school/molds.md → hoon/hoon-school/molds.mdrenamed+2−2
@@ -44,7 +44,7 @@ To coerce using a gate, it's good practice to use the `;;` rune, which can parse
4444`|$` implements [parametric
4545polymorphism](https://en.wikipedia.org/wiki/Parametric_polymorphism) in Hoon,
4646and as such we call gates produced with `|$` a **wet gate**. We discuss what this
47−means in further detail in the upcoming lesson on [polymorphism](@/docs/tutorials/hoon/hoon-school/type-polymorphism.md).
47+means in further detail in the upcoming lesson on [polymorphism](@/docs/hoon/hoon-school/type-polymorphism.md).
4848
4949Let's look at some examples from `hoon.hoon`.
5050```hoon
@@ -64,7 +64,7 @@ Here is a very simple mold builder. It takes two molds and produces a mold that
6464 ==
6565```
6666
67−`++each` is very slightly more complicated than `pair`. `$%` is a rune that is a tagged union. The mold produced by this will match either `this` or `that`. An example of this would be `(each @ud @tas)` which will match either an `@ud` or a `@tas`.
67+`each` is very slightly more complicated than `pair`. `$%` is a rune that is a tagged union. The mold produced by this will match either `this` or `that`. An example of this would be `(each @ud @tas)` which will match either an `@ud` or a `@tas`.
6868
6969```hoon
7070++ list
tutorials/hoon/hoon-school/nouns.md → hoon/hoon-school/nouns.mdrenamed+1−1
@@ -283,7 +283,7 @@ You can force Hoon to interpret an atom differently by using the aura symbols in
283283
284284The atoms in the examples above are all exactly the same value. Only they're interpreted and printed differently, depending on the aura.
285285
286−You'll learn more about atoms and auras in [Lesson 2.1](@/docs/tutorials/hoon/hoon-school/atoms-auras-and-simple-cell-types.md).
286+You'll learn more about atoms and auras in [Lesson 2.1](@/docs/hoon/hoon-school/atoms-auras-and-simple-cell-types.md).
287287
288288## Cells
289289
tutorials/hoon/hoon-school/recursion.md → hoon/hoon-school/recursion.mdrenamed+1−1
@@ -179,7 +179,7 @@ of. That's because a gate is just a [core](/docs/glossary/core/) with a single a
179179subject is searched depth-first, head before tail, with faces skipped, and
180180stopping on the first result. In other words, the first match found in the head
181181will be returned. If you wished to refer to the outer `$` in this context, the
182−idiomatic way would be to use [`^$`](@/docs/reference/hoon-expressions/rune/ket.md). The `^` operator
182+idiomatic way would be to use [`^$`](@/docs/hoon/reference/rune/ket.md). The `^` operator
183183skips the first match of a name.
184184
185185### Exercises
tutorials/hoon/hoon-school/setup.md → hoon/hoon-school/setup.mdrenamed+5−5
@@ -15,9 +15,9 @@ These may not look like numbers, but they are. Each urbit name is written in a b
1515
1616## Installing Urbit
1717
18−You can install Urbit on any Mac or Unix machine; if you're just trying out Urbit or creating a development ship, you can follow the steps for creating a development ship [here](@/using/develop.md#creating-a-development-ship). On Windows, make a virtual Linux machine using VirtualBox or a similar tool.
18+You can install Urbit on any Mac or Unix machine; if you're just trying out Urbit or creating a development ship, you can follow the steps for creating a development ship [here](@/docs/development/environment.md). On Windows, make a virtual Linux machine using VirtualBox or a similar tool.
1919
20−Once you're finished, you can [boot your very own ship](@/using/install.md#comet). While you can develop in Hoon on your own ship on the live network, we strongly suggest developing on a development ship first.
20+Once you're finished, you can [boot your very own ship](@/getting-started.md#comet). While you can develop in Hoon on your own ship on the live network, we strongly suggest developing on a development ship first.
2121
2222## Getting started
2323
@@ -61,15 +61,15 @@ You'll see:
616117
6262```
6363
64−You asked Dojo to evaluate `17` and it echoed the number back at you. This value is a "noun". We'll talk more about [nouns](/docs/glossary/noun/) in [Lesson 1.2](@/docs/tutorials/hoon/hoon-school/nouns.md), but first let's write a very basic program.
64+You asked Dojo to evaluate `17` and it echoed the number back at you. This value is a "noun". We'll talk more about [nouns](/docs/glossary/noun/) in [Lesson 1.2](@/docs/hoon/hoon-school/nouns.md), but first let's write a very basic program.
6565
6666## Generators
6767
6868Generators are the most straightforward way to write Hoon programs. They are a concept in Arvo, and involve saving Hoon code in a `.hoon` text file. While they aren't strictly part of the Hoon language, we'll be dealing with generators throughout this tutorial.
6969
70−The simplest type of generator is the **naked generator**. All naked generators are `gates`: functions that take an argument and produce an output. Before creating a generator you need to [mount](@/using/install.md#the-dojo) your `desk` to Unix. To create a generator, all you need to do is write a `gate` and put it into a file in the `/home/gen/` directory of your ship as a `.hoon` file. (Assuming you've already mounted with `|mount /=home=`.) After this, you need to run `|commit %home` in Dojo and the new file will be recognized by your ship. To run a generator named `mygen.hoon`, you would type `+mygen <argument>` in your ship's Dojo.
70+The simplest type of generator is the **naked generator**. All naked generators are `gates`: functions that take an argument and produce an output. Before creating a generator you need to [mount](@/getting-started.md#the-dojo) your `desk` to Unix. To create a generator, all you need to do is write a `gate` and put it into a file in the `/home/gen/` directory of your ship as a `.hoon` file. (Assuming you've already mounted with `|mount /=home=`.) After this, you need to run `|commit %home` in Dojo and the new file will be recognized by your ship. To run a generator named `mygen.hoon`, you would type `+mygen <argument>` in your ship's Dojo.
7171
72−If this doesn't make sense yet, that's okay. In the [next lesson](@/docs/tutorials/hoon/hoon-school/list-of-numbers.md), we will walk you through an example `gate` that is run as a generator.
72+If this doesn't make sense yet, that's okay. In the [next lesson](@/docs/hoon/hoon-school/list-of-numbers.md), we will walk you through an example `gate` that is run as a generator.
7373
7474## Text editors
7575
tutorials/hoon/hoon-school/structures-and-complex-types.md → hoon/hoon-school/structures-and-complex-types.mdrenamed+2−2
@@ -145,7 +145,7 @@ Let's review (1) and (2) briefly.
145145
146146The basic types of Hoon are: `*` for [nouns](/docs/glossary/noun/), `@` for atoms (possibly with aura information, e.g., `@ud` and `@sx`), `^` for cells, `?` for flags, and `~` for null. You can also make constant, one-value types by using `%` followed by a series of lowercase letters, the hyphen symbol `-`, and numbers. E.g., `%red`, `%2`, `%kebab-case123`. The lone values of these one-value types are sometimes called 'tags'.
147147
148−Let's illustrate with the irregular `\` \`` cast syntax:
148+Let's illustrate with the irregular ``` ` ` ``` cast syntax:
149149
150150```
151151> `%blah`%blah
@@ -352,5 +352,5 @@ Often `$@` is used to define a type with a null or trivial case for the `@` case
352352
353353Now the `~` value is included as a possible value for `user`.
354354
355−We will see types arise again, in the context of polymorphism in [Lesson 2.5](@/docs/tutorials/hoon/hoon-school/type-polymorphism.md).
355+We will see types arise again, in the context of polymorphism in [Lesson 2.5](@/docs/hoon/hoon-school/type-polymorphism.md).
356356
tutorials/hoon/hoon-school/the-subject-and-its-legs.md → hoon/hoon-school/the-subject-and-its-legs.mdrenamed+1−1
@@ -11,7 +11,7 @@ Hoon isn't an object-oriented programming language; it's a "subject-oriented" pr
1111
1212For now we can say three things about the subject: (1) every Hoon expression is evaluated relative to some subject; (2) roughly, the subject defines the environment in which a Hoon expression is evaluated; and (3) the subject is a [noun](/docs/glossary/noun/).
1313
14−In fact, you already learned about the noun address system in [Lesson 1.2](@/docs/tutorials/hoon/hoon-school/nouns.md) when you used `+` to return a fragment of a noun:
14+In fact, you already learned about the noun address system in [Lesson 1.2](@/docs/hoon/hoon-school/nouns.md) when you used `+` to return a fragment of a noun:
1515
1616```
1717> +1:[[11 22] 33]
tutorials/hoon/hoon-school/trees-sets-and-maps.md → hoon/hoon-school/trees-sets-and-maps.mdrenamed+2−2
@@ -88,7 +88,7 @@ $(hay r.hay)
8888
8989## Sets
9090
91−Use `set` to create a data structure for a set of values, e.g., `(set @)` for a set of atoms. The `in` [core](/docs/glossary/core/) in the Hoon standard library contains the various functions for operating on sets. See the standard library reference documentation for sets [here](@/docs/reference/library/2h.md).
91+Use `set` to create a data structure for a set of values, e.g., `(set @)` for a set of atoms. The `in` [core](/docs/glossary/core/) in the Hoon standard library contains the various functions for operating on sets. See the standard library reference documentation for sets [here](@/docs/hoon/reference/stdlib/2h.md).
9292
9393As with `list`s and `tree`s, there are two categories of sets: null `~`, and non-null. Hoon implements sets using trees for the underlying noun.
9494
@@ -237,7 +237,7 @@ Use `map` to create a set of key-value pairs, e.g., `(map @tas *)` for a set of
237237
238238One example use case is for storing customer information as a set of pairs: `(map [employee-name employee-data])`.
239239
240−The `by` core in the Hoon standard library contains the various functions for operating on maps. Many of these functions are similar to the set functions of the `in` core. See the standard library reference documentation for maps [here](@/docs/reference/library/2i.md). As was the case with sets, the underlying noun of each map is a tree.
240+The `by` core in the Hoon standard library contains the various functions for operating on maps. Many of these functions are similar to the set functions of the `in` core. See the standard library reference documentation for maps [here](@/docs/hoon/reference/stdlib/2i.md). As was the case with sets, the underlying noun of each map is a tree.
241241
242242Two common methods for populating a map include (1) creating it from a list of key-value cells using the `my` function, and (2) inserting items into a map using the `put` arm of the `by` core.
243243
tutorials/hoon/hoon-school/type-checking-and-type-inference.md → hoon/hoon-school/type-checking-and-type-inference.mdrenamed+2−2
@@ -112,7 +112,7 @@ nest-fail
112112
113113Whenever an [arm](/docs/glossary/arm/) is evaluated in Hoon it expects to have some version of its parent [core](/docs/glossary/core/) as the subject. Specifically, a type check is performed to see whether the [arm](/docs/glossary/arm/) subject is of the appropriate **type**. We see this in action whenever a [gate](/docs/glossary/gate/) or a multi-arm [door](/docs/glossary/door/) is called.
114114
115−A gate is a one-armed core with a sample. When it is called, its `$` arm is evaluated with (a version of) the gate as the subject. The only part of the core that might change is the [payload](/docs/glossary/payload/), including the sample. Of course, we want the sample to be able to change. The sample is where the argument(s) of the function call are placed. For example, when we call `add` the `$` arm of expects two atoms for the sample, i.e., the two numbers to be added. When the type check occurs, the [payload](/docs/glossary/payload/) must be of the appropriate type. If it isn't, the result is a `nest-fail` crash.
115+A gate is a one-armed core with a sample. When it is called, its `$` arm is evaluated with (a version of) the gate as the subject. The only part of the core that might change is the [payload](/docs/glossary/payload/), including the sample. Of course, we want the sample to be able to change. The sample is where the argument(s) of the function call are placed. For example, when we call `add` the `$` arm expects two atoms for the sample, i.e., the two numbers to be added. When the type check occurs, the [payload](/docs/glossary/payload/) must be of the appropriate type. If it isn't, the result is a `nest-fail` crash.
116116
117117```
118118> (add 22 33)
@@ -316,7 +316,7 @@ To get just the inferred type of a expression, we only want the head of the `!>`
316316#t/@
317317```
318318
319−Now let's try using `?=` with `?:` again. But this time we'll replace `[& b]` with `[& -:!>(b)]` and `[& b]` with `[| -:!>(b)]`. With `b` as `12`:
319+Now let's try using `?=` with `?:` again. But this time we'll replace `[& b]` with `[& -:!>(b)]` and `[| b]` with `[| -:!>(b)]`. With `b` as `12`:
320320
321321```
322322> =/(b=* 12 ?:(?=(@ b) [& -:!>(b)] [| -:!>(b)]))
tutorials/hoon/hoon-school/type-polymorphism.md → hoon/hoon-school/type-polymorphism.mdrenamed+1−1
@@ -192,7 +192,7 @@ As is the case with dry arms, there is a type-check associated with each wet arm
192192### Parametric Polymorphism and `|$`
193193
194194We first encountered `|$` in the lesson on
195−[molds](@/docs/tutorials/hoon/hoon-school/molds.md) as a wet gate that is a mold builder rune which takes in a
195+[molds](@/docs/hoon/hoon-school/molds.md) as a wet gate that is a mold builder rune which takes in a
196196list of molds and produces a new mold. Here we take another look at this rune as
197197an implementation of **parametric polymorphism** in Hoon.
198198
hoon/overview.mdnew file+276
@@ -0,0 +1,276 @@
1++++
2+title = "Overview"
3+weight = 2
4+template = "doc.html"
5++++
6+
7+We are often asked why Urbit was written in a new language, rather than some
8+existing language like Haskell or C. This document provides the high-level
9+rationale for that decision, and also covers some of the features of the
10+language that set it apart from others. If you're looking to learn Hoon, check
11+out our tutorial series called [Hoon School](@/docs/hoon/hoon-school/_index.md)
12+below.
13+
14+### What can Hoon do that other languages can't?
15+
16+The short answer is: implement a purely functional operating system.
17+Try to do this in a principled way in Haskell, and the problems you'll
18+run into will make design decisions in Hoon and Nock make a lot more
19+sense.
20+
21+In particular, the problems Hoon solves that aren't solved by other
22+functional languages are:
23+- Compile and run other code in a typesafe manner at full speed,
24+- Typesafe metaprogramming, and
25+- Hot code reload and online data migration.
26+
27+### What is Hoon good at?
28+
29+Hoon is mostly good at compiling and running other Hoon code. Urbit
30+consists of many layers of bootstrapping. Several of these layers lean
31+heavily on this feature, including the Gall application runner, the Ford
32+build system, the Dojo shell, and the Arvo kernel itself. Even Urbit's
33+chat application lets you run Hoon expressions and share the results
34+with your friends.
35+
36+### Why did we write the OS in Hoon?
37+
38+The chain of reasoning goes something like this:
39+
40+Software complexity leads to monopolies and lack of individual digital
41+sovereignty, in addition to bugs and security vulnerabilities. One of
42+the best ways to reduce software complexity is to restrict oneself to
43+pure mathematical functions — no side effects, no implicit arguments.
44+This makes the system deterministic. So we want a deterministic,
45+functional operating system for individuals to run.
46+
47+This operating system should also be axiomatic; we don't want it to
48+depend on various idiosyncrasies of whatever the current hardware is
49+like. Hardware changes over time, and we want people to be able to pass
50+their computers on to their grandchildren, so we should have a virtual
51+machine that runs this functional operating system.
52+
53+As hardware changes, people need to move their virtual machines to new
54+hosts. This means there needs to be a standard way to serialize and
55+deserialize the VM state at any time. The easiest way to do this is by
56+storing an event log, just like a database, and writing each event to
57+that before emitting effects caused by it. Since we also need state
58+snapshots, every piece of data in the system, including runtime state,
59+needs to be serializable to a standardized format.
60+
61+Because the VM will likely move from host to host many times, it needs
62+to be tractable to actually implement a VM correctly. This means the
63+system specification needs to be simple enough that it's clear whether a
64+VM is in fact correct. The x86_64 instruction set that runs most
65+servers has somewhere between 1300 and 4000 opcodes, depending on how
66+you count. Nock has 12.
67+
68+Since Urbit is an operating system, its main purpose is to load and run
69+programs on behalf of the user. This means the system needs to be
70+really good at hot code reloading, self-hosting, metacircularity, and
71+virtualization.
72+
73+There aren't any other languages out there that are purely functional,
74+purely axiomatic, performant enough for practical personal use,
75+universally serializable, and good at runtime metaprogramming. Nock is
76+Urbit's solution to these design constraints. Some Lisps come close to
77+meeting these criteria — and Nock is very Lisp-like — but no practical
78+Lisp dialects are nearly as pure or axiomatic as Nock.
79+
80+### What is special about Hoon?
81+
82+It's a purely functional systems language. Calling it a functional
83+analog of C is not too far off in several ways. Almost all code
84+throughout Urbit's kernelspace and userspace is written in Hoon.
85+
86+### What properties does Hoon have? What type of language is it?
87+
88+Hoon is a statically typed, purely functional, strictly evaluated
89+programming language.
90+
91+Hoon and Nock have several unusual properties:
92+
93+- **Axiomatic**. Nock is a fully axiomatic computing system — no
94+ dependencies, no builtins, no hardware dependence — just pure math.
95+ The jet system gives this a practical level of performance.
96+
97+- **Layered**. Nock is machine code designed for machines to run; Hoon is a
98+ programming language designed for people to use. Hoon layers over
99+ Nock in a very similar way to how C layers over machine code. Nock
100+ has no symbols; all programmer-facing variable names live in Hoon
101+ types. You can use raw Nock from Hoon, much like dropping down to
102+ assembly from within C. Hoon compiles to Nock with no "runtime
103+ system" — aside from subtree lookups, you could pretty easily compile
104+ most Hoon expressions by hand.
105+
106+- **Minimal**. Urbit is ruthlessly minimalistic throughout the stack. Nock
107+ has only twelve opcodes, and Hoon's semantics are a very thin layer
108+ over Nock's. The only fundamental datatype in Urbit is the noun:
109+ either an arbitrarily large natural number, called an atom, or a pair
110+ of nouns, called a cell. This forms a binary tree with atoms at the
111+ leaves. Lists, sets, maps, queues, executable code, closures, ASTs,
112+ buffers, strings, floating-point numbers, and everything else in the
113+ whole programming environment are represented using just this data
114+ structure.
115+
116+- **Acyclic**. There are no cycles in nouns, since they're always trees, so
117+ there are no cycles in Nock's memory model. Pointer equality is not
118+ exposed to the programmer. In practical Nock implementations, all
119+ data structures are what are elsewhere called "functional" or
120+ "persistent" data structures, meaning they're immutable and share
121+ structure wherever possible.
122+
123+- **Homoiconic**. Code and data are represented the same way and can be
124+ converted to each other. Lisp dialects are also homoiconic, but Hoon
125+ and Nock are arguably even more so, since things like closures and the
126+ environment are just Nock trees. We even have a statically typed
127+ metacircular interpreter called <code>+mule</code>. We run userspace code
128+ metacircularly with negligible performance overhead because of Urbit's
129+ jet system. In Lisp "eval is evil" is a common saying but, in Urbit,
130+ eval is a first-class feature.
131+
132+- **Universally serializable**. There's one serialization format, called
133+ "jam", for any piece of code or data in the system. This makes it so
134+ that deserialization has just one function, a few hundred lines of C,
135+ as its security attack surface. It also facilitates portability of
136+ the virtual machine state, and it turns out to be useful in a bunch of
137+ places in the system.
138+
139+- **Jetted**. A jet is a piece of code that the Nock interpreter has that
140+ reimplements a Nock function in some other, faster language. The `+dec`
141+ decrement function in Hoon's standard library is defined axiomatically
142+ using recursion, but is run as a jet written in C that makes use of
143+ the processor's ALU for performance. When calling a Nock function, if
144+ the runtime has a matching jet, it will use that instead of the Nock
145+ implementation. Nock isn't as slow as you might think, especially
146+ considering it's a minimal, dynamic, axiomatic language.
147+<br/><br/>
148+ This arrangement has the deeper implication that all code written in
149+ Nock is best considered as a specification for a program, which can be
150+ executed directly but might never run at all due to being jetted.
151+ Cryptographic functions, for example, should all have jets with
152+ constant-time implementations to prevent timing attacks. Most jets,
153+ though, just take advantage of hardware acceleration for things like
154+ floating point arithmetic.
155+
156+- The amount of Hoon syntax is unusually large, but also **unusually
157+ regular**. Hoon is a "runic" language, meaning expressions generally
158+ begin with a digraph "rune" corresponding to the type of expression.
159+ Runes are used in place of keywords and Lisp's "special forms".
160+ Hoon's syntax makes better use of screen real estate than Haskell or
161+ Lisp by having a mostly vertical "backbone" of runes that prevents
162+ long functions from indenting repeatedly and helps quickly identify
163+ control flow. Hoon does not allow syntactic abstraction, so you
164+ always know exactly what you're looking at when reading Hoon. The
165+ similarity of Hoon's syntax to its abstract syntax tree makes
166+ metaprogramming easier and can be thought of as another layer of
167+ homoiconicity on top of Nock's.
168+
169+- **Subject-oriented**. There is no implicit environment; a Hoon expression
170+ compiles down to a Nock formula, which is interpreted as a function
171+ that runs with the "subject" as the argument. The subject can be any
172+ Nock tree, but it contains everything that's in scope. It usually
173+ consists of the Hoon compiler and standard library as a stack of
174+ cores, along with whatever functions and variables have been defined
175+ in the lexical scope.
176+
177+- **Cores**. A core is a pair of code and data. The core is the underlying
178+ representation of a function (a lambda with implicit fixed point), a
179+ library or module, an OOP-style object, and an OOP-style "interface"
180+ or "protocol". The code consists of a set of Nock formulas that can
181+ each be run against the whole core as a subject. This means there's
182+ always an implicit fixed point when running a function, and mutual
183+ recursion can occur among a core's formulas. A core's data usually
184+ consists of the standard library (itself a stack of cores), and
185+ possibly a "sample" (function argument).
186+
187+- **The type system has several unusual features**. It's intentional, in
188+ the sense that all constructs are first-class and can be down-cast to
189+ `noun`, Hoon's "any" or "top" type that matches all Nock nouns. Types
190+ are also used as scopes, so they store all of Hoon's variable names
191+ and docstrings. The type system uses an unusual macro-like feature
192+ called "wetness" to implement parametric polymorphism. The type
193+ system can also auto-generate coercion functions that validate and
194+ lift raw nouns into structural types, such as lists or cells. This is
195+ used to validate untrusted data, such as from the network.
196+
197+- **Reflective**. The type of type is just a normal datatype in Hoon, and a
198+ lot of the system manipulates types. In particular, the `!>` rune, when
199+ applied to a piece of data, uses compile-time type reflection to
200+ produce something called a "vase": a pair of type and data, similar to
201+ a <code>Data.Dynamic</code> in Haskell, or a limited form of a dependent pair.
202+ Since the Arvo kernel does a lot of dynamic compilation, it uses vases
203+ to implement something akin to a dynamically typed language using
204+ Hoon. This allows for type-safe dynamic program loading, program
205+ execution, and data migration.
206+
207+- **Inert**. Because Nock is purely functional, Hoon compiles to it so
208+ directly, everything is homoiconic, and Hoon is intensional, there's a
209+ very nice feeling that everything is just a stationary tree. There
210+ are no special objects that can't be manipulated; everything in your
211+ environment is just a subtree, and you could grab it and print it out
212+ if you wanted to. There's nothing like a "database handle",
213+ "websocket connection object", or other mystical constructs. The
214+ calmness of working with such inert building blocks is addictive, as
215+ many Hoon programmers will attest.
216+
217+### Why is Hoon the way it is?
218+
219+Minimalism, mostly.
220+
221+Urbit's principled minimalism simplifies all kinds of things at many
222+layers of the stack; for example, Urbit's linker, which is part of the
223+Ford build system, just conses together multiple libraries into a tuple
224+to form the compile-time environment for a source file. Universal
225+serialization means we can safely send arbitrary pieces of data to apps
226+on other ships without any more work than sending them to a local app.
227+Using an app called Aquarium that's about three hundred lines of code,
228+Arvo can run a whole fleet of other Arvos inside itself at full speed,
229+just like Docker, and perform a suite of deterministic end-to-end tests
230+on the OS as a whole.
231+
232+Even Hoon's seemingly baroque syntax is extremely regular and an
233+unusually thin layer over the abstract syntax tree. It's designed to be
234+a power tool; learning the syntax takes some time, but you only have to
235+learn it once, and then it's not hard to read. It's like an English
236+speaker learning Hiragana or Cyrillic. This heaping spoonful of syntactic sugar
237+(along with jets for performance) is enough to take Nock from a Turing
238+tarpit to a practical, ergonomic programming tool.
239+
240+Subject orientation in Nock and Hoon stems partly from minimalism
241+(there's just one subject, which serves as state, lexical scope,
242+environment, and function argument), partly from a desire to simplify
243+compilation (the type of the subject is a full specification of the
244+compile-time environment for a source file), and partly in order to give
245+the language a more imperative feel.
246+
247+You program Hoon as if you have a mutable environment, but you're
248+embedded in a purely functional, immutable context. While Hoon is a
249+purely functional language, many of its runes create a mutant copy of
250+the subject for manipulation by future runes (similar to Forth's stack
251+operations), which makes it feel more like an expression is "doing
252+something" rather than just calculating something.
253+
254+Everything about a scope, including name bindings, aliases, and
255+docstrings, is stored in the subject's type. This allows Hoon's
256+compilation discipline to be similarly minimal: the compiler is a
257+function from subject type and Hoon source to product type and compiled
258+Nock. Running this Nock against a value of the subject type produces a
259+vase of the result. It's hard to imagine a more streamlined formalism for compilation.
260+
261+The compilation discipline gets applied recursively to build the layers
262+of the Arvo stack. The Arvo kernel is compiled using the Hoon compiler
263+as subject, the Zuse standard library is compiled using the Arvo kernel
264+as the subject, and apps and vanes (kernel modules) are compiled using
265+Zuse as the subject.
266+
267+The promise of Urbit lies in its reimagination of the digital world
268+using components that are as constrained and limited as possible. By
269+adhering firmly to principle and doubling down on minimalism at every
270+turn, we get an OS that provides far stronger guarantees than Unix with
271+a thousand times less code. Given the complexity of modern software,
272+this is what's required to put personal computing back into the hands of
273+people.
274+
275+
276+
hoon/reference/_index.mdnew file+49
@@ -0,0 +1,49 @@
1++++
2+title = "Reference"
3+weight = 40
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+This is where you look for answers to specific technical questions.
9+
10+## [Syntax Cheat Sheet](@/docs/hoon/reference/cheat-sheet.md)
11+
12+A quick reference guide to Hoon's syntax.
13+
14+## [Irregular Forms](@/docs/hoon/reference/irregular.md)
15+
16+Irregular syntax.
17+
18+## [Troubleshooting](@/docs/hoon/reference/hoon-errors.md)
19+
20+Strategies for debugging and understanding what your Hoon code is doing.
21+
22+## [Style Guide](@/docs/hoon/reference/style.md)
23+
24+Best practices for writing Hoon code.
25+
26+## [Basic Types](@/docs/hoon/reference/basic.md)
27+
28+A simplified explanation of Hoon's type system.
29+
30+## [Advanced Types](@/docs/hoon/reference/advanced.md)
31+
32+The full story on Hoon's type system.
33+
34+## [Auras](@/docs/hoon/reference/auras.md)
35+
36+A list of aura types for atoms.
37+
38+### [Runes](@/docs/hoon/reference/rune/_index.md)
39+
40+Syntax and semantics for Hoon's rune system.
41+
42+### [Limbs and Wings](@/docs/hoon/reference/limbs/_index.md)
43+
44+How to find data inside Hoon subjects.
45+
46+### [Standard Library](@/docs/hoon/reference/stdlib/_index.md)
47+
48+Reference material for the Hoon standard library.
49+
reference/hoon-expressions/advanced.md → hoon/reference/advanced.mdrenamed+25−22
@@ -1,6 +1,6 @@
11+++
22title = "Advanced Types"
3−weight = 5
3+weight = 60
44template = "doc.html"
55aliases = ["docs/reference/hoon-expressions/advanced/"]
66+++
@@ -18,27 +18,29 @@ large functions. Don't worry about them for a little while.
1818 $@ $? %noun
1919 %void
2020 ==
21− $% [$atom p=term q=(unit @)]
22− [$cell p=type q=type]
23− [$core p=type q=coil]
24− [$face p=$@(term tune) q=type]
25− [$fork p=(set type)]
26− [$hint p=(pair type note) q=type]
27− [$hold p=type q=hoon]
21+ $% [%atom p=term q=(unit @)]
22+ [%cell p=type q=type]
23+ [%core p=type q=coil]
24+ [%face p=$@(term tune) q=type]
25+ [%fork p=(set type)]
26+ [%hint p=(pair type note) q=type]
27+ [%hold p=type q=hoon]
2828 ==
2929::
30−+$ coil $: p=[p=(unit term) q=poly r=vair]
31− q=type
32− r=[p=seminoun q=(map term tome)]
30++$ coil $: p=garb :: name, wet=dry, vary
31+ q=type :: context
32+ r=(pair seminoun (map term tome)) :: chapters
33+ == ::
3334::
35++$ garb (trel (unit term) poly vair) :: core
3436+$ poly ?(%wet %dry)
35−+$ vair ?($gold $iron $lead $zinc)
37++$ vair ?(%gold %iron %lead %zinc)
3638+$ tome (pair what (map term hoon))
37−+$ tune
38− $~ [~ ~]
39− $: p=(map term (unit hoon))
40− q=(list hoon)
41− ==
39++$ tune :: complex
40+ $~ [~ ~] ::
41+ $: p=(map term (unit hoon)) :: aliases
42+ q=(list hoon) :: bridges
43+ == ::
4244```
4345
4446If you compare this to the basic `type`, you'll see that we've
@@ -66,8 +68,9 @@ the payload the core was compiled with is `q.q`.
6668
6769In the Bertrand Meyer tradition of type theory, there are two
6870forms of polymorphism: variance and genericity. In Hoon this
69−choice is per core, hence the `poly` label in `coil`: it can be either `%wet` or `%dry`. Dry polymorphism relies on variance; wet
70−polymorphism relies on genericity.
71+choice is per core, hence the `poly` label in `p.q`: it can be either `%wet`
72+or `%dry`. Dry polymorphism relies on variance; wet polymorphism relies on
73+genericity.
7174
7275### Dry arms
7376
@@ -188,13 +191,13 @@ of secret superpowers for hacking the namespace. Remember that
188191Hoon doesn't have anything like a symbol table; to resolve a
189192limb, we just search the type depth-first.
190193
191−If a name is in the `p.p` map, it's an alias. (An alias is defined using the
194+If a name is in the `p.p` `map`, it's an alias. (An alias is defined using the
192195`=*` rune.) The map contains a `(unit hoon)`; if the unit is full, the name
193196resolves to that hoon (compiled against the `q` type). If the unit is empty,
194−the name is blocked / skipped (see [limb](@/docs/reference/hoon-expressions/limb/limb.md) for what
197+the name is blocked / skipped (see [limb](@/docs/hoon/reference/limbs/limb.md) for what
195198this means).
196199
197−If a name is in the `q.p` map, it's a bridge. (A bridge is defined using the
200+If a name is the `q.p` `term`, it's a bridge. (A bridge is defined using the
198201`=,` rune.) When we search for a name, we also compile the bridge, and check
199202if the name resolves against the bridge product. If so, we use it.
200203
hoon/reference/auras.mdnew file+77
@@ -0,0 +1,77 @@
1++++
2+title = "Auras"
3+weight = 70
4+template = "doc.html"
5++++
6+
7+Auras are system of nested "soft types" on [atoms](@/docs/glossary/atom.md) that
8+are used to track metadata about how a particular atom is to be interpreted.
9+This is used for type checking as well as pretty printing.
10+
11+A given aura nests under any aura whose name is a substring of the given aura,
12+i.e. `@ux` nests under `@u`, and all auras nest under the empty aura `@`. We
13+call auras "soft types" since this nesting behavior can be ignored - see
14+[below](#non-coercive).
15+
16+You can learn more about auras in [Hoon school](@/docs/hoon/hoon-school/atoms-auras-and-simple-cell-types.md).
17+
18+```
19+Aura Meaning Example Literal Syntax
20+-------------------------------------------------------------------------
21+@ empty aura
22+@c Unicode codepoint ~-~45fed
23+@d date
24+ @da absolute date ~2018.5.14..22.31.46..1435
25+ @dr relative date (ie, timespan) ~h5.m30.s12
26+@f Loobean (for compiler, not castable) &
27+@i Internet address
28+ @if IPv4 address .195.198.143.90
29+ @is IPv6 address .0.0.0.0.0.1c.c3c6.8f5a
30+@n nil (for compiler, not castable) ~
31+@p phonemic base (ship name) ~sorreg-namtyv
32+@q phonemic base, unscrambled .~litsyn-polbel
33+@r IEEE-754 floating-point
34+ @rh half precision (16 bits) .~~3.14
35+ @rs single precision (32 bits) .6.022141e23
36+ @rd double precision (64 bits) .~6.02214085774e23
37+ @rq quad precision (128 bits) .~~~6.02214085774e23
38+@s signed integer, sign bit low
39+ @sb signed binary --0b11.1000
40+ @sd signed decimal --1.000.056
41+ @sv signed base32 -0v1df64.49beg
42+ @sw signed base64 --0wbnC.8haTg
43+ @sx signed hexadecimal -0x5f5.e138
44+@t UTF-8 text (cord) 'howdy'
45+ @ta ASCII text (knot) ~.howdy
46+ @tas ASCII text symbol (term) %howdy
47+@u unsigned integer
48+ @ub unsigned binary 0b11.1000
49+ @ud unsigned decimal 1.000.056
50+ @uv unsigned base32 0v1df64.49beg
51+ @uw unsigned base64 0wbnC.8haTg
52+ @ux unsigned hexadecimal 0x5f5.e138
53+```
54+
55+Capital letters at the end of auras indicate the bitwidth in binary powers of
56+two, starting from A.
57+
58+```
59+ @ubD signed single-byte (8-bit) decimal
60+ @tD 8-bit ASCII text
61+ @rhE half-precision (16-bit) floating-point number
62+ @uxG unsigned 64-bit hexadecimal
63+ @uvJ unsigned, 512-bit integer (frequently used for entropy)
64+```
65+
66+### Non-coercive
67+
68+Auras are non-coercive, but conversions may have to go via the empty aura, e.g.
69+```
70+> ^-(@ud ^-(@ 'foo'))
71+7.303.014
72+```
73+This is implicitly done by the irregular form of `^-`.
74+```
75+> `@ud`'foo'
76+7.303.014
77+```
reference/hoon-expressions/basic.md → hoon/reference/basic.mdrenamed+2−2
@@ -1,6 +1,6 @@
11+++
22title = "Basic Types"
3−weight = 4
3+weight = 50
44template = "doc.html"
55aliases = ["docs/reference/hoon-expressions/basic/"]
66+++
@@ -32,7 +32,7 @@ including both faces and arm names. (See Chapter 1 of the Hoon tutorial for an
3232introduction to name resolution.)
3333
3434As noted, this is a simplified version of `type`. We undo and
35−explain the simplifications in the [advanced types](@/docs/reference/hoon-expressions/advanced.md)
35+explain the simplifications in the [advanced types](@/docs/hoon/reference/advanced.md)
3636section.
3737
3838```hoon
reference/cheat-sheet.md → hoon/reference/cheat-sheet.mdrenamed+2−2
@@ -1,6 +1,6 @@
11+++
22title = "Cheat Sheet"
3−weight = 5
3+weight = 10
44template = "doc.html"
55aliases = ["docs/reference/cheat-sheet/"]
66+++
@@ -12,7 +12,7 @@ hand. So above is a download link to a Hoon cheatsheet .pdf. It's missing a
1212few of the literal syntaxes, but it covers the most common ones.
1313
1414This doesn't list any of the Ford runes, although there is now at least
15−some documentation for those [here](@/docs/tutorials/arvo/ford.md).
15+some documentation for those [here](@/docs/arvo/ford/ford.md).
1616
1717The following runes also exist, but are currently undocumented and not listed in
1818the cheat sheet:
tutorials/hoon/hoon-errors.md → hoon/reference/hoon-errors.mdrenamed+7−7
@@ -1,6 +1,6 @@
11+++
22title = "Hoon Errors"
3−weight = 12
3+weight = 30
44template = "doc.html"
55+++
66
@@ -23,7 +23,7 @@ a correct Hoon file. These values are always correct.
2323Usually, the line and column tell you everything you need to
2424know. But the worst-case scenario for a syntax error is that,
2525somewhere above, you've confused Hoon's tall form by using the
26−wrong fanout for a rune. For example, `%+` ([**cenlus**](@/docs/reference/hoon-expressions/rune/cen.md#cenlus),
26+wrong fanout for a rune. For example, `%+` ([**cenlus**](@/docs/hoon/reference/rune/cen.md#cenlus),
2727a function call whose sample is a cell) has three subhoons:
2828
2929```hoon
@@ -107,7 +107,7 @@ means you tried to pound a square peg into a round hole.
107107What was the peg and what was the hole? Hoon doesn't tell you by
108108default, because moral fiber, and also because in too many cases
109109trivial errors lead to large intimidating dumps. However, you
110−can use the `~!` rune ([**sigzap**](@/docs/reference/hoon-expressions/rune/sig.md#sigzap)) to print the type of any hoon in your stack trace.
110+can use the `~!` rune ([**sigzap**](@/docs/hoon/reference/rune/sig.md#sigzap)) to print the type of any hoon in your stack trace.
111111
112112For instance, you wrote `(foo bar)` and got a `nest-fail`. Change
113113your code to be:
@@ -135,7 +135,7 @@ function.
135135### `mint-vain` and `mint-lost`
136136
137137These are errors caused by type inference in pattern matching.
138−`mint-vain` means this hoon is never executed. `mint-lost` means there's a case in a `?-` ([**wuthep**](@/docs/reference/hoon-expressions/rune/wut.md#wuthep)) that isn't handled.
138+`mint-vain` means this hoon is never executed. `mint-lost` means there's a case in a `?-` ([**wuthep**](@/docs/hoon/reference/rune/wut.md#wuthep)) that isn't handled.
139139
140140## Runtime crashes
141141
@@ -149,7 +149,7 @@ infinite loop will time out either too slowly or too fast). The
149149stack trace will show what your code was doing when interrupted.
150150
151151The counterpart of `~!` for runtime crashes is `~|`
152−([**sigbar**](@/docs/reference/hoon-expressions/rune/sig.md#sigbar)):
152+([**sigbar**](@/docs/hoon/reference/rune/sig.md#sigbar)):
153153
154154```hoon
155155~| foo
@@ -165,7 +165,7 @@ The worst possibility, of course, is that your code runs but does
165165the wrong thing. This is relatively unusual in a typed
166166functional language, but it still happens.
167167
168−`~&` ([**sigpam**](@/docs/reference/hoon-expressions/rune/sig.md#sigpam)) is Hoon's debugging printf.
168+`~&` ([**sigpam**](@/docs/hoon/reference/rune/sig.md#sigpam)) is Hoon's debugging printf.
169169This pretty-prints its argument:
170170
171171```hoon
@@ -174,7 +174,7 @@ This pretty-prints its argument:
174174```
175175
176176will always print `foo` every time it executes. A variant is
177−`~?` ([**sigwut**](@/docs/reference/hoon-expressions/rune/sig.md#sigwut)), which prints only if a condition is
177+`~?` ([**sigwut**](@/docs/hoon/reference/rune/sig.md#sigwut)), which prints only if a condition is
178178true:
179179
180180```hoon
reference/hoon-expressions/irregular.md → hoon/reference/irregular.mdrenamed+20−20
@@ -1,6 +1,6 @@
11+++
22title = "Irregular forms"
3−weight = 7
3+weight = 20
44template = "doc.html"
55aliases = ["docs/reference/hoon-expressions/irregular/"]
66+++
@@ -17,7 +17,7 @@ Anything Nock can do, Hoon can do also.
1717
1818### .+ dotlus
1919
20−[docs](@/docs/reference/hoon-expressions/rune/dot.md#dotlus) \\+
20+[docs](@/docs/hoon/reference/rune/dot.md#dotlus) \\+
2121`[%dtls p=atom]`: increment an atom with Nock 4.
2222
2323R: `.+(p)`
@@ -25,7 +25,7 @@ I: `+(p)`
2525
2626### .= dottis
2727
28−[docs](@/docs/reference/hoon-expressions/rune/dot.md#dottis) \\=
28+[docs](@/docs/hoon/reference/rune/dot.md#dottis) \\=
2929`[%dtts p=hoon q=hoon]`: test for equality with Nock 5.
3030
3131R: `.=(p q)`
@@ -37,7 +37,7 @@ Miscellaneous useful macros.
3737
3838### ;: miccol
3939
40−[docs](@/docs/reference/hoon-expressions/rune/mic.md#miccol) \\:
40+[docs](@/docs/hoon/reference/rune/mic.md#miccol) \\:
4141`[%mccl p=hoon q=(list hoon)]`: call a binary function as an n-ary function.
4242
4343R: `;:(p q)`
@@ -49,7 +49,7 @@ The cell runes.
4949
5050### :- colhep
5151
52−[docs](@/docs/reference/hoon-expressions/rune/col.md#colhep) \\[\\]\\^\\+\\\`\\~
52+[docs](@/docs/hoon/reference/rune/col.md#colhep) \\[\\]\\^\\+\\\`\\~
5353`[%clhp p=hoon q=hoon]`: construct a cell (2-tuple).
5454
5555R: `:-(p q)`
@@ -71,7 +71,7 @@ Flow hoons change the subject. All non-flow hoons (except cores) pass the subjec
7171
7272### =< tisgal
7373
74−[docs](@/docs/reference/hoon-expressions/rune/tis.md#tisgal) \\:
74+[docs](@/docs/hoon/reference/rune/tis.md#tisgal) \\:
7575`[%tsgl p=hoon q=hoon]`: compose two hoons, inverted.
7676
7777R: `=<(p q)`
@@ -79,7 +79,7 @@ I: `p:q`
7979
8080## | bar (core)
8181
82−[docs](@/docs/reference/hoon-expressions/rune/bar.md) \\$
82+[docs](@/docs/hoon/reference/rune/bar.md) \\$
8383Core hoons are flow hoon.
8484
8585Technically not irregular syntax, but worth mentioning.
@@ -97,7 +97,7 @@ The invocation family of runes.
9797
9898### %= centis
9999
100−[docs](@/docs/reference/hoon-expressions/rune/cen.md#centis) \\(\\)
100+[docs](@/docs/hoon/reference/rune/cen.md#centis) \\(\\)
101101`[%cnts p=wing q=(list (pair wing hoon))]`: take a wing with changes.
102102
103103R: `%=(p a 1)`
@@ -105,7 +105,7 @@ I: `p(a 1)`
105105
106106### %~ censig
107107
108−[docs](@/docs/reference/hoon-expressions/rune/cen.md#censig) \\~
108+[docs](@/docs/hoon/reference/rune/cen.md#censig) \\~
109109`[%cnsg p=wing q=hoon r=hoon]`: call with multi-armed door.
110110
111111R: `%~(p q r)`
@@ -113,7 +113,7 @@ I: `~(p q r)`
113113
114114### %- cenhep
115115
116−[docs](@/docs/reference/hoon-expressions/rune/cen.md#cenhep) \\(\\)
116+[docs](@/docs/hoon/reference/rune/cen.md#cenhep) \\(\\)
117117`[%cnhp p=hoon q=hoon]`: call a gate (function).
118118
119119R: `%-(p q)`
@@ -127,7 +127,7 @@ A mold is a gate (function) that helps us build simple and rigorous data structu
127127
128128### $? bucwut
129129
130−[docs](@/docs/reference/hoon-expressions/rune/buc.md#bucwut) \\?
130+[docs](@/docs/hoon/reference/rune/buc.md#bucwut) \\?
131131`[%bcwt p=(list model)]`: mold which normalizes a general union.
132132
133133R: `$?(p)`
@@ -135,7 +135,7 @@ I: `?(p)`
135135
136136### $_ buccab
137137
138−[docs](@/docs/reference/hoon-expressions/rune/buc.md#buccab) \\_
138+[docs](@/docs/hoon/reference/rune/buc.md#buccab) \\_
139139`[%bccb p=value]`: mold which normalizes to an example.
140140
141141R: `$_(p)`
@@ -147,7 +147,7 @@ Hoon has the usual branches and logical tests.
147147
148148### ?! wutzap
149149
150−[docs](@/docs/reference/hoon-expressions/rune/wut.md#wutzap) \\!
150+[docs](@/docs/hoon/reference/rune/wut.md#wutzap) \\!
151151`[%wtzp p=hoon]`: logical not.
152152
153153R: `?!(p)`
@@ -155,7 +155,7 @@ I: `!(p)`
155155
156156### ?& wutpam
157157
158−[docs](@/docs/reference/hoon-expressions/rune/wut.md#wutpam) \\&
158+[docs](@/docs/hoon/reference/rune/wut.md#wutpam) \\&
159159`[%wtpm p=(list hoon)]`: logical and.
160160
161161R: `?&(p)`
@@ -163,7 +163,7 @@ I: `&(p)`
163163
164164### ?| wutbar
165165
166−[docs](@/docs/reference/hoon-expressions/rune/wut.md#wutbar) \\|
166+[docs](@/docs/hoon/reference/rune/wut.md#wutbar) \\|
167167`[%wtbr p=(list hoon)]`: logical or.
168168
169169R: `?|(p)`
@@ -175,7 +175,7 @@ Lets us adjust types without violating type constraints.
175175
176176### ^- kethep
177177
178−[docs](@/docs/reference/hoon-expressions/rune/ket.md#kethep) \\\`
178+[docs](@/docs/hoon/reference/rune/ket.md#kethep) \\\`
179179`[%kthp p=model q=value]`: typecast by mold.
180180
181181R: `^-(p q)`
@@ -183,7 +183,7 @@ I: `` `p`q ``
183183
184184### ^= kettis
185185
186−[docs](@/docs/reference/hoon-expressions/rune/ket.md#kettis) \\=
186+[docs](@/docs/hoon/reference/rune/ket.md#kettis) \\=
187187`[%ktts p=toga q=value]`: name a value.
188188
189189R: `^=(p q)`
@@ -209,7 +209,7 @@ I: `p=q`
209209- `|` loobean false.
210210- `%a` constant `a`, where `a` can be an ((ir)regularly defined) atom or a symbol.
211211
212−See [%sand](@/docs/reference/hoon-expressions/rune/constants.md#warm) for other irregular definitions of atoms.
212+See [%sand](@/docs/hoon/reference/rune/constants.md#warm) for other irregular definitions of atoms.
213213
214214### List addressing
215215
@@ -218,7 +218,7 @@ See [%sand](@/docs/reference/hoon-expressions/rune/constants.md#warm) for other
218218
219219### Limbs
220220
221−[docs](@/docs/reference/hoon-expressions/limb/limb.md) \\+\\.\\^
221+[docs](@/docs/hoon/reference/limbs/limb.md) \\+\\.\\^
222222`[%limb p=(each @ud [p=@ud q=@tas])]`: attribute of subject.
223223
224224- `+15` is slot 15
@@ -241,7 +241,7 @@ See [%sand](@/docs/reference/hoon-expressions/rune/constants.md#warm) for other
241241
242242### Wings
243243
244−[docs](content/docs/reference/hoon-expressions/limb/wing.md)
244+[docs](content/docs/hoon/reference/limbs/wing.md)
245245`[%wing p=(list limb)]`; a limb search path.
246246`a.b` finds limb `a` within limb `b` ("var" `a` within "var" `b`).
247247
reference/hoon-expressions/limb/_index.md → hoon/reference/limbs/_index.mdrenamed+3−3
@@ -1,6 +1,6 @@
11+++
22title = "Limbs and wings"
3−weight = 3
3+weight = 30
44sort_by = "weight"
55template = "sections/docs/chapters.html"
66aliases = ["docs/reference/hoon-expressions/limb/"]
@@ -9,10 +9,10 @@ One feature Hoon lacks: a context that isn't a first-class value. Hoon has no
99concept of scope, environment, etc. An expression has exactly one data source,
1010the **subject**, a noun like any other.
1111
12−## [Limbs](@/docs/reference/hoon-expressions/limb/limb.md)
12+## [Limbs](@/docs/hoon/reference/limbs/limb.md)
1313
1414A limb is used to resolve to a piece of data in the subject. A wing is thus a resolution path into the subject.
1515
16−## [Wings](@/docs/reference/hoon-expressions/limb/wing.md)
16+## [Wings](@/docs/hoon/reference/limbs/wing.md)
1717
1818In Hoon we use 'wings' to extract information from the subject. A wing is a list of limbs (including a trivial list of one limb).
reference/hoon-expressions/limb/limb.md → hoon/reference/limbs/limb.mdrenamed

The content is the same.

reference/hoon-expressions/limb/wing.md → hoon/reference/limbs/wing.mdrenamed

The content is the same.

reference/hoon-expressions/rune/_index.md → hoon/reference/rune/_index.mdrenamed+16−16
@@ -1,6 +1,6 @@
11+++
22title = "Runes"
3−weight = 2
3+weight = 20
44sort_by = "weight"
55template = "sections/docs/chapters.html"
66aliases = ["docs/reference/hoon-expressions/rune/"]
@@ -9,64 +9,64 @@ Runes are a way to form expressions in Hoon.
99
1010## Non-Rune Expressions
1111
12−### [Constants](@/docs/reference/hoon-expressions/rune/constants.md)
12+### [Constants](@/docs/hoon/reference/rune/constants.md)
1313
1414Hoon uses runes to form expressions, but not all expressions have runes in them. First, we have constant expressions (and also expressions that would be constant, but that they allow for interpolations).
1515
16−### [Limbs and Wings](@/docs/reference/hoon-expressions/limb/_index.md)
16+### [Limbs and Wings](@/docs/hoon/reference/limbs/_index.md)
1717
1818Limb and wing expressions also lack runes.
1919
2020## Runes Proper
2121
22−### [`. dot` (Nock)](@/docs/reference/hoon-expressions/rune/dot.md)
22+### [`. dot` (Nock)](@/docs/hoon/reference/rune/dot.md)
2323
2424Runes used for carrying out Nock operations in Hoon.
2525
26−### [`! zap` (wild)](@/docs/reference/hoon-expressions/rune/zap.md)
26+### [`! zap` (wild)](@/docs/hoon/reference/rune/zap.md)
2727
2828Wildcard category. Expressions that don't fit anywhere else go here.
2929
30−### [`= tis` (Subject Modification)](@/docs/reference/hoon-expressions/rune/tis.md)
30+### [`= tis` (Subject Modification)](@/docs/hoon/reference/rune/tis.md)
3131
3232Runes used to modify the subject.
3333
34−### [`? wut` (Conditionals)](@/docs/reference/hoon-expressions/rune/wut.md)
34+### [`? wut` (Conditionals)](@/docs/hoon/reference/rune/wut.md)
3535
3636Runes used for branching on conditionals.
3737
38−### [`| bar` (Cores)](@/docs/reference/hoon-expressions/rune/bar.md)
38+### [`| bar` (Cores)](@/docs/hoon/reference/rune/bar.md)
3939
4040Runes used to produce cores.
4141
42−### [`+ lus` (Arms)](@/docs/reference/hoon-expressions/rune/lus.md)
42+### [`+ lus` (Arms)](@/docs/hoon/reference/rune/lus.md)
4343
4444Runes used to define arms in a core.
4545
46−### [`: col` (Cells)](@/docs/reference/hoon-expressions/rune/col.md)
46+### [`: col` (Cells)](@/docs/hoon/reference/rune/col.md)
4747
4848Runes used to produce cells, which are pairs of nouns.
4949
50−### [`% cen` (Calls)](@/docs/reference/hoon-expressions/rune/cen.md)
50+### [`% cen` (Calls)](@/docs/hoon/reference/rune/cen.md)
5151
5252Runes used for making function calls in Hoon.
5353
54−### [`^ ket` (Casts)](@/docs/reference/hoon-expressions/rune/ket.md)
54+### [`^ ket` (Casts)](@/docs/hoon/reference/rune/ket.md)
5555
5656Runes that let us adjust types without violating type constraints.
5757
58−### [`$ buc` (Structures)](@/docs/reference/hoon-expressions/rune/buc.md)
58+### [`$ buc` (Structures)](@/docs/hoon/reference/rune/buc.md)
5959
6060Runes used for defining custom types.
6161
62−### [`; mic` (Make)](@/docs/reference/hoon-expressions/rune/mic.md)
62+### [`; mic` (Make)](@/docs/hoon/reference/rune/mic.md)
6363
6464Miscellaneous useful macros.
6565
66−### [`~ sig` (Hints)](@/docs/reference/hoon-expressions/rune/sig.md)
66+### [`~ sig` (Hints)](@/docs/hoon/reference/rune/sig.md)
6767
6868Runes that use Nock `11` to pass non-semantic info to the interpreter.
6969
70−### [`--`, `==` (Terminators)](@/docs/reference/hoon-expressions/rune/terminators.md)
70+### [`--`, `==` (Terminators)](@/docs/hoon/reference/rune/terminators.md)
7171
7272Runes used to terminate expressions.
reference/hoon-expressions/rune/bar.md → hoon/reference/rune/bar.mdrenamed+8−8
@@ -136,7 +136,7 @@ Calling a door is like calling a gate except the caller also needs
136136to specify the arm to be computed. So, for example, if you have some door `door` which contains some arm `arm`, and you want to pass some argument (i.e., input value `arg`), you would call it with `~(arm door arg)`.
137137
138138Because gates are also doors, you can call them the same way. To call the gate `foo` as a door, instead of `(foo baz)` we would write `~($ foo baz)`. This
139−is an irregular form for `%~($ foo baz)`, [%~](/docs/reference/hoon-expressions/rune/cen#sig).
139+is an irregular form for `%~($ foo baz)`, [%~](@/docs/hoon/reference/rune/cen.md#censig).
140140
141141##### Examples
142142
@@ -346,7 +346,7 @@ A more interesting trap:
346346Note that we can use `$()` to recurse back into the
347347trap, since it's a core with an `$` arm.
348348
349−> `$(...)` expands to `%=($ ...)` (["centis"](/docs/reference/hoon-expressions/rune/cen#centis)).
349+> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/hoon/reference/rune/cen.md#centis)).
350350
351351### `|-` "barhep"
352352
@@ -380,7 +380,7 @@ A `|-` expression produces a core with one arm named `$` and immediately evaluat
380380
381381The `|-` rune can be thought of as a 'recursion point' or a 'loop starting point'. Since `|-` makes a `|.` (["bardot"](#bardot), a core with one arm named `$`, we can recurse back into it with `$()`.
382382
383−> `$(...)` expands to `%=($ ...)` (["centis"](/docs/reference/hoon-expressions/rune/cen#centis)).
383+> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/hoon/reference/rune/cen.md#centis)).
384384
385385##### Examples
386386
@@ -493,7 +493,7 @@ A `|~` expression produces an iron gate. `a` defines the sample, and `b` define
493493
494494##### Discussion
495495
496−See [this discussion of core variance models](@/docs/reference/hoon-expressions/advanced.md)
496+See [this discussion of core variance models](@/docs/hoon/reference/advanced.md)
497497
498498##### Examples
499499
@@ -548,7 +548,7 @@ you know what you're doing.
548548Just as with a [gate](#bartis), we can recurse back into a wet gate
549549with `$()`.
550550
551−> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/reference/hoon-expressions/rune/cen.md#centis)).
551+> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/hoon/reference/rune/cen.md#centis)).
552552
553553`|*` can be used to make wet gates that produce structures, but this usage is
554554discouraged in favor of `|$`.
@@ -610,7 +610,7 @@ Dry gates are used for the vast majority of ordinary functions in Hoon.
610610
611611A gate is a core with one arm named `$`, so we can recurse back into it with `$()`.
612612
613−> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/reference/hoon-expressions/rune/cen.md#centis)).
613+> `$(...)` expands to `%=($ ...)` (["centis"](@/docs/hoon/reference/rune/cen.md#centis)).
614614
615615##### Examples
616616
@@ -663,7 +663,7 @@ A `|@` expression produces a 'wet' core whose payload is the expression's subjec
663663
664664##### Discussion
665665
666−The `|@` rune is just like the `|%` rune except that instead of producing a 'dry' core, it produces a 'wet' one. This allows for type polymorphism of its arms, using 'genericity'. See [Advanced types](@/docs/reference/hoon-expressions/advanced.md).
666+The `|@` rune is just like the `|%` rune except that instead of producing a 'dry' core, it produces a 'wet' one. This allows for type polymorphism of its arms, using 'genericity'. See [Advanced types](@/docs/hoon/reference/advanced.md).
667667
668668### `|?` "barwut"
669669
@@ -695,7 +695,7 @@ A `|?` expression produces a lead trap (i.e., a lead core with one arm named `$`
695695
696696##### Discussion
697697
698−See this [discussion of the core variance model](@/docs/reference/hoon-expressions/advanced.md).
698+See this [discussion of the core variance model](@/docs/hoon/reference/advanced.md).
699699
700700##### Examples
701701
reference/hoon-expressions/rune/buc.md → hoon/reference/rune/buc.mdrenamed+112−27
@@ -4,38 +4,51 @@ weight = 12
44template = "doc.html"
55aliases = ["docs/reference/hoon-expressions/rune/buc/"]
66+++
7+
78The `$` family of runes is used for defining custom types. Strictly speaking,
8−these runes are used to produce 'structures'. A structure is a compile-time
9−value that at runtime can be converted to either an example value (sometimes
10−called a 'bunt' value) for its corresponding type, or to a 'mold'. An example
11−value is used as a placeholder for sample values, among other things. A
12−mold is an idempotent function used as a data validator.
9+these runes are used to produce `spec`s, which we call 'structures'.
1310
1411## Overview
1512
16−A correct mold is a **normalizer**: an idempotent function across
17−all nouns. If the sample of a gate has type `%noun`, and its
18−body obeys the constraint that for any x, `=((mold x) (mold (mold
19−x)))`, it's a normalizer and can be used as a mold.
20−
21−(Hoon is not dependently typed and so can't check idempotence
22−statically, so we can't actually tell if a mold matches this
23−definition perfectly. This is not actually a problem.)
24−
25−Validation, though very
26−important, is a rare use case. Except for direct raw input,
27−it's generally a faux pas to rectify nouns at runtime -- or even
28−in userspace.
29−
30−In any case, since molds are just functions, we can use
31−functional programming to assemble interesting molds. For
32−instance, `(map foo bar)` is a table from mold `foo` to mold
33−`bar`. `map` is not a mold; it's a function that makes a mold.
34−Molds and mold builders are generally described together.
13+Structures are abstract syntax trees for `type`s (see the documentation on
14+[basic](@/docs/hoon/reference/basic.md) and
15+[advanced](@/docs/hoon/reference/advanced.md) types for the
16+precise definition of `type`). Structures are compile-time values of `type` which
17+at runtime may be used to produce a 'mold'.
18+
19+A mold is a function from nouns to nouns used to validate values of the type to
20+which the structure defines. A mold can do two things at runtime. First, it may
21+'clam' a noun, which validates the shape of the noun to be one that fits the
22+abstract syntax tree given by the `spec` that produced the mold. Failing this
23+validation results in a crash. Secondly, a mold may also be used to produce an
24+example value of the type to which is corresponds, called the 'bunt value'. The
25+bunt value is used as a placeholder for sample values that may be passed to a
26+gate that accepts the corresponding type.
27+
28+A correct mold is a **normalizer**: an idempotent function across all nouns. If
29+the sample of a gate has type `%noun`, and its body obeys the constraint that
30+for any x, `=((mold x) (mold (mold x)))`, it's a normalizer and can be used as a
31+mold. Hoon is not dependently typed and so can't check idempotence statically,
32+so we can't actually tell if a mold matches this definition perfectly. This is
33+not actually a problem.
34+
35+In any case, since molds are just functions, we can use functional programming
36+to assemble interesting molds. For instance, `(map foo bar)` is a table from
37+mold `foo` to mold `bar`. `map` is not a mold; it's a function that makes a
38+mold. Molds and mold builders are generally described together.
39+
40+`spec`s contain more information and draw finer distinctions than `type`s,
41+which is to say that a given type may have more than one valid `spec` defining
42+it, and thus downconversion from `spec` to `type` is lossy. Thus structure
43+validation (done with [`$|`](#bucbar), which is a more restrictive validation
44+than that performed by molds, is a rare use case. Except for direct raw input,
45+it's generally a faux pas to validate structure at runtime -- or even in userspace.
46+Nonetheless they are sometimes utilized for types that will be more performant
47+if they satisfy some validating gate.
3548
3649## Base Structures
3750
38−`[%base p=$@(?(%noun %cell %bean %null) [%atom p=aura])]`: trivial structures (types).
51+`[%base p=$@(?(%noun %cell %flag %null %void) [%atom p=aura])]`: trivial structures (types).
3952
4053##### Produces
4154
@@ -43,15 +56,87 @@ A structure is a noun produced, usually at compile-time, for use in tracking typ
4356
4457A structure for the base in `p`. `%noun` is any noun; `%atom` is any
4558atom; `%cell` is a cell of nouns; `%flag` is a loobean, ``?(`@f`0
46−`@f`1)``. `%null` is zero with aura `@n`.
59+`@f`1)``. `%null` is zero with aura `@n`, `%void` is the empty set.
4760
4861##### Syntax
4962
5063Irregular: `*` makes `%noun`, `^` makes `%cell`, `?` makes
5164`%bean`, `~` makes `%null`, `@aura` makes atom `aura`.
5265
66+
5367## Runes
5468
69+### $| "bucbar"
70+
71+`[%bsbr p=spec q=hoon]`: structure that satisfies a validator.
72+
73+##### Syntax
74+
75+Regular: **2-fixed**
76+
77+##### Discussion
78+
79+`$|` is used for validation of values at a finer level than that of types.
80+Recall that a given value of `type` can be equivalently defined by more than one
81+`spec`. For performance reasons, it may be beneficial to restrict oneself to
82+values of a given type that adhere to an abstract syntax tree specified by some
83+subset of those `spec`s that may be used to define a given type.
84+
85+`$|` takes two arguments: a structure `a` and a gate `b` that produces a `flag`
86+that is used to validate values produced by the mold generated by `a` at
87+runtime. `$|(a b)` is a gate that takes in a noun `x` and first pins the product
88+of clamming `a` with `x`, call this `foo`. Then it calls `b` on `foo`. It
89+asserts that the product of `(b foo)` is `&`, and then produces `foo`. This is
90+equivalent to the following (which is not how `$|` is actually defined but has
91+the same behavior):
92+
93+```hoon
94+|= x=*
95+=/ foo ;;(a x)
96+?> (b foo)
97+foo
98+```
99+
100+For example, the elements of a `set` are treated as being unordered, but the
101+values will necessarily possess an order by where they are in the memory. Thus
102+if every `set` is stored using the same order scheme then faster algorithms
103+involving `set`s may be written. Furthermore, if you just place elements in the
104+`set` randomly, it may be mistreated by algorithms already in place that are
105+expecting a certain order. This is not the same thing as casting - it is forcing
106+a type to have a more specific set of values than its mold would suggest. This
107+rune should rarely be used, but it is extremely important when it is.
108+
109+##### Examples
110+
111+```
112+~zod:dojo> =foo $| (list @)
113+ |=(a=(list) (lth (lent a) 4))
114+```
115+This creates a structure `foo` whose values are `list`s with length less than 4.
116+```
117+> (foo ~[1 2 3])
118+~[1 2 3]
119+> (foo ~[1 2 3 4])
120+ford: %ride failed to execute:
121+```
122+
123+
124+The definition of `+set` in `hoon.hoon` is the following:
125+```hoon
126+++ set
127+ |$ [item] :: set
128+ $| (tree item)
129+ |=(a=(tree) ~(apt in a))
130+```
131+Here [`|$`](@/docs/hoon/reference/rune/bar.md#barbuc) is used to
132+define a mold builder that takes in a mold (given the face `item`) and creates a
133+structure consisting of a `tree` of `item`s with `$|` that is validated with the
134+gate `|=(a=(tree) ~(apt in a))`. `in` is a door in `hoon.hoon` with functions
135+for handling `set`s, and `apt` is an arm in that door that checks that the
136+values in the `tree` are arranged in the particular way that `set`s are arranged
137+in Hoon, namely 'ascending `+mug` hash order'.
138+
139+
55140### `$_` "buccab"
56141
57142`[%bscb p=hoon]`: structure that normalizes to an example.
@@ -366,7 +451,7 @@ $~ p=hoon q=spec
366451
367452##### Discussion
368453
369−You should make sure that the product type of `p` nests under `q`. You can check the default value of some structure (custom type) `r` with `*r`. (See the [`^*` rune](@/docs/reference/hoon-expressions/rune/ket.md#kettar).)
454+You should make sure that the product type of `p` nests under `q`. You can check the default value of some structure (custom type) `r` with `*r`. (See the [`^*` rune](@/docs/hoon/reference/rune/ket.md#kettar).)
370455
371456Do not confuse the `$~` rune with the constant type for null, `$~`. (The latter uses older Hoon syntax that is still accepted. Preferably it would be `%~`.)
372457
reference/hoon-expressions/rune/cen.md → hoon/reference/rune/cen.mdrenamed+4−4
@@ -53,7 +53,7 @@ A `%_` expression resolves to the value of the subject at wing `a`, but modified
5353
5454`%_` is different from `%=` because `%=` can change the type of a wing with mutations. `%_` preserves the wing type.
5555
56−See [how wings are resolved](@/docs/reference/hoon-expressions/limb/_index.md).
56+See [how wings are resolved](@/docs/hoon/reference/limbs/_index.md).
5757
5858##### Examples
5959
@@ -204,8 +204,8 @@ This rune is for evaluating the `$` arm of a gate, i.e., calling a gate as a fun
204204
205205##### Discussion
206206
207−`%-` is used to call a function; `a` is the function ([`gate`](@/docs/reference/hoon-expressions/rune/bar.md#bartis),
208−`q` the argument. `%-` is a special case of [`%~` ("censig")](#censig), and a gate is a special case of a [door](@/docs/reference/hoon-expressions/rune/bar.md#barcab).
207+`%-` is used to call a function; `a` is the function ([`gate`](@/docs/hoon/reference/rune/bar.md#bartis),
208+`q` the argument. `%-` is a special case of [`%~` ("censig")](#censig), and a gate is a special case of a [door](@/docs/hoon/reference/rune/bar.md#barcab).
209209
210210##### Examples
211211
@@ -319,7 +319,7 @@ A `%~` expression evaluates the arm of a door (i.e., a core with a sample). `a`
319319
320320`%~` is the general case of a function call, `%-`. In both, we replace the sample (`+6`) of a core. In `%-` the core is a gate and the `$` arm is evaluated. In `%~` the core is a door and any arm may be evaluated. You must identify the arm to be run: `%~(arm door arg)`.
321321
322−See also [`|_`](@/docs/reference/hoon-expressions/rune/bar.md#barcab).
322+See also [`|_`](@/docs/hoon/reference/rune/bar.md#barcab).
323323
324324##### Examples
325325
reference/hoon-expressions/rune/col.md → hoon/reference/rune/col.mdrenamed

The content is the same.

reference/hoon-expressions/rune/constants.md → hoon/reference/rune/constants.mdrenamed

The content is the same.

reference/hoon-expressions/rune/dot.md → hoon/reference/rune/dot.mdrenamed+1−1
@@ -24,7 +24,7 @@ typed immutable namespace defined by its virtual context.
2424
2525Ordinarily a Hoon expression has access to no information but whatever can be found in the subject. The one exception is with the `.^` rune. It essentially allows you to request information from one of the Arvo vanes (modules).
2626
27−`.^` checks that the type of the value retrieved from Arvo nests under `p`. `p` is a `path` which includes information about which vane is being queried, and what sort of information is requested.
27+`.^` checks that the type of the value retrieved from Arvo nests under `p`. `q` is a `path` which includes information about which vane is being queried, and what sort of information is requested.
2828
2929In principle `.^` takes two subexpressions, but in practice `q` is often given in two parts: the first part includes the vane to be queried (e.g., `%a` for Ames, `%b` for Behn, `%c` for Clay, etc.) and the kind of request. The second part is a path that corresponds to the kind of request.
3030
reference/hoon-expressions/rune/ket.md → hoon/reference/rune/ket.mdrenamed+1−1
@@ -203,7 +203,7 @@ Regular: **1-fixed**.
203203
204204##### Discussion
205205
206−A zinc core has a read-only sample and an opaque context. See [Advanced types](@/docs/reference/hoon-expressions/advanced.md).
206+A zinc core has a read-only sample and an opaque context. See [Advanced types](@/docs/hoon/reference/advanced.md).
207207
208208##### Examples
209209
reference/hoon-expressions/rune/lus.md → hoon/reference/rune/lus.mdrenamed

The content is the same.

reference/hoon-expressions/rune/mic.md → hoon/reference/rune/mic.mdrenamed

The content is the same.

reference/hoon-expressions/rune/sig.md → hoon/reference/rune/sig.mdrenamed+4−1
@@ -3,7 +3,10 @@ title = "Hints ~ ('sig')"
33weight = 14
44template = "doc.html"
55+++
6−Runes that use Nock `11` to pass non-semantic info to the interpreter.
6+Runes that use Nock `11` to pass non-semantic info to the interpreter. A
7+mnemonic to remember what sig runes are for is "we're *sig*naling some
8+information to the interpreter".
9+
710
811## Runes
912
reference/hoon-expressions/rune/terminators.md → hoon/reference/rune/terminators.mdrenamed

The content is the same.

reference/hoon-expressions/rune/tis.md → hoon/reference/rune/tis.mdrenamed+1−1
@@ -159,7 +159,7 @@ Regular: **3-fixed**.
159159##### Discussion
160160
161161Technically the `=.` rune doesn't change the subject. It creates
162−a new subject just like the old one except for a changed value at `p`. Note that the mutation uses [`%_` ("cencab")](@/docs/reference/hoon-expressions/rune/cen.md#cencab), so the type at `p` doesn't change. Trying to change the value type results in a `nest-fail`.
162+a new subject just like the old one except for a changed value at `p`. Note that the mutation uses [`%_` ("cencab")](@/docs/hoon/reference/rune/cen.md#cencab), so the type at `p` doesn't change. Trying to change the value type results in a `nest-fail`.
163163
164164##### Examples
165165
reference/hoon-expressions/rune/wut.md → hoon/reference/rune/wut.mdrenamed+1−1
@@ -22,7 +22,7 @@ for expressions which expand to `?:`.
2222The test does not have to be a single `?=`; the compiler can
2323analyze arbitrary boolean logic ([`?&` ("wutpam")](#wutpam),
2424[`?|` ("wutbar")](#wutbar), [`?!` ("wutzap")](#wutzap)) with full
25−short-circuiting. Equality tests ([`.=` ("dottis")](@/docs/reference/hoon-expressions/rune/dot.md#dottis)) are **not**
25+short-circuiting. Equality tests ([`.=` ("dottis")](@/docs/hoon/reference/rune/dot.md#dottis)) are **not**
2626analyzed.
2727
2828If the compiler detects that the branch is degenerate (only one
reference/hoon-expressions/rune/zap.md → hoon/reference/rune/zap.mdrenamed

The content is the same.

reference/library/1a.md → hoon/reference/stdlib/1a.mdrenamed

The content is the same.

reference/library/1b.md → hoon/reference/stdlib/1b.mdrenamed+1−1
@@ -4,7 +4,7 @@ weight = 2
44template = "doc.html"
55+++
66
7−Check out the Nock [explanation](@/docs/tutorials/nock/_index.md) for more
7+Check out the Nock [explanation](@/docs/nock/_index.md) for more
88information on the tree-addressing system.
99
1010### `++cap`
reference/library/1c.md → hoon/reference/stdlib/1c.mdrenamed+1−1
@@ -63,7 +63,7 @@ A `bloq` of 3 has a bitwidth of 8. (2^3 bits; can represent 256 values.)
6363
6464And so on.
6565
66−See the [bit arithmetic](@/docs/reference/library/2c.md) section for operations that use `bloq`s.
66+See the [bit arithmetic](@/docs/hoon/reference/stdlib/2c.md) section for operations that use `bloq`s.
6767
6868---
6969
reference/library/2a.md → hoon/reference/stdlib/2a.mdrenamed

The content is the same.

reference/library/2b.md → hoon/reference/stdlib/2b.mdrenamed

The content is the same.

reference/library/2c.md → hoon/reference/stdlib/2c.mdrenamed+14−14
@@ -53,7 +53,7 @@ value.
5353
5454#### Accepts
5555
56−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
56+`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
5757
5858`b` is a `list` of length-value pairs, `p` and `q`.
5959
@@ -110,7 +110,7 @@ atom.
110110
111111#### Accepts
112112
113−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
113+`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
114114
115115`b` is an atom.
116116
@@ -173,7 +173,7 @@ Slices `c` blocks of size `a` that are positioned `b` blocks from the end of
173173
174174#### Accepts
175175
176−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
176+`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
177177
178178`b` is an atom.
179179
@@ -232,7 +232,7 @@ Produces an atom by taking the last `b` blocks of size `a` from `c`.
232232
233233#### Accepts
234234
235−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
235+`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
236236
237237`b` is an atom.
238238
@@ -299,7 +299,7 @@ Produces an atom by repeating `c` for `b` blocks of size `a`.
299299
300300#### Accepts
301301
302−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
302+`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
303303
304304`b` is an atom.
305305
@@ -351,7 +351,7 @@ Produces an atom by left-shifting `c` by `b` blocks of size `a`.
351351
352352#### Accepts
353353
354−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
354+`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
355355
356356`b` is an atom.
357357
@@ -402,7 +402,7 @@ Computes the number of blocks of size `a` in `b`, producing an atom.
402402
403403#### Accepts
404404
405−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
405+`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
406406
407407`b` is an atom.
408408
@@ -448,7 +448,7 @@ Concatenates a list of atoms `b` using block size `a`, producing an atom.
448448
449449#### Accepts
450450
451−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
451+`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
452452
453453`b` is a `list` of atoms.
454454
@@ -509,7 +509,7 @@ Produces an atom by assembling a list of atoms `b` using block size `a`.
509509
510510#### Accepts
511511
512−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
512+`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
513513
514514`b` is a list of atoms.
515515
@@ -574,7 +574,7 @@ Produces a list of atoms from the bits of `b` using block size `a`.
574574
575575#### Accepts
576576
577−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
577+`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
578578
579579`b` is an atom.
580580
@@ -634,7 +634,7 @@ Right-shifts `c` by `b` blocks of size `a`, producing an atom.
634634
635635#### Accepts
636636
637−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
637+`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
638638
639639`b` is an atom.
640640
@@ -702,7 +702,7 @@ reversing the block order of `b` using block size `a`.
702702
703703#### Accepts
704704
705−`a` is a block size (see [`++bloq`](@/docs/reference/library/1c.md)).
705+`a` is a block size (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md)).
706706
707707`b` is an atom.
708708
@@ -862,7 +862,7 @@ Inverts the order of the modular field.
862862
863863#### Accepts
864864
865−`b` is a `bloq`. (see [`++bloq`](@/docs/reference/library/1c.md))
865+`b` is a `bloq`. (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md))
866866
867867#### Produces
868868
@@ -905,7 +905,7 @@ Reverses bytes within a block.
905905
906906#### Accepts
907907
908−`b` is a `bloq`. (see [`++bloq`](@/docs/reference/library/1c.md))
908+`b` is a `bloq`. (see [`++bloq`](@/docs/hoon/reference/stdlib/1c.md))
909909
910910#### Produces
911911
reference/library/2d.md → hoon/reference/stdlib/2d.mdrenamed+2−2
@@ -281,7 +281,7 @@ of `c`.
281281
282282#### Accepts
283283
284−`a` is a block size (see [`bloq`](@/docs/reference/library/1c.md)).
284+`a` is a block size (see [`bloq`](@/docs/hoon/reference/stdlib/1c.md)).
285285
286286`b` is an atom.
287287
@@ -327,7 +327,7 @@ number's `0`s into `1`s, and vice versa.
327327
328328In Hoon, we ask for a little more information to use `not`, because binary
329329numbers have a number of implicit leading zeroes differently depending on on
330−their [block size](@/docs/reference/library/1c.md). Decimal `7`, for example, is `0b111` in binary, and
330+their [block size](@/docs/hoon/reference/stdlib/1c.md). Decimal `7`, for example, is `0b111` in binary, and
331331has one implicit zero in the context of a block of size `2`, which has a
332332bitwidth of 4. Let's try `not` on `7` with a single block of size `2`.
333333
reference/library/2e.md → hoon/reference/stdlib/2e.mdrenamed+2−2
@@ -9,7 +9,7 @@ template = "doc.html"
99FNV scrambler
1010
1111Hashes an atom with the 32-bit FNV non-cryptographic hash algorithm. Multiplies
12−`a` by the prime number 16,777,619 and then takes the [block](@/docs/reference/library/2c.md) of size
12+`a` by the prime number 16,777,619 and then takes the [block](@/docs/hoon/reference/stdlib/2c.md) of size
13135 off the product's end, producing an atom.
1414
1515#### Accepts
@@ -101,7 +101,7 @@ Standard MurmurHash3
101101Implementation of the 32-bit
102102[MurmurHash3](https://en.wikipedia.org/wiki/MurmurHash#Algorithm)
103103non-cryptographic hash algorithm. Takes `a` as the seed, `b` as the key length
104−in [blocks](@/docs/reference/library/2c.md) of size 3, and `c` as the key, producing an atom.
104+in [blocks](@/docs/hoon/reference/stdlib/2c.md) of size 3, and `c` as the key, producing an atom.
105105
106106#### Accepts
107107
reference/library/2f.md → hoon/reference/stdlib/2f.mdrenamed+4−4
@@ -131,7 +131,7 @@ A flag.
131131
132132#### Discussion
133133
134−If `a` and `b` are both atoms, `dor` is equivalent to [`lte`](@/docs/reference/library/1a.md). If they're
134+If `a` and `b` are both atoms, `dor` is equivalent to [`lte`](@/docs/hoon/reference/stdlib/1a.md). If they're
135135cells, `dor` recurses on the heads, and then if the heads are the same it checks
136136the tails.
137137
@@ -148,7 +148,7 @@ Computes whether of `(mug a)` and `(mug b)` are in ascending numeric order,
148148producing a flag. If the `mug` hashes are equal, `a` and `b` are compared by
149149`dor` instead.
150150
151−[`mug`](@/docs/reference/library/2e.md) is the the 31-bit nonzero FNV-1a hash algorithm.
151+[`mug`](@/docs/hoon/reference/stdlib/2e.md) is the the 31-bit nonzero FNV-1a hash algorithm.
152152
153153#### Accepts
154154
@@ -297,7 +297,7 @@ A flag.
297297#### Discussion
298298
299299Sets (+set, +in) use `hor` for their horizontal order and `vor` for their
300−vertical order. See [`apt:in`](@/docs/reference/library/2h.md) to see how a set verifies its correctness.
300+vertical order. See [`apt:in`](@/docs/hoon/reference/stdlib/2h.md) to see how a set verifies its correctness.
301301`vor` is used to verify.
302302
303303---
@@ -378,7 +378,7 @@ Computes whether the double-hashes `(mug (mug a))` and `(mug (mug b))` are in
378378ascending numeric order, producing a flag. If the double-`mug` hashes are
379379equal, `a` and `b` are compared by `dor` instead.
380380
381−[`mug`](@/docs/reference/library/2e.md) is the the 31-bit nonzero FNV-1a hash algorithm.
381+[`mug`](@/docs/hoon/reference/stdlib/2e.md) is the the 31-bit nonzero FNV-1a hash algorithm.
382382
383383
384384#### Accepts
reference/library/2g.md → hoon/reference/stdlib/2g.mdrenamed

The content is the same.

reference/library/2h.md → hoon/reference/stdlib/2h.mdrenamed+2−2
@@ -164,7 +164,7 @@ A flag.
164164
165165#### Discussion
166166
167−See section [`2f`](@/docs/reference/library/2f.md) for more information on noun ordering.
167+See section [`2f`](@/docs/hoon/reference/stdlib/2f.md) for more information on noun ordering.
168168
169169---
170170### `+-bif:in`
@@ -383,7 +383,7 @@ The `unit` of an atom.
383383
384384#### Discussion
385385
386−For more on the tree addressing system, see section [1b](@/docs/reference/library/1b.md).
386+For more on the tree addressing system, see section [1b](@/docs/hoon/reference/stdlib/1b.md).
387387
388388---
389389### `+-gas:in`
reference/library/2i.md → hoon/reference/stdlib/2i.mdrenamed+1−1
@@ -176,7 +176,7 @@ A flag.
176176
177177#### Discussion
178178
179−See section [`2f`](@/docs/reference/library/2f.md) for more information on noun ordering.
179+See section [`2f`](@/docs/hoon/reference/stdlib/2f.md) for more information on noun ordering.
180180
181181### `+-bif:by`
182182
reference/library/2j.md → hoon/reference/stdlib/2j.mdrenamed

The content is the same.

reference/library/2k.md → hoon/reference/stdlib/2k.mdrenamed

The content is the same.

reference/library/2l.md → hoon/reference/stdlib/2l.mdrenamed

The content is the same.

reference/library/2m.md → hoon/reference/stdlib/2m.mdrenamed

The content is the same.

reference/library/2n.md → hoon/reference/stdlib/2n.mdrenamed

The content is the same.

reference/library/2o.md → hoon/reference/stdlib/2o.mdrenamed+5−5
@@ -38,7 +38,7 @@ Mold generator. A `jar` is a `map` of `list`.
3838
3939#### Discussion
4040
41−See also: [`ja`](@/docs/reference/library/2j.md), [`by`](@/docs/reference/library/2i.md), [`map`](@/docs/reference/library/2i.md), [`list`](@/docs/reference/library/2b.md)
41+See also: [`ja`](@/docs/hoon/reference/stdlib/2j.md), [`by`](@/docs/hoon/reference/stdlib/2i.md), [`map`](@/docs/hoon/reference/stdlib/2i.md), [`list`](@/docs/hoon/reference/stdlib/2b.md)
4242
4343---
4444### `++jug`
@@ -78,7 +78,7 @@ Mold generator. A `jug` is a `map` of `set`.
7878
7979#### Discussion
8080
81−See also: [`ja`](@/docs/reference/library/2j.md), [`by`](@/docs/reference/library/2i.md), [`set`](@/docs/reference/library/2h.md)
81+See also: [`ja`](@/docs/hoon/reference/stdlib/2j.md), [`by`](@/docs/hoon/reference/stdlib/2i.md), [`set`](@/docs/hoon/reference/stdlib/2h.md)
8282
8383---
8484### `++map`
@@ -111,7 +111,7 @@ key-value pairs.
111111
112112#### Discussion
113113
114−See also: [`by`](@/docs/reference/library/2i.md)
114+See also: [`by`](@/docs/hoon/reference/stdlib/2i.md)
115115
116116---
117117### `++qeu`
@@ -148,7 +148,7 @@ items.
148148
149149#### Discussion
150150
151−See also: [`qeu`](@/docs/reference/library/2k.md)
151+See also: [`qeu`](@/docs/hoon/reference/stdlib/2k.md)
152152
153153---
154154### `++set`
@@ -182,6 +182,6 @@ items.
182182
183183#### Discussion
184184
185−See also: [`in`](@/docs/reference/library/2h.md)
185+See also: [`in`](@/docs/hoon/reference/stdlib/2h.md)
186186
187187---
reference/library/2p.md → hoon/reference/stdlib/2p.mdrenamed

The content is the same.

reference/library/2q.md → hoon/reference/stdlib/2q.mdrenamed+2−2
@@ -66,7 +66,7 @@ atom of UTF-8 text.
6666Aura `@t` designates a Unicode atom, little-endian: the first character
6767in the text is the least-significant byte.
6868
69−[`trip`](@/docs/reference/library/4b.md) converts from `cord` to `tape`, and [`crip`](@/docs/reference/library/4b.md) converts
69+[`trip`](@/docs/hoon/reference/stdlib/4b.md) converts from `cord` to `tape`, and [`crip`](@/docs/hoon/reference/stdlib/4b.md) converts
7070from `tape` to `cord`.
7171
7272
@@ -101,7 +101,7 @@ which is a day atom and a time.
101101
102102#### Discussion
103103
104−See also: [`year`](@/docs/reference/library/3c.md), [`yore`](@/docs/reference/library/3c.md)
104+See also: [`year`](@/docs/hoon/reference/stdlib/3c.md), [`yore`](@/docs/hoon/reference/stdlib/3c.md)
105105
106106---
107107### `++knot`
reference/library/3a.md → hoon/reference/stdlib/3a.mdrenamed

The content is the same.

reference/library/3b.md → hoon/reference/stdlib/3b.mdrenamed

The content is the same.

reference/library/3c.md → hoon/reference/stdlib/3c.mdrenamed

The content is the same.

reference/library/3d.md → hoon/reference/stdlib/3d.mdrenamed+2−2
@@ -38,7 +38,7 @@ An atom.
3838
3939Half SHA-256
4040
41−Produces a 128-bit atom by performing the [bitwise XOR](@/docs/reference/library/2d.md) on the
41+Produces a 128-bit atom by performing the [bitwise XOR](@/docs/hoon/reference/stdlib/2d.md) on the
4242first and last halves of the 256-bit salted hash `shas`.
4343
4444#### Accepts
@@ -363,7 +363,7 @@ SHA-1 is a deprecated function; it is not considered secure.
363363
364364Salted hash
365365
366−Produces an atom by using SHA-256 plus a salt input. The [bitwise XOR](@/docs/reference/library/2d.md)
366+Produces an atom by using SHA-256 plus a salt input. The [bitwise XOR](@/docs/hoon/reference/stdlib/2d.md)
367367is performed on `sal` and the product of `ruz` hashed with SHA-256. The product
368368of that logical operation is then itself hashed with SHA-256.
369369
reference/library/3e.md → hoon/reference/stdlib/3e.mdrenamed

The content is the same.

reference/library/3f.md → hoon/reference/stdlib/3f.mdrenamed+3−3
@@ -609,7 +609,7 @@ An atom.
609609
610610Reverse Feistel-like cipher
611611
612−A single round of the Feistel-like cipher `fice`. AES ([`aesc`](@/docs/reference/library/3f.md)) is
612+A single round of the Feistel-like cipher `fice`. AES ([`aesc`](@/docs/hoon/reference/stdlib/3f.md)) is
613613used as the round function. The inverse of `rund`.
614614
615615#### Accepts
@@ -651,7 +651,7 @@ A cell of two atoms.
651651
652652Reverse single Feistel-like
653653
654−A single round of the Feistel-like reverse cipher `teil`. AES ([`aesc`](@/docs/reference/library/3f.md))
654+A single round of the Feistel-like reverse cipher `teil`. AES ([`aesc`](@/docs/hoon/reference/stdlib/3f.md))
655655is used as the round function. The inverse of `rynd`.
656656
657657#### Accepts
@@ -693,7 +693,7 @@ A cell of two atoms.
693693
694694Key list
695695
696−Produces a list of arbitrary hexademical keys for use with [`aesc`](@/docs/reference/library/3f.md).
696+Produces a list of arbitrary hexademical keys for use with [`aesc`](@/docs/hoon/reference/stdlib/3f.md).
697697
698698#### Produces
699699
reference/library/3g.md → hoon/reference/stdlib/3g.mdrenamed+4−4
@@ -52,9 +52,9 @@ and printed using `++so` and `++co` cores.
5252
5353Aura-atom pair
5454
55−Used in `++coin`. Convenience methods [`++scot`](@/docs/reference/library/4m.md) and
56−[`++scow`](@/docs/reference/library/4m.md) print dimes as `++cord` and `++tape`, respectively.
57−[`++slat`](@/docs/reference/library/4m.md), [`++slav`](@/docs/reference/library/4m.md), and [`++slaw`](@/docs/reference/library/4m.md) are used
55+Used in `++coin`. Convenience methods [`++scot`](@/docs/hoon/reference/stdlib/4m.md) and
56+[`++scow`](@/docs/hoon/reference/stdlib/4m.md) print dimes as `++cord` and `++tape`, respectively.
57+[`++slat`](@/docs/hoon/reference/stdlib/4m.md), [`++slav`](@/docs/hoon/reference/stdlib/4m.md), and [`++slaw`](@/docs/hoon/reference/stdlib/4m.md) are used
5858to parse atoms of specific auras.
5959
6060#### Source
@@ -93,7 +93,7 @@ Parsing location metadata. Parsing location input `p` and optional result `p.q`
9393
9494#### Discussion
9595
96−See also: [Section 3g](@/docs/reference/library/3g.md#rule), `++rule`
96+See also: [Section 3g](@/docs/hoon/reference/stdlib/3g.md#rule), `++rule`
9797
9898
9999---
reference/library/4a.md → hoon/reference/stdlib/4a.mdrenamed

The content is the same.

reference/library/4b.md → hoon/reference/stdlib/4b.mdrenamed

The content is the same.

reference/library/4c.md → hoon/reference/stdlib/4c.mdrenamed

The content is the same.

reference/library/4d.md → hoon/reference/stdlib/4d.mdrenamed

The content is the same.

reference/library/4e.md → hoon/reference/stdlib/4e.mdrenamed

The content is the same.

reference/library/4f.md → hoon/reference/stdlib/4f.mdrenamed

The content is the same.

reference/library/4g.md → hoon/reference/stdlib/4g.mdrenamed

The content is the same.

reference/library/4h.md → hoon/reference/stdlib/4h.mdrenamed+1−1
@@ -70,7 +70,7 @@ Parses ASCII character 124, the vertical bar.
7070Parse backslash
7171
7272Parses ASCII character 92, the backslash. Note the extra `\` in the calling of
73−`bas` with [`++just`](@/docs/reference/library/4f.md) is to escape the escape
73+`bas` with [`++just`](@/docs/hoon/reference/stdlib/4f.md) is to escape the escape
7474character, `\`.
7575
7676#### Source
reference/library/4i.md → hoon/reference/stdlib/4i.mdrenamed

The content is the same.

reference/library/4j.md → hoon/reference/stdlib/4j.mdrenamed

The content is the same.

reference/library/4k.md → hoon/reference/stdlib/4k.mdrenamed

The content is the same.

reference/library/4l.md → hoon/reference/stdlib/4l.mdrenamed

The content is the same.

reference/library/4m.md → hoon/reference/stdlib/4m.mdrenamed

The content is the same.

reference/library/4n.md → hoon/reference/stdlib/4n.mdrenamed

The content is the same.

reference/library/4o.md → hoon/reference/stdlib/4o.mdrenamed

The content is the same.

reference/library/5a.md → hoon/reference/stdlib/5a.mdrenamed

The content is the same.

reference/library/5b.md → hoon/reference/stdlib/5b.mdrenamed

The content is the same.

reference/library/5c.md → hoon/reference/stdlib/5c.mdrenamed

The content is the same.

reference/library/5d.md → hoon/reference/stdlib/5d.mdrenamed

The content is the same.

reference/library/5e.md → hoon/reference/stdlib/5e.mdrenamed

The content is the same.

reference/library/5f.md → hoon/reference/stdlib/5f.mdrenamed

The content is the same.

reference/library/5g.md → hoon/reference/stdlib/5g.mdrenamed

The content is the same.

hoon/reference/stdlib/_index.mdnew file+1736
@@ -0,0 +1,1736 @@
1++++
2+title = "Standard library"
3+weight = 40
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+Documentation for the standard library.
9+
10+Can be navigated [alphabetically](#alphabetical) or [by section](#by-section).
11+
12+## Alphabetical
13+
14+### a
15+
16+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ab' title="Primitive parser engine"><code>++ab</code></a>
17+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#abs-fl' title="Absolute value"><code>++abs:fl</code></a>
18+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#abs-si' title="Absolute value (signed integer)"><code>++abs:si</code></a>
19+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#abel' title="Compiler alias"><code>++abel</code></a>
20+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ace' title="Parse space"><code>++ace</code></a>
21+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#add' title="Add"><code>++add</code></a>
22+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-ff' title="Add (floating point)"><code>++add:ff</code></a>
23+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-fl' title="Add (with exact/rounded flag)"><code>++add:fl</code></a>
24+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#add-ja' title="Prepend to list"><code>+-add:ja</code></a>
25+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rd' title="Add (double-precision float)"><code>++add:rd</code></a>
26+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rh' title="Add (half-precision float)"><code>++add:rh</code></a>
27+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rs' title="Add (single-precision float)"><code>++add:rs</code></a>
28+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rq' title="Add (quad-precision float)"><code>++add:rq</code></a>
29+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ag' title="Top-level atom parser engine"><code>++ag</code></a>
30+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#alf' title="Parse alphabetic characters"><code>++alf</code></a>
31+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#all-by' title="Logical AND (map and wet gate)"><code>+-all:by</code></a>
32+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#all-in' title="Logical AND (set and wet gate)"><code>+-all:in</code></a>
33+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#aln' title="Parse alphanumeric characters"><code>++aln</code></a>
34+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#alp' title="Parse alphanumeric characters and -"><code>++alp</code></a>
35+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#any-by' title="Logical OR (map and wet gate)"><code>+-any:by</code></a>
36+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#any-in' title="Logical OR (set and gate)"><code>+-any:in</code></a>
37+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#aor' title="Alphabetical order"><code>++aor</code></a>
38+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ape-ag' title="Parse 0 or rule"><code>++ape:ag</code></a>
39+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#apt-by' title="Check correctness (map)"><code>+-apt:by</code></a>
40+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#apt-in' title="Check correctness (set)"><code>+-apt:in</code></a>
41+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#at' title="(Undocumented)"><code>++at</code></a>
42+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#aura' title="'Type' of atom"><code>++aura</code></a>
43+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#axis' title="Nock axis"><code>++axis</code></a>
44+
45+### b
46+
47+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#bal-to' title="Balance queue"><code>+-bal:to</code></a>
48+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#bar' title="Parse | (bar)"><code>++bar</code></a>
49+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#bas' title="Parse \ (bas)"><code>++bas</code></a>
50+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#base' title="Base type"><code>++base</code></a>
51+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#bass' title="Parser modifier (LSB-ordered ++list as atom of ++base)"><code>++bass</code></a>
52+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bay-ag' title="Parses binary number"><code>++bay:ag</code></a>
53+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#bean' title="Boolean"><code>++bean</code></a>
54+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#beer' title="Tape builder"><code>++beer</code></a>
55+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#beet' title="XML interpolation cases"><code>++beet</code></a>
56+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#bend' title="Conditional composer"><code>++bend</code></a>
57+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#bet' title="Parse hep and lus axis syntax"><code>++bet</code></a>
58+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#bex' title="Binary exponent"><code>++bex</code></a>
59+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bif-ff' title="Converts from fn to @r"><code>++bif:ff</code></a>
60+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#bif-by' title="Bifurcate map"><code>+-bif:by</code></a>
61+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#bif-in' title="Bifurcate set"><code>+-bif:in</code></a>
62+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#biff' title="Unit as argument"><code>++biff</code></a>
63+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#bin' title="Binary to atom"><code>++bin</code></a>
64+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#bind' title="Non-unit function to unit, producing unit"><code>++bind</code></a>
65+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bip-ag' title="Parse IPv6"><code>++bip:ag</code></a>
66+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-ff' title="fn to @r with rounding"><code>++bit:ff</code></a>
67+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rd' title="fn to double-precision binary float"><code>++bit:rd</code></a>
68+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rh' title="fn to half-precision float"><code>++bit:rh</code></a>
69+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rs' title="fn to single-precision float"><code>++bit:rs</code></a>
70+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rq' title="fn to quad-precision float"><code>++bit:rq</code></a>
71+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bix-ab' title="Parse hex pair"><code>++bix:ab</code></a>
72+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#bisk-so' title="Parse aura-atom pair"><code>++bisk:so</code></a>
73+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#bloq' title="Blocksize"><code>++bloq</code></a>
74+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#bond' title="Replace null"><code>++bond</code></a>
75+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#boss' title="Parser modifier: LSB"><code>++boss</code></a>
76+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#both' title="Group unit values into pair"><code>++both</code></a>
77+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#buc' title="Parse $ (buc)"><code>++buc</code></a>
78+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#but' title="Parse binary digit"><code>++but</code></a>
79+
80+### c
81+
82+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#cab' title="Parse _ (cab)"><code>++cab</code></a>
83+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#can' title="Assemble"><code>++can</code></a>
84+<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#cap' title="Tree head"><code>++cap</code></a>
85+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#cass' title="To lowercase"><code>++cass</code></a>
86+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#cat' title="Concatenate"><code>++cat</code></a>
87+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#cen' title="Parse % (cen)"><code>++cen</code></a>
88+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#cet-yo' title="Days in a century"><code>++cet:yo</code></a>
89+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#char' title="Character"><code>++char</code></a>
90+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#chum' title="Jet hint information"><code>++chum</code></a>
91+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#cit' title="Octal digit"><code>++cit</code></a>
92+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#clap' title="Apply function to two units"><code>++clap</code></a>
93+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#cmp-si' title="Compare (signed integer)"><code>++cmp:si</code></a>
94+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#co' title="Literal rendering engine"><code>++co</code></a>
95+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#coil' title="Tuple of core information"><code>++coil</code></a>
96+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#coin' title="Noun-literal syntax cases"><code>++coin</code></a>
97+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#col' title="Parse : (col)"><code>++col</code></a>
98+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#cold' title="Replace with constant"><code>++cold</code></a>
99+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#com' title="Parse , (com)"><code>++com</code></a>
100+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#comp' title="Arbitrary compose"><code>++comp</code></a>
101+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#con' title="Binary OR"><code>++con</code></a>
102+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#cook' title="Apply gate"><code>++cook</code></a>
103+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#cord' title="UTF-8 text"><code>++cord</code></a>
104+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#cork' title="Compose forward"><code>++cork</code></a>
105+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#corl' title="Compose backward"><code>++corl</code></a>
106+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#crip' title="Tape to cord"><code>++crip</code></a>
107+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#crub-so' title="Parse @da, @dr, @p, @t"><code>++crub:so</code></a>
108+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#cue' title="Unpack atom to noun"><code>++cue</code></a>
109+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#curr' title="Right-curry a gate"><code>++curr</code></a>
110+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#cury' title="Curry left a gate"><code>++cury</code></a>
111+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#cuss' title="To uppercase"><code>++cuss</code></a>
112+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#cut' title="Slice"><code>++cut</code></a>
113+
114+### d
115+
116+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#d-ne' title="Render decimal"><code>++d:ne</code></a>
117+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#date' title="Point in time"><code>++date</code></a>
118+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#day-yo' title="Seconds in day"><code>++day:yo</code></a>
119+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#dec' title="Decrement"><code>++dec</code></a>
120+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#def-by' title="Difference (map)"><code>+-def:by</code></a>
121+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#del-by' title="Delete (map)"><code>+-del:by</code></a>
122+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#del-in' title="Delete (set)"><code>+-del:in</code></a>
123+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#del-ju' title="Delete (jug)"><code>+-del:ju</code></a>
124+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dem' title="Decimal to atom"><code>++dem</code></a>
125+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dem-ag' title="Parse decmal with dots"><code>++dem:ag</code></a>
126+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#den-fl' title="Denormalizes (floating point)"><code>++den:fl</code></a>
127+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#dep-by' title="Difference as patch (map)"><code>+-dep:by</code></a>
128+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#dep-to' title="Maximum depth (queue)"><code>+-dep:to</code></a>
129+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#dif-fe' title="Difference between atoms (modular basis)"><code>++dif:fe</code></a>
130+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dif-fo' title='Subtraction (modular base)'><code>++dif:fo</code></a>
131+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#dif-in' title='Difference (set)'><code>+-dif:in</code></a>
132+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dif-si' title="Subtraction (signed integer)"><code>++dif:si</code></a>
133+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#dig-by' title="Address of key (map)"><code>+-dig:by</code></a>
134+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#dig-in' title="Address of a in set"><code>+-dig:in</code></a>
135+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dim-ag' title="Parse decimal number"><code>++dim:ag</code></a>
136+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#dime' title="Aura-atom pair"><code>++dime</code></a>
137+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#din-re' title="(Undocumented)"><code>++din:re</code></a>
138+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#dis' title="Binary AND (atoms)"><code>++dis</code></a>
139+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dit' title="Decimal digit"><code>++dit</code></a>
140+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#div' title="Divide"><code>++div</code></a>
141+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-ff' title="Divide (IEEE float)"><code>++div:ff</code></a>
142+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-fl' title="Divide (signed and unsigned integer cell)"><code>++div:fl</code></a>
143+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rd' title="Double precision float"><code>++div:rd</code></a>
144+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rh' title="Divide (half-precision float)"><code>++div:rh</code></a>
145+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rs' title="Divide (single-precision float)"><code>++div:rs</code></a>
146+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rq' title="Divide (quad-precision float)"><code>++div:rq</code></a>
147+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dog' title="Optional gap"><code>++dog</code></a>
148+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#doh' title="@p separator"><code>++doh</code></a>
149+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#doq' title="Parse double quote"><code>++doq</code></a>
150+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#dor' title="Numeric order"><code>++dor</code></a>
151+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#dot' title="Parse period"><code>++dot</code></a>
152+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-ff' title="@r to decimal float"><code>++drg:ff</code></a>
153+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-fl' title="Get printable decimal (signed and unsigned integer cell)"><code>++drg:fl</code></a>
154+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rd' title="@rd to decimal float"><code>++drg:rd</code></a>
155+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rh' title="@rh to decimal float"><code>++drg:rh</code></a>
156+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rs' title="@rs to decimal float"><code>++drg:rs</code></a>
157+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rq' title="@rq to decimal float"><code>++drg:rq</code></a>
158+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#drop' title="Unit to list"><code>++drop</code></a>
159+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dul-si' title="Modulus (signed integer)"><code>++dul:si</code></a>
160+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dum-ag' title="Parse decimal with leading zero"><code>++dum:ag</code></a>
161+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dun' title="-- to ~"><code>++dun</code></a>
162+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#duz' title="== to ~"><code>++duz</code></a>
163+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#dvr' title="Divide (with remainder)"><code>++dvr</code></a>
164+
165+### e
166+
167+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ead-fl' title="Exact add"><code>++ead:fl</code></a>
168+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#each' title="Mold of fork between two types"><code>++each</code></a>
169+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#easy' title="Always parse"><code>++easy</code></a>
170+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#edge' title="Parsing location metadata"><code>++edge</code></a>
171+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#egcd' title="Extended Euclidean algorithm"><code>++egcd</code></a>
172+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emn-fl' title="Minimum exponent"><code>++emn:fl</code></a>
173+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emu-fl' title="Exact multiply"><code>++emu:fl</code></a>
174+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emx-fl' title="Maximum exponent"><code>++emx:fl</code></a>
175+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#end' title="Tail"><code>++end</code></a>
176+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-ff' title="Equals (IEEE float)"><code>++equ:ff</code></a>
177+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-fl' title="Equals (signed and unsigned integer cell)"><code>++equ:fl</code></a>
178+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rd' title="Equals (double-precision float)"><code>++equ:rd</code></a>
179+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rh' title="Equals (half-precision float)"><code>++equ:rh</code></a>
180+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rs' title="Equals (single-precision float)"><code>++equ:rs</code></a>
181+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rq' title="Equals (quad-precision float)"><code>++equ:rq</code></a>
182+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#era-yo' title="Leap-year period"><code>++era:yo</code></a>
183+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-ff' title="Get exponent (IEEE float)"><code>++exp:ff</code></a>
184+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#exp-fo' title="Exponent (modular base)"><code>++exp:fo</code></a>
185+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rd' title="Exponent (@rd)"><code>++exp:rd</code></a>
186+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rh' title="Exponent (half-precision float)"><code>++exp:rh</code></a>
187+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rs' title="Exponent (@rs)"><code>++exp:rs</code></a>
188+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rq' title="Exponent (quad-precision float)"><code>++exp:rq</code></a>
189+
190+### f
191+
192+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#fail' title="Never parse"><code>++fail</code></a>
193+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#fall' title="Give unit a default value"><code>++fall</code></a>
194+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#fand' title="All indices in list"><code>++fand</code></a>
195+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#fas' title="Parse / (fas)"><code>++fas</code></a>
196+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#fe' title="Modulo bloq"><code>++fe</code></a>
197+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#fed-ag' title="Parse @p"><code>++fed:ag</code></a>
198+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feen-ob' title="Conceal structure v2"><code>++feen:ob</code></a>
199+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#fend-ob' title="Restore structure v2"><code>++fend:ob</code></a>
200+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#fice-ob' title="Feistel-like cipher"><code>++fice:ob</code></a>
201+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#fil' title="Fill bloqstream"><code>++fil</code></a>
202+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#find' title="First index in list"><code>++find</code></a>
203+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#fit-re' title="Fit on one line test"><code>++fit:re</code></a>
204+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fli-fl' title="Flip sign"><code>++fli:fl</code></a>
205+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#flop' title="Reverse list"><code>++flop</code></a>
206+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-ff' title="Fused multiply-add (IEEE float)"><code>++fma:ff</code></a>
207+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-fl' title="Fused multiply-add"><code>++fma:fl</code></a>
208+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rd' title="Fused multiply-add (@rd)"><code>++fma:rd</code></a>
209+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rh' title="Fused multiply-add (half-precision float)"><code>++fma:rh</code></a>
210+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rs' title="Fused multiply-add (single-precision float)"><code>++fma:rs</code></a>
211+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rq' title="Fused multiply-add (quad-precision float)"><code>++fma:rq</code></a>
212+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#fnv' title="FNV scrambler"><code>++fnv</code></a>
213+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fo' title="Modulo prime"><code>++fo</code></a>
214+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#foot' title="Cases of arms by variance model"><code>++foot</code></a>
215+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fos-rh' title="@rs to @rh"><code>++fos:rh</code></a>
216+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fra-fo' title="Divide (modular base)"><code>++fra:fo</code></a>
217+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fra-si' title="Divide (signed integer)"><code>++fra:si</code></a>
218+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#full' title="Parse to end"><code>++full</code></a>
219+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#funk' title="Add to tape"><code>++funk</code></a>
220+
221+### g
222+
223+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gah' title="New line or ''"><code>++gah</code></a>
224+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#gal' title="Parse < (gal)"><code>++gal</code></a>
225+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gap' title="Plural whitespace"><code>++gap</code></a>
226+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gaq' title="End of line"><code>++gaq</code></a>
227+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#gar' title="Parse > (gar)"><code>++gar</code></a>
228+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#gas-by' title="Concatenate (map)"><code>+-gas:by</code></a>
229+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#gas-in' title="Concatenate (set)"><code>+-gas:in</code></a>
230+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#gas-to' title="Push list into queue"><code>+-gas:to</code></a>
231+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#gate' title="Function"><code>++gate</code></a>
232+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gaw' title="Classic whitespace"><code>++gaw</code></a>
233+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gay' title="Optional gap"><code>++gay</code></a>
234+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#get-by' title="Grab unit value"><code>+-get:by</code></a>
235+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#get-ja' title="Grab value by key"><code>+-get:ja</code></a>
236+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#get-ju' title="Retrieve set"><code>+-get:ju</code></a>
237+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#get-to' title="Head-tail pair"><code>+-get:to</code></a>
238+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#glue' title="Skip delimiter"><code>++glue</code></a>
239+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gon' title="Parse long numbers"><code>++gon</code></a>
240+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#gor' title="Hash order"><code>++gor</code></a>
241+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#got-by' title="Assert for value (map)"><code>+-got:by</code></a>
242+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-ff' title="Decimal float to @r"><code>++grd:ff</code></a>
243+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-fl' title="Decimal to float"><code>++grd:fl</code></a>
244+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rd' title="Decimal float to @rd"><code>++grd:rd</code></a>
245+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rh' title="Decimal float to @rh"><code>++grd:rh</code></a>
246+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rs' title="Decimal float to @rs"><code>++grd:rs</code></a>
247+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rq' title="Decimal float to @rq"><code>++grd:rq</code></a>
248+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#gte' title="Greater than / equal"><code>++gte</code></a>
249+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-ff' title="Greater than / equal (IEEE float)"><code>++gte:ff</code></a>
250+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-fl' title="Greater than / equal (producing flag)"><code>++gte:fl</code></a>
251+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rd' title="Greater than / equal (double-precision float)"><code>++gte:rd</code></a>
252+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rh' title="Greater than / equal (half-precision float)"><code>++gte:rh</code></a>
253+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rs' title="Greater than / equal (single-precision float)"><code>++gte:rs</code></a>
254+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rq' title="Greater than / equal (quad-precision float)"><code>++gte:rq</code></a>
255+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#gth' title="Greater than"><code>++gth</code></a>
256+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-ff' title="Greater than (IEEE float)"><code>++gth:ff</code></a>
257+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-fl' title="Greater than (producing flag)"><code>++gth:fl</code></a>
258+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rd' title="Greater than (double-precision float)"><code>++gth:rd</code></a>
259+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rh' title="Greater than (half-precision float)"><code>++gth:rh</code></a>
260+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rs' title="Greater than (single-precision float)"><code>++gth:rs</code></a>
261+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rq' title="Greater than (quad-precision float)"><code>++gth:rq</code></a>
262+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gul' title="Axis syntax < or >"><code>++gul</code></a>
263+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#gulf' title="List from range"><code>++gulf</code></a>
264+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#gut-by' title="Grab value with defualt"><code>+-gut:by</code></a>
265+
266+### h
267+
268+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#hair' title="Parsing line and column"><code>++hair</code></a>
269+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#hard' title="Force remold"><code>++hard</code></a>
270+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#has-by' title="Key existence check (map)"><code>+-has:by</code></a>
271+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#has-in' title="Key existence check (set)"><code>+-has:in</code></a>
272+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#has-ju' title="Check contents (jug)"><code>+-has:ju</code></a>
273+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#hax' title="Parse # (hax)"><code>++hax</code></a>
274+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#head' title="Get head of cell"><code>++head</code></a>
275+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#here' title="Place-based apply"><code>++here</code></a>
276+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#hep' title="Parse - (hep)"><code>++hep</code></a>
277+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hex' title="Hexadecimal to atom"><code>++hex</code></a>
278+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hex-ag' title="Parse hexadecimal number"><code>++hex:ag</code></a>
279+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hif-ab' title="Parse phonetic pair"><code>++hif:ab</code></a>
280+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hig' title="Parse single uppercase letter"><code>++hig</code></a>
281+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hit' title="Parse single hexadecimal digit"><code>++hit</code></a>
282+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#homo' title="Homogenize list"><code>++homo</code></a>
283+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#hor' title="Horizontal hash order"><code>++hor</code></a>
284+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#hor-yo' title="Seconds in hour"><code>++hor:yo</code></a>
285+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#huf-ab' title="Parse two phonetic pairs"><code>++huf:ab</code></a>
286+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hyf-ab' title="Parse 8 phonetic bytes"><code>++hyf:ab</code></a>
287+
288+### i
289+
290+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ibl-fl' title="Integer binary logarithm"><code>++ibl:fl</code></a>
291+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#ifix' title="Infix"><code>++ifix</code></a>
292+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#ind-po' title="Parse suffix"><code>++ind:po</code></a>
293+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#ins-po' title="Parse prefix"><code>++ins:po</code></a>
294+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#int-by' title="Intersection (map)"><code>+-int:by</code></a>
295+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#int-in' title="Intersection (set)"><code>+-int:in</code></a>
296+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#inv-fe' title="Inverse order of modular field"><code>++inv:fe</code></a>
297+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#inv-fl' title="Inverse"><code>++inv:fl</code></a>
298+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#inv-fo' title="Inverse (signed modulus)"><code>++inv:fo</code></a>
299+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#iny' title="Indentation block"><code>++iny</code></a>
300+
301+### j
302+
303+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#ja' title="Jar engine"><code>++ja</code></a>
304+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#jam' title="Pack noun to atom"><code>++jam</code></a>
305+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#jar' title="Mold generator (jar)"><code>++jar</code></a>
306+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#jes-yo' title="Maximum 64-bit timestamp"><code>++jes:yo</code></a>
307+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#jest' title="Match a cord"><code>++jest</code></a>
308+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#join' title="Add separator between list elements"><code>++join</code></a>
309+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#ju' title="Jug operations"><code>++ju</code></a>
310+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#jug' title="Mold generator (jug)"><code>++jug</code></a>
311+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#just' title="Match a single character"><code>++just</code></a>
312+
313+### k
314+
315+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#kel' title="Parse { (kel)"><code>++kel</code></a>
316+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ker' title="Parse } (ker)"><code>++ker</code></a>
317+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ket' title="Parse ^ (ket)"><code>++ket</code></a>
318+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#knee' title="Recursive parsers"><code>++knee</code></a>
319+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#knot' title="Atom type of ASCII characters"><code>++knot</code></a>
320+
321+### l
322+
323+<a class="tooltip" href='/docs/hoon/reference/stdlib/4d/#last' title="Further trace"><code>++last</code></a>
324+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#le-nl' title="Construct list from null-terminated noun"><code>++le:nl</code></a>
325+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#lent' title="List length"><code>++lent</code></a>
326+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#levy' title="Logical AND on list"><code>++levy</code></a>
327+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lfe-fl' title="Maximum"><code>++lfe:fl</code></a>
328+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lfn-fl' title="Largest normal float"><code>++lfn:fl</code></a>
329+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#lien' title="Logical OR on list"><code>++lien</code></a>
330+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#lift' title="Curried bind"><code>++lift</code></a>
331+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#like' title="Generic edge"><code>++like</code></a>
332+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#limb' title="Reference into subject by name/axis"><code>++limb</code></a>
333+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#limo' title="Construct list from null-terminated tuple"><code>++limo</code></a>
334+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#line' title="(Undocumented)"><code>++line</code></a>
335+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#lip-ag' title="Parse IPv4 address"><code>++lip:ag</code></a>
336+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#list' title="Mold constructor (list)"><code>++list</code></a>
337+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#lone' title="Mold generator (face on mold)"><code>++lone</code></a>
338+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#lor' title="Leg order"><code>++lor</code></a>
339+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#low' title="Parse lowercase letter"><code>++low</code></a>
340+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#lsh' title="Left-shift"><code>++lsh</code></a>
341+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#lte' title="Less than / equal (atom)"><code>++lte</code></a>
342+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-ff' title="Less than / equal (IEEE float)"><code>++lte:ff</code></a>
343+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-fl' title="Less than / equal (producing flag)"><code>++lte:fl</code></a>
344+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rd' title="Less than / equal (double-precision float)"><code>++lte:rd</code></a>
345+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rh' title="Less than / equal (half-precision float)"><code>++lte:rh</code></a>
346+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rs' title="Less than / equal (single-precision float)"><code>++lte:rs</code></a>
347+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rq' title="Less than / equal (quad-precision float)"><code>++lte:rq</code></a>
348+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#lth' title="Less than (atom)"><code>++lth</code></a>
349+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-ff' title="Less than (IEEE float)"><code>++lth:ff</code></a>
350+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-fl' title="Less than (signed and unsigned integer cell)"><code>++lth:fl</code></a>
351+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rd' title="Less than (double-precision float)"><code>++lth:rd</code></a>
352+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rh' title="Less than (half-precision float)"><code>++lth:rh</code></a>
353+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rs' title="Less than (single-precision float)"><code>++lth:rs</code></a>
354+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rq' title="Less than (quad-precision float)"><code>++lth:rq</code></a>
355+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lug-fl' title="Central rounding mechanism"><code>++lug:fl</code></a>
356+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#lus' title="Parse + (lus)"><code>++lus</code></a>
357+<a class="tooltip" href='/docs/hoon/reference/stdlib/4d/#lust' title="Detect new line"><code>++lust</code></a>
358+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#less' title="Parse unless"><code>++less</code></a>
359+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#ly' title="List from raw noun"><code>++ly</code></a>
360+
361+### m
362+
363+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rd' title="Initialize ff (rd core)"><code>++ma:rd</code></a>
364+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rh' title="Initialize ff (rh core)"><code>++ma:rh</code></a>
365+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rs' title="Initialize ff (rs core)"><code>++ma:rs</code></a>
366+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rq' title="Initialize ff (rq core)"><code>++ma:rq</code></a>
367+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mack' title="Nock subject to unit"><code>++mack</code></a>
368+<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#malt' title="Map from list"><code>++malt</code></a>
369+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#map' title="Mold generator (map)"><code>++map</code></a>
370+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#mar-by' title="Assert and add (map)"><code>+-mar:by</code></a>
371+<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#mas' title="Address within head/tail"><code>++mas</code></a>
372+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#mask' title="Match character"><code>++mask</code></a>
373+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#mat' title="Length-encode"><code>++mat</code></a>
374+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#mate' title="Choose"><code>++mate</code></a>
375+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#max' title="Maximum"><code>++max</code></a>
376+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#me-ff' title="Minimum exponent of ff"><code>++me:ff</code></a>
377+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#mean' title="Crash and printf"><code>++mean</code></a>
378+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#mes' title="Parse hexabyte"><code>++mes</code></a>
379+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#mesc' title="Escape special characters"><code>++mesc</code></a>
380+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#met' title="Measure"><code>++met</code></a>
381+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#metl' title="(Undocumented)"><code>++metl</code></a>
382+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#min' title="Minimum (atom)"><code>++min</code></a>
383+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mink' title="Mock (virtual Nock) interpreter"><code>++mink</code></a>
384+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#mit-yo' title="Seconds in minute"><code>++mit:yo</code></a>
385+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#mix' title="Binary XOR (atom)"><code>++mix</code></a>
386+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mock' title="Compute formula on subject with hint"><code>++mock</code></a>
387+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#mod' title="Modulus (atom)"><code>++mod</code></a>
388+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#moh-yo' title="Days in month"><code>++moh:yo</code></a>
389+<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#molt' title="Map from pair list"><code>++molt</code></a>
390+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mong' title="Slam gate with sample"><code>++mong</code></a>
391+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mook' title="Intelligently render crash annotation"><code>++mook</code></a>
392+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#more' title="Parse list with delimiter"><code>++more</code></a>
393+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#most' title="Parse list of at least one match"><code>++most</code></a>
394+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#moy-yo' title="Days in months of leap-year"><code>++moy:yo</code></a>
395+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#mu' title="Core used to scramble 16-bit atoms"><code>++mu</code></a>
396+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#mug' title="FNV-1a scrambler"><code>++mug</code></a>
397+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#muk' title="Standard MurmurHash3"><code>++muk</code></a>
398+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#mul' title="Multiply (atom)"><code>++mul</code></a>
399+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-ff' title="Multiply (IEEE float)"><code>++mul:ff</code></a>
400+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-fl' title="Multiply (signed and unsigned integer cell)"><code>++mul:fl</code></a>
401+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rd' title="Multiply (double-precision float)"><code>++mul:rd</code></a>
402+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rh' title="Multiply (quad-precision float)"><code>++mul:rh</code></a>
403+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rs' title="Multiply (single-precision float)"><code>++mul:rs</code></a>
404+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rq' title="Multiply (quad-precision float)"><code>++mul:rq</code></a>
405+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mule' title="Typed virtual"><code>++mule</code></a>
406+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mute' title="Untyped virtual"><code>++mute</code></a>
407+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#mum' title="31-bit MurmurHash3 scrambler"><code>++mum</code></a>
408+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#murn' title="Maybe transform"><code>++murn</code></a>
409+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#my' title="Map from raw noun"><code>++my</code></a>
410+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#my-nl' title="Construct map from null-terminated noun"><code>++my:nl</code></a>
411+
412+### n
413+
414+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#nail' title="Location, remainder of parsed text"><code>++nail</code></a>
415+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#nap-to' title="Remove head of queue"><code>+-nap:to</code></a>
416+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ne' title="Digit rendering engine"><code>++ne</code></a>
417+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ned-fl' title="Require float"><code>++ned:fl</code></a>
418+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#need' title="Unwrap unit"><code>++need</code></a>
419+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#net-fe' title="Flip endianness"><code>++net:fe</code></a>
420+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#new-si' title="Atom to @s"><code>++new:si</code></a>
421+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#next' title="Consume character"><code>++next</code></a>
422+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#nip-to' title="Remove root of queue"><code>+-nip:to</code></a>
423+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#nix' title="Parse letters and -"><code>++nix</code></a>
424+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#nl' title="Noun to container operations"><code>++nl</code></a>
425+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#nock' title="Virtual machine (see Nock)"><code>++nock</code></a>
426+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#not' title="Binary NOT (atom)"><code>++not</code></a>
427+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#noun' title="(Undocumented)"><code>++noun</code></a>
428+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#nuck-so' title="Top-level coin parser"><code>++nuck:so</code></a>
429+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#nud' title="Parse numeric character"><code>++nud</code></a>
430+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#null' title="(Undocumented)"><code>++null</code></a>
431+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#nusk-so' title="Parse coin literal with escapes"><code>++nusk:so</code></a>
432+
433+### o
434+
435+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#ob' title="Reversible scrambling v2"><code>++ob</code></a>
436+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#og' title="Container arm for SHA-256 powered RNG"><code>++og</code></a>
437+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#old-si' title="Sign and absolute value"><code>++old:si</code></a>
438+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#oust' title="Remove from list"><code>++oust</code></a>
439+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#out-fe' title="Maximum integer value"><code>++out:fe</code></a>
440+
441+### p
442+
443+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#pa-ff' title="Initialize fl from ff core"><code>++pa:ff</code></a>
444+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#pair' title="Mold of pair of types"><code>++pair</code></a>
445+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pam' title="Parse & (pam)"><code>++pam</code></a>
446+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pat' title="Parse @ (pat)"><code>++pat</code></a>
447+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#path' title="Filesystem path"><code>++path</code></a>
448+<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#peg' title="Address within address"><code>++peg</code></a>
449+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pel' title="Parse ( (pel)"><code>++pel</code></a>
450+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#per' title="Parse ) (per)"><code>++per</code></a>
451+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#perd-so' title="Parses dime/tiple without standard prefixes"><code>++perd:so</code></a>
452+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pev-ab' title="Parse <=5 in base 32"><code>++pev:ab</code></a>
453+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pew-ab' title="Parse <= 5 in base 64"><code>++pew:ab</code></a>
454+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#pfix' title="Discard first rule"><code>++pfix</code></a>
455+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#pint' title="Parsing range"><code>++pint</code></a>
456+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#piv-ab' title="Parse 5 digits in base 32"><code>++piv:ab</code></a>
457+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#piw-ab' title="Parse 5 digits in base 64"><code>++piw:ab</code></a>
458+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#plug' title="Parse to tuple"><code>++plug</code></a>
459+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#plus' title="List of at least one match"><code>++plus</code></a>
460+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#po' title="Phonetic base"><code>++po</code></a>
461+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#pole' title="Mold generator of faceless list"><code>++pole</code></a>
462+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#port' title="(Undocumented)"><code>++port</code></a>
463+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#pose' title="Parse options"><code>++pose</code></a>
464+<a class="tooltip" href='/docs/hoon/reference/stdlib/2g/#pow' title="Computes a to the power of b"><code>++pow</code></a>
465+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#prc-fl' title="Force precision of 2 or greater (floating point)"><code>++prc:fl</code></a>
466+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#prn' title="Parse any printable character"><code>++prn</code></a>
467+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#pro-fo' title="Multiplies b and c modulo a"><code>++pro:fo</code></a>
468+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#pro-si' title="Multiply to signed integer"><code>++pro:si</code></a>
469+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#put-by' title="Add key-value pair (map)"><code>+-put:by</code></a>
470+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#put-in' title="Put b in a (set)"><code>+-put:in</code></a>
471+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#put-ju' title="Add key-set pair (jar)"><code>+-put:ju</code></a>
472+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#put-to' title="Insert into queue"><code>+-put:to</code></a>
473+
474+### q
475+
476+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#qad-yo' title="Seconds in 4 years"><code>++qad:yo</code></a>
477+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qeb-ab' title="Parse <=4 binary digits"><code>++qeb:ab</code></a>
478+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#qeu' title="Mold generator (queue)"><code>++qeu</code></a>
479+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qex-ab' title="Parse <=4 hexadecimal digits"><code>++qex:ab</code></a>
480+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qib-ab' title="Parse 4 binary digits"><code>++qib:ab</code></a>
481+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qit' title="Parse character to cord atom"><code>++qit</code></a>
482+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qix-ab' title="Parse 4 hexadecimal digits"><code>++qix:ab</code></a>
483+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#quip' title="Mold generator (tuple of list and type)"><code>++quip</code></a>
484+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qut' title="Parse cord"><code>++qut</code></a>
485+
486+### r
487+
488+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#r-at' title="(Undocumented)"><code>++r:at</code></a>
489+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#rad-og' title="Random in range"><code>++rad:og</code></a>
490+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#rads-og' title="Random continuation"><code>++rads:og</code></a>
491+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#raku-ob' title="Key list"><code>++raku:ob</code></a>
492+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#ram-re' title="Flatten tank to tape"><code>++ram:re</code></a>
493+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rap' title="Assemble non-zero"><code>++rap</code></a>
494+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rash' title="Parse or crash"><code>++rash</code></a>
495+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rau-fl' title="Various roundings (floating point)"><code>++rau:fl</code></a>
496+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#raw-og' title="Random bits"><code>++raw:og</code></a>
497+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#raws-og' title="Random bits continuation"><code>++raws:og</code></a>
498+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#re' title="Pretty-printing engine (tank)"><code>++re</code></a>
499+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rear-co' title="Prepend and render atom as tape"><code>++rear:co</code></a>
500+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#reap' title="Replicate (list)"><code>++reap</code></a>
501+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#reel' title="Right fold (list)"><code>++reel</code></a>
502+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#rem-si' title="Remainder (signed integer)"><code>++rem:si</code></a>
503+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rend-co' title="Render coin lot as tape"><code>++rend:co</code></a>
504+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rent-co' title="Render coin lot as span"><code>++rent:co</code></a>
505+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rep' title="Assemble single"><code>++rep</code></a>
506+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rep-by' title="Replace by product (map)"><code>+-rep:by</code></a>
507+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#rep-in' title="Accumulate elements (set)"><code>+-rep:in</code></a>
508+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rf-at' title="(Undocumented)"><code>++rf:at</code></a>
509+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rib-by' title="Replace values with accumulator (map)"><code>+-rib:by</code></a>
510+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#rig-re' title="Wrap tape in / (tank)"><code>++rig:re</code></a>
511+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rip' title="Disassemble"><code>++rip</code></a>
512+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rn-at' title="(Undocumented)"><code>++rn:at</code></a>
513+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rol-fe' title="Roll left"><code>++rol:fe</code></a>
514+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#roll' title="Left fold (list)"><code>++roll</code></a>
515+<code>++rood</code>
516+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#ror-fe' title="Roll right"><code>++ror:fe</code></a>
517+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rou-fl' title="Round to nearest float with 113-bit significand"><code>++rou:fl</code></a>
518+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-so' title="Parse dime float"><code>++royl:so</code></a>
519+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-cell-so' title="(Undocumented)"><code>++royl-cell:so</code></a>
520+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rsh' title="Right-shift"><code>++rsh</code></a>
521+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rt-at' title="(Undocumented)"><code>++rt:at</code></a>
522+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rta-at' title="(Undocumented)"><code>++rta:at</code></a>
523+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rtam-at' title="(Undocumented)"><code>++rtam:at</code></a>
524+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#rub' title="Length-decode"><code>++rub</code></a>
525+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rub-at' title="(Undocumented)"><code>++rub:at</code></a>
526+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rud-at' title="(Undocumented)"><code>++rud:at</code></a>
527+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#rule' title="Parsing rule (match this with _)"><code>++rule</code></a>
528+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rum-at' title="(Undocumented)"><code>++rum:at</code></a>
529+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#run-by' title="Transform values (map)"><code>+-run:by</code></a>
530+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#run-in' title="Apply gate to set"><code>+-run:in</code></a>
531+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#rund-ob' title="Reverse single Feistel-like"><code>++rund:ob</code></a>
532+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#runt' title="Prepend n times"><code>++runt</code></a>
533+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rup-at' title="(Undocumented)"><code>++rup:at</code></a>
534+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rush' title="Parse or null"><code>++rush</code></a>
535+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rust' title="Parse tape or null"><code>++rust</code></a>
536+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rut-by' title="Transform nodes (map)"><code>+-rut:by</code></a>
537+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#ruv-at' title="(Undocumented)"><code>++ruv:at</code></a>
538+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rux-at' title="(Undocumented)"><code>++rux:at</code></a>
539+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#rynd-ob' title="Reverse Feistel-like cipher"><code>++rynd:ob</code></a>
540+
541+### s
542+
543+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#same' title="Identity (produces same value)"><code>++same</code></a>
544+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-ff' title="Signed integer to @r"><code>++san:ff</code></a>
545+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-fl' title="Signed integer to float"><code>++san:fl</code></a>
546+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rd' title="Unsigned integer to @rd"><code>++san:rd</code></a>
547+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rh' title="Signed integer to @rh"><code>++san:rh</code></a>
548+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rs' title="Signed integer to @rs"><code>++san:rs</code></a>
549+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rq' title="Signed integer to @rq"><code>++san:rq</code></a>
550+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#sand' title="Soft-cast by aura"><code>++sand</code></a>
551+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#sane' title="Check aura validity"><code>++sane</code></a>
552+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sb-ff' title="Sign bit"><code>++sb:ff</code></a>
553+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#scag' title="Prefix (produce front of list)"><code>++scag</code></a>
554+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#scan' title="Parse tape or crash"><code>++scan</code></a>
555+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#scot' title="Render dime as cord"><code>++scot</code></a>
556+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#scow' title="Render dime as tape"><code>++scow</code></a>
557+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-ff' title="Convert from IEEE float to fn"><code>++sea:ff</code></a>
558+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rd' title="Convert from double-precision binary float to fn"><code>++sea:rd</code></a>
559+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rh' title="Convert from half-precision float to fn"><code>++sea:rh</code></a>
560+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rs' title="Convert from single-precision float to fn"><code>++sea:rs</code></a>
561+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rq' title="Convert from quad-precision float to fn"><code>++sea:rq</code></a>
562+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#sear' title="Conditional ++cook"><code>++sear</code></a>
563+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#seb-ab' title="Parse 1"><code>++seb:ab</code></a>
564+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sed-ab' title="Parse non-zero decimal digit"><code>++sed:ab</code></a>
565+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sel' title="Parse [ (sel)"><code>++sel</code></a>
566+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sem' title="Parse ; (sem)"><code>++sem</code></a>
567+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ser' title="Parse ] (ser)"><code>++ser</code></a>
568+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#set' title="Mold generator (set)"><code>++set</code></a>
569+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sev-ab' title="Parse non-zero base 32 digit"><code>++sev:ab</code></a>
570+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sew-ab' title="Parse non-zero base 64 digit"><code>++sew:ab</code></a>
571+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sex-ab' title="Parse nonzero hexadecimal digit"><code>++sex:ab</code></a>
572+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#sfix' title="Discard second rule"><code>++sfix</code></a>
573+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shad' title="Double SHA-256"><code>++shad</code></a>
574+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaf' title="Half SHA-256"><code>++shaf</code></a>
575+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shal' title="SHA-512 with length"><code>++shal</code></a>
576+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#sham' title="128-bit noun hash"><code>++sham</code></a>
577+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shan' title="SHA-1"><code>++shan</code></a>
578+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shas' title="Salted hash"><code>++shas</code></a>
579+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaw' title="Hash to nbits"><code>++shaw</code></a>
580+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shax' title="SHA-256"><code>++shax</code></a>
581+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shay' title="SHA-256 with length"><code>++shay</code></a>
582+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaz' title="SHA-512"><code>++shaz</code></a>
583+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#shep' title="(Undocumented)"><code>++shep</code></a>
584+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#shf-fl' title="Shift power"><code>++shf:fl</code></a>
585+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#shim' title="Match character within range"><code>++shim</code></a>
586+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#shop' title="(Undocumented)"><code>++shop</code></a>
587+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#show' title="(Undocumented)"><code>++show</code></a>
588+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#si' title="Signed integer"><code>++si</code></a>
589+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#si-nl' title="Construct set from null-terminated noun"><code>++si:nl</code></a>
590+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sib-ab' title="Parse binary digit"><code>++sib:ab</code></a>
591+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sid-ab' title="Parse decimal digit"><code>++sid:ab</code></a>
592+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sig' title="Parse ~ (sig)"><code>++sig</code></a>
593+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-ff' title="Produce sign of IEEE float"><code>++sig:ff</code></a>
594+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rd' title="Produce sign of @rd"><code>++sig:rd</code></a>
595+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rh' title="Produce sign of half-precision float"><code>++sig:rh</code></a>
596+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rs' title="Produce sign of @rs"><code>++sig:rs</code></a>
597+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rq' title="Produce sign of quad-precision float"><code>++sig:rq</code></a>
598+<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#silt' title="Produce set from list"><code>++silt</code></a>
599+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#simu' title="First and second"><code>++simu</code></a>
600+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sit-fe' title="Enforce modulo"><code>++sit:fe</code></a>
601+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sit-fo' title="Produce remainder of b modulo a"><code>++sit:fo</code></a>
602+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#siv-ab' title="Parse a base 32 digit"><code>++siv:ab</code></a>
603+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#siw-ab' title="Parse a base 64 digit"><code>++siw:ab</code></a>
604+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#six-ab' title="Parse a hexadecimal digit"><code>++six:ab</code></a>
605+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skid' title="Separate list into two lists from slammed elments"><code>++skid</code></a>
606+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skim' title="Produce list of elements from boolean gate"><code>++skim</code></a>
607+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skip' title="Produce list of elements failing boolean gate"><code>++skip</code></a>
608+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#slag' title="Produce all elements from index in list"><code>++slag</code></a>
609+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slat' title="Curried slaw"><code>++slat</code></a>
610+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slav' title="Demand: parse cord with input aura"><code>++slav</code></a>
611+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slaw' title="Parse cord to input aura"><code>++slaw</code></a>
612+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slay' title="Parse cord to coin"><code>++slay</code></a>
613+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#slog' title="Deify printf"><code>++slog</code></a>
614+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#slug' title="Use gate to parse delimited list"><code>++slug</code></a>
615+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#smyt' title="Render path as tank"><code>++smyt</code></a>
616+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snag' title="Produce element at specific index (list)"><code>++snag</code></a>
617+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#snag-nl' title="Produce element from list at specific null-terminated noun"><code>++snag:nl</code></a>
618+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snap' title="Replace item at index"><code>++snap</code></a>
619+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snoc' title="Append noun to list"><code>++snoc</code></a>
620+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#so' title="Coin parser engine"><code>++so</code></a>
621+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#soft' title="Maybe remold"><code>++soft</code></a>
622+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#some' title="Wrap value in unit"><code>++some</code></a>
623+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#soq' title="Parse ' (soq)"><code>++soq</code></a>
624+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#sort' title="Quicksort (list)"><code>++sort</code></a>
625+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sov-ab' title="Parse base 32 letter"><code>++sov:ab</code></a>
626+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sow-ab' title="Parse base 64 letter/symbol"><code>++sow:ab</code></a>
627+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sox-ab' title="Parse hexadecimal letter"><code>++sox:ab</code></a>
628+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#soz' title="Parse triple single-quote"><code>++soz</code></a>
629+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#span' title="ASCII atom"><code>++span</code></a>
630+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#spat' title="Render path as cord"><code>++spat</code></a>
631+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#spd-fl' title="Produce smallest denormalized float"><code>++spd:fl</code></a>
632+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#spin' title="Gate to list (with state)"><code>++spin</code></a>
633+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#spn-fl' title="Produce smallest normal float"><code>++spn:fl</code></a>
634+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#spot' title="Stack trace line"><code>++spot</code></a>
635+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#spud' title="Render path as tape"><code>++spud</code></a>
636+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#spun' title="Gate to list (with state)"><code>++spun</code></a>
637+<a class="tooltip" href='/docs/hoon/reference/stdlib/2g/#sqt' title="Compute square root with remainder"><code>++sqt</code></a>
638+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-ff' title="Produce square root of IEEE float"><code>++sqt:ff</code></a>
639+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-fl' title="Produce square root from signed and unsigned integer cell"><code>++sqt:fl</code></a>
640+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rd' title="Produce square root of double-precision float"><code>++sqt:rd</code></a>
641+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rh' title="Produce square root of half-precision float"><code>++sqt:rh</code></a>
642+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rs' title="Produce square root of single-precision float"><code>++sqt:rs</code></a>
643+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rq' title="Produce square root of quad-precision float"><code>++sqt:rq</code></a>
644+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#stab' title="Parse cord to path"><code>++stab</code></a>
645+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stag' title="Add label"><code>++stag</code></a>
646+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#star' title="Produce list of matches"><code>++star</code></a>
647+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stet' title="Add faces to range-parser pairs in list"><code>++stet</code></a>
648+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stew' title="Switch by first"><code>++stew</code></a>
649+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stir' title="Parse repeatedly"><code>++stir</code></a>
650+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stun' title="Parse several times"><code>++stun</code></a>
651+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#sub' title="Subtract"><code>++sub</code></a>
652+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-ff' title="Subtract from IEEE float"><code>++sub:ff</code></a>
653+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-fl' title="Subtract from signed and unsigned integer cells"><code>++sub:fl</code></a>
654+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rd' title="Subtract from double-precision float"><code>++sub:rd</code></a>
655+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rh' title="Subtract from half-precision float"><code>++sub:rh</code></a>
656+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rs' title="Subtract from single-precision float"><code>++sub:rs</code></a>
657+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rq' title="Subtract from quad-precision float"><code>++sub:rq</code></a>
658+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sum-fe' title="Sum two numbers in modular field"><code>++sum:fe</code></a>
659+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sum-fo' title="Modular sum"><code>++sum:fo</code></a>
660+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sum-si' title="Addition (signed integer)"><code>++sum:si</code></a>
661+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-ff' title="Unsigned integer to IEEE float"><code>++sun:ff</code></a>
662+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-fl' title="Unsigned integer to float"><code>++sun:fl</code></a>
663+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rd' title="Unsigned integer to double-precision float"><code>++sun:rd</code></a>
664+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rh' title="Unsigned integer to half-precision float"><code>++sun:rh</code></a>
665+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rs' title="Unsigned integer to single-precision float"><code>++sun:rs</code></a>
666+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rq' title="Unsigned integer to quad-precision float"><code>++sun:rq</code></a>
667+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sun-si' title="@u to @s"><code>++sun:si</code></a>
668+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#swag' title="Infix (list)"><code>++swag</code></a>
669+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#swp' title="Reverse block order"><code>++swp</code></a>
670+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#swr-fl' title="Switch rounding mode of floating point"><code>++swr:fl</code></a>
671+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#sy' title="Produce set from null-terminated noun"><code>++sy</code></a>
672+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#sym' title="Term"><code>++sym</code></a>
673+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#syn-fl' title="Get sign"><code>++syn:fl</code></a>
674+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#syn-si' title="Sign test"><code>++syn:si</code></a>
675+
676+### t
677+
678+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#tail' title="Get tail of cell"><code>++tail</code></a>
679+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#tap-to' title="Queue to list"><code>+-tap:to</code></a>
680+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tar' title="Parse * (tar)"><code>++tar</code></a>
681+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tang' title="Generic print structure"><code>++tang</code></a>
682+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tank' title="Pretty-printing structure"><code>++tank</code></a>
683+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#tap-by' title="Listify pairs"><code>+-tap:by</code></a>
684+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#tap-in' title="Flatten set into list"><code>+-tap:in</code></a>
685+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tape' title="List of characters"><code>++tape</code></a>
686+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tarp' title="Parsed time"><code>++tarp</code></a>
687+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#tash-so' title="Parse signed dime"><code>++tash:so</code></a>
688+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tec' title="Parse ` (tec)"><code>++tec</code></a>
689+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ted-ab' title="Parse decimal number with <= 3 digits"><code>++ted:ab</code></a>
690+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#teff' title="UTF-8 length"><code>++teff</code></a>
691+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#teil-ob' title="Reverse Feistel-like cipher"><code>++teil:ob</code></a>
692+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#term' title="Hoon constant"><code>++term</code></a>
693+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#test' title="Test for equality"><code>++test</code></a>
694+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tid-ab' title="Parse 3 decimal digits"><code>++tid:ab</code></a>
695+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tiki' title="(Undocumented)"><code>++tiki</code></a>
696+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#til-ab' title="Parse 3 lowercase letters"><code>++til:ab</code></a>
697+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tip-ab' title="Leading phonetic byte"><code>++tip:ab</code></a>
698+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tiq-ab' title="Trailing phonetic syllable"><code>++tiq:ab</code></a>
699+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tis' title="Parse = (tis)"><code>++tis</code></a>
700+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#to' title="Queue operations"><code>++to</code></a>
701+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#tod-po' title="Fetch suffix"><code>++tod:po</code></a>
702+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#toga' title="Tree of faces"><code>++toga</code></a>
703+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-ff' title="Round IEEE float to nearest signed integer"><code>++toi:ff</code></a>
704+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-fl' title="Round float to nearest signed integer"><code>++toi:fl</code></a>
705+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rd' title="Round double-precision float to nearest signed integer"><code>++toi:rd</code></a>
706+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rh' title="Round half-precision float to nearest signed integer"><code>++toi:rh</code></a>
707+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rs' title="Round single-precision float to nearest signed integer"><code>++toi:rs</code></a>
708+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rq' title="Round quad-precision float to nearest signed integer"><code>++toi:rq</code></a>
709+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toj-fl' title="Round unsigned and signed integer to float"><code>++toj:fl</code></a>
710+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#tone' title="Nock result (error report)"><code>++tone</code></a>
711+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#toon' title="Nock result (stack trace)"><code>++toon</code></a>
712+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#top-to' title="Produce head of queue"><code>+-top:to</code></a>
713+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#tos-po' title="Fetch prefix"><code>++tos:po</code></a>
714+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#tos-rh' title="Convert half-precision float to single-precision float"><code>++tos:rh</code></a>
715+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#trap' title="Core with one arm $"><code>++trap</code></a>
716+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#tree' title="Mold generator (tree)"><code>++tree</code></a>
717+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#trel' title="Mold generator (tuple of three types)"><code>++trel</code></a>
718+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#trim' title="Tape split"><code>++trim</code></a>
719+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#trip' title="Cord to tape"><code>++trip</code></a>
720+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tuba' title="UTF-8 to UTF-32 tape"><code>++tuba</code></a>
721+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tufa' title="UTF-32 to UTF-8 tape"><code>++tufa</code></a>
722+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tuna' title="XML template tree"><code>++tuna</code></a>
723+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tuft' title="UTF-32 to UTF-8 text"><code>++tuft</code></a>
724+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#turf' title="UTF-8 to UTF-32 cord"><code>++turf</code></a>
725+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#turn' title="Gate to list"><code>++turn</code></a>
726+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tusk' title="List of expressions"><code>++tusk</code></a>
727+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#twid-so' title="Parse coins without ~ prefix"><code>++twid:so</code></a>
728+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tyke' title="List of 'maybe' hoons"><code>++tyke</code></a>
729+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#typo' title="Pointer for ++type"><code>++typo</code></a>
730+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tyre' title="List, term hoon"><code>++tyre</code></a>
731+
732+### u
733+
734+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#un' title="Reversible scrambling"><code>++un</code></a>
735+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#uni-by' title="Union (map between keys of two lists)"><code>+-uni:by</code></a>
736+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#uni-fl' title="Change representation to odd"><code>++uni:fl</code></a>
737+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#uni-in' title="Union (sets)"><code>+-uni:in</code></a>
738+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#unit' title="Mold generator (maybe)"><code>++unit</code></a>
739+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#urn-by' title="Turn (with key) (map)"><code>+-urn:by</code></a>
740+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#urs-ab' title="Parse span characters"><code>++urs:ab</code></a>
741+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#urt-ab' title="Parse non-_ span"><code>++urt:ab</code></a>
742+
743+### v
744+
745+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#v-ne' title="Render base 32"><code>++v:ne</code></a>
746+<code>++vang</code>
747+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vase' title="Typed data"><code>++vase</code></a>
748+<code>++vast</code>
749+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#ven' title="Axis syntax parser"><code>++ven</code></a>
750+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vise' title="Convert during reboot"><code>++vise</code></a>
751+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#vit' title="Parse base 64 digit"><code>++vit</code></a>
752+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#viz-ag' title="Parse base 32 digit with dot separators"><code>++viz:ag</code></a>
753+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#vor' title="Vertical order"><code>++vor</code></a>
754+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#voy-ab' title="Parse bas, soq, or bix"><code>++voy:ab</code></a>
755+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#vul' title="Comments to null"><code>++vul</code></a>
756+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#vum-ag' title="Parse base 32 string"><code>++vum:ag</code></a>
757+
758+### w
759+
760+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#w-ne' title="Render base 64 digit"><code>++w:ne</code></a>
761+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wack' title="Coin format encode"><code>++wack</code></a>
762+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#wain' title="List of cords"><code>++wain</code></a>
763+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#wall' title="List of list of characters"><code>++wall</code></a>
764+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#weld' title="Concatenate two lists"><code>++weld</code></a>
765+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#weld-nl' title="Concatenate null-terminated nouns"><code>++weld:nl</code></a>
766+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#welp' title="Perfect concatenate (lists)"><code>++welp</code></a>
767+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wick' title="Coin format decode"><code>++wick</code></a>
768+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#wig-re' title="++win - render tape"><code>++wig:re</code></a>
769+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#win-re' title="Render at indent"><code>++win:re</code></a>
770+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#wing' title="Address in subject"><code>++wing</code></a>
771+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#wiz-ag' title="Parse base 64 number"><code>++wiz:ag</code></a>
772+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#woad' title="Unescape cord"><code>++woad</code></a>
773+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wood' title="Escape cord"><code>++wood</code></a>
774+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#wonk' title="Product from edge"><code>++wonk</code></a>
775+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#wred-un' title="Restore structure"><code>++wred:un</code></a>
776+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#wren-un' title="Conceal structure"><code>++wren:un</code></a>
777+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#wut' title="Parse ? (wut)"><code>++wut</code></a>
778+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#wyt-by' title="Produce depth of tree map"><code>+-wyt:by</code></a>
779+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#wyt-in' title="Produce number of elements in set"><code>+-wyt:in</code></a>
780+
781+### x
782+
783+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#x-ne' title="Render hexadecimal digit as atom of ASCII byte value"><code>++x:ne</code></a>
784+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#xeb' title="Binary logarithm"><code>++xeb</code></a>
785+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#xpd-fl' title="Expand signed and unsigned integer cell"><code>++xpd:fl</code></a>
786+
787+### y
788+
789+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yall' title="Time since beginning of time"><code>++yall</code></a>
790+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yawn' title="Days since beginning of time"><code>++yawn</code></a>
791+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#year' title="Date to @d"><code>++year</code></a>
792+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yell' title="Tarp from atomic date"><code>++yell</code></a>
793+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yelp' title="Determine if leap-week"><code>++yelp</code></a>
794+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yer-yo' title="Seconds in year"><code>++yer:yo</code></a>
795+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yo' title="Time constants core"><code>++yo</code></a>
796+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yore' title="Date from atomic date"><code>++yore</code></a>
797+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yule' title="Daily time to time atom"><code>++yule</code></a>
798+
799+### z
800+
801+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zaft-un' title="Look up in 255 sub box"><code>++zaft:un</code></a>
802+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zag-mu' title="Add bottom into top"><code>++zag:mu</code></a>
803+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#zap' title="Parse ! (zap)"><code>++zap</code></a>
804+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zart-un' title="Reverse look up in 255 sub box"><code>++zart:un</code></a>
805+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#zer-fl' title="Produce zero as float"><code>++zer:fl</code></a>
806+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zig-mu' title="Subtract bottom from top"><code>++zig:mu</code></a>
807+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#zing' title="Turn lists into single list by promoting elements from sublists"><code>++zing</code></a>
808+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zug-mu' title="Concatenate into atom"><code>++zug:mu</code></a>
809+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#zust-so' title="Parse prefixed dimes from IP, loobean, or floating point"><code>++zust:so</code></a>
810+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zyft-un' title="Lookup byte in 256 sub box"><code>++zyft:un</code></a>
811+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zyrt-un' title="Reverse lookup byte in 256 sub box"><code>++zyrt:un</code></a>
812+
813+## By Section
814+
815+### 1a: basic arithmetic
816+
817+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#add' title="Add"><code>++add</code></a>
818+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#dec' title="Decrement"><code>++dec</code></a>
819+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#div' title="Divide"><code>++div</code></a>
820+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#dvr' title="Divide (with remainder)"><code>++dvr</code></a>
821+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#gte' title="Greater than / equal"><code>++gte</code></a>
822+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#gth' title="Greater than"><code>++gth</code></a>
823+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#lte' title="Less than / equal (atom)"><code>++lte</code></a>
824+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#lth' title="Less than (atom)"><code>++lth</code></a>
825+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#max' title="Maximum"><code>++max</code></a>
826+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#min' title="Minimum (atom)"><code>++min</code></a>
827+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#mod' title="Modulus (atom)"><code>++mod</code></a>
828+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#mul' title="Multiply (atom)"><code>++mul</code></a>
829+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#sub' title="Subtract"><code>++sub</code></a>
830+
831+### 1b: tree addressing
832+
833+<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#cap' title="Tree head"><code>++cap</code></a>
834+<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#mas' title="Address within head/tail"><code>++mas</code></a>
835+<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#peg' title="Address within address"><code>++peg</code></a>
836+
837+### 1c: molds and mold builders
838+
839+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#bloq' title="Blocksize"><code>++bloq</code></a>
840+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#each' title="Mold of fork between two types"><code>++each</code></a>
841+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#gate' title="Function"><code>++gate</code></a>
842+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#list' title="Mold constructor (list)"><code>++list</code></a>
843+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#lone' title="Mold generator (face on mold)"><code>++lone</code></a>
844+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#pair' title="Mold of pair of types"><code>++pair</code></a>
845+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#pole' title="Mold generator of faceless list"><code>++pole</code></a>
846+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#quip' title="Mold generator (tuple of list and type)"><code>++quip</code></a>
847+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#trap' title="Core with one arm $"><code>++trap</code></a>
848+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#tree' title="Mold generator (tree)"><code>++tree</code></a>
849+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#trel' title="Mold generator (tuple of three types)"><code>++trel</code></a>
850+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#unit' title="Mold generator (maybe)"><code>++unit</code></a>
851+
852+### 2a: unit logic
853+
854+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#biff' title="Unit as argument"><code>++biff</code></a>
855+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#bind' title="Non-unit function to unit, producing unit"><code>++bind</code></a>
856+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#bond' title="Replace null"><code>++bond</code></a>
857+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#both' title="Group unit values into pair"><code>++both</code></a>
858+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#clap' title="Apply function to two units"><code>++clap</code></a>
859+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#drop' title="Unit to list"><code>++drop</code></a>
860+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#fall' title="Give unit a default value"><code>++fall</code></a>
861+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#lift' title="Curried bind"><code>++lift</code></a>
862+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#mate' title="Choose"><code>++mate</code></a>
863+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#need' title="Unwrap unit"><code>++need</code></a>
864+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#some' title="Wrap value in unit"><code>++some</code></a>
865+
866+### 2b: list logic
867+
868+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#fand' title="All indices in list"><code>++fand</code></a>
869+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#find' title="First index in list"><code>++find</code></a>
870+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#flop' title="Reverse list"><code>++flop</code></a>
871+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#gulf' title="List from range"><code>++gulf</code></a>
872+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#homo' title="Homogenize list"><code>++homo</code></a>
873+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#join' title="Add separator between list elements"><code>++join</code></a>
874+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#lent' title="List length"><code>++lent</code></a>
875+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#levy' title="Logical AND on list"><code>++levy</code></a>
876+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#lien' title="Logical OR on list"><code>++lien</code></a>
877+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#limo' title="Construct list from null-terminated tuple"><code>++limo</code></a>
878+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#murn' title="Maybe transform"><code>++murn</code></a>
879+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#oust' title="Remove from list"><code>++oust</code></a>
880+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#reap' title="Replicate (list)"><code>++reap</code></a>
881+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#reel' title="Right fold (list)"><code>++reel</code></a>
882+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#roll' title="Left fold (list)"><code>++roll</code></a>
883+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#scag' title="Prefix (produce front of list)"><code>++scag</code></a>
884+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skid' title="Separate list into two lists from slammed elments"><code>++skid</code></a>
885+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skim' title="Produce list of elements from boolean gate"><code>++skim</code></a>
886+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skip' title="Produce list of elements failing boolean gate"><code>++skip</code></a>
887+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#slag' title="Produce all elements from index in list"><code>++slag</code></a>
888+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snag' title="Produce element at specific index (list)"><code>++snag</code></a>
889+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snap' title="Replace item at index"><code>++snap</code></a>
890+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snoc' title="Append noun to list"><code>++snoc</code></a>
891+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#sort' title="Quicksort (list)"><code>++sort</code></a>
892+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#spin' title="Gate to list (with state)"><code>++spin</code></a>
893+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#spun' title="Gate to list (with state)"><code>++spun</code></a>
894+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#swag' title="Infix (list)"><code>++swag</code></a>
895+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#turn' title="Gate to list"><code>++turn</code></a>
896+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#weld' title="Concatenate two lists"><code>++weld</code></a>
897+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#welp' title="Perfect concatenate (lists)"><code>++welp</code></a>
898+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#zing' title="Turn lists into single list by promoting elements from sublists"><code>++zing</code></a>
899+
900+### 2c: bit arithmetic
901+
902+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#fe' title="Modulo bloq"><code>++fe</code></a>
903+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#dif-fe' title="Difference between atoms (modular basis)"><code>++dif:fe</code></a>
904+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#inv-fe' title="Inverse order of modular field"><code>++inv:fe</code></a>
905+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#net-fe' title="Flip endianness"><code>++net:fe</code></a>
906+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#out-fe' title="Maximum integer value"><code>++out:fe</code></a>
907+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rol-fe' title="Roll left"><code>++rol:fe</code></a>
908+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#ror-fe' title="Roll right"><code>++ror:fe</code></a>
909+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sit-fe' title="Enforce modulo"><code>++sit:fe</code></a>
910+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sum-fe' title="Sum two numbers in modular field"><code>++sum:fe</code></a>
911+
912+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#bex' title="Binary exponent"><code>++bex</code></a>
913+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#can' title="Assemble"><code>++can</code></a>
914+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#cat' title="Concatenate"><code>++cat</code></a>
915+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#cut' title="Slice"><code>++cut</code></a>
916+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#end' title="Tail"><code>++end</code></a>
917+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#fil' title="Fill bloqstream"><code>++fil</code></a>
918+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#lsh' title="Left-shift"><code>++lsh</code></a>
919+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#met' title="Measure"><code>++met</code></a>
920+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rap' title="Assemble non-zero"><code>++rap</code></a>
921+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rep' title="Assemble single"><code>++rep</code></a>
922+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rip' title="Disassemble"><code>++rip</code></a>
923+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rsh' title="Right-shift"><code>++rsh</code></a>
924+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#swp' title="Reverse block order"><code>++swp</code></a>
925+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#xeb' title="Binary logarithm"><code>++xeb</code></a>
926+
927+### 2d: bit logic
928+
929+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#con' title="Binary OR"><code>++con</code></a>
930+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#dis' title="Binary AND (atoms)"><code>++dis</code></a>
931+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#mix' title="Binary XOR (atom)"><code>++mix</code></a>
932+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#not' title="Binary NOT (atom)"><code>++not</code></a>
933+
934+### 2e: insecure hashing
935+
936+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#fnv' title="FNV scrambler"><code>++fnv</code></a>
937+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#mug' title="FNV-1a scrambler"><code>++mug</code></a>
938+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#muk' title="Standard MurmurHash3"><code>++muk</code></a>
939+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#mum' title="31-bit MurmurHash3 scrambler"><code>++mum</code></a>
940+
941+### 2f: noun ordering
942+
943+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#aor' title="Alphabetical order"><code>++aor</code></a>
944+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#dor' title="Numeric order"><code>++dor</code></a>
945+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#gor' title="Hash order"><code>++gor</code></a>
946+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#hor' title="Horizontal hash order"><code>++hor</code></a>
947+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#lor' title="Leg order"><code>++lor</code></a>
948+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#vor' title="Vertical order"><code>++vor</code></a>
949+
950+### 2g: unsigned powers
951+
952+<a class="tooltip" href='/docs/hoon/reference/stdlib/2g/#pow' title="Computes a to the power of b"><code>++pow</code></a>
953+<a class="tooltip" href='/docs/hoon/reference/stdlib/2g/#sqt' title="Compute square root with remainder"><code>++sqt</code></a>
954+
955+### 2h: set logic
956+
957+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#in'><code>++in</code></a>
958+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#all-in' title="Logical AND (set and wet gate)"><code>+-all:in</code></a>
959+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#any-in' title="Logical OR (set and gate)"><code>+-any:in</code></a>
960+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#apt-in' title="Check correctness (set)"><code>+-apt:in</code></a>
961+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#bif-in' title="Bifurcate set"><code>+-bif:in</code></a>
962+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#del-in' title="Delete (set)"><code>+-del:in</code></a>
963+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#dif-in' title='Difference (set)'><code>+-dif:in</code></a>
964+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#dig-in' title="Address of a in set"><code>+-dig:in</code></a>
965+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#gas-in' title="Concatenate (set)"><code>+-gas:in</code></a>
966+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#has-in' title="Key existence check (set)"><code>+-has:in</code></a>
967+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#int-in' title="Intersection (set)"><code>+-int:in</code></a>
968+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#put-in' title="Put b in a (set)"><code>+-put:in</code></a>
969+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#rep-in' title="Accumulate elements (set)"><code>+-rep:in</code></a>
970+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#run-in' title="Apply gate to set"><code>+-run:in</code></a>
971+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#tap-in' title="Flatten set into list"><code>+-tap:in</code></a>
972+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#uni-in' title="Union (sets)"><code>+-uni:in</code></a>
973+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#wyt-in' title="Produce number of elements in set"><code>+-wyt:in</code></a>
974+
975+### 2i: map logic
976+
977+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#by' title="Map operations"><code>++by</code></a>
978+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#all-by' title="Logical AND (map and wet gate)"><code>+-all:by</code></a>
979+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#any-by' title="Logical OR (map and wet gate)"><code>+-any:by</code></a>
980+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#apt-by' title="Check correctness (map)"><code>+-apt:by</code></a>
981+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#bif-by' title="Bifurcate map"><code>+-bif:by</code></a>
982+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#def-by' title="Difference (map)"><code>+-def:by</code></a>
983+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#del-by' title="Delete (map)"><code>+-del:by</code></a>
984+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#dep-by' title="Difference as patch (map)"><code>+-dep:by</code></a>
985+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#dig-by' title="Address of key (map)"><code>+-dig:by</code></a>
986+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#gas-by' title="Concatenate (map)"><code>+-gas:by</code></a>
987+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#get-by' title="Grab unit value"><code>+-get:by</code></a>
988+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#got-by' title="Assert for value (map)"><code>+-got:by</code></a>
989+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#gut-by' title="Grab value with default"><code>+-gut:by</code></a>
990+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#has-by' title="Key existence check (map)"><code>+-has:by</code></a>
991+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#int-by' title="Intersection (map)"><code>+-int:by</code></a>
992+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#mar-by' title="Assert and add (map)"><code>+-mar:by</code></a>
993+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#put-by' title="Add key-value pair (map)"><code>+-put:by</code></a>
994+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rep-by' title="Replace by product (map)"><code>+-rep:by</code></a>
995+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rib-by' title="Replace values with accumulator (map)"><code>+-rib:by</code></a>
996+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#run-by' title="Transform values (map)"><code>+-run:by</code></a>
997+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rut-by' title="Transform nodes (map)"><code>+-rut:by</code></a>
998+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#tap-by' title="Listify pairs"><code>+-tap:by</code></a>
999+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#uni-by' title="Union (map between keys of two lists)"><code>+-uni:by</code></a>
1000+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#urn-by' title="Turn (with key) (map)"><code>+-urn:by</code></a>
1001+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#wyt-by' title="Produce depth of tree map"><code>+-wyt:by</code></a>
1002+
1003+### 2j: jar and jug logic
1004+
1005+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#ja' title="Jar engine"><code>++ja</code></a>
1006+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#add-ja' title="Prepend to list"><code>+-add:ja</code></a>
1007+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#get-ja' title="Grab value by key"><code>+-get:ja</code></a>
1008+
1009+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#ju' title="Jug operations"><code>++ju</code></a>
1010+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#del-ju' title="Delete (jug)"><code>+-del:ju</code></a>
1011+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#get-ju' title="Retrieve set"><code>+-get:ju</code></a>
1012+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#has-ju' title="Check contents (jug)"><code>+-has:ju</code></a>
1013+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#put-ju' title="Add key-set pair (jar)"><code>+-put:ju</code></a>
1014+
1015+### 2k: queue logic
1016+
1017+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#to' title="Queue operations"><code>++to</code></a>
1018+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#bal-to' title="Balance queue"><code>+-bal:to</code></a>
1019+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#dep-to' title="Maximum depth (queue)"><code>+-dep:to</code></a>
1020+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#gas-to' title="Push list into queue"><code>+-gas:to</code></a>
1021+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#get-to' title="Head-tail pair"><code>+-get:to</code></a>
1022+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#nap-to' title="Remove head of queue"><code>+-nap:to</code></a>
1023+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#nip-to' title="Remove root of queue"><code>+-nip:to</code></a>
1024+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#put-to' title="Insert into queue"><code>+-put:to</code></a>
1025+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#tap-to' title="Queue to list"><code>+-tap:to</code></a>
1026+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#top-to' title="Produce head of queue"><code>+-top:to</code></a>
1027+
1028+### 2l: container from container
1029+
1030+<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#malt' title="Map from list"><code>++malt</code></a>
1031+<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#molt' title="Map from pair list"><code>++molt</code></a>
1032+<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#silt' title="Produce set from list"><code>++silt</code></a>
1033+
1034+### 2m: container from noun
1035+
1036+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#nl' title="Noun to container operations"><code>++nl</code></a>
1037+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#le-nl' title="Construct list from null-terminated noun"><code>++le:nl</code></a>
1038+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#my-nl' title="Construct map from null-terminated noun"><code>++my:nl</code></a>
1039+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#si-nl' title="Construct set from null-terminated noun"><code>++si:nl</code></a>
1040+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#snag-nl' title="Produce element from list at specific null-terminated noun"><code>++snag:nl</code></a>
1041+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#weld-nl' title="Concatenate null-terminated nouns"><code>++weld:nl</code></a>
1042+
1043+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#ly' title="List from raw noun"><code>++ly</code></a>
1044+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#my' title="Map from raw noun"><code>++my</code></a>
1045+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#sy' title="Produce set from null-terminated noun"><code>++sy</code></a>
1046+
1047+### 2n: functional hacks
1048+
1049+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#cork' title="Compose forward"><code>++cork</code></a>
1050+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#corl' title="Compose backward"><code>++corl</code></a>
1051+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#curr' title="Right-curry a gate"><code>++curr</code></a>
1052+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#cury' title="Curry left a gate"><code>++cury</code></a>
1053+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#hard' title="Force remold"><code>++hard</code></a>
1054+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#head' title="Get head of cell"><code>++head</code></a>
1055+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#mean' title="Crash and printf"><code>++mean</code></a>
1056+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#same' title="Identity (produces same value)"><code>++same</code></a>
1057+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#slog' title="Deify printf"><code>++slog</code></a>
1058+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#soft' title="Maybe remold"><code>++soft</code></a>
1059+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#tail' title="Get tail of cell"><code>++tail</code></a>
1060+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#test' title="Test for equality"><code>++test</code></a>
1061+
1062+### 2o: normalizing containers
1063+
1064+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#jar' title="Mold generator (jar)"><code>++jar</code></a>
1065+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#jug' title="Mold generator (jug)"><code>++jug</code></a>
1066+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#map' title="Mold generator (map)"><code>++map</code></a>
1067+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#qeu' title="Mold generator (queue)"><code>++qeu</code></a>
1068+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#set' title="Mold generator (set)"><code>++set</code></a>
1069+
1070+### 2p: serialization
1071+
1072+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#cue' title="Unpack atom to noun"><code>++cue</code></a>
1073+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#jam' title="Pack noun to atom"><code>++jam</code></a>
1074+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#mat' title="Length-encode"><code>++mat</code></a>
1075+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#rub' title="Length-decode"><code>++rub</code></a>
1076+
1077+### 2q: molds and mold builders
1078+
1079+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#char' title="Character"><code>++char</code></a>
1080+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#cord' title="UTF-8 text"><code>++cord</code></a>
1081+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#date' title="Point in time"><code>++date</code></a>
1082+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#knot' title="Atom type of ASCII characters"><code>++knot</code></a>
1083+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tang' title="Generic print structure"><code>++tang</code></a>
1084+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tank' title="Pretty-printing structure"><code>++tank</code></a>
1085+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tape' title="List of characters"><code>++tape</code></a>
1086+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tarp' title="Parsed time"><code>++tarp</code></a>
1087+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#term' title="Hoon constant"><code>++term</code></a>
1088+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#wain' title="List of cords"><code>++wain</code></a>
1089+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#wall' title="List of list of characters"><code>++wall</code></a>
1090+
1091+### 3a: modular and signed ints
1092+
1093+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fo' title="Modulo prime"><code>++fo</code></a>
1094+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dif-fo' title='Subtraction (modular base)'><code>++dif:fo</code></a>
1095+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#exp-fo' title="Exponent (modular base)"><code>++exp:fo</code></a>
1096+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fra-fo' title="Divide (modular base)"><code>++fra:fo</code></a>
1097+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#inv-fo' title="Inverse (signed modulus)"><code>++inv:fo</code></a>
1098+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#pro-fo' title="Multiplies b and c modulo a"><code>++pro:fo</code></a>
1099+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sit-fo' title="Produce remainder of b modulo a"><code>++sit:fo</code></a>
1100+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sum-fo' title="Modular sum"><code>++sum:fo</code></a>
1101+
1102+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#si' title="Signed integer"><code>++si</code></a>
1103+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#abs-si' title="Absolute value (signed integer)"><code>++abs:si</code></a>
1104+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#cmp-si' title="Compare (signed integer)"><code>++cmp:si</code></a>
1105+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dif-si' title="Subtraction (signed integer)"><code>++dif:si</code></a>
1106+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dul-si' title="Modulus (signed integer)"><code>++dul:si</code></a>
1107+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fra-si' title="Divide (signed integer)"><code>++fra:si</code></a>
1108+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#new-si' title="Atom to @s"><code>++new:si</code></a>
1109+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#old-si' title="Sign and absolute value"><code>++old:si</code></a>
1110+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#pro-si' title="Multiply to signed integer"><code>++pro:si</code></a>
1111+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#rem-si' title="Remainder (signed integer)"><code>++rem:si</code></a>
1112+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sum-si' title="Addition (signed integer)"><code>++sum:si</code></a>
1113+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sun-si' title="@u to @s"><code>++sun:si</code></a>
1114+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#syn-si' title="Sign test"><code>++syn:si</code></a>
1115+
1116+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#egcd' title="Extended Euclidean algorithm"><code>++egcd</code></a>
1117+
1118+### 3b: floating point
1119+
1120+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#dn'><code>++dn</code></a>
1121+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fn'><code>++fn</code></a>
1122+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rn'><code>++rn</code></a>
1123+
1124+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ff'><code>++ff</code></a>
1125+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-ff' title="Add (floating point)"><code>++add:ff</code></a>
1126+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bif-ff' title="Converts from fn to @r"><code>++bif:ff</code></a>
1127+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-ff' title="fn to @r with rounding"><code>++bit:ff</code></a>
1128+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-ff' title="Divide (IEEE float)"><code>++div:ff</code></a>
1129+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-ff' title="@r to decimal float"><code>++drg:ff</code></a>
1130+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-ff' title="Equals (IEEE float)"><code>++equ:ff</code></a>
1131+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-ff' title="Get exponent (IEEE float)"><code>++exp:ff</code></a>
1132+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-ff' title="Fused multiply-add (IEEE float)"><code>++fma:ff</code></a>
1133+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-ff' title="Decimal float to @r"><code>++grd:ff</code></a>
1134+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-ff' title="Greater than / equal (IEEE float)"><code>++gte:ff</code></a>
1135+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-ff' title="Greater than (IEEE float)"><code>++gth:ff</code></a>
1136+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-ff' title="Less than / equal (IEEE float)"><code>++lte:ff</code></a>
1137+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-ff' title="Less than (IEEE float)"><code>++lth:ff</code></a>
1138+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#me-ff' title="Minimum exponent of ff"><code>++me:ff</code></a>
1139+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-ff' title="Multiply (IEEE float)"><code>++mul:ff</code></a>
1140+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#pa-ff' title="Initialize fl from ff core"><code>++pa:ff</code></a>
1141+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-ff' title="Signed integer to @r"><code>++san:ff</code></a>
1142+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sb-ff' title="Sign bit"><code>++sb:ff</code></a>
1143+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-ff' title="Convert from IEEE float to fn"><code>++sea:ff</code></a>
1144+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-ff' title="Produce sign of IEEE float"><code>++sig:ff</code></a>
1145+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-ff' title="Produce square root from IEEE float"><code>++sqt:ff</code></a>
1146+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-ff' title="Subtract from IEEE float"><code>++sub:ff</code></a>
1147+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-ff' title="Unsigned integer to IEEE float"><code>++sun:ff</code></a>
1148+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-ff' title="Round IEEE float to nearest signed integer"><code>++toi:ff</code></a>
1149+
1150+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fl'><code>++fl</code></a>
1151+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#abs-fl' title="Absolute value"><code>++abs:fl</code></a>
1152+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-fl' title="Add (with exact/rounded flag)"><code>++add:fl</code></a>
1153+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#den-fl' title="Denormalizes (floating point)"><code>++den:fl</code></a>
1154+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-fl' title="Divide (signed and unsigned integer cell)"><code>++div:fl</code></a>
1155+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-fl' title="Get printable decimal (signed and unsigned integer cell)"><code>++drg:fl</code></a>
1156+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ead-fl' title="Exact add"><code>++ead:fl</code></a>
1157+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emn-fl' title="Minimum exponent"><code>++emn:fl</code></a>
1158+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emu-fl' title="Exact multiply"><code>++emu:fl</code></a>
1159+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emx-fl' title="Maximum exponent"><code>++emx:fl</code></a>
1160+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-fl' title="Equals (signed and unsigned integer cell)"><code>++equ:fl</code></a>
1161+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fli-fl' title="Flip sign"><code>++fli:fl</code></a>
1162+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-fl' title="Fused multiply-add"><code>++fma:fl</code></a>
1163+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-fl' title="Decimal to float"><code>++grd:fl</code></a>
1164+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-fl' title="Greater than / equal (producing flag)"><code>++gte:fl</code></a>
1165+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-fl' title="Greater than (producing flag)"><code>++gth:fl</code></a>
1166+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ibl-fl' title="Integer binary logarithm"><code>++ibl:fl</code></a>
1167+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#inv-fl' title="Inverse"><code>++inv:fl</code></a>
1168+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lfe-fl' title="Maximum"><code>++lfe:fl</code></a>
1169+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lfn-fl' title="Largest normal float"><code>++lfn:fl</code></a>
1170+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-fl' title="Less than / equal (producing flag)"><code>++lte:fl</code></a>
1171+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-fl' title="Less than (signed and unsigned integer cell)"><code>++lth:fl</code></a>
1172+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lug-fl' title="Central rounding mechanism"><code>++lug:fl</code></a>
1173+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-fl' title="Multiply (signed and unsigned integer cell)"><code>++mul:fl</code></a>
1174+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ned-fl' title="Require float"><code>++ned:fl</code></a>
1175+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#prc-fl' title="Force precision of 2 or greater (floating point)"><code>++prc:fl</code></a>
1176+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rau-fl' title="Various roundings (floating point)"><code>++rau:fl</code></a>
1177+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rou-fl' title="Round to nearest float with 113-bit significand"><code>++rou:fl</code></a>
1178+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-fl' title="Signed integer to float"><code>++san:fl</code></a>
1179+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#shf-fl' title="Shift power"><code>++shf:fl</code></a>
1180+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#spd-fl' title="Produce smallest denormalized float"><code>++spd:fl</code></a>
1181+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#spn-fl' title="Produce smallest normal float"><code>++spn:fl</code></a>
1182+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-fl' title="Produce square root from signed and unsigned integer cell"><code>++sqt:fl</code></a>
1183+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-fl' title="Subtract from signed and unsigned integer cells"><code>++sub:fl</code></a>
1184+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-fl' title="Unsigned integer to float"><code>++sun:fl</code></a>
1185+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#swr-fl' title="Switch rounding mode of floating point"><code>++swr:fl</code></a>
1186+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#syn-fl' title="Get sign"><code>++syn:fl</code></a>
1187+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-fl' title="Round float to nearest signed integer"><code>++toi:fl</code></a>
1188+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toj-fl' title="Round unsigned and signed integer to float"><code>++toj:fl</code></a>
1189+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#uni-fl' title="Change representation to odd"><code>++uni:fl</code></a>
1190+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#xpd-fl' title="Expand signed and unsigned integer cell"><code>++xpd:fl</code></a>
1191+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#zer-fl' title="Produce zero as float"><code>++zer:fl</code></a>
1192+
1193+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rd'><code>++rd</code></a>
1194+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rd' title="Add (double-precision float)"><code>++add:rd</code></a>
1195+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rd' title="fn to double-precision binary float"><code>++bit:rd</code></a>
1196+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rd' title="Double precision float"><code>++div:rd</code></a>
1197+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rd' title="@rd to decimal float"><code>++drg:rd</code></a>
1198+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rd' title="Equals (double-precision float)"><code>++equ:rd</code></a>
1199+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rd' title="Exponent (@rd)"><code>++exp:rd</code></a>
1200+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rd' title="Fused multiply-add (@rd)"><code>++fma:rd</code></a>
1201+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rd' title="Decimal float to @rd"><code>++grd:rd</code></a>
1202+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rd' title="Greater than / equal (double-precision float)"><code>++gte:rd</code></a>
1203+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rd' title="Greater than (double-precision float)"><code>++gth:rd</code></a>
1204+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rd' title="Less than / equal (double-precision float)"><code>++lte:rd</code></a>
1205+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rd' title="Less than (double-precision float)"><code>++lth:rd</code></a>
1206+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rd' title="Initialize ff (rd core)"><code>++ma:rd</code></a>
1207+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rd' title="Multiply (double-precision float)"><code>++mul:rd</code></a>
1208+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rd' title="Unsigned integer to @rd"><code>++san:rd</code></a>
1209+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rd' title="Convert from double-precision binary float to fn"><code>++sea:rd</code></a>
1210+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rd' title="Produce sign of @rd"><code>++sig:rd</code></a>
1211+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rd' title="Produce square root of double-precision float"><code>++sqt:rd</code></a>
1212+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rd' title="Subtract from double-precision float"><code>++sub:rd</code></a>
1213+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rd' title="Unsigned integer to double-precision float"><code>++sun:rd</code></a>
1214+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rd' title="Round double-precision float to nearest signed integer"><code>++toi:rd</code></a>
1215+
1216+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rh'><code>++rh</code></a>
1217+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rh' title="Add (half-precision float)"><code>++add:rh</code></a>
1218+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rh' title="fn to half-precision float"><code>++bit:rh</code></a>
1219+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rh' title="Divide (half-precision float)"><code>++div:rh</code></a>
1220+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rh' title="@rh to decimal float"><code>++drg:rh</code></a>
1221+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rh' title="Equals (half-precision float)"><code>++equ:rh</code></a>
1222+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rh' title="Exponent (half-precision float)"><code>++exp:rh</code></a>
1223+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rh' title="Fused multiply-add (half-precision float)"><code>++fma:rh</code></a>
1224+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fos-rh' title="@rs to @rh"><code>++fos:rh</code></a>
1225+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rh' title="Decimal float to @rh"><code>++grd:rh</code></a>
1226+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rh' title="Greater than / equal (half-precision float)"><code>++gte:rh</code></a>
1227+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rh' title="Greater than (half-precision float)"><code>++gth:rh</code></a>
1228+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rh' title="Less than / equal (half-precision float)"><code>++lte:rh</code></a>
1229+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rh' title="Less than (half-precision float)"><code>++lth:rh</code></a>
1230+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rh' title="Initialize ff (rh core)"><code>++ma:rh</code></a>
1231+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rh' title="Multiply (quad-precision float)"><code>++mul:rh</code></a>
1232+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rh' title="Signed integer to @rh"><code>++san:rh</code></a>
1233+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rh' title="Convert from half-precision float to fn"><code>++sea:rh</code></a>
1234+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rh' title="Produce sign of half-precision float"><code>++sig:rh</code></a>
1235+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rh' title="Produce square root of half-precision float"><code>++sqt:rh</code></a>
1236+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rh' title="Subtract from half-precision float"><code>++sub:rh</code></a>
1237+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rh' title="Unsigned integer to half-precision float"><code>++sun:rh</code></a>
1238+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rh' title="Round half-precision float to nearest signed integer"><code>++toi:rh</code></a>
1239+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#tos-rh' title="Convert half-precision float to single-precision float"><code>++tos:rh</code></a>
1240+
1241+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rs'><code>++rs</code></a>
1242+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rs' title="Add (single-precision float)"><code>++add:rs</code></a>
1243+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rs' title="fn to single-precision float"><code>++bit:rs</code></a>
1244+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rs' title="Divide (single-precision float)"><code>++div:rs</code></a>
1245+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rs' title="@rs to decimal float"><code>++drg:rs</code></a>
1246+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rs' title="Equals (single-precision float)"><code>++equ:rs</code></a>
1247+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rs' title="Exponent (@rs)"><code>++exp:rs</code></a>
1248+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rs' title="Fused multiply-add (single-precision float)"><code>++fma:rs</code></a>
1249+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rs' title="Decimal float to @rs"><code>++grd:rs</code></a>
1250+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rs' title="Greater than / equal (single-precision float)"><code>++gte:rs</code></a>
1251+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rs' title="Greater than (single-precision float)"><code>++gth:rs</code></a>
1252+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rs' title="Less than / equal (single-precision float)"><code>++lte:rs</code></a>
1253+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rs' title="Less than (single-precision float)"><code>++lth:rs</code></a>
1254+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rs' title="Initialize ff (rs core)"><code>++ma:rs</code></a>
1255+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rs' title="Multiply (single-precision float)"><code>++mul:rs</code></a>
1256+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rs' title="Signed integer to @rs"><code>++san:rs</code></a>
1257+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rs' title="Convert from single-precision float to fn"><code>++sea:rs</code></a>
1258+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rs' title="Produce sign of @rs"><code>++sig:rs</code></a>
1259+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rs' title="Produce square root of single-precision float"><code>++sqt:rs</code></a>
1260+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rs' title="Subtract from single-precision float"><code>++sub:rs</code></a>
1261+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rs' title="Unsigned integer to single-precision float"><code>++sun:rs</code></a>
1262+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rs' title="Round single-precision float to nearest signed integer"><code>++toi:rs</code></a>
1263+
1264+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rq'><code>++rq</code></a>
1265+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rq' title="Add (quad-precision float)"><code>++add:rq</code></a>
1266+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rq' title="fn to quad-precision float"><code>++bit:rq</code></a>
1267+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rq' title="Divide (quad-precision float)"><code>++div:rq</code></a>
1268+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rq' title="@rq to decimal float"><code>++drg:rq</code></a>
1269+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rq' title="Equals (quad-precision float)"><code>++equ:rq</code></a>
1270+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rq' title="Exponent (quad-precision float)"><code>++exp:rq</code></a>
1271+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rq' title="Fused multiply-add (quad-precision float)"><code>++fma:rq</code></a>
1272+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rq' title="Decimal float to @rq"><code>++grd:rq</code></a>
1273+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rq' title="Greater than / equal (quad-precision float)"><code>++gte:rq</code></a>
1274+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rq' title="Greater than (quad-precision float)"><code>++gth:rq</code></a>
1275+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rq' title="Less than / equal (quad-precision float)"><code>++lte:rq</code></a>
1276+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rq' title="Less than (quad-precision float)"><code>++lth:rq</code></a>
1277+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rq' title="Initialize ff (rq core)"><code>++ma:rq</code></a>
1278+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rq' title="Multiply (quad-precision float)"><code>++mul:rq</code></a>
1279+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rq' title="Signed integer to @rq"><code>++san:rq</code></a>
1280+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rq' title="Convert from quad-precision float to fn"><code>++sea:rq</code></a>
1281+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rq' title="Produce sign of quad-precision float"><code>++sig:rq</code></a>
1282+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rq' title="Produce square root of quad-precision float"><code>++sqt:rq</code></a>
1283+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rq' title="Subtract from quad-precision float"><code>++sub:rq</code></a>
1284+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rq' title="Unsigned integer to quad-precision float"><code>++sun:rq</code></a>
1285+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rq' title="Round quad-precision float to nearest signed integer"><code>++toi:rq</code></a>
1286+
1287+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rlyd'><code>++rlyd</code></a>
1288+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rlyh'><code>++rlyh</code></a>
1289+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rlyq'><code>++rlyq</code></a>
1290+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rlys'><code>++rlys</code></a>
1291+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ryld'><code>++ryld</code></a>
1292+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rylh'><code>++rylh</code></a>
1293+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rylq'><code>++rylq</code></a>
1294+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ryls'><code>++ryls</code></a>
1295+
1296+### 3c: urbit time
1297+
1298+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yo' title="Time constants core"><code>++yo</code></a>
1299+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#cet-yo' title="Days in a century"><code>++cet:yo</code></a>
1300+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#day-yo' title="Seconds in day"><code>++day:yo</code></a>
1301+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#era-yo' title="Leap-year period"><code>++era:yo</code></a>
1302+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#hor-yo' title="Seconds in hour"><code>++hor:yo</code></a>
1303+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#jes-yo' title="Maximum 64-bit timestamp"><code>++jes:yo</code></a>
1304+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#mit-yo' title="Seconds in minute"><code>++mit:yo</code></a>
1305+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#moh-yo' title="Days in month"><code>++moh:yo</code></a>
1306+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#moy-yo' title="Days in months of leap-year"><code>++moy:yo</code></a>
1307+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#qad-yo' title="Seconds in 4 years"><code>++qad:yo</code></a>
1308+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yer-yo' title="Seconds in year"><code>++yer:yo</code></a>
1309+
1310+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yall' title="Time since beginning of time"><code>++yall</code></a>
1311+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yawn' title="Days since beginning of time"><code>++yawn</code></a>
1312+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#year' title="Date to @d"><code>++year</code></a>
1313+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yell' title="Tarp from atomic date"><code>++yell</code></a>
1314+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yelp' title="Determine if leap-week"><code>++yelp</code></a>
1315+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yore' title="Date from atomic date"><code>++yore</code></a>
1316+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yule' title="Daily time to time atom"><code>++yule</code></a>
1317+
1318+### 3d: SHA hash family
1319+
1320+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#og' title="Container arm for SHA-256 powered RNG"><code>++og</code></a>
1321+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#rad-og' title="Random in range"><code>++rad:og</code></a>
1322+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#rads-og' title="Random continuation"><code>++rads:og</code></a>
1323+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#raw-og' title="Random bits"><code>++raw:og</code></a>
1324+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#raws-og' title="Random bits continuation"><code>++raws:og</code></a>
1325+
1326+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shad' title="Double SHA-256"><code>++shad</code></a>
1327+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaf' title="Half SHA-256"><code>++shaf</code></a>
1328+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shal' title="SHA-512 with length"><code>++shal</code></a>
1329+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#sham' title="128-bit noun hash"><code>++sham</code></a>
1330+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shan' title="SHA-1"><code>++shan</code></a>
1331+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shas' title="Salted hash"><code>++shas</code></a>
1332+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaw' title="Hash to nbits"><code>++shaw</code></a>
1333+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shax' title="SHA-256"><code>++shax</code></a>
1334+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shay' title="SHA-256 with length"><code>++shay</code></a>
1335+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaz' title="SHA-512"><code>++shaz</code></a>
1336+
1337+### 3e: AES encryption
1338+
1339+<a href='/docs/hoon/reference/stdlib/3e/'>_(removed)_</a>
1340+
1341+### 3f: scrambling
1342+
1343+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#ob' title="Reversible scrambling v2"><code>++ob</code></a>
1344+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feen-ob' title="Conceal structure v2"><code>++feen:ob</code></a>
1345+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#fend-ob' title="Restore structure v2"><code>++fend:ob</code></a>
1346+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#fice-ob' title="Feistel-like cipher"><code>++fice:ob</code></a>
1347+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#raku-ob' title="Key list"><code>++raku:ob</code></a>
1348+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#rund-ob' title="Reverse single Feistel-like"><code>++rund:ob</code></a>
1349+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#rynd-ob' title="Reverse Feistel-like cipher"><code>++rynd:ob</code></a>
1350+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#teil-ob' title="Reverse Feistel-like cipher"><code>++teil:ob</code></a>
1351+
1352+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#un' title="Reversible scrambling"><code>++un</code></a>
1353+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#wred-un' title="Restore structure"><code>++wred:un</code></a>
1354+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#wren-un' title="Conceal structure"><code>++wren:un</code></a>
1355+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#xafo-un'><code>++xafo:un</code></a>
1356+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#xaro-un'><code>++xaro:un</code></a>
1357+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zaft-un' title="Look up in 255 sub box"><code>++zaft:un</code></a>
1358+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zart-un' title="Reverse look up in 255 sub box"><code>++zart:un</code></a>
1359+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zyft-un' title="Lookup byte in 256 sub box"><code>++zyft:un</code></a>
1360+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zyrt-un' title="Reverse lookup byte in 256 sub box"><code>++zyrt:un</code></a>
1361+
1362+### 3g: molds and mold builders
1363+
1364+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#coin' title="Noun-literal syntax cases"><code>++coin</code></a>
1365+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#dime' title="Aura-atom pair"><code>++dime</code></a>
1366+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#edge' title="Parsing location metadata"><code>++edge</code></a>
1367+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#hair' title="Parsing line and column"><code>++hair</code></a>
1368+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#like' title="Generic edge"><code>++like</code></a>
1369+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#nail' title="Location, remainder of parsed text"><code>++nail</code></a>
1370+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#path' title="Filesystem path"><code>++path</code></a>
1371+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#pint' title="Parsing range"><code>++pint</code></a>
1372+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#rule' title="Parsing rule (match this with _)"><code>++rule</code></a>
1373+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#spot' title="Stack trace line"><code>++spot</code></a>
1374+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#tone' title="Nock result (error report)"><code>++tone</code></a>
1375+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#toon' title="Nock result (stack trace)"><code>++toon</code></a>
1376+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#wonk' title="Product from edge"><code>++wonk</code></a>
1377+
1378+### 4a: exotic bases
1379+
1380+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#po' title="Phonetic base"><code>++po</code></a>
1381+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#ind-po' title="Parse suffix"><code>++ind:po</code></a>
1382+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#ins-po' title="Parse prefix"><code>++ins:po</code></a>
1383+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#tod-po' title="Fetch suffix"><code>++tod:po</code></a>
1384+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#tos-po' title="Fetch prefix"><code>++tos:po</code></a>
1385+
1386+### 4b: text processing
1387+
1388+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#at' title="(Undocumented)"><code>++at</code></a>
1389+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#r-at' title="(Undocumented)"><code>++r:at</code></a>
1390+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rf-at' title="(Undocumented)"><code>++rf:at</code></a>
1391+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rn-at' title="(Undocumented)"><code>++rn:at</code></a>
1392+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rt-at' title="(Undocumented)"><code>++rt:at</code></a>
1393+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rta-at' title="(Undocumented)"><code>++rta:at</code></a>
1394+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rtam-at' title="(Undocumented)"><code>++rtam:at</code></a>
1395+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rub-at' title="(Undocumented)"><code>++rub:at</code></a>
1396+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rud-at' title="(Undocumented)"><code>++rud:at</code></a>
1397+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rum-at' title="(Undocumented)"><code>++rum:at</code></a>
1398+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rup-at' title="(Undocumented)"><code>++rup:at</code></a>
1399+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#ruv-at' title="(Undocumented)"><code>++ruv:at</code></a>
1400+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rux-at' title="(Undocumented)"><code>++rux:at</code></a>
1401+
1402+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#cass' title="To lowercase"><code>++cass</code></a>
1403+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#crip' title="Tape to cord"><code>++crip</code></a>
1404+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#cuss' title="To uppercase"><code>++cuss</code></a>
1405+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#mesc' title="Escape special characters"><code>++mesc</code></a>
1406+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#runt' title="Prepend n times"><code>++runt</code></a>
1407+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#sand' title="Soft-cast by aura"><code>++sand</code></a>
1408+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#sane' title="Check aura validity"><code>++sane</code></a>
1409+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#teff' title="UTF-8 length"><code>++teff</code></a>
1410+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#trim' title="Tape split"><code>++trim</code></a>
1411+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#trip' title="Cord to tape"><code>++trip</code></a>
1412+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tuba' title="UTF-8 to UTF-32 tape"><code>++tuba</code></a>
1413+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tufa' title="UTF-32 to UTF-8 tape"><code>++tufa</code></a>
1414+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tuft' title="UTF-32 to UTF-8 text"><code>++tuft</code></a>
1415+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#turf' title="UTF-8 to UTF-32 cord"><code>++turf</code></a>
1416+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wack' title="Coin format encode"><code>++wack</code></a>
1417+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wick' title="Coin format decode"><code>++wick</code></a>
1418+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#woad' title="Unescape cord"><code>++woad</code></a>
1419+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wood' title="Escape cord"><code>++wood</code></a>
1420+
1421+### 4c: tank printer
1422+
1423+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#re' title="Pretty-printing engine (tank)"><code>++re</code></a>
1424+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#din-re' title="(Undocumented)"><code>++din:re</code></a>
1425+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#fit-re' title="Fit on one line test"><code>++fit:re</code></a>
1426+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#ram-re' title="Flatten tank to tape"><code>++ram:re</code></a>
1427+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#rig-re' title="Wrap tape in / (tank)"><code>++rig:re</code></a>
1428+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#wig-re' title="++win - render tape"><code>++wig:re</code></a>
1429+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#win-re' title="Render at indent"><code>++win:re</code></a>
1430+
1431+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#shep' title="(Undocumented)"><code>++shep</code></a>
1432+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#shop' title="(Undocumented)"><code>++shop</code></a>
1433+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#show' title="(Undocumented)"><code>++show</code></a>
1434+
1435+### 4d: parsing (tracing)
1436+
1437+<a class="tooltip" href='/docs/hoon/reference/stdlib/4d/#last' title="Further trace"><code>++last</code></a>
1438+<a class="tooltip" href='/docs/hoon/reference/stdlib/4d/#lust' title="Detect new line"><code>++lust</code></a>
1439+
1440+### 4e: parsing (combinators)
1441+
1442+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#bend' title="Conditional composer"><code>++bend</code></a>
1443+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#comp' title="Arbitrary compose"><code>++comp</code></a>
1444+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#fail' title="Never parse"><code>++fail</code></a>
1445+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#glue' title="Skip delimiter"><code>++glue</code></a>
1446+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#less' title="Parse unless"><code>++less</code></a>
1447+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#pfix' title="Discard first rule"><code>++pfix</code></a>
1448+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#plug' title="Parse to tuple"><code>++plug</code></a>
1449+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#pose' title="Parse options"><code>++pose</code></a>
1450+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#sfix' title="Discard second rule"><code>++sfix</code></a>
1451+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#simu' title="First and second"><code>++simu</code></a>
1452+
1453+### 4f: parsing (rule builders)
1454+
1455+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#bass' title="Parser modifier (LSB-ordered ++list as atom of ++base)"><code>++bass</code></a>
1456+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#boss' title="Parser modifier: LSB"><code>++boss</code></a>
1457+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#cold' title="Replace with constant"><code>++cold</code></a>
1458+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#cook' title="Apply gate"><code>++cook</code></a>
1459+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#easy' title="Always parse"><code>++easy</code></a>
1460+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#full' title="Parse to end"><code>++full</code></a>
1461+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#funk' title="Add to tape"><code>++funk</code></a>
1462+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#here' title="Place-based apply"><code>++here</code></a>
1463+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#ifix' title="Infix"><code>++ifix</code></a>
1464+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#jest' title="Match a cord"><code>++jest</code></a>
1465+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#just' title="Match a single character"><code>++just</code></a>
1466+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#knee' title="Recursive parsers"><code>++knee</code></a>
1467+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#mask' title="Match character"><code>++mask</code></a>
1468+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#more' title="Parse list with delimiter"><code>++more</code></a>
1469+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#most' title="Parse list of at least one match"><code>++most</code></a>
1470+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#next' title="Consume character"><code>++next</code></a>
1471+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#plus' title="List of at least one match"><code>++plus</code></a>
1472+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#sear' title="Conditional ++cook"><code>++sear</code></a>
1473+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#shim' title="Match character within range"><code>++shim</code></a>
1474+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#slug' title="Use gate to parse delimited list"><code>++slug</code></a>
1475+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stag' title="Add label"><code>++stag</code></a>
1476+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#star' title="Produce list of matches"><code>++star</code></a>
1477+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stet' title="Add faces to range-parser pairs in list"><code>++stet</code></a>
1478+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stew' title="Switch by first"><code>++stew</code></a>
1479+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stir' title="Parse repeatedly"><code>++stir</code></a>
1480+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stun' title="Parse several times"><code>++stun</code></a>
1481+
1482+### 4g: parsing (outside caller)
1483+
1484+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rash' title="Parse or crash"><code>++rash</code></a>
1485+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rush' title="Parse or null"><code>++rush</code></a>
1486+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rust' title="Parse tape or null"><code>++rust</code></a>
1487+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#scan' title="Parse tape or crash"><code>++scan</code></a>
1488+
1489+### 4h: parsing (ascii glyphs)
1490+
1491+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ace' title="Parse space"><code>++ace</code></a>
1492+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#bar' title="Parse | (bar)"><code>++bar</code></a>
1493+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#bas' title="Parse \ (bas)"><code>++bas</code></a>
1494+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#buc' title="Parse $ (buc)"><code>++buc</code></a>
1495+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#cab' title="Parse _ (cab)"><code>++cab</code></a>
1496+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#cen' title="Parse % (cen)"><code>++cen</code></a>
1497+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#col' title="Parse : (col)"><code>++col</code></a>
1498+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#com' title="Parse , (comma)"><code>++com</code></a>
1499+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#doq' title="Parse double quote"><code>++doq</code></a>
1500+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#dot' title="Parse period"><code>++dot</code></a>
1501+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#fas' title="Parse / (fas)"><code>++fas</code></a>
1502+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#gal' title="Parse < (gal)"><code>++gal</code></a>
1503+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#gar' title="Parse > (gar)"><code>++gar</code></a>
1504+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#hax' title="Parse # (hax)"><code>++hax</code></a>
1505+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#hep' title="Parse - (hep)"><code>++hep</code></a>
1506+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#kel' title="Parse { (kel)"><code>++kel</code></a>
1507+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ker' title="Parse } (ker)"><code>++ker</code></a>
1508+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ket' title="Parse ^ (ket)"><code>++ket</code></a>
1509+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#lus' title="Parse + (lus)"><code>++lus</code></a>
1510+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pam' title="Parse & (pam)"><code>++pam</code></a>
1511+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pat' title="Parse @ (pat)"><code>++pat</code></a>
1512+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pel' title="Parse ( (pel)"><code>++pel</code></a>
1513+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#per' title="Parse ) (per)"><code>++per</code></a>
1514+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sel' title="Parse [ (sel)"><code>++sel</code></a>
1515+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sem' title="Parse ; (sem)"><code>++sem</code></a>
1516+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ser' title="Parse ] (ser)"><code>++ser</code></a>
1517+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sig' title="Parse ~ (sig)"><code>++sig</code></a>
1518+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#soq' title="Parse ' (soq)"><code>++soq</code></a>
1519+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tar' title="Parse * (tar)"><code>++tar</code></a>
1520+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tec' title="Parse ` (tec)"><code>++tec</code></a>
1521+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tis' title="Parse = (tis)"><code>++tis</code></a>
1522+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#wut' title="Parse ? (wut)"><code>++wut</code></a>
1523+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#zap' title="Parse ! (zap)"><code>++zap</code></a>
1524+
1525+### 4i: parsing (useful idioms)
1526+
1527+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#alf' title="Parse alphabetic characters"><code>++alf</code></a>
1528+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#aln' title="Parse alphanumeric characters"><code>++aln</code></a>
1529+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#alp' title="Parse alphanumeric characters and -"><code>++alp</code></a>
1530+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#bet' title="Parse hep and lus axis syntax"><code>++bet</code></a>
1531+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#bin' title="Binary to atom"><code>++bin</code></a>
1532+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#but' title="Parse binary digit"><code>++but</code></a>
1533+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#cit' title="Octal digit"><code>++cit</code></a>
1534+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dem' title="Decimal to atom"><code>++dem</code></a>
1535+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dit' title="Decimal digit"><code>++dit</code></a>
1536+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dog' title="Optional gap"><code>++dog</code></a>
1537+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#doh' title="@p separator"><code>++doh</code></a>
1538+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dun' title="-- to ~"><code>++dun</code></a>
1539+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#duz' title="== to ~"><code>++duz</code></a>
1540+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gah' title="New line or ''"><code>++gah</code></a>
1541+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gap' title="Plural whitespace"><code>++gap</code></a>
1542+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gaq' title="End of line"><code>++gaq</code></a>
1543+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gaw' title="Classic whitespace"><code>++gaw</code></a>
1544+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gay' title="Optional gap"><code>++gay</code></a>
1545+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gon' title="Parse long numbers"><code>++gon</code></a>
1546+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gul' title="Axis syntax < or >"><code>++gul</code></a>
1547+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hex' title="Hexadecimal to atom"><code>++hex</code></a>
1548+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hig' title="Parse single uppercase letter"><code>++hig</code></a>
1549+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hit' title="Parse single hexadecimal digit"><code>++hit</code></a>
1550+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#iny' title="Indentation block"><code>++iny</code></a>
1551+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#low' title="Parse lowercase letter"><code>++low</code></a>
1552+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#mes' title="Parse hexabyte"><code>++mes</code></a>
1553+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#nix' title="Parse letters and -"><code>++nix</code></a>
1554+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#nud' title="Parse numeric character"><code>++nud</code></a>
1555+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#prn' title="Parse any printable character"><code>++prn</code></a>
1556+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qit' title="Parse character to cord atom"><code>++qit</code></a>
1557+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qut' title="Parse cord"><code>++qut</code></a>
1558+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#soz' title="Parse triple single-quote"><code>++soz</code></a>
1559+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#sym' title="Term"><code>++sym</code></a>
1560+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#ven' title="Axis syntax parser"><code>++ven</code></a>
1561+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#vit' title="Parse base 64 digit"><code>++vit</code></a>
1562+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#vul' title="Comments to null"><code>++vul</code></a>
1563+
1564+### 4j: parsing (bases and base digits)
1565+
1566+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ab' title="Primitive parser engine"><code>++ab</code></a>
1567+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bix-ab' title="Parse hex pair"><code>++bix:ab</code></a>
1568+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hif-ab' title="Parse phonetic pair"><code>++hif:ab</code></a>
1569+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#huf-ab' title="Parse two phonetic pairs"><code>++huf:ab</code></a>
1570+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hyf-ab' title="Parse 8 phonetic bytes"><code>++hyf:ab</code></a>
1571+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pev-ab' title="Parse <=5 in base 32"><code>++pev:ab</code></a>
1572+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pew-ab' title="Parse <= 5 in base 64"><code>++pew:ab</code></a>
1573+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#piv-ab' title="Parse 5 digits in base 32"><code>++piv:ab</code></a>
1574+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#piw-ab' title="Parse 5 digits in base 64"><code>++piw:ab</code></a>
1575+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qeb-ab' title="Parse <=4 binary digits"><code>++qeb:ab</code></a>
1576+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qex-ab' title="Parse <=4 hexadecimal digits"><code>++qex:ab</code></a>
1577+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qib-ab' title="Parse 4 binary digits"><code>++qib:ab</code></a>
1578+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qix-ab' title="Parse 4 hexadecimal digits"><code>++qix:ab</code></a>
1579+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#seb-ab' title="Parse 1"><code>++seb:ab</code></a>
1580+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sed-ab' title="Parse non-zero decimal digit"><code>++sed:ab</code></a>
1581+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sev-ab' title="Parse non-zero base 32 digit"><code>++sev:ab</code></a>
1582+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sew-ab' title="Parse non-zero base 64 digit"><code>++sew:ab</code></a>
1583+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sex-ab' title="Parse nonzero hexadecimal digit"><code>++sex:ab</code></a>
1584+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sib-ab' title="Parse binary digit"><code>++sib:ab</code></a>
1585+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sid-ab' title="Parse decimal digit"><code>++sid:ab</code></a>
1586+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#siv-ab' title="Parse a base 32 digit"><code>++siv:ab</code></a>
1587+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#siw-ab' title="Parse a base 64 digit"><code>++siw:ab</code></a>
1588+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#six-ab' title="Parse a hexadecimal digit"><code>++six:ab</code></a>
1589+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sov-ab' title="Parse base 32 letter"><code>++sov:ab</code></a>
1590+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sow-ab' title="Parse base 64 letter/symbol"><code>++sow:ab</code></a>
1591+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sox-ab' title="Parse hexadecimal letter"><code>++sox:ab</code></a>
1592+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ted-ab' title="Parse decimal number with <= 3 digits"><code>++ted:ab</code></a>
1593+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tid-ab' title="Parse 3 decimal digits"><code>++tid:ab</code></a>
1594+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#til-ab' title="Parse 3 lowercase letters"><code>++til:ab</code></a>
1595+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tip-ab' title="Leading phonetic byte"><code>++tip:ab</code></a>
1596+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tiq-ab' title="Trailing phonetic syllable"><code>++tiq:ab</code></a>
1597+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#urs-ab' title="Parse span characters"><code>++urs:ab</code></a>
1598+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#urt-ab' title="Parse non-_ span"><code>++urt:ab</code></a>
1599+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#voy-ab' title="Parse bas, soq, or bix"><code>++voy:ab</code></a>
1600+
1601+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ag' title="Top-level atom parser engine"><code>++ag</code></a>
1602+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ape-ag' title="Parse 0 or rule"><code>++ape:ag</code></a>
1603+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bay-ag' title="Parses binary number"><code>++bay:ag</code></a>
1604+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bip-ag' title="Parse IPv6"><code>++bip:ag</code></a>
1605+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dem-ag' title="Parse decmal with dots"><code>++dem:ag</code></a>
1606+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dim-ag' title="Parse decimal number"><code>++dim:ag</code></a>
1607+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dum-ag' title="Parse decimal with leading zero"><code>++dum:ag</code></a>
1608+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#fed-ag' title="Parse @p"><code>++fed:ag</code></a>
1609+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hex-ag' title="Parse hexadecimal number"><code>++hex:ag</code></a>
1610+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#lip-ag' title="Parse IPv4 address"><code>++lip:ag</code></a>
1611+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#viz-ag' title="Parse base 32 digit with dot separators"><code>++viz:ag</code></a>
1612+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#vum-ag' title="Parse base 32 string"><code>++vum:ag</code></a>
1613+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#wiz-ag' title="Parse base 64 number"><code>++wiz:ag</code></a>
1614+
1615+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#mu' title="Core used to scramble 16-bit atoms"><code>++mu</code></a>
1616+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zag-mu' title="Add bottom into top"><code>++zag:mu</code></a>
1617+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zig-mu' title="Subtract bottom from top"><code>++zig:mu</code></a>
1618+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zug-mu' title="Concatenate into atom"><code>++zug:mu</code></a>
1619+
1620+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ne' title="Digit rendering engine"><code>++ne</code></a>
1621+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#d-ne' title="Render decimal"><code>++d:ne</code></a>
1622+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#v-ne' title="Render base 32"><code>++v:ne</code></a>
1623+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#w-ne' title="Render base 64 digit"><code>++w:ne</code></a>
1624+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#x-ne' title="Render hexadecimal digit as atom of ASCII byte value"><code>++x:ne</code></a>
1625+
1626+### 4k: parsing (atom printing)
1627+
1628+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#co' title="Literal rendering engine"><code>++co</code></a>
1629+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rear-co' title="Prepend and render atom as tape"><code>++rear:co</code></a>
1630+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rend-co' title="Render coin lot as tape"><code>++rend:co</code></a>
1631+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rent-co' title="Render coin lot as span"><code>++rent:co</code></a>
1632+
1633+### 4l: parsing (atom parsing)
1634+
1635+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#so' title="Coin parser engine"><code>++so</code></a>
1636+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#bisk-so' title="Parse aura-atom pair"><code>++bisk:so</code></a>
1637+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#crub-so' title="Parse @da, @dr, @p, @t"><code>++crub:so</code></a>
1638+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#nuck-so' title="Top-level coin parser"><code>++nuck:so</code></a>
1639+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#nusk-so' title="Parse coin literal with escapes"><code>++nusk:so</code></a>
1640+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#perd-so' title="Parses dime/tiple without standard prefixes"><code>++perd:so</code></a>
1641+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-so' title="Parse dime float"><code>++royl:so</code></a>
1642+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-cell-so' title="(Undocumented)"><code>++royl-cell:so</code></a>
1643+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#tash-so' title="Parse signed dime"><code>++tash:so</code></a>
1644+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#twid-so' title="Parse coins without ~ prefix"><code>++twid:so</code></a>
1645+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#zust-so' title="Parse prefixed dimes from IP, loobean, or floating point"><code>++zust:so</code></a>
1646+
1647+### 4m: parsing (formatting functions)
1648+
1649+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#scot' title="Render dime as cord"><code>++scot</code></a>
1650+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#scow' title="Render dime as tape"><code>++scow</code></a>
1651+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slat' title="Curried slaw"><code>++slat</code></a>
1652+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slav' title="Demand: parse cord with input aura"><code>++slav</code></a>
1653+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slaw' title="Parse cord to input aura"><code>++slaw</code></a>
1654+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slay' title="Parse cord to coin"><code>++slay</code></a>
1655+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#smyt' title="Render path as tank"><code>++smyt</code></a>
1656+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#spat' title="Render path as cord"><code>++spat</code></a>
1657+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#spud' title="Render path as tape"><code>++spud</code></a>
1658+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#stab' title="Parse cord to path"><code>++stab</code></a>
1659+
1660+### 4n: parsing (virtualization)
1661+
1662+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mack' title="Nock subject to unit"><code>++mack</code></a>
1663+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mink' title="Mock (virtual Nock) interpreter"><code>++mink</code></a>
1664+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mock' title="Compute formula on subject with hint"><code>++mock</code></a>
1665+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mong' title="Slam gate with sample"><code>++mong</code></a>
1666+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mook' title="Intelligently render crash annotation"><code>++mook</code></a>
1667+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mule' title="Typed virtual"><code>++mule</code></a>
1668+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mute' title="Untyped virtual"><code>++mute</code></a>
1669+
1670+### 4o: parsing (molds)
1671+
1672+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#abel' title="Compiler alias"><code>++abel</code></a>
1673+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#aura' title="'Type' of atom"><code>++aura</code></a>
1674+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#axis' title="Nock axis"><code>++axis</code></a>
1675+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#base' title="Base type"><code>++base</code></a>
1676+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#bean' title="Boolean"><code>++bean</code></a>
1677+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#beer' title="Tape builder"><code>++beer</code></a>
1678+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#beet' title="XML interpolation cases"><code>++beet</code></a>
1679+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#chum' title="Jet hint information"><code>++chum</code></a>
1680+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#coil' title="Tuple of core information"><code>++coil</code></a>
1681+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#foot' title="Cases of arms by variance model"><code>++foot</code></a>
1682+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#limb' title="Reference into subject by name/axis"><code>++limb</code></a>
1683+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#line' title="(Undocumented)"><code>++line</code></a>
1684+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#metl' title="(Undocumented)"><code>++metl</code></a>
1685+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#nock' title="Virtual machine (see Nock)"><code>++nock</code></a>
1686+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#noun' title="(Undocumented)"><code>++noun</code></a>
1687+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#null' title="(Undocumented)"><code>++null</code></a>
1688+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#port' title="(Undocumented)"><code>++port</code></a>
1689+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#span' title="ASCII atom"><code>++span</code></a>
1690+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tiki' title="(Undocumented)"><code>++tiki</code></a>
1691+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#toga' title="Tree of faces"><code>++toga</code></a>
1692+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tone'><code>++tone</code></a>
1693+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tuna' title="XML template tree"><code>++tuna</code></a>
1694+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tusk' title="List of expressions"><code>++tusk</code></a>
1695+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tyke' title="List of 'maybe' hoons"><code>++tyke</code></a>
1696+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#typo' title="Pointer for ++type"><code>++typo</code></a>
1697+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tyre' title="List, term hoon"><code>++tyre</code></a>
1698+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vase' title="Typed data"><code>++vase</code></a>
1699+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vise' title="Convert during reboot"><code>++vise</code></a>
1700+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#wing' title="Address in subject"><code>++wing</code></a>
1701+
1702+### 5a: compiler utilities
1703+
1704+<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/'>_(To be documented)_</a>
1705+
1706+### 5b: macro expansion
1707+
1708+<a class="tooltip" href='/docs/hoon/reference/stdlib/5b/'>_(To be documented)_</a>
1709+
1710+### 5c: compiler backend and prettyprinter
1711+
1712+<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/'>_(To be documented)_</a>
1713+
1714+### 5d: parser
1715+
1716+<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/'>_(To be documented)_</a>
1717+
1718+### 5e: caching compiler
1719+
1720+<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/'>_(To be documented)_</a>
1721+
1722+### 5f: molds and mold builders
1723+
1724+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#mane'><code>++mane</code></a>
1725+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#manx'><code>++manx</code></a>
1726+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#marl'><code>++marl</code></a>
1727+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#mars'><code>++mars</code></a>
1728+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#mart'><code>++mart</code></a>
1729+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#marx'><code>++marx</code></a>
1730+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pass'><code>++pass</code></a>
1731+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#ring'><code>++ring</code></a>
1732+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#time'><code>++time</code></a>
1733+
1734+### 5g: profiling support
1735+
1736+<a class="tooltip" href='/docs/hoon/reference/stdlib/5g/'>_(To be documented)_</a>
hoon/reference/stdlib/table-of-contents.mdnew file+1733
@@ -0,0 +1,1733 @@
1++++
2+title = "Table of Contents"
3+weight = 0
4+sort_by = "weight"
5+template = "doc.html"
6++++
7+
8+Documentation for the standard library.
9+
10+Can be navigated [alphabetically](#alphabetical) or [by section](#by-section).
11+
12+## Alphabetical
13+
14+### a
15+
16+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ab' title="Primitive parser engine"><code>++ab</code></a>
17+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#abs-fl' title="Absolute value"><code>++abs:fl</code></a>
18+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#abs-si' title="Absolute value (signed integer)"><code>++abs:si</code></a>
19+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#abel' title="Compiler alias"><code>++abel</code></a>
20+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ace' title="Parse space"><code>++ace</code></a>
21+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#add' title="Add"><code>++add</code></a>
22+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-ff' title="Add (floating point)"><code>++add:ff</code></a>
23+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-fl' title="Add (with exact/rounded flag)"><code>++add:fl</code></a>
24+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#add-ja' title="Prepend to list"><code>+-add:ja</code></a>
25+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rd' title="Add (double-precision float)"><code>++add:rd</code></a>
26+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rh' title="Add (half-precision float)"><code>++add:rh</code></a>
27+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rs' title="Add (single-precision float)"><code>++add:rs</code></a>
28+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rq' title="Add (quad-precision float)"><code>++add:rq</code></a>
29+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ag' title="Top-level atom parser engine"><code>++ag</code></a>
30+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#alf' title="Parse alphabetic characters"><code>++alf</code></a>
31+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#all-by' title="Logical AND (map and wet gate)"><code>+-all:by</code></a>
32+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#all-in' title="Logical AND (set and wet gate)"><code>+-all:in</code></a>
33+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#aln' title="Parse alphanumeric characters"><code>++aln</code></a>
34+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#alp' title="Parse alphanumeric characters and -"><code>++alp</code></a>
35+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#any-by' title="Logical OR (map and wet gate)"><code>+-any:by</code></a>
36+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#any-in' title="Logical OR (set and gate)"><code>+-any:in</code></a>
37+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#aor' title="Alphabetical order"><code>++aor</code></a>
38+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ape-ag' title="Parse 0 or rule"><code>++ape:ag</code></a>
39+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#apt-by' title="Check correctness (map)"><code>+-apt:by</code></a>
40+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#apt-in' title="Check correctness (set)"><code>+-apt:in</code></a>
41+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#at' title="(Undocumented)"><code>++at</code></a>
42+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#aura' title="'Type' of atom"><code>++aura</code></a>
43+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#axis' title="Nock axis"><code>++axis</code></a>
44+
45+### b
46+
47+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#bal-to' title="Balance queue"><code>+-bal:to</code></a>
48+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#bar' title="Parse | (bar)"><code>++bar</code></a>
49+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#bas' title="Parse \ (bas)"><code>++bas</code></a>
50+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#base' title="Base type"><code>++base</code></a>
51+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#bass' title="Parser modifier (LSB-ordered ++list as atom of ++base)"><code>++bass</code></a>
52+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bay-ag' title="Parses binary number"><code>++bay:ag</code></a>
53+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#bean' title="Boolean"><code>++bean</code></a>
54+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#beer' title="Tape builder"><code>++beer</code></a>
55+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#beet' title="XML interpolation cases"><code>++beet</code></a>
56+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#bend' title="Conditional composer"><code>++bend</code></a>
57+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#bet' title="Parse hep and lus axis syntax"><code>++bet</code></a>
58+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#bex' title="Binary exponent"><code>++bex</code></a>
59+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bif-ff' title="Converts from fn to @r"><code>++bif:ff</code></a>
60+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#bif-by' title="Bifurcate map"><code>+-bif:by</code></a>
61+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#bif-in' title="Bifurcate set"><code>+-bif:in</code></a>
62+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#biff' title="Unit as argument"><code>++biff</code></a>
63+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#bin' title="Binary to atom"><code>++bin</code></a>
64+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#bind' title="Non-unit function to unit, producing unit"><code>++bind</code></a>
65+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bip-ag' title="Parse IPv6"><code>++bip:ag</code></a>
66+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-ff' title="fn to @r with rounding"><code>++bit:ff</code></a>
67+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rd' title="fn to double-precision binary float"><code>++bit:rd</code></a>
68+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rh' title="fn to half-precision float"><code>++bit:rh</code></a>
69+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rs' title="fn to single-precision float"><code>++bit:rs</code></a>
70+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rq' title="fn to quad-precision float"><code>++bit:rq</code></a>
71+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bix-ab' title="Parse hex pair"><code>++bix:ab</code></a>
72+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#bisk-so' title="Parse aura-atom pair"><code>++bisk:so</code></a>
73+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#bloq' title="Blocksize"><code>++bloq</code></a>
74+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#bond' title="Replace null"><code>++bond</code></a>
75+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#boss' title="Parser modifier: LSB"><code>++boss</code></a>
76+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#both' title="Group unit values into pair"><code>++both</code></a>
77+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#buc' title="Parse $ (buc)"><code>++buc</code></a>
78+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#but' title="Parse binary digit"><code>++but</code></a>
79+
80+### c
81+
82+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#cab' title="Parse _ (cab)"><code>++cab</code></a>
83+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#can' title="Assemble"><code>++can</code></a>
84+<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#cap' title="Tree head"><code>++cap</code></a>
85+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#cass' title="To lowercase"><code>++cass</code></a>
86+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#cat' title="Concatenate"><code>++cat</code></a>
87+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#cen' title="Parse % (cen)"><code>++cen</code></a>
88+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#cet-yo' title="Days in a century"><code>++cet:yo</code></a>
89+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#char' title="Character"><code>++char</code></a>
90+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#chum' title="Jet hint information"><code>++chum</code></a>
91+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#cit' title="Octal digit"><code>++cit</code></a>
92+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#clap' title="Apply function to two units"><code>++clap</code></a>
93+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#cmp-si' title="Compare (signed integer)"><code>++cmp:si</code></a>
94+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#co' title="Literal rendering engine"><code>++co</code></a>
95+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#coil' title="Tuple of core information"><code>++coil</code></a>
96+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#coin' title="Noun-literal syntax cases"><code>++coin</code></a>
97+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#col' title="Parse : (col)"><code>++col</code></a>
98+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#cold' title="Replace with constant"><code>++cold</code></a>
99+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#com' title="Parse , (com)"><code>++com</code></a>
100+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#comp' title="Arbitrary compose"><code>++comp</code></a>
101+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#con' title="Binary OR"><code>++con</code></a>
102+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#cook' title="Apply gate"><code>++cook</code></a>
103+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#cord' title="UTF-8 text"><code>++cord</code></a>
104+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#cork' title="Compose forward"><code>++cork</code></a>
105+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#corl' title="Compose backward"><code>++corl</code></a>
106+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#crip' title="Tape to cord"><code>++crip</code></a>
107+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#crub-so' title="Parse @da, @dr, @p, @t"><code>++crub:so</code></a>
108+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#cue' title="Unpack atom to noun"><code>++cue</code></a>
109+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#curr' title="Right-curry a gate"><code>++curr</code></a>
110+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#cury' title="Curry left a gate"><code>++cury</code></a>
111+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#cuss' title="To uppercase"><code>++cuss</code></a>
112+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#cut' title="Slice"><code>++cut</code></a>
113+
114+### d
115+
116+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#d-ne' title="Render decimal"><code>++d:ne</code></a>
117+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#date' title="Point in time"><code>++date</code></a>
118+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#day-yo' title="Seconds in day"><code>++day:yo</code></a>
119+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#dec' title="Decrement"><code>++dec</code></a>
120+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#def-by' title="Difference (map)"><code>+-def:by</code></a>
121+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#del-by' title="Delete (map)"><code>+-del:by</code></a>
122+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#del-in' title="Delete (set)"><code>+-del:in</code></a>
123+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#del-ju' title="Delete (jug)"><code>+-del:ju</code></a>
124+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dem' title="Decimal to atom"><code>++dem</code></a>
125+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dem-ag' title="Parse decmal with dots"><code>++dem:ag</code></a>
126+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#den-fl' title="Denormalizes (floating point)"><code>++den:fl</code></a>
127+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#dep-by' title="Difference as patch (map)"><code>+-dep:by</code></a>
128+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#dep-to' title="Maximum depth (queue)"><code>+-dep:to</code></a>
129+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#dif-fe' title="Difference between atoms (modular basis)"><code>++dif:fe</code></a>
130+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dif-fo' title='Subtraction (modular base)'><code>++dif:fo</code></a>
131+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#dif-in' title='Difference (set)'><code>+-dif:in</code></a>
132+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dif-si' title="Subtraction (signed integer)"><code>++dif:si</code></a>
133+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#dig-by' title="Address of key (map)"><code>+-dig:by</code></a>
134+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#dig-in' title="Address of a in set"><code>+-dig:in</code></a>
135+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dim-ag' title="Parse decimal number"><code>++dim:ag</code></a>
136+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#dime' title="Aura-atom pair"><code>++dime</code></a>
137+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#din-re' title="(Undocumented)"><code>++din:re</code></a>
138+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#dis' title="Binary AND (atoms)"><code>++dis</code></a>
139+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dit' title="Decimal digit"><code>++dit</code></a>
140+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#div' title="Divide"><code>++div</code></a>
141+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-ff' title="Divide (IEEE float)"><code>++div:ff</code></a>
142+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-fl' title="Divide (signed and unsigned integer cell)"><code>++div:fl</code></a>
143+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rd' title="Double precision float"><code>++div:rd</code></a>
144+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rh' title="Divide (half-precision float)"><code>++div:rh</code></a>
145+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rs' title="Divide (single-precision float)"><code>++div:rs</code></a>
146+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rq' title="Divide (quad-precision float)"><code>++div:rq</code></a>
147+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dog' title="Optional gap"><code>++dog</code></a>
148+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#doh' title="@p separator"><code>++doh</code></a>
149+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#doq' title="Parse double quote"><code>++doq</code></a>
150+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#dor' title="Numeric order"><code>++dor</code></a>
151+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#dot' title="Parse period"><code>++dot</code></a>
152+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-ff' title="@r to decimal float"><code>++drg:ff</code></a>
153+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-fl' title="Get printable decimal (signed and unsigned integer cell)"><code>++drg:fl</code></a>
154+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rd' title="@rd to decimal float"><code>++drg:rd</code></a>
155+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rh' title="@rh to decimal float"><code>++drg:rh</code></a>
156+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rs' title="@rs to decimal float"><code>++drg:rs</code></a>
157+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rq' title="@rq to decimal float"><code>++drg:rq</code></a>
158+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#drop' title="Unit to list"><code>++drop</code></a>
159+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dul-si' title="Modulus (signed integer)"><code>++dul:si</code></a>
160+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dum-ag' title="Parse decimal with leading zero"><code>++dum:ag</code></a>
161+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dun' title="-- to ~"><code>++dun</code></a>
162+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#duz' title="== to ~"><code>++duz</code></a>
163+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#dvr' title="Divide (with remainder)"><code>++dvr</code></a>
164+
165+### e
166+
167+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ead-fl' title="Exact add"><code>++ead:fl</code></a>
168+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#each' title="Mold of fork between two types"><code>++each</code></a>
169+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#easy' title="Always parse"><code>++easy</code></a>
170+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#edge' title="Parsing location metadata"><code>++edge</code></a>
171+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#egcd' title="Extended Euclidean algorithm"><code>++egcd</code></a>
172+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emn-fl' title="Minimum exponent"><code>++emn:fl</code></a>
173+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emu-fl' title="Exact multiply"><code>++emu:fl</code></a>
174+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emx-fl' title="Maximum exponent"><code>++emx:fl</code></a>
175+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#end' title="Tail"><code>++end</code></a>
176+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-ff' title="Equals (IEEE float)"><code>++equ:ff</code></a>
177+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-fl' title="Equals (signed and unsigned integer cell)"><code>++equ:fl</code></a>
178+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rd' title="Equals (double-precision float)"><code>++equ:rd</code></a>
179+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rh' title="Equals (half-precision float)"><code>++equ:rh</code></a>
180+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rs' title="Equals (single-precision float)"><code>++equ:rs</code></a>
181+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rq' title="Equals (quad-precision float)"><code>++equ:rq</code></a>
182+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#era-yo' title="Leap-year period"><code>++era:yo</code></a>
183+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-ff' title="Get exponent (IEEE float)"><code>++exp:ff</code></a>
184+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#exp-fo' title="Exponent (modular base)"><code>++exp:fo</code></a>
185+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rd' title="Exponent (@rd)"><code>++exp:rd</code></a>
186+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rh' title="Exponent (half-precision float)"><code>++exp:rh</code></a>
187+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rs' title="Exponent (@rs)"><code>++exp:rs</code></a>
188+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rq' title="Exponent (quad-precision float)"><code>++exp:rq</code></a>
189+
190+### f
191+
192+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#fail' title="Never parse"><code>++fail</code></a>
193+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#fall' title="Give unit a default value"><code>++fall</code></a>
194+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#fand' title="All indices in list"><code>++fand</code></a>
195+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#fas' title="Parse / (fas)"><code>++fas</code></a>
196+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#fe' title="Modulo bloq"><code>++fe</code></a>
197+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#fed-ag' title="Parse @p"><code>++fed:ag</code></a>
198+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feen-ob' title="Conceal structure v2"><code>++feen:ob</code></a>
199+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#fend-ob' title="Restore structure v2"><code>++fend:ob</code></a>
200+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#fice-ob' title="Feistel-like cipher"><code>++fice:ob</code></a>
201+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#fil' title="Fill bloqstream"><code>++fil</code></a>
202+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#find' title="First index in list"><code>++find</code></a>
203+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#fit-re' title="Fit on one line test"><code>++fit:re</code></a>
204+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fli-fl' title="Flip sign"><code>++fli:fl</code></a>
205+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#flop' title="Reverse list"><code>++flop</code></a>
206+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-ff' title="Fused multiply-add (IEEE float)"><code>++fma:ff</code></a>
207+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-fl' title="Fused multiply-add"><code>++fma:fl</code></a>
208+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rd' title="Fused multiply-add (@rd)"><code>++fma:rd</code></a>
209+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rh' title="Fused multiply-add (half-precision float)"><code>++fma:rh</code></a>
210+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rs' title="Fused multiply-add (single-precision float)"><code>++fma:rs</code></a>
211+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rq' title="Fused multiply-add (quad-precision float)"><code>++fma:rq</code></a>
212+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#fnv' title="FNV scrambler"><code>++fnv</code></a>
213+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fo' title="Modulo prime"><code>++fo</code></a>
214+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#foot' title="Cases of arms by variance model"><code>++foot</code></a>
215+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fos-rh' title="@rs to @rh"><code>++fos:rh</code></a>
216+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fra-fo' title="Divide (modular base)"><code>++fra:fo</code></a>
217+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fra-si' title="Divide (signed integer)"><code>++fra:si</code></a>
218+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#full' title="Parse to end"><code>++full</code></a>
219+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#funk' title="Add to tape"><code>++funk</code></a>
220+
221+### g
222+
223+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gah' title="New line or ''"><code>++gah</code></a>
224+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#gal' title="Parse < (gal)"><code>++gal</code></a>
225+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gap' title="Plural whitespace"><code>++gap</code></a>
226+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gaq' title="End of line"><code>++gaq</code></a>
227+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#gar' title="Parse > (gar)"><code>++gar</code></a>
228+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#gas-by' title="Concatenate (map)"><code>+-gas:by</code></a>
229+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#gas-in' title="Concatenate (set)"><code>+-gas:in</code></a>
230+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#gas-to' title="Push list into queue"><code>+-gas:to</code></a>
231+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#gate' title="Function"><code>++gate</code></a>
232+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gaw' title="Classic whitespace"><code>++gaw</code></a>
233+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gay' title="Optional gap"><code>++gay</code></a>
234+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#get-by' title="Grab unit value"><code>+-get:by</code></a>
235+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#get-ja' title="Grab value by key"><code>+-get:ja</code></a>
236+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#get-ju' title="Retrieve set"><code>+-get:ju</code></a>
237+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#get-to' title="Head-tail pair"><code>+-get:to</code></a>
238+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#glue' title="Skip delimiter"><code>++glue</code></a>
239+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gon' title="Parse long numbers"><code>++gon</code></a>
240+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#gor' title="Hash order"><code>++gor</code></a>
241+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#got-by' title="Assert for value (map)"><code>+-got:by</code></a>
242+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-ff' title="Decimal float to @r"><code>++grd:ff</code></a>
243+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-fl' title="Decimal to float"><code>++grd:fl</code></a>
244+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rd' title="Decimal float to @rd"><code>++grd:rd</code></a>
245+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rh' title="Decimal float to @rh"><code>++grd:rh</code></a>
246+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rs' title="Decimal float to @rs"><code>++grd:rs</code></a>
247+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rq' title="Decimal float to @rq"><code>++grd:rq</code></a>
248+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#gte' title="Greater than / equal"><code>++gte</code></a>
249+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-ff' title="Greater than / equal (IEEE float)"><code>++gte:ff</code></a>
250+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-fl' title="Greater than / equal (producing flag)"><code>++gte:fl</code></a>
251+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rd' title="Greater than / equal (double-precision float)"><code>++gte:rd</code></a>
252+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rh' title="Greater than / equal (half-precision float)"><code>++gte:rh</code></a>
253+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rs' title="Greater than / equal (single-precision float)"><code>++gte:rs</code></a>
254+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rq' title="Greater than / equal (quad-precision float)"><code>++gte:rq</code></a>
255+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#gth' title="Greater than"><code>++gth</code></a>
256+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-ff' title="Greater than (IEEE float)"><code>++gth:ff</code></a>
257+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-fl' title="Greater than (producing flag)"><code>++gth:fl</code></a>
258+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rd' title="Greater than (double-precision float)"><code>++gth:rd</code></a>
259+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rh' title="Greater than (half-precision float)"><code>++gth:rh</code></a>
260+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rs' title="Greater than (single-precision float)"><code>++gth:rs</code></a>
261+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rq' title="Greater than (quad-precision float)"><code>++gth:rq</code></a>
262+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gul' title="Axis syntax < or >"><code>++gul</code></a>
263+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#gulf' title="List from range"><code>++gulf</code></a>
264+
265+### h
266+
267+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#hair' title="Parsing line and column"><code>++hair</code></a>
268+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#hard' title="Force remold"><code>++hard</code></a>
269+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#has-by' title="Key existence check (map)"><code>+-has:by</code></a>
270+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#has-in' title="Key existence check (set)"><code>+-has:in</code></a>
271+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#has-ju' title="Check contents (jug)"><code>+-has:ju</code></a>
272+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#hax' title="Parse # (hax)"><code>++hax</code></a>
273+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#head' title="Get head of cell"><code>++head</code></a>
274+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#here' title="Place-based apply"><code>++here</code></a>
275+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#hep' title="Parse - (hep)"><code>++hep</code></a>
276+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hex' title="Hexadecimal to atom"><code>++hex</code></a>
277+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hex-ag' title="Parse hexadecimal number"><code>++hex:ag</code></a>
278+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hif-ab' title="Parse phonetic pair"><code>++hif:ab</code></a>
279+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hig' title="Parse single uppercase letter"><code>++hig</code></a>
280+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hit' title="Parse single hexadecimal digit"><code>++hit</code></a>
281+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#homo' title="Homogenize list"><code>++homo</code></a>
282+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#hor' title="Horizontal hash order"><code>++hor</code></a>
283+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#hor-yo' title="Seconds in hour"><code>++hor:yo</code></a>
284+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#huf-ab' title="Parse two phonetic pairs"><code>++huf:ab</code></a>
285+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hyf-ab' title="Parse 8 phonetic bytes"><code>++hyf:ab</code></a>
286+
287+### i
288+
289+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ibl-fl' title="Integer binary logarithm"><code>++ibl:fl</code></a>
290+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#ifix' title="Infix"><code>++ifix</code></a>
291+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#ind-po' title="Parse suffix"><code>++ind:po</code></a>
292+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#ins-po' title="Parse prefix"><code>++ins:po</code></a>
293+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#int-by' title="Intersection (map)"><code>+-int:by</code></a>
294+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#int-in' title="Intersection (set)"><code>+-int:in</code></a>
295+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#inv-fe' title="Inverse order of modular field"><code>++inv:fe</code></a>
296+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#inv-fl' title="Inverse"><code>++inv:fl</code></a>
297+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#inv-fo' title="Inverse (signed modulus)"><code>++inv:fo</code></a>
298+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#iny' title="Indentation block"><code>++iny</code></a>
299+
300+### j
301+
302+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#ja' title="Jar engine"><code>++ja</code></a>
303+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#jam' title="Pack noun to atom"><code>++jam</code></a>
304+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#jar' title="Mold generator (jar)"><code>++jar</code></a>
305+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#jes-yo' title="Maximum 64-bit timestamp"><code>++jes:yo</code></a>
306+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#jest' title="Match a cord"><code>++jest</code></a>
307+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#join' title="Add separator between list elements"><code>++join</code></a>
308+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#ju' title="Jug operations"><code>++ju</code></a>
309+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#jug' title="Mold generator (jug)"><code>++jug</code></a>
310+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#just' title="Match a single character"><code>++just</code></a>
311+
312+### k
313+
314+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#kel' title="Parse { (kel)"><code>++kel</code></a>
315+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ker' title="Parse } (ker)"><code>++ker</code></a>
316+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ket' title="Parse ^ (ket)"><code>++ket</code></a>
317+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#key-by' title="Set of keys"><code>++key:by</code></a>
318+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#knee' title="Recursive parsers"><code>++knee</code></a>
319+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#knot' title="Atom type of ASCII characters"><code>++knot</code></a>
320+
321+### l
322+
323+<a class="tooltip" href='/docs/hoon/reference/stdlib/4d/#last' title="Further trace"><code>++last</code></a>
324+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#le-nl' title="Construct list from null-terminated noun"><code>++le:nl</code></a>
325+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#lent' title="List length"><code>++lent</code></a>
326+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#levy' title="Logical AND on list"><code>++levy</code></a>
327+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lfe-fl' title="Maximum"><code>++lfe:fl</code></a>
328+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lfn-fl' title="Largest normal float"><code>++lfn:fl</code></a>
329+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#lien' title="Logical OR on list"><code>++lien</code></a>
330+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#lift' title="Curried bind"><code>++lift</code></a>
331+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#like' title="Generic edge"><code>++like</code></a>
332+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#limb' title="Reference into subject by name/axis"><code>++limb</code></a>
333+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#limo' title="Construct list from null-terminated tuple"><code>++limo</code></a>
334+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#line' title="(Undocumented)"><code>++line</code></a>
335+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#lip-ag' title="Parse IPv4 address"><code>++lip:ag</code></a>
336+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#list' title="Mold constructor (list)"><code>++list</code></a>
337+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#lone' title="Mold generator (face on mold)"><code>++lone</code></a>
338+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#lor' title="Leg order"><code>++lor</code></a>
339+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#low' title="Parse lowercase letter"><code>++low</code></a>
340+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#lsh' title="Left-shift"><code>++lsh</code></a>
341+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#lte' title="Less than / equal (atom)"><code>++lte</code></a>
342+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-ff' title="Less than / equal (IEEE float)"><code>++lte:ff</code></a>
343+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-fl' title="Less than / equal (producing flag)"><code>++lte:fl</code></a>
344+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rd' title="Less than / equal (double-precision float)"><code>++lte:rd</code></a>
345+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rh' title="Less than / equal (half-precision float)"><code>++lte:rh</code></a>
346+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rs' title="Less than / equal (single-precision float)"><code>++lte:rs</code></a>
347+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rq' title="Less than / equal (quad-precision float)"><code>++lte:rq</code></a>
348+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#lth' title="Less than (atom)"><code>++lth</code></a>
349+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-ff' title="Less than (IEEE float)"><code>++lth:ff</code></a>
350+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-fl' title="Less than (signed and unsigned integer cell)"><code>++lth:fl</code></a>
351+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rd' title="Less than (double-precision float)"><code>++lth:rd</code></a>
352+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rh' title="Less than (half-precision float)"><code>++lth:rh</code></a>
353+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rs' title="Less than (single-precision float)"><code>++lth:rs</code></a>
354+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rq' title="Less than (quad-precision float)"><code>++lth:rq</code></a>
355+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lug-fl' title="Central rounding mechanism"><code>++lug:fl</code></a>
356+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#lus' title="Parse + (lus)"><code>++lus</code></a>
357+<a class="tooltip" href='/docs/hoon/reference/stdlib/4d/#lust' title="Detect new line"><code>++lust</code></a>
358+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#less' title="Parse unless"><code>++less</code></a>
359+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#ly' title="List from raw noun"><code>++ly</code></a>
360+
361+### m
362+
363+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rd' title="Initialize ff (rd core)"><code>++ma:rd</code></a>
364+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rh' title="Initialize ff (rh core)"><code>++ma:rh</code></a>
365+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rs' title="Initialize ff (rs core)"><code>++ma:rs</code></a>
366+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rq' title="Initialize ff (rq core)"><code>++ma:rq</code></a>
367+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mack' title="Nock subject to unit"><code>++mack</code></a>
368+<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#malt' title="Map from list"><code>++malt</code></a>
369+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#map' title="Mold generator (map)"><code>++map</code></a>
370+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#mar-by' title="Assert and add (map)"><code>+-mar:by</code></a>
371+<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#mas' title="Address within head/tail"><code>++mas</code></a>
372+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#mask' title="Match character"><code>++mask</code></a>
373+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#mat' title="Length-encode"><code>++mat</code></a>
374+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#mate' title="Choose"><code>++mate</code></a>
375+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#max' title="Maximum"><code>++max</code></a>
376+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#me-ff' title="Minimum exponent of ff"><code>++me:ff</code></a>
377+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#mean' title="Crash and printf"><code>++mean</code></a>
378+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#mes' title="Parse hexabyte"><code>++mes</code></a>
379+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#mesc' title="Escape special characters"><code>++mesc</code></a>
380+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#met' title="Measure"><code>++met</code></a>
381+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#metl' title="(Undocumented)"><code>++metl</code></a>
382+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#min' title="Minimum (atom)"><code>++min</code></a>
383+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mink' title="Mock (virtual Nock) interpreter"><code>++mink</code></a>
384+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#mit-yo' title="Seconds in minute"><code>++mit:yo</code></a>
385+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#mix' title="Binary XOR (atom)"><code>++mix</code></a>
386+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mock' title="Compute formula on subject with hint"><code>++mock</code></a>
387+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#mod' title="Modulus (atom)"><code>++mod</code></a>
388+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#moh-yo' title="Days in month"><code>++moh:yo</code></a>
389+<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#molt' title="Map from pair list"><code>++molt</code></a>
390+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mong' title="Slam gate with sample"><code>++mong</code></a>
391+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mook' title="Intelligently render crash annotation"><code>++mook</code></a>
392+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#more' title="Parse list with delimiter"><code>++more</code></a>
393+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#most' title="Parse list of at least one match"><code>++most</code></a>
394+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#moy-yo' title="Days in months of leap-year"><code>++moy:yo</code></a>
395+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#mu' title="Core used to scramble 16-bit atoms"><code>++mu</code></a>
396+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#mug' title="FNV-1a scrambler"><code>++mug</code></a>
397+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#muk' title="Standard MurmurHash3"><code>++muk</code></a>
398+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#mul' title="Multiply (atom)"><code>++mul</code></a>
399+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-ff' title="Multiply (IEEE float)"><code>++mul:ff</code></a>
400+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-fl' title="Multiply (signed and unsigned integer cell)"><code>++mul:fl</code></a>
401+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rd' title="Multiply (double-precision float)"><code>++mul:rd</code></a>
402+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rh' title="Multiply (quad-precision float)"><code>++mul:rh</code></a>
403+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rs' title="Multiply (single-precision float)"><code>++mul:rs</code></a>
404+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rq' title="Multiply (quad-precision float)"><code>++mul:rq</code></a>
405+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mule' title="Typed virtual"><code>++mule</code></a>
406+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mute' title="Untyped virtual"><code>++mute</code></a>
407+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#mum' title="31-bit MurmurHash3 scrambler"><code>++mum</code></a>
408+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#murn' title="Maybe transform"><code>++murn</code></a>
409+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#my' title="Map from raw noun"><code>++my</code></a>
410+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#my-nl' title="Construct map from null-terminated noun"><code>++my:nl</code></a>
411+
412+### n
413+
414+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#nail' title="Location, remainder of parsed text"><code>++nail</code></a>
415+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#nap-to' title="Remove head of queue"><code>+-nap:to</code></a>
416+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ne' title="Digit rendering engine"><code>++ne</code></a>
417+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ned-fl' title="Require float"><code>++ned:fl</code></a>
418+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#need' title="Unwrap unit"><code>++need</code></a>
419+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#net-fe' title="Flip endianness"><code>++net:fe</code></a>
420+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#new-si' title="Atom to @s"><code>++new:si</code></a>
421+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#next' title="Consume character"><code>++next</code></a>
422+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#nip-to' title="Remove root of queue"><code>+-nip:to</code></a>
423+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#nix' title="Parse letters and -"><code>++nix</code></a>
424+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#nl' title="Noun to container operations"><code>++nl</code></a>
425+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#nock' title="Virtual machine (see Nock)"><code>++nock</code></a>
426+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#not' title="Binary NOT (atom)"><code>++not</code></a>
427+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#noun' title="(Undocumented)"><code>++noun</code></a>
428+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#nuck-so' title="Top-level coin parser"><code>++nuck:so</code></a>
429+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#nud' title="Parse numeric character"><code>++nud</code></a>
430+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#null' title="(Undocumented)"><code>++null</code></a>
431+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#nusk-so' title="Parse coin literal with escapes"><code>++nusk:so</code></a>
432+
433+### o
434+
435+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#ob' title="Reversible scrambling v2"><code>++ob</code></a>
436+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#og' title="Container arm for SHA-256 powered RNG"><code>++og</code></a>
437+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#old-si' title="Sign and absolute value"><code>++old:si</code></a>
438+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#oust' title="Remove from list"><code>++oust</code></a>
439+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#out-fe' title="Maximum integer value"><code>++out:fe</code></a>
440+
441+### p
442+
443+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#pa-ff' title="Initialize fl from ff core"><code>++pa:ff</code></a>
444+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#pair' title="Mold of pair of types"><code>++pair</code></a>
445+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pam' title="Parse & (pam)"><code>++pam</code></a>
446+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pat' title="Parse @ (pat)"><code>++pat</code></a>
447+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#path' title="Filesystem path"><code>++path</code></a>
448+<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#peg' title="Address within address"><code>++peg</code></a>
449+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pel' title="Parse ( (pel)"><code>++pel</code></a>
450+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#per' title="Parse ) (per)"><code>++per</code></a>
451+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#perd-so' title="Parses dime/tiple without standard prefixes"><code>++perd:so</code></a>
452+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pev-ab' title="Parse <=5 in base 32"><code>++pev:ab</code></a>
453+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pew-ab' title="Parse <= 5 in base 64"><code>++pew:ab</code></a>
454+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#pfix' title="Discard first rule"><code>++pfix</code></a>
455+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#pint' title="Parsing range"><code>++pint</code></a>
456+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#piv-ab' title="Parse 5 digits in base 32"><code>++piv:ab</code></a>
457+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#piw-ab' title="Parse 5 digits in base 64"><code>++piw:ab</code></a>
458+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#plug' title="Parse to tuple"><code>++plug</code></a>
459+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#plus' title="List of at least one match"><code>++plus</code></a>
460+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#po' title="Phonetic base"><code>++po</code></a>
461+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#pole' title="Mold generator of faceless list"><code>++pole</code></a>
462+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#port' title="(Undocumented)"><code>++port</code></a>
463+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#pose' title="Parse options"><code>++pose</code></a>
464+<a class="tooltip" href='/docs/hoon/reference/stdlib/2g/#pow' title="Computes a to the power of b"><code>++pow</code></a>
465+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#prc-fl' title="Force precision of 2 or greater (floating point)"><code>++prc:fl</code></a>
466+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#prn' title="Parse any printable character"><code>++prn</code></a>
467+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#pro-fo' title="Multiplies b and c modulo a"><code>++pro:fo</code></a>
468+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#pro-si' title="Multiply to signed integer"><code>++pro:si</code></a>
469+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#put-by' title="Add key-value pair (map)"><code>+-put:by</code></a>
470+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#put-in' title="Put b in a (set)"><code>+-put:in</code></a>
471+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#put-ju' title="Add key-set pair (jar)"><code>+-put:ju</code></a>
472+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#put-to' title="Insert into queue"><code>+-put:to</code></a>
473+
474+### q
475+
476+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#qad-yo' title="Seconds in 4 years"><code>++qad:yo</code></a>
477+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qeb-ab' title="Parse <=4 binary digits"><code>++qeb:ab</code></a>
478+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#qeu' title="Mold generator (queue)"><code>++qeu</code></a>
479+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qex-ab' title="Parse <=4 hexadecimal digits"><code>++qex:ab</code></a>
480+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qib-ab' title="Parse 4 binary digits"><code>++qib:ab</code></a>
481+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qit' title="Parse character to cord atom"><code>++qit</code></a>
482+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qix-ab' title="Parse 4 hexadecimal digits"><code>++qix:ab</code></a>
483+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#quip' title="Mold generator (tuple of list and type)"><code>++quip</code></a>
484+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qut' title="Parse cord"><code>++qut</code></a>
485+
486+### r
487+
488+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#r-at' title="(Undocumented)"><code>++r:at</code></a>
489+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#rad-og' title="Random in range"><code>++rad:og</code></a>
490+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#rads-og' title="Random continuation"><code>++rads:og</code></a>
491+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#raku-ob' title="Key list"><code>++raku:ob</code></a>
492+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#ram-re' title="Flatten tank to tape"><code>++ram:re</code></a>
493+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rap' title="Assemble non-zero"><code>++rap</code></a>
494+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rash' title="Parse or crash"><code>++rash</code></a>
495+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rau-fl' title="Various roundings (floating point)"><code>++rau:fl</code></a>
496+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#raw-og' title="Random bits"><code>++raw:og</code></a>
497+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#raws-og' title="Random bits continuation"><code>++raws:og</code></a>
498+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#re' title="Pretty-printing engine (tank)"><code>++re</code></a>
499+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rear-co' title="Prepend and render atom as tape"><code>++rear:co</code></a>
500+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#reap' title="Replicate (list)"><code>++reap</code></a>
501+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#reel' title="Right fold (list)"><code>++reel</code></a>
502+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#rem-si' title="Remainder (signed integer)"><code>++rem:si</code></a>
503+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rend-co' title="Render coin lot as tape"><code>++rend:co</code></a>
504+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rent-co' title="Render coin lot as span"><code>++rent:co</code></a>
505+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rep' title="Assemble single"><code>++rep</code></a>
506+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rep-by' title="Replace by product (map)"><code>+-rep:by</code></a>
507+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#rep-in' title="Accumulate elements (set)"><code>+-rep:in</code></a>
508+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rf-at' title="(Undocumented)"><code>++rf:at</code></a>
509+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rib-by' title="Replace values with accumulator (map)"><code>+-rib:by</code></a>
510+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#rig-re' title="Wrap tape in / (tank)"><code>++rig:re</code></a>
511+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rip' title="Disassemble"><code>++rip</code></a>
512+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rn-at' title="(Undocumented)"><code>++rn:at</code></a>
513+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rol-fe' title="Roll left"><code>++rol:fe</code></a>
514+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#roll' title="Left fold (list)"><code>++roll</code></a>
515+<code>++rood</code>
516+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#ror-fe' title="Roll right"><code>++ror:fe</code></a>
517+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rou-fl' title="Round to nearest float with 113-bit significand"><code>++rou:fl</code></a>
518+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-so' title="Parse dime float"><code>++royl:so</code></a>
519+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-cell-so' title="(Undocumented)"><code>++royl-cell:so</code></a>
520+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rsh' title="Right-shift"><code>++rsh</code></a>
521+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rt-at' title="(Undocumented)"><code>++rt:at</code></a>
522+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rta-at' title="(Undocumented)"><code>++rta:at</code></a>
523+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rtam-at' title="(Undocumented)"><code>++rtam:at</code></a>
524+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#rub' title="Length-decode"><code>++rub</code></a>
525+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rub-at' title="(Undocumented)"><code>++rub:at</code></a>
526+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rud-at' title="(Undocumented)"><code>++rud:at</code></a>
527+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#rule' title="Parsing rule (match this with _)"><code>++rule</code></a>
528+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rum-at' title="(Undocumented)"><code>++rum:at</code></a>
529+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#run-by' title="Transform values (map)"><code>+-run:by</code></a>
530+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#run-in' title="Apply gate to set"><code>+-run:in</code></a>
531+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#rund-ob' title="Reverse single Feistel-like"><code>++rund:ob</code></a>
532+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#runt' title="Prepend n times"><code>++runt</code></a>
533+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rup-at' title="(Undocumented)"><code>++rup:at</code></a>
534+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rush' title="Parse or null"><code>++rush</code></a>
535+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rust' title="Parse tape or null"><code>++rust</code></a>
536+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rut-by' title="Transform nodes (map)"><code>+-rut:by</code></a>
537+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#ruv-at' title="(Undocumented)"><code>++ruv:at</code></a>
538+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rux-at' title="(Undocumented)"><code>++rux:at</code></a>
539+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#rynd-ob' title="Reverse Feistel-like cipher"><code>++rynd:ob</code></a>
540+
541+### s
542+
543+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#same' title="Identity (produces same value)"><code>++same</code></a>
544+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-ff' title="Signed integer to @r"><code>++san:ff</code></a>
545+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-fl' title="Signed integer to float"><code>++san:fl</code></a>
546+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rd' title="Unsigned integer to @rd"><code>++san:rd</code></a>
547+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rh' title="Signed integer to @rh"><code>++san:rh</code></a>
548+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rs' title="Signed integer to @rs"><code>++san:rs</code></a>
549+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rq' title="Signed integer to @rq"><code>++san:rq</code></a>
550+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#sand' title="Soft-cast by aura"><code>++sand</code></a>
551+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#sane' title="Check aura validity"><code>++sane</code></a>
552+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sb-ff' title="Sign bit"><code>++sb:ff</code></a>
553+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#scag' title="Prefix (produce front of list)"><code>++scag</code></a>
554+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#scan' title="Parse tape or crash"><code>++scan</code></a>
555+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#scot' title="Render dime as cord"><code>++scot</code></a>
556+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#scow' title="Render dime as tape"><code>++scow</code></a>
557+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-ff' title="Convert from IEEE float to fn"><code>++sea:ff</code></a>
558+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rd' title="Convert from double-precision binary float to fn"><code>++sea:rd</code></a>
559+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rh' title="Convert from half-precision float to fn"><code>++sea:rh</code></a>
560+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rs' title="Convert from single-precision float to fn"><code>++sea:rs</code></a>
561+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rq' title="Convert from quad-precision float to fn"><code>++sea:rq</code></a>
562+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#sear' title="Conditional ++cook"><code>++sear</code></a>
563+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#seb-ab' title="Parse 1"><code>++seb:ab</code></a>
564+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sed-ab' title="Parse non-zero decimal digit"><code>++sed:ab</code></a>
565+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sel' title="Parse [ (sel)"><code>++sel</code></a>
566+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sem' title="Parse ; (sem)"><code>++sem</code></a>
567+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ser' title="Parse ] (ser)"><code>++ser</code></a>
568+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#set' title="Mold generator (set)"><code>++set</code></a>
569+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sev-ab' title="Parse non-zero base 32 digit"><code>++sev:ab</code></a>
570+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sew-ab' title="Parse non-zero base 64 digit"><code>++sew:ab</code></a>
571+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sex-ab' title="Parse nonzero hexadecimal digit"><code>++sex:ab</code></a>
572+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#sfix' title="Discard second rule"><code>++sfix</code></a>
573+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shad' title="Double SHA-256"><code>++shad</code></a>
574+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaf' title="Half SHA-256"><code>++shaf</code></a>
575+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shal' title="SHA-512 with length"><code>++shal</code></a>
576+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#sham' title="128-bit noun hash"><code>++sham</code></a>
577+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shan' title="SHA-1"><code>++shan</code></a>
578+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shas' title="Salted hash"><code>++shas</code></a>
579+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaw' title="Hash to nbits"><code>++shaw</code></a>
580+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shax' title="SHA-256"><code>++shax</code></a>
581+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shay' title="SHA-256 with length"><code>++shay</code></a>
582+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaz' title="SHA-512"><code>++shaz</code></a>
583+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#shep' title="(Undocumented)"><code>++shep</code></a>
584+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#shf-fl' title="Shift power"><code>++shf:fl</code></a>
585+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#shim' title="Match character within range"><code>++shim</code></a>
586+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#shop' title="(Undocumented)"><code>++shop</code></a>
587+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#show' title="(Undocumented)"><code>++show</code></a>
588+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#si' title="Signed integer"><code>++si</code></a>
589+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#si-nl' title="Construct set from null-terminated noun"><code>++si:nl</code></a>
590+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sib-ab' title="Parse binary digit"><code>++sib:ab</code></a>
591+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sid-ab' title="Parse decimal digit"><code>++sid:ab</code></a>
592+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sig' title="Parse ~ (sig)"><code>++sig</code></a>
593+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-ff' title="Produce sign of IEEE float"><code>++sig:ff</code></a>
594+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rd' title="Produce sign of @rd"><code>++sig:rd</code></a>
595+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rh' title="Produce sign of half-precision float"><code>++sig:rh</code></a>
596+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rs' title="Produce sign of @rs"><code>++sig:rs</code></a>
597+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rq' title="Produce sign of quad-precision float"><code>++sig:rq</code></a>
598+<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#silt' title="Produce set from list"><code>++silt</code></a>
599+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#simu' title="First and second"><code>++simu</code></a>
600+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sit-fe' title="Enforce modulo"><code>++sit:fe</code></a>
601+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sit-fo' title="Produce remainder of b modulo a"><code>++sit:fo</code></a>
602+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#siv-ab' title="Parse a base 32 digit"><code>++siv:ab</code></a>
603+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#siw-ab' title="Parse a base 64 digit"><code>++siw:ab</code></a>
604+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#six-ab' title="Parse a hexadecimal digit"><code>++six:ab</code></a>
605+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skid' title="Separate list into two lists from slammed elments"><code>++skid</code></a>
606+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skim' title="Produce list of elements from boolean gate"><code>++skim</code></a>
607+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skip' title="Produce list of elements failing boolean gate"><code>++skip</code></a>
608+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#slag' title="Produce all elements from index in list"><code>++slag</code></a>
609+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slat' title="Curried slaw"><code>++slat</code></a>
610+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slav' title="Demand: parse cord with input aura"><code>++slav</code></a>
611+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slaw' title="Parse cord to input aura"><code>++slaw</code></a>
612+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slay' title="Parse cord to coin"><code>++slay</code></a>
613+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#slog' title="Deify printf"><code>++slog</code></a>
614+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#slug' title="Use gate to parse delimited list"><code>++slug</code></a>
615+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#smyt' title="Render path as tank"><code>++smyt</code></a>
616+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snag' title="Produce element at specific index (list)"><code>++snag</code></a>
617+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#snag-nl' title="Produce element from list at specific null-terminated noun"><code>++snag:nl</code></a>
618+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snoc' title="Append noun to list"><code>++snoc</code></a>
619+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#so' title="Coin parser engine"><code>++so</code></a>
620+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#soft' title="Maybe remold"><code>++soft</code></a>
621+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#some' title="Wrap value in unit"><code>++some</code></a>
622+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#soq' title="Parse ' (soq)"><code>++soq</code></a>
623+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#sort' title="Quicksort (list)"><code>++sort</code></a>
624+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sov-ab' title="Parse base 32 letter"><code>++sov:ab</code></a>
625+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sow-ab' title="Parse base 64 letter/symbol"><code>++sow:ab</code></a>
626+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sox-ab' title="Parse hexadecimal letter"><code>++sox:ab</code></a>
627+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#soz' title="Parse triple single-quote"><code>++soz</code></a>
628+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#span' title="ASCII atom"><code>++span</code></a>
629+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#spat' title="Render path as cord"><code>++spat</code></a>
630+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#spd-fl' title="Produce smallest denormalized float"><code>++spd:fl</code></a>
631+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#spin' title="Gate to list (with state)"><code>++spin</code></a>
632+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#spn-fl' title="Produce smallest normal float"><code>++spn:fl</code></a>
633+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#spot' title="Stack trace line"><code>++spot</code></a>
634+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#spud' title="Render path as tape"><code>++spud</code></a>
635+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#spun' title="Gate to list (with state)"><code>++spun</code></a>
636+<a class="tooltip" href='/docs/hoon/reference/stdlib/2g/#sqt' title="Compute square root with remainder"><code>++sqt</code></a>
637+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-ff' title="Produce square root of IEEE float"><code>++sqt:ff</code></a>
638+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-fl' title="Produce square root from signed and unsigned integer cell"><code>++sqt:fl</code></a>
639+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rd' title="Produce square root of double-precision float"><code>++sqt:rd</code></a>
640+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rh' title="Produce square root of half-precision float"><code>++sqt:rh</code></a>
641+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rs' title="Produce square root of single-precision float"><code>++sqt:rs</code></a>
642+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rq' title="Produce square root of quad-precision float"><code>++sqt:rq</code></a>
643+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#stab' title="Parse cord to path"><code>++stab</code></a>
644+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stag' title="Add label"><code>++stag</code></a>
645+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#star' title="Produce list of matches"><code>++star</code></a>
646+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stet' title="Add faces to range-parser pairs in list"><code>++stet</code></a>
647+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stew' title="Switch by first"><code>++stew</code></a>
648+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stir' title="Parse repeatedly"><code>++stir</code></a>
649+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stun' title="Parse several times"><code>++stun</code></a>
650+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#sub' title="Subtract"><code>++sub</code></a>
651+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-ff' title="Subtract from IEEE float"><code>++sub:ff</code></a>
652+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-fl' title="Subtract from signed and unsigned integer cells"><code>++sub:fl</code></a>
653+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rd' title="Subtract from double-precision float"><code>++sub:rd</code></a>
654+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rh' title="Subtract from half-precision float"><code>++sub:rh</code></a>
655+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rs' title="Subtract from single-precision float"><code>++sub:rs</code></a>
656+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rq' title="Subtract from quad-precision float"><code>++sub:rq</code></a>
657+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sum-fe' title="Sum two numbers in modular field"><code>++sum:fe</code></a>
658+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sum-fo' title="Modular sum"><code>++sum:fo</code></a>
659+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sum-si' title="Addition (signed integer)"><code>++sum:si</code></a>
660+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-ff' title="Unsigned integer to IEEE float"><code>++sun:ff</code></a>
661+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-fl' title="Unsigned integer to float"><code>++sun:fl</code></a>
662+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rd' title="Unsigned integer to double-precision float"><code>++sun:rd</code></a>
663+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rh' title="Unsigned integer to half-precision float"><code>++sun:rh</code></a>
664+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rs' title="Unsigned integer to single-precision float"><code>++sun:rs</code></a>
665+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rq' title="Unsigned integer to quad-precision float"><code>++sun:rq</code></a>
666+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sun-si' title="@u to @s"><code>++sun:si</code></a>
667+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#swag' title="Infix (list)"><code>++swag</code></a>
668+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#swp' title="Reverse block order"><code>++swp</code></a>
669+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#swr-fl' title="Switch rounding mode of floating point"><code>++swr:fl</code></a>
670+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#sy' title="Produce set from null-terminated noun"><code>++sy</code></a>
671+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#sym' title="Term"><code>++sym</code></a>
672+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#syn-fl' title="Get sign"><code>++syn:fl</code></a>
673+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#syn-si' title="Sign test"><code>++syn:si</code></a>
674+
675+### t
676+
677+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#tail' title="Get tail of cell"><code>++tail</code></a>
678+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#tap-to' title="Queue to list"><code>+-tap:to</code></a>
679+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tar' title="Parse * (tar)"><code>++tar</code></a>
680+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tang' title="Generic print structure"><code>++tang</code></a>
681+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tank' title="Pretty-printing structure"><code>++tank</code></a>
682+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#tap-by' title="Listify pairs"><code>+-tap:by</code></a>
683+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#tap-in' title="Flatten set into list"><code>+-tap:in</code></a>
684+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tape' title="List of characters"><code>++tape</code></a>
685+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tarp' title="Parsed time"><code>++tarp</code></a>
686+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#tash-so' title="Parse signed dime"><code>++tash:so</code></a>
687+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tec' title="Parse ` (tec)"><code>++tec</code></a>
688+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ted-ab' title="Parse decimal number with <= 3 digits"><code>++ted:ab</code></a>
689+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#teff' title="UTF-8 length"><code>++teff</code></a>
690+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#teil-ob' title="Reverse Feistel-like cipher"><code>++teil:ob</code></a>
691+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#term' title="Hoon constant"><code>++term</code></a>
692+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#test' title="Test for equality"><code>++test</code></a>
693+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tid-ab' title="Parse 3 decimal digits"><code>++tid:ab</code></a>
694+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tiki' title="(Undocumented)"><code>++tiki</code></a>
695+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#til-ab' title="Parse 3 lowercase letters"><code>++til:ab</code></a>
696+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tip-ab' title="Leading phonetic byte"><code>++tip:ab</code></a>
697+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tiq-ab' title="Trailing phonetic syllable"><code>++tiq:ab</code></a>
698+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tis' title="Parse = (tis)"><code>++tis</code></a>
699+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#to' title="Queue operations"><code>++to</code></a>
700+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#tod-po' title="Fetch suffix"><code>++tod:po</code></a>
701+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#toga' title="Tree of faces"><code>++toga</code></a>
702+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-ff' title="Round IEEE float to nearest signed integer"><code>++toi:ff</code></a>
703+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-fl' title="Round float to nearest signed integer"><code>++toi:fl</code></a>
704+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rd' title="Round double-precision float to nearest signed integer"><code>++toi:rd</code></a>
705+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rh' title="Round half-precision float to nearest signed integer"><code>++toi:rh</code></a>
706+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rs' title="Round single-precision float to nearest signed integer"><code>++toi:rs</code></a>
707+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rq' title="Round quad-precision float to nearest signed integer"><code>++toi:rq</code></a>
708+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toj-fl' title="Round unsigned and signed integer to float"><code>++toj:fl</code></a>
709+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#tone' title="Nock result (error report)"><code>++tone</code></a>
710+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#toon' title="Nock result (stack trace)"><code>++toon</code></a>
711+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#top-to' title="Produce head of queue"><code>+-top:to</code></a>
712+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#tos-po' title="Fetch prefix"><code>++tos:po</code></a>
713+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#tos-rh' title="Convert half-precision float to single-precision float"><code>++tos:rh</code></a>
714+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#trap' title="Core with one arm $"><code>++trap</code></a>
715+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#tree' title="Mold generator (tree)"><code>++tree</code></a>
716+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#trel' title="Mold generator (tuple of three types)"><code>++trel</code></a>
717+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#trim' title="Tape split"><code>++trim</code></a>
718+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#trip' title="Cord to tape"><code>++trip</code></a>
719+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tuba' title="UTF-8 to UTF-32 tape"><code>++tuba</code></a>
720+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tufa' title="UTF-32 to UTF-8 tape"><code>++tufa</code></a>
721+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tuna' title="XML template tree"><code>++tuna</code></a>
722+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tuft' title="UTF-32 to UTF-8 text"><code>++tuft</code></a>
723+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#turf' title="UTF-8 to UTF-32 cord"><code>++turf</code></a>
724+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#turn' title="Gate to list"><code>++turn</code></a>
725+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tusk' title="List of expressions"><code>++tusk</code></a>
726+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#twid-so' title="Parse coins without ~ prefix"><code>++twid:so</code></a>
727+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tyke' title="List of 'maybe' hoons"><code>++tyke</code></a>
728+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#typo' title="Pointer for ++type"><code>++typo</code></a>
729+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tyre' title="List, term hoon"><code>++tyre</code></a>
730+
731+### u
732+
733+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#un' title="Reversible scrambling"><code>++un</code></a>
734+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#uni-by' title="Union (map between keys of two lists)"><code>+-uni:by</code></a>
735+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#uni-fl' title="Change representation to odd"><code>++uni:fl</code></a>
736+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#uni-in' title="Union (sets)"><code>+-uni:in</code></a>
737+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#unit' title="Mold generator (maybe)"><code>++unit</code></a>
738+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#urn-by' title="Turn (with key) (map)"><code>+-urn:by</code></a>
739+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#urs-ab' title="Parse span characters"><code>++urs:ab</code></a>
740+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#urt-ab' title="Parse non-_ span"><code>++urt:ab</code></a>
741+
742+### v
743+
744+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#v-ne' title="Render base 32"><code>++v:ne</code></a>
745+<code>++vang</code>
746+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vase' title="Typed data"><code>++vase</code></a>
747+<code>++vast</code>
748+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#ven' title="Axis syntax parser"><code>++ven</code></a>
749+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vise' title="Convert during reboot"><code>++vise</code></a>
750+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#vit' title="Parse base 64 digit"><code>++vit</code></a>
751+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#viz-ag' title="Parse base 32 digit with dot separators"><code>++viz:ag</code></a>
752+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#vor' title="Vertical order"><code>++vor</code></a>
753+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#voy-ab' title="Parse bas, soq, or bix"><code>++voy:ab</code></a>
754+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#vul' title="Comments to null"><code>++vul</code></a>
755+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#vum-ag' title="Parse base 32 string"><code>++vum:ag</code></a>
756+
757+### w
758+
759+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#w-ne' title="Render base 64 digit"><code>++w:ne</code></a>
760+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wack' title="Coin format encode"><code>++wack</code></a>
761+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#wain' title="List of cords"><code>++wain</code></a>
762+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#wall' title="List of list of characters"><code>++wall</code></a>
763+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#weld' title="Concatenate two lists"><code>++weld</code></a>
764+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#weld-nl' title="Concatenate null-terminated nouns"><code>++weld:nl</code></a>
765+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#welp' title="Perfect concatenate (lists)"><code>++welp</code></a>
766+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wick' title="Coin format decode"><code>++wick</code></a>
767+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#wig-re' title="++win - render tape"><code>++wig:re</code></a>
768+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#win-re' title="Render at indent"><code>++win:re</code></a>
769+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#wing' title="Address in subject"><code>++wing</code></a>
770+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#wiz-ag' title="Parse base 64 number"><code>++wiz:ag</code></a>
771+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#woad' title="Unescape cord"><code>++woad</code></a>
772+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wood' title="Escape cord"><code>++wood</code></a>
773+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#wonk' title="Product from edge"><code>++wonk</code></a>
774+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#wred-un' title="Restore structure"><code>++wred:un</code></a>
775+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#wren-un' title="Conceal structure"><code>++wren:un</code></a>
776+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#wut' title="Parse ? (wut)"><code>++wut</code></a>
777+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#wyt-by' title="Produce depth of tree map"><code>+-wyt:by</code></a>
778+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#wyt-in' title="Produce number of elements in set"><code>+-wyt:in</code></a>
779+
780+### x
781+
782+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#x-ne' title="Render hexadecimal digit as atom of ASCII byte value"><code>++x:ne</code></a>
783+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#xeb' title="Binary logarithm"><code>++xeb</code></a>
784+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#xpd-fl' title="Expand signed and unsigned integer cell"><code>++xpd:fl</code></a>
785+
786+### y
787+
788+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yall' title="Time since beginning of time"><code>++yall</code></a>
789+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yawn' title="Days since beginning of time"><code>++yawn</code></a>
790+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#year' title="Date to @d"><code>++year</code></a>
791+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yell' title="Tarp from atomic date"><code>++yell</code></a>
792+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yelp' title="Determine if leap-week"><code>++yelp</code></a>
793+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yer-yo' title="Seconds in year"><code>++yer:yo</code></a>
794+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yo' title="Time constants core"><code>++yo</code></a>
795+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yore' title="Date from atomic date"><code>++yore</code></a>
796+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yule' title="Daily time to time atom"><code>++yule</code></a>
797+
798+### z
799+
800+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zaft-un' title="Look up in 255 sub box"><code>++zaft:un</code></a>
801+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zag-mu' title="Add bottom into top"><code>++zag:mu</code></a>
802+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#zap' title="Parse ! (zap)"><code>++zap</code></a>
803+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zart-un' title="Reverse look up in 255 sub box"><code>++zart:un</code></a>
804+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#zer-fl' title="Produce zero as float"><code>++zer:fl</code></a>
805+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zig-mu' title="Subtract bottom from top"><code>++zig:mu</code></a>
806+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#zing' title="Turn lists into single list by promoting elements from sublists"><code>++zing</code></a>
807+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zug-mu' title="Concatenate into atom"><code>++zug:mu</code></a>
808+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#zust-so' title="Parse prefixed dimes from IP, loobean, or floating point"><code>++zust:so</code></a>
809+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zyft-un' title="Lookup byte in 256 sub box"><code>++zyft:un</code></a>
810+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zyrt-un' title="Reverse lookup byte in 256 sub box"><code>++zyrt:un</code></a>
811+
812+## By Section
813+
814+### 1a: basic arithmetic
815+
816+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#add' title="Add"><code>++add</code></a>
817+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#dec' title="Decrement"><code>++dec</code></a>
818+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#div' title="Divide"><code>++div</code></a>
819+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#dvr' title="Divide (with remainder)"><code>++dvr</code></a>
820+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#gte' title="Greater than / equal"><code>++gte</code></a>
821+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#gth' title="Greater than"><code>++gth</code></a>
822+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#lte' title="Less than / equal (atom)"><code>++lte</code></a>
823+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#lth' title="Less than (atom)"><code>++lth</code></a>
824+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#max' title="Maximum"><code>++max</code></a>
825+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#min' title="Minimum (atom)"><code>++min</code></a>
826+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#mod' title="Modulus (atom)"><code>++mod</code></a>
827+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#mul' title="Multiply (atom)"><code>++mul</code></a>
828+<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#sub' title="Subtract"><code>++sub</code></a>
829+
830+### 1b: tree addressing
831+
832+<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#cap' title="Tree head"><code>++cap</code></a>
833+<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#mas' title="Address within head/tail"><code>++mas</code></a>
834+<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#peg' title="Address within address"><code>++peg</code></a>
835+
836+### 1c: molds and mold builders
837+
838+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#bloq' title="Blocksize"><code>++bloq</code></a>
839+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#each' title="Mold of fork between two types"><code>++each</code></a>
840+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#gate' title="Function"><code>++gate</code></a>
841+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#list' title="Mold constructor (list)"><code>++list</code></a>
842+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#lone' title="Mold generator (face on mold)"><code>++lone</code></a>
843+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#pair' title="Mold of pair of types"><code>++pair</code></a>
844+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#pole' title="Mold generator of faceless list"><code>++pole</code></a>
845+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#quip' title="Mold generator (tuple of list and type)"><code>++quip</code></a>
846+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#trap' title="Core with one arm $"><code>++trap</code></a>
847+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#tree' title="Mold generator (tree)"><code>++tree</code></a>
848+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#trel' title="Mold generator (tuple of three types)"><code>++trel</code></a>
849+<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#unit' title="Mold generator (maybe)"><code>++unit</code></a>
850+
851+### 2a: unit logic
852+
853+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#biff' title="Unit as argument"><code>++biff</code></a>
854+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#bind' title="Non-unit function to unit, producing unit"><code>++bind</code></a>
855+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#bond' title="Replace null"><code>++bond</code></a>
856+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#both' title="Group unit values into pair"><code>++both</code></a>
857+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#clap' title="Apply function to two units"><code>++clap</code></a>
858+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#drop' title="Unit to list"><code>++drop</code></a>
859+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#fall' title="Give unit a default value"><code>++fall</code></a>
860+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#lift' title="Curried bind"><code>++lift</code></a>
861+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#mate' title="Choose"><code>++mate</code></a>
862+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#need' title="Unwrap unit"><code>++need</code></a>
863+<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#some' title="Wrap value in unit"><code>++some</code></a>
864+
865+### 2b: list logic
866+
867+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#fand' title="All indices in list"><code>++fand</code></a>
868+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#find' title="First index in list"><code>++find</code></a>
869+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#flop' title="Reverse list"><code>++flop</code></a>
870+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#gulf' title="List from range"><code>++gulf</code></a>
871+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#homo' title="Homogenize list"><code>++homo</code></a>
872+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#join' title="Add separator between list elements"><code>++join</code></a>
873+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#lent' title="List length"><code>++lent</code></a>
874+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#levy' title="Logical AND on list"><code>++levy</code></a>
875+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#lien' title="Logical OR on list"><code>++lien</code></a>
876+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#limo' title="Construct list from null-terminated tuple"><code>++limo</code></a>
877+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#murn' title="Maybe transform"><code>++murn</code></a>
878+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#oust' title="Remove from list"><code>++oust</code></a>
879+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#reap' title="Replicate (list)"><code>++reap</code></a>
880+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#reel' title="Right fold (list)"><code>++reel</code></a>
881+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#roll' title="Left fold (list)"><code>++roll</code></a>
882+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#scag' title="Prefix (produce front of list)"><code>++scag</code></a>
883+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skid' title="Separate list into two lists from slammed elments"><code>++skid</code></a>
884+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skim' title="Produce list of elements from boolean gate"><code>++skim</code></a>
885+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skip' title="Produce list of elements failing boolean gate"><code>++skip</code></a>
886+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#slag' title="Produce all elements from index in list"><code>++slag</code></a>
887+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snag' title="Produce element at specific index (list)"><code>++snag</code></a>
888+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snoc' title="Append noun to list"><code>++snoc</code></a>
889+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#sort' title="Quicksort (list)"><code>++sort</code></a>
890+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#spin' title="Gate to list (with state)"><code>++spin</code></a>
891+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#spun' title="Gate to list (with state)"><code>++spun</code></a>
892+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#swag' title="Infix (list)"><code>++swag</code></a>
893+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#turn' title="Gate to list"><code>++turn</code></a>
894+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#weld' title="Concatenate two lists"><code>++weld</code></a>
895+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#welp' title="Perfect concatenate (lists)"><code>++welp</code></a>
896+<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#zing' title="Turn lists into single list by promoting elements from sublists"><code>++zing</code></a>
897+
898+### 2c: bit arithmetic
899+
900+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#fe' title="Modulo bloq"><code>++fe</code></a>
901+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#dif-fe' title="Difference between atoms (modular basis)"><code>++dif:fe</code></a>
902+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#inv-fe' title="Inverse order of modular field"><code>++inv:fe</code></a>
903+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#net-fe' title="Flip endianness"><code>++net:fe</code></a>
904+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#out-fe' title="Maximum integer value"><code>++out:fe</code></a>
905+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rol-fe' title="Roll left"><code>++rol:fe</code></a>
906+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#ror-fe' title="Roll right"><code>++ror:fe</code></a>
907+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sit-fe' title="Enforce modulo"><code>++sit:fe</code></a>
908+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sum-fe' title="Sum two numbers in modular field"><code>++sum:fe</code></a>
909+
910+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#bex' title="Binary exponent"><code>++bex</code></a>
911+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#can' title="Assemble"><code>++can</code></a>
912+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#cat' title="Concatenate"><code>++cat</code></a>
913+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#cut' title="Slice"><code>++cut</code></a>
914+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#end' title="Tail"><code>++end</code></a>
915+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#fil' title="Fill bloqstream"><code>++fil</code></a>
916+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#lsh' title="Left-shift"><code>++lsh</code></a>
917+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#met' title="Measure"><code>++met</code></a>
918+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rap' title="Assemble non-zero"><code>++rap</code></a>
919+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rep' title="Assemble single"><code>++rep</code></a>
920+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rip' title="Disassemble"><code>++rip</code></a>
921+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rsh' title="Right-shift"><code>++rsh</code></a>
922+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#swp' title="Reverse block order"><code>++swp</code></a>
923+<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#xeb' title="Binary logarithm"><code>++xeb</code></a>
924+
925+### 2d: bit logic
926+
927+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#con' title="Binary OR"><code>++con</code></a>
928+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#dis' title="Binary AND (atoms)"><code>++dis</code></a>
929+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#mix' title="Binary XOR (atom)"><code>++mix</code></a>
930+<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#not' title="Binary NOT (atom)"><code>++not</code></a>
931+
932+### 2e: insecure hashing
933+
934+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#fnv' title="FNV scrambler"><code>++fnv</code></a>
935+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#mug' title="FNV-1a scrambler"><code>++mug</code></a>
936+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#muk' title="Standard MurmurHash3"><code>++muk</code></a>
937+<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#mum' title="31-bit MurmurHash3 scrambler"><code>++mum</code></a>
938+
939+### 2f: noun ordering
940+
941+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#aor' title="Alphabetical order"><code>++aor</code></a>
942+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#dor' title="Numeric order"><code>++dor</code></a>
943+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#gor' title="Hash order"><code>++gor</code></a>
944+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#hor' title="Horizontal hash order"><code>++hor</code></a>
945+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#lor' title="Leg order"><code>++lor</code></a>
946+<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#vor' title="Vertical order"><code>++vor</code></a>
947+
948+### 2g: unsigned powers
949+
950+<a class="tooltip" href='/docs/hoon/reference/stdlib/2g/#pow' title="Computes a to the power of b"><code>++pow</code></a>
951+<a class="tooltip" href='/docs/hoon/reference/stdlib/2g/#sqt' title="Compute square root with remainder"><code>++sqt</code></a>
952+
953+### 2h: set logic
954+
955+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#in'><code>++in</code></a>
956+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#all-in' title="Logical AND (set and wet gate)"><code>+-all:in</code></a>
957+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#any-in' title="Logical OR (set and gate)"><code>+-any:in</code></a>
958+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#apt-in' title="Check correctness (set)"><code>+-apt:in</code></a>
959+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#bif-in' title="Bifurcate set"><code>+-bif:in</code></a>
960+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#del-in' title="Delete (set)"><code>+-del:in</code></a>
961+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#dif-in' title='Difference (set)'><code>+-dif:in</code></a>
962+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#dig-in' title="Address of a in set"><code>+-dig:in</code></a>
963+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#gas-in' title="Concatenate (set)"><code>+-gas:in</code></a>
964+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#has-in' title="Key existence check (set)"><code>+-has:in</code></a>
965+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#int-in' title="Intersection (set)"><code>+-int:in</code></a>
966+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#put-in' title="Put b in a (set)"><code>+-put:in</code></a>
967+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#rep-in' title="Accumulate elements (set)"><code>+-rep:in</code></a>
968+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#run-in' title="Apply gate to set"><code>+-run:in</code></a>
969+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#tap-in' title="Flatten set into list"><code>+-tap:in</code></a>
970+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#uni-in' title="Union (sets)"><code>+-uni:in</code></a>
971+<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#wyt-in' title="Produce number of elements in set"><code>+-wyt:in</code></a>
972+
973+### 2i: map logic
974+
975+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#by' title="Map operations"><code>++by</code></a>
976+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#all-by' title="Logical AND (map and wet gate)"><code>+-all:by</code></a>
977+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#any-by' title="Logical OR (map and wet gate)"><code>+-any:by</code></a>
978+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#apt-by' title="Check correctness (map)"><code>+-apt:by</code></a>
979+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#bif-by' title="Bifurcate map"><code>+-bif:by</code></a>
980+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#def-by' title="Difference (map)"><code>+-def:by</code></a>
981+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#del-by' title="Delete (map)"><code>+-del:by</code></a>
982+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#dep-by' title="Difference as patch (map)"><code>+-dep:by</code></a>
983+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#dig-by' title="Address of key (map)"><code>+-dig:by</code></a>
984+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#gas-by' title="Concatenate (map)"><code>+-gas:by</code></a>
985+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#get-by' title="Grab unit value"><code>+-get:by</code></a>
986+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#got-by' title="Assert for value (map)"><code>+-got:by</code></a>
987+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#has-by' title="Key existence check (map)"><code>+-has:by</code></a>
988+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#int-by' title="Intersection (map)"><code>+-int:by</code></a>
989+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#mar-by' title="Assert and add (map)"><code>+-mar:by</code></a>
990+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#put-by' title="Add key-value pair (map)"><code>+-put:by</code></a>
991+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rep-by' title="Replace by product (map)"><code>+-rep:by</code></a>
992+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rib-by' title="Replace values with accumulator (map)"><code>+-rib:by</code></a>
993+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#run-by' title="Transform values (map)"><code>+-run:by</code></a>
994+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rut-by' title="Transform nodes (map)"><code>+-rut:by</code></a>
995+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#tap-by' title="Listify pairs"><code>+-tap:by</code></a>
996+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#uni-by' title="Union (map between keys of two lists)"><code>+-uni:by</code></a>
997+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#urn-by' title="Turn (with key) (map)"><code>+-urn:by</code></a>
998+<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#wyt-by' title="Produce depth of tree map"><code>+-wyt:by</code></a>
999+
1000+### 2j: jar and jug logic
1001+
1002+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#ja' title="Jar engine"><code>++ja</code></a>
1003+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#add-ja' title="Prepend to list"><code>+-add:ja</code></a>
1004+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#get-ja' title="Grab value by key"><code>+-get:ja</code></a>
1005+
1006+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#ju' title="Jug operations"><code>++ju</code></a>
1007+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#del-ju' title="Delete (jug)"><code>+-del:ju</code></a>
1008+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#get-ju' title="Retrieve set"><code>+-get:ju</code></a>
1009+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#has-ju' title="Check contents (jug)"><code>+-has:ju</code></a>
1010+<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#put-ju' title="Add key-set pair (jar)"><code>+-put:ju</code></a>
1011+
1012+### 2k: queue logic
1013+
1014+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#to' title="Queue operations"><code>++to</code></a>
1015+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#bal-to' title="Balance queue"><code>+-bal:to</code></a>
1016+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#dep-to' title="Maximum depth (queue)"><code>+-dep:to</code></a>
1017+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#gas-to' title="Push list into queue"><code>+-gas:to</code></a>
1018+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#get-to' title="Head-tail pair"><code>+-get:to</code></a>
1019+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#nap-to' title="Remove head of queue"><code>+-nap:to</code></a>
1020+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#nip-to' title="Remove root of queue"><code>+-nip:to</code></a>
1021+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#put-to' title="Insert into queue"><code>+-put:to</code></a>
1022+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#tap-to' title="Queue to list"><code>+-tap:to</code></a>
1023+<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#top-to' title="Produce head of queue"><code>+-top:to</code></a>
1024+
1025+### 2l: container from container
1026+
1027+<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#malt' title="Map from list"><code>++malt</code></a>
1028+<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#molt' title="Map from pair list"><code>++molt</code></a>
1029+<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#silt' title="Produce set from list"><code>++silt</code></a>
1030+
1031+### 2m: container from noun
1032+
1033+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#nl' title="Noun to container operations"><code>++nl</code></a>
1034+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#le-nl' title="Construct list from null-terminated noun"><code>++le:nl</code></a>
1035+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#my-nl' title="Construct map from null-terminated noun"><code>++my:nl</code></a>
1036+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#si-nl' title="Construct set from null-terminated noun"><code>++si:nl</code></a>
1037+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#snag-nl' title="Produce element from list at specific null-terminated noun"><code>++snag:nl</code></a>
1038+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#weld-nl' title="Concatenate null-terminated nouns"><code>++weld:nl</code></a>
1039+
1040+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#ly' title="List from raw noun"><code>++ly</code></a>
1041+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#my' title="Map from raw noun"><code>++my</code></a>
1042+<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#sy' title="Produce set from null-terminated noun"><code>++sy</code></a>
1043+
1044+### 2n: functional hacks
1045+
1046+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#cork' title="Compose forward"><code>++cork</code></a>
1047+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#corl' title="Compose backward"><code>++corl</code></a>
1048+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#curr' title="Right-curry a gate"><code>++curr</code></a>
1049+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#cury' title="Curry left a gate"><code>++cury</code></a>
1050+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#hard' title="Force remold"><code>++hard</code></a>
1051+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#head' title="Get head of cell"><code>++head</code></a>
1052+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#mean' title="Crash and printf"><code>++mean</code></a>
1053+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#same' title="Identity (produces same value)"><code>++same</code></a>
1054+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#slog' title="Deify printf"><code>++slog</code></a>
1055+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#soft' title="Maybe remold"><code>++soft</code></a>
1056+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#tail' title="Get tail of cell"><code>++tail</code></a>
1057+<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#test' title="Test for equality"><code>++test</code></a>
1058+
1059+### 2o: normalizing containers
1060+
1061+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#jar' title="Mold generator (jar)"><code>++jar</code></a>
1062+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#jug' title="Mold generator (jug)"><code>++jug</code></a>
1063+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#map' title="Mold generator (map)"><code>++map</code></a>
1064+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#qeu' title="Mold generator (queue)"><code>++qeu</code></a>
1065+<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#set' title="Mold generator (set)"><code>++set</code></a>
1066+
1067+### 2p: serialization
1068+
1069+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#cue' title="Unpack atom to noun"><code>++cue</code></a>
1070+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#jam' title="Pack noun to atom"><code>++jam</code></a>
1071+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#mat' title="Length-encode"><code>++mat</code></a>
1072+<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#rub' title="Length-decode"><code>++rub</code></a>
1073+
1074+### 2q: molds and mold builders
1075+
1076+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#char' title="Character"><code>++char</code></a>
1077+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#cord' title="UTF-8 text"><code>++cord</code></a>
1078+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#date' title="Point in time"><code>++date</code></a>
1079+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#knot' title="Atom type of ASCII characters"><code>++knot</code></a>
1080+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tang' title="Generic print structure"><code>++tang</code></a>
1081+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tank' title="Pretty-printing structure"><code>++tank</code></a>
1082+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tape' title="List of characters"><code>++tape</code></a>
1083+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tarp' title="Parsed time"><code>++tarp</code></a>
1084+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#term' title="Hoon constant"><code>++term</code></a>
1085+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#wain' title="List of cords"><code>++wain</code></a>
1086+<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#wall' title="List of list of characters"><code>++wall</code></a>
1087+
1088+### 3a: modular and signed ints
1089+
1090+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fo' title="Modulo prime"><code>++fo</code></a>
1091+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dif-fo' title='Subtraction (modular base)'><code>++dif:fo</code></a>
1092+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#exp-fo' title="Exponent (modular base)"><code>++exp:fo</code></a>
1093+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fra-fo' title="Divide (modular base)"><code>++fra:fo</code></a>
1094+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#inv-fo' title="Inverse (signed modulus)"><code>++inv:fo</code></a>
1095+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#pro-fo' title="Multiplies b and c modulo a"><code>++pro:fo</code></a>
1096+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sit-fo' title="Produce remainder of b modulo a"><code>++sit:fo</code></a>
1097+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sum-fo' title="Modular sum"><code>++sum:fo</code></a>
1098+
1099+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#si' title="Signed integer"><code>++si</code></a>
1100+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#abs-si' title="Absolute value (signed integer)"><code>++abs:si</code></a>
1101+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#cmp-si' title="Compare (signed integer)"><code>++cmp:si</code></a>
1102+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dif-si' title="Subtraction (signed integer)"><code>++dif:si</code></a>
1103+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dul-si' title="Modulus (signed integer)"><code>++dul:si</code></a>
1104+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fra-si' title="Divide (signed integer)"><code>++fra:si</code></a>
1105+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#new-si' title="Atom to @s"><code>++new:si</code></a>
1106+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#old-si' title="Sign and absolute value"><code>++old:si</code></a>
1107+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#pro-si' title="Multiply to signed integer"><code>++pro:si</code></a>
1108+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#rem-si' title="Remainder (signed integer)"><code>++rem:si</code></a>
1109+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sum-si' title="Addition (signed integer)"><code>++sum:si</code></a>
1110+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sun-si' title="@u to @s"><code>++sun:si</code></a>
1111+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#syn-si' title="Sign test"><code>++syn:si</code></a>
1112+
1113+<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#egcd' title="Extended Euclidean algorithm"><code>++egcd</code></a>
1114+
1115+### 3b: floating point
1116+
1117+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#dn'><code>++dn</code></a>
1118+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fn'><code>++fn</code></a>
1119+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rn'><code>++rn</code></a>
1120+
1121+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ff'><code>++ff</code></a>
1122+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-ff' title="Add (floating point)"><code>++add:ff</code></a>
1123+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bif-ff' title="Converts from fn to @r"><code>++bif:ff</code></a>
1124+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-ff' title="fn to @r with rounding"><code>++bit:ff</code></a>
1125+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-ff' title="Divide (IEEE float)"><code>++div:ff</code></a>
1126+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-ff' title="@r to decimal float"><code>++drg:ff</code></a>
1127+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-ff' title="Equals (IEEE float)"><code>++equ:ff</code></a>
1128+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-ff' title="Get exponent (IEEE float)"><code>++exp:ff</code></a>
1129+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-ff' title="Fused multiply-add (IEEE float)"><code>++fma:ff</code></a>
1130+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-ff' title="Decimal float to @r"><code>++grd:ff</code></a>
1131+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-ff' title="Greater than / equal (IEEE float)"><code>++gte:ff</code></a>
1132+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-ff' title="Greater than (IEEE float)"><code>++gth:ff</code></a>
1133+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-ff' title="Less than / equal (IEEE float)"><code>++lte:ff</code></a>
1134+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-ff' title="Less than (IEEE float)"><code>++lth:ff</code></a>
1135+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#me-ff' title="Minimum exponent of ff"><code>++me:ff</code></a>
1136+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-ff' title="Multiply (IEEE float)"><code>++mul:ff</code></a>
1137+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#pa-ff' title="Initialize fl from ff core"><code>++pa:ff</code></a>
1138+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-ff' title="Signed integer to @r"><code>++san:ff</code></a>
1139+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sb-ff' title="Sign bit"><code>++sb:ff</code></a>
1140+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-ff' title="Convert from IEEE float to fn"><code>++sea:ff</code></a>
1141+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-ff' title="Produce sign of IEEE float"><code>++sig:ff</code></a>
1142+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-ff' title="Produce square root from IEEE float"><code>++sqt:ff</code></a>
1143+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-ff' title="Subtract from IEEE float"><code>++sub:ff</code></a>
1144+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-ff' title="Unsigned integer to IEEE float"><code>++sun:ff</code></a>
1145+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-ff' title="Round IEEE float to nearest signed integer"><code>++toi:ff</code></a>
1146+
1147+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fl'><code>++fl</code></a>
1148+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#abs-fl' title="Absolute value"><code>++abs:fl</code></a>
1149+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-fl' title="Add (with exact/rounded flag)"><code>++add:fl</code></a>
1150+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#den-fl' title="Denormalizes (floating point)"><code>++den:fl</code></a>
1151+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-fl' title="Divide (signed and unsigned integer cell)"><code>++div:fl</code></a>
1152+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-fl' title="Get printable decimal (signed and unsigned integer cell)"><code>++drg:fl</code></a>
1153+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ead-fl' title="Exact add"><code>++ead:fl</code></a>
1154+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emn-fl' title="Minimum exponent"><code>++emn:fl</code></a>
1155+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emu-fl' title="Exact multiply"><code>++emu:fl</code></a>
1156+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emx-fl' title="Maximum exponent"><code>++emx:fl</code></a>
1157+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-fl' title="Equals (signed and unsigned integer cell)"><code>++equ:fl</code></a>
1158+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fli-fl' title="Flip sign"><code>++fli:fl</code></a>
1159+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-fl' title="Fused multiply-add"><code>++fma:fl</code></a>
1160+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-fl' title="Decimal to float"><code>++grd:fl</code></a>
1161+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-fl' title="Greater than / equal (producing flag)"><code>++gte:fl</code></a>
1162+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-fl' title="Greater than (producing flag)"><code>++gth:fl</code></a>
1163+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ibl-fl' title="Integer binary logarithm"><code>++ibl:fl</code></a>
1164+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#inv-fl' title="Inverse"><code>++inv:fl</code></a>
1165+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lfe-fl' title="Maximum"><code>++lfe:fl</code></a>
1166+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lfn-fl' title="Largest normal float"><code>++lfn:fl</code></a>
1167+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-fl' title="Less than / equal (producing flag)"><code>++lte:fl</code></a>
1168+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-fl' title="Less than (signed and unsigned integer cell)"><code>++lth:fl</code></a>
1169+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lug-fl' title="Central rounding mechanism"><code>++lug:fl</code></a>
1170+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-fl' title="Multiply (signed and unsigned integer cell)"><code>++mul:fl</code></a>
1171+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ned-fl' title="Require float"><code>++ned:fl</code></a>
1172+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#prc-fl' title="Force precision of 2 or greater (floating point)"><code>++prc:fl</code></a>
1173+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rau-fl' title="Various roundings (floating point)"><code>++rau:fl</code></a>
1174+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rou-fl' title="Round to nearest float with 113-bit significand"><code>++rou:fl</code></a>
1175+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-fl' title="Signed integer to float"><code>++san:fl</code></a>
1176+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#shf-fl' title="Shift power"><code>++shf:fl</code></a>
1177+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#spd-fl' title="Produce smallest denormalized float"><code>++spd:fl</code></a>
1178+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#spn-fl' title="Produce smallest normal float"><code>++spn:fl</code></a>
1179+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-fl' title="Produce square root from signed and unsigned integer cell"><code>++sqt:fl</code></a>
1180+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-fl' title="Subtract from signed and unsigned integer cells"><code>++sub:fl</code></a>
1181+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-fl' title="Unsigned integer to float"><code>++sun:fl</code></a>
1182+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#swr-fl' title="Switch rounding mode of floating point"><code>++swr:fl</code></a>
1183+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#syn-fl' title="Get sign"><code>++syn:fl</code></a>
1184+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-fl' title="Round float to nearest signed integer"><code>++toi:fl</code></a>
1185+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toj-fl' title="Round unsigned and signed integer to float"><code>++toj:fl</code></a>
1186+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#uni-fl' title="Change representation to odd"><code>++uni:fl</code></a>
1187+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#xpd-fl' title="Expand signed and unsigned integer cell"><code>++xpd:fl</code></a>
1188+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#zer-fl' title="Produce zero as float"><code>++zer:fl</code></a>
1189+
1190+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rd'><code>++rd</code></a>
1191+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rd' title="Add (double-precision float)"><code>++add:rd</code></a>
1192+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rd' title="fn to double-precision binary float"><code>++bit:rd</code></a>
1193+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rd' title="Double precision float"><code>++div:rd</code></a>
1194+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rd' title="@rd to decimal float"><code>++drg:rd</code></a>
1195+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rd' title="Equals (double-precision float)"><code>++equ:rd</code></a>
1196+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rd' title="Exponent (@rd)"><code>++exp:rd</code></a>
1197+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rd' title="Fused multiply-add (@rd)"><code>++fma:rd</code></a>
1198+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rd' title="Decimal float to @rd"><code>++grd:rd</code></a>
1199+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rd' title="Greater than / equal (double-precision float)"><code>++gte:rd</code></a>
1200+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rd' title="Greater than (double-precision float)"><code>++gth:rd</code></a>
1201+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rd' title="Less than / equal (double-precision float)"><code>++lte:rd</code></a>
1202+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rd' title="Less than (double-precision float)"><code>++lth:rd</code></a>
1203+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rd' title="Initialize ff (rd core)"><code>++ma:rd</code></a>
1204+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rd' title="Multiply (double-precision float)"><code>++mul:rd</code></a>
1205+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rd' title="Unsigned integer to @rd"><code>++san:rd</code></a>
1206+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rd' title="Convert from double-precision binary float to fn"><code>++sea:rd</code></a>
1207+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rd' title="Produce sign of @rd"><code>++sig:rd</code></a>
1208+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rd' title="Produce square root of double-precision float"><code>++sqt:rd</code></a>
1209+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rd' title="Subtract from double-precision float"><code>++sub:rd</code></a>
1210+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rd' title="Unsigned integer to double-precision float"><code>++sun:rd</code></a>
1211+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rd' title="Round double-precision float to nearest signed integer"><code>++toi:rd</code></a>
1212+
1213+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rh'><code>++rh</code></a>
1214+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rh' title="Add (half-precision float)"><code>++add:rh</code></a>
1215+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rh' title="fn to half-precision float"><code>++bit:rh</code></a>
1216+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rh' title="Divide (half-precision float)"><code>++div:rh</code></a>
1217+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rh' title="@rh to decimal float"><code>++drg:rh</code></a>
1218+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rh' title="Equals (half-precision float)"><code>++equ:rh</code></a>
1219+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rh' title="Exponent (half-precision float)"><code>++exp:rh</code></a>
1220+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rh' title="Fused multiply-add (half-precision float)"><code>++fma:rh</code></a>
1221+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fos-rh' title="@rs to @rh"><code>++fos:rh</code></a>
1222+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rh' title="Decimal float to @rh"><code>++grd:rh</code></a>
1223+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rh' title="Greater than / equal (half-precision float)"><code>++gte:rh</code></a>
1224+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rh' title="Greater than (half-precision float)"><code>++gth:rh</code></a>
1225+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rh' title="Less than / equal (half-precision float)"><code>++lte:rh</code></a>
1226+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rh' title="Less than (half-precision float)"><code>++lth:rh</code></a>
1227+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rh' title="Initialize ff (rh core)"><code>++ma:rh</code></a>
1228+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rh' title="Multiply (quad-precision float)"><code>++mul:rh</code></a>
1229+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rh' title="Signed integer to @rh"><code>++san:rh</code></a>
1230+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rh' title="Convert from half-precision float to fn"><code>++sea:rh</code></a>
1231+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rh' title="Produce sign of half-precision float"><code>++sig:rh</code></a>
1232+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rh' title="Produce square root of half-precision float"><code>++sqt:rh</code></a>
1233+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rh' title="Subtract from half-precision float"><code>++sub:rh</code></a>
1234+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rh' title="Unsigned integer to half-precision float"><code>++sun:rh</code></a>
1235+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rh' title="Round half-precision float to nearest signed integer"><code>++toi:rh</code></a>
1236+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#tos-rh' title="Convert half-precision float to single-precision float"><code>++tos:rh</code></a>
1237+
1238+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rs'><code>++rs</code></a>
1239+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rs' title="Add (single-precision float)"><code>++add:rs</code></a>
1240+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rs' title="fn to single-precision float"><code>++bit:rs</code></a>
1241+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rs' title="Divide (single-precision float)"><code>++div:rs</code></a>
1242+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rs' title="@rs to decimal float"><code>++drg:rs</code></a>
1243+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rs' title="Equals (single-precision float)"><code>++equ:rs</code></a>
1244+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rs' title="Exponent (@rs)"><code>++exp:rs</code></a>
1245+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rs' title="Fused multiply-add (single-precision float)"><code>++fma:rs</code></a>
1246+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rs' title="Decimal float to @rs"><code>++grd:rs</code></a>
1247+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rs' title="Greater than / equal (single-precision float)"><code>++gte:rs</code></a>
1248+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rs' title="Greater than (single-precision float)"><code>++gth:rs</code></a>
1249+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rs' title="Less than / equal (single-precision float)"><code>++lte:rs</code></a>
1250+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rs' title="Less than (single-precision float)"><code>++lth:rs</code></a>
1251+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rs' title="Initialize ff (rs core)"><code>++ma:rs</code></a>
1252+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rs' title="Multiply (single-precision float)"><code>++mul:rs</code></a>
1253+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rs' title="Signed integer to @rs"><code>++san:rs</code></a>
1254+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rs' title="Convert from single-precision float to fn"><code>++sea:rs</code></a>
1255+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rs' title="Produce sign of @rs"><code>++sig:rs</code></a>
1256+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rs' title="Produce square root of single-precision float"><code>++sqt:rs</code></a>
1257+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rs' title="Subtract from single-precision float"><code>++sub:rs</code></a>
1258+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rs' title="Unsigned integer to single-precision float"><code>++sun:rs</code></a>
1259+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rs' title="Round single-precision float to nearest signed integer"><code>++toi:rs</code></a>
1260+
1261+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rq'><code>++rq</code></a>
1262+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#add-rq' title="Add (quad-precision float)"><code>++add:rq</code></a>
1263+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bit-rq' title="fn to quad-precision float"><code>++bit:rq</code></a>
1264+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#div-rq' title="Divide (quad-precision float)"><code>++div:rq</code></a>
1265+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drg-rq' title="@rq to decimal float"><code>++drg:rq</code></a>
1266+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equ-rq' title="Equals (quad-precision float)"><code>++equ:rq</code></a>
1267+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exp-rq' title="Exponent (quad-precision float)"><code>++exp:rq</code></a>
1268+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fma-rq' title="Fused multiply-add (quad-precision float)"><code>++fma:rq</code></a>
1269+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grd-rq' title="Decimal float to @rq"><code>++grd:rq</code></a>
1270+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gte-rq' title="Greater than / equal (quad-precision float)"><code>++gte:rq</code></a>
1271+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gth-rq' title="Greater than (quad-precision float)"><code>++gth:rq</code></a>
1272+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lte-rq' title="Less than / equal (quad-precision float)"><code>++lte:rq</code></a>
1273+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lth-rq' title="Less than (quad-precision float)"><code>++lth:rq</code></a>
1274+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ma-rq' title="Initialize ff (rq core)"><code>++ma:rq</code></a>
1275+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mul-rq' title="Multiply (quad-precision float)"><code>++mul:rq</code></a>
1276+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#san-rq' title="Signed integer to @rq"><code>++san:rq</code></a>
1277+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sea-rq' title="Convert from quad-precision float to fn"><code>++sea:rq</code></a>
1278+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sig-rq' title="Produce sign of quad-precision float"><code>++sig:rq</code></a>
1279+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqt-rq' title="Produce square root of quad-precision float"><code>++sqt:rq</code></a>
1280+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sub-rq' title="Subtract from quad-precision float"><code>++sub:rq</code></a>
1281+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sun-rq' title="Unsigned integer to quad-precision float"><code>++sun:rq</code></a>
1282+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toi-rq' title="Round quad-precision float to nearest signed integer"><code>++toi:rq</code></a>
1283+
1284+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rlyd'><code>++rlyd</code></a>
1285+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rlyh'><code>++rlyh</code></a>
1286+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rlyq'><code>++rlyq</code></a>
1287+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rlys'><code>++rlys</code></a>
1288+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ryld'><code>++ryld</code></a>
1289+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rylh'><code>++rylh</code></a>
1290+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rylq'><code>++rylq</code></a>
1291+<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ryls'><code>++ryls</code></a>
1292+
1293+### 3c: urbit time
1294+
1295+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yo' title="Time constants core"><code>++yo</code></a>
1296+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#cet-yo' title="Days in a century"><code>++cet:yo</code></a>
1297+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#day-yo' title="Seconds in day"><code>++day:yo</code></a>
1298+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#era-yo' title="Leap-year period"><code>++era:yo</code></a>
1299+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#hor-yo' title="Seconds in hour"><code>++hor:yo</code></a>
1300+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#jes-yo' title="Maximum 64-bit timestamp"><code>++jes:yo</code></a>
1301+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#mit-yo' title="Seconds in minute"><code>++mit:yo</code></a>
1302+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#moh-yo' title="Days in month"><code>++moh:yo</code></a>
1303+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#moy-yo' title="Days in months of leap-year"><code>++moy:yo</code></a>
1304+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#qad-yo' title="Seconds in 4 years"><code>++qad:yo</code></a>
1305+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yer-yo' title="Seconds in year"><code>++yer:yo</code></a>
1306+
1307+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yall' title="Time since beginning of time"><code>++yall</code></a>
1308+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yawn' title="Days since beginning of time"><code>++yawn</code></a>
1309+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#year' title="Date to @d"><code>++year</code></a>
1310+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yell' title="Tarp from atomic date"><code>++yell</code></a>
1311+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yelp' title="Determine if leap-week"><code>++yelp</code></a>
1312+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yore' title="Date from atomic date"><code>++yore</code></a>
1313+<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yule' title="Daily time to time atom"><code>++yule</code></a>
1314+
1315+### 3d: SHA hash family
1316+
1317+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#og' title="Container arm for SHA-256 powered RNG"><code>++og</code></a>
1318+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#rad-og' title="Random in range"><code>++rad:og</code></a>
1319+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#rads-og' title="Random continuation"><code>++rads:og</code></a>
1320+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#raw-og' title="Random bits"><code>++raw:og</code></a>
1321+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#raws-og' title="Random bits continuation"><code>++raws:og</code></a>
1322+
1323+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shad' title="Double SHA-256"><code>++shad</code></a>
1324+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaf' title="Half SHA-256"><code>++shaf</code></a>
1325+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shal' title="SHA-512 with length"><code>++shal</code></a>
1326+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#sham' title="128-bit noun hash"><code>++sham</code></a>
1327+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shan' title="SHA-1"><code>++shan</code></a>
1328+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shas' title="Salted hash"><code>++shas</code></a>
1329+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaw' title="Hash to nbits"><code>++shaw</code></a>
1330+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shax' title="SHA-256"><code>++shax</code></a>
1331+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shay' title="SHA-256 with length"><code>++shay</code></a>
1332+<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaz' title="SHA-512"><code>++shaz</code></a>
1333+
1334+### 3e: AES encryption
1335+
1336+<a href='/docs/hoon/reference/stdlib/3e/'>_(removed)_</a>
1337+
1338+### 3f: scrambling
1339+
1340+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#ob' title="Reversible scrambling v2"><code>++ob</code></a>
1341+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feen-ob' title="Conceal structure v2"><code>++feen:ob</code></a>
1342+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#fend-ob' title="Restore structure v2"><code>++fend:ob</code></a>
1343+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#fice-ob' title="Feistel-like cipher"><code>++fice:ob</code></a>
1344+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#raku-ob' title="Key list"><code>++raku:ob</code></a>
1345+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#rund-ob' title="Reverse single Feistel-like"><code>++rund:ob</code></a>
1346+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#rynd-ob' title="Reverse Feistel-like cipher"><code>++rynd:ob</code></a>
1347+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#teil-ob' title="Reverse Feistel-like cipher"><code>++teil:ob</code></a>
1348+
1349+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#un' title="Reversible scrambling"><code>++un</code></a>
1350+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#wred-un' title="Restore structure"><code>++wred:un</code></a>
1351+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#wren-un' title="Conceal structure"><code>++wren:un</code></a>
1352+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#xafo-un'><code>++xafo:un</code></a>
1353+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#xaro-un'><code>++xaro:un</code></a>
1354+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zaft-un' title="Look up in 255 sub box"><code>++zaft:un</code></a>
1355+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zart-un' title="Reverse look up in 255 sub box"><code>++zart:un</code></a>
1356+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zyft-un' title="Lookup byte in 256 sub box"><code>++zyft:un</code></a>
1357+<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zyrt-un' title="Reverse lookup byte in 256 sub box"><code>++zyrt:un</code></a>
1358+
1359+### 3g: molds and mold builders
1360+
1361+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#coin' title="Noun-literal syntax cases"><code>++coin</code></a>
1362+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#dime' title="Aura-atom pair"><code>++dime</code></a>
1363+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#edge' title="Parsing location metadata"><code>++edge</code></a>
1364+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#hair' title="Parsing line and column"><code>++hair</code></a>
1365+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#like' title="Generic edge"><code>++like</code></a>
1366+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#nail' title="Location, remainder of parsed text"><code>++nail</code></a>
1367+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#path' title="Filesystem path"><code>++path</code></a>
1368+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#pint' title="Parsing range"><code>++pint</code></a>
1369+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#rule' title="Parsing rule (match this with _)"><code>++rule</code></a>
1370+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#spot' title="Stack trace line"><code>++spot</code></a>
1371+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#tone' title="Nock result (error report)"><code>++tone</code></a>
1372+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#toon' title="Nock result (stack trace)"><code>++toon</code></a>
1373+<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#wonk' title="Product from edge"><code>++wonk</code></a>
1374+
1375+### 4a: exotic bases
1376+
1377+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#po' title="Phonetic base"><code>++po</code></a>
1378+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#ind-po' title="Parse suffix"><code>++ind:po</code></a>
1379+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#ins-po' title="Parse prefix"><code>++ins:po</code></a>
1380+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#tod-po' title="Fetch suffix"><code>++tod:po</code></a>
1381+<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#tos-po' title="Fetch prefix"><code>++tos:po</code></a>
1382+
1383+### 4b: text processing
1384+
1385+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#at' title="(Undocumented)"><code>++at</code></a>
1386+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#r-at' title="(Undocumented)"><code>++r:at</code></a>
1387+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rf-at' title="(Undocumented)"><code>++rf:at</code></a>
1388+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rn-at' title="(Undocumented)"><code>++rn:at</code></a>
1389+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rt-at' title="(Undocumented)"><code>++rt:at</code></a>
1390+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rta-at' title="(Undocumented)"><code>++rta:at</code></a>
1391+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rtam-at' title="(Undocumented)"><code>++rtam:at</code></a>
1392+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rub-at' title="(Undocumented)"><code>++rub:at</code></a>
1393+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rud-at' title="(Undocumented)"><code>++rud:at</code></a>
1394+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rum-at' title="(Undocumented)"><code>++rum:at</code></a>
1395+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rup-at' title="(Undocumented)"><code>++rup:at</code></a>
1396+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#ruv-at' title="(Undocumented)"><code>++ruv:at</code></a>
1397+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rux-at' title="(Undocumented)"><code>++rux:at</code></a>
1398+
1399+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#cass' title="To lowercase"><code>++cass</code></a>
1400+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#crip' title="Tape to cord"><code>++crip</code></a>
1401+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#cuss' title="To uppercase"><code>++cuss</code></a>
1402+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#mesc' title="Escape special characters"><code>++mesc</code></a>
1403+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#runt' title="Prepend n times"><code>++runt</code></a>
1404+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#sand' title="Soft-cast by aura"><code>++sand</code></a>
1405+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#sane' title="Check aura validity"><code>++sane</code></a>
1406+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#teff' title="UTF-8 length"><code>++teff</code></a>
1407+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#trim' title="Tape split"><code>++trim</code></a>
1408+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#trip' title="Cord to tape"><code>++trip</code></a>
1409+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tuba' title="UTF-8 to UTF-32 tape"><code>++tuba</code></a>
1410+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tufa' title="UTF-32 to UTF-8 tape"><code>++tufa</code></a>
1411+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tuft' title="UTF-32 to UTF-8 text"><code>++tuft</code></a>
1412+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#turf' title="UTF-8 to UTF-32 cord"><code>++turf</code></a>
1413+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wack' title="Coin format encode"><code>++wack</code></a>
1414+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wick' title="Coin format decode"><code>++wick</code></a>
1415+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#woad' title="Unescape cord"><code>++woad</code></a>
1416+<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wood' title="Escape cord"><code>++wood</code></a>
1417+
1418+### 4c: tank printer
1419+
1420+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#re' title="Pretty-printing engine (tank)"><code>++re</code></a>
1421+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#din-re' title="(Undocumented)"><code>++din:re</code></a>
1422+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#fit-re' title="Fit on one line test"><code>++fit:re</code></a>
1423+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#ram-re' title="Flatten tank to tape"><code>++ram:re</code></a>
1424+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#rig-re' title="Wrap tape in / (tank)"><code>++rig:re</code></a>
1425+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#wig-re' title="++win - render tape"><code>++wig:re</code></a>
1426+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#win-re' title="Render at indent"><code>++win:re</code></a>
1427+
1428+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#shep' title="(Undocumented)"><code>++shep</code></a>
1429+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#shop' title="(Undocumented)"><code>++shop</code></a>
1430+<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#show' title="(Undocumented)"><code>++show</code></a>
1431+
1432+### 4d: parsing (tracing)
1433+
1434+<a class="tooltip" href='/docs/hoon/reference/stdlib/4d/#last' title="Further trace"><code>++last</code></a>
1435+<a class="tooltip" href='/docs/hoon/reference/stdlib/4d/#lust' title="Detect new line"><code>++lust</code></a>
1436+
1437+### 4e: parsing (combinators)
1438+
1439+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#bend' title="Conditional composer"><code>++bend</code></a>
1440+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#comp' title="Arbitrary compose"><code>++comp</code></a>
1441+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#fail' title="Never parse"><code>++fail</code></a>
1442+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#glue' title="Skip delimiter"><code>++glue</code></a>
1443+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#less' title="Parse unless"><code>++less</code></a>
1444+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#pfix' title="Discard first rule"><code>++pfix</code></a>
1445+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#plug' title="Parse to tuple"><code>++plug</code></a>
1446+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#pose' title="Parse options"><code>++pose</code></a>
1447+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#sfix' title="Discard second rule"><code>++sfix</code></a>
1448+<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#simu' title="First and second"><code>++simu</code></a>
1449+
1450+### 4f: parsing (rule builders)
1451+
1452+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#bass' title="Parser modifier (LSB-ordered ++list as atom of ++base)"><code>++bass</code></a>
1453+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#boss' title="Parser modifier: LSB"><code>++boss</code></a>
1454+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#cold' title="Replace with constant"><code>++cold</code></a>
1455+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#cook' title="Apply gate"><code>++cook</code></a>
1456+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#easy' title="Always parse"><code>++easy</code></a>
1457+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#full' title="Parse to end"><code>++full</code></a>
1458+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#funk' title="Add to tape"><code>++funk</code></a>
1459+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#here' title="Place-based apply"><code>++here</code></a>
1460+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#ifix' title="Infix"><code>++ifix</code></a>
1461+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#jest' title="Match a cord"><code>++jest</code></a>
1462+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#just' title="Match a single character"><code>++just</code></a>
1463+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#knee' title="Recursive parsers"><code>++knee</code></a>
1464+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#mask' title="Match character"><code>++mask</code></a>
1465+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#more' title="Parse list with delimiter"><code>++more</code></a>
1466+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#most' title="Parse list of at least one match"><code>++most</code></a>
1467+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#next' title="Consume character"><code>++next</code></a>
1468+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#plus' title="List of at least one match"><code>++plus</code></a>
1469+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#sear' title="Conditional ++cook"><code>++sear</code></a>
1470+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#shim' title="Match character within range"><code>++shim</code></a>
1471+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#slug' title="Use gate to parse delimited list"><code>++slug</code></a>
1472+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stag' title="Add label"><code>++stag</code></a>
1473+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#star' title="Produce list of matches"><code>++star</code></a>
1474+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stet' title="Add faces to range-parser pairs in list"><code>++stet</code></a>
1475+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stew' title="Switch by first"><code>++stew</code></a>
1476+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stir' title="Parse repeatedly"><code>++stir</code></a>
1477+<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stun' title="Parse several times"><code>++stun</code></a>
1478+
1479+### 4g: parsing (outside caller)
1480+
1481+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rash' title="Parse or crash"><code>++rash</code></a>
1482+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rush' title="Parse or null"><code>++rush</code></a>
1483+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rust' title="Parse tape or null"><code>++rust</code></a>
1484+<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#scan' title="Parse tape or crash"><code>++scan</code></a>
1485+
1486+### 4h: parsing (ascii glyphs)
1487+
1488+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ace' title="Parse space"><code>++ace</code></a>
1489+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#bar' title="Parse | (bar)"><code>++bar</code></a>
1490+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#bas' title="Parse \ (bas)"><code>++bas</code></a>
1491+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#buc' title="Parse $ (buc)"><code>++buc</code></a>
1492+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#cab' title="Parse _ (cab)"><code>++cab</code></a>
1493+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#cen' title="Parse % (cen)"><code>++cen</code></a>
1494+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#col' title="Parse : (col)"><code>++col</code></a>
1495+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#com' title="Parse , (comma)"><code>++com</code></a>
1496+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#doq' title="Parse double quote"><code>++doq</code></a>
1497+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#dot' title="Parse period"><code>++dot</code></a>
1498+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#fas' title="Parse / (fas)"><code>++fas</code></a>
1499+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#gal' title="Parse < (gal)"><code>++gal</code></a>
1500+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#gar' title="Parse > (gar)"><code>++gar</code></a>
1501+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#hax' title="Parse # (hax)"><code>++hax</code></a>
1502+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#hep' title="Parse - (hep)"><code>++hep</code></a>
1503+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#kel' title="Parse { (kel)"><code>++kel</code></a>
1504+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ker' title="Parse } (ker)"><code>++ker</code></a>
1505+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ket' title="Parse ^ (ket)"><code>++ket</code></a>
1506+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#lus' title="Parse + (lus)"><code>++lus</code></a>
1507+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pam' title="Parse & (pam)"><code>++pam</code></a>
1508+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pat' title="Parse @ (pat)"><code>++pat</code></a>
1509+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pel' title="Parse ( (pel)"><code>++pel</code></a>
1510+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#per' title="Parse ) (per)"><code>++per</code></a>
1511+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sel' title="Parse [ (sel)"><code>++sel</code></a>
1512+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sem' title="Parse ; (sem)"><code>++sem</code></a>
1513+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ser' title="Parse ] (ser)"><code>++ser</code></a>
1514+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sig' title="Parse ~ (sig)"><code>++sig</code></a>
1515+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#soq' title="Parse ' (soq)"><code>++soq</code></a>
1516+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tar' title="Parse * (tar)"><code>++tar</code></a>
1517+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tec' title="Parse ` (tec)"><code>++tec</code></a>
1518+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tis' title="Parse = (tis)"><code>++tis</code></a>
1519+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#wut' title="Parse ? (wut)"><code>++wut</code></a>
1520+<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#zap' title="Parse ! (zap)"><code>++zap</code></a>
1521+
1522+### 4i: parsing (useful idioms)
1523+
1524+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#alf' title="Parse alphabetic characters"><code>++alf</code></a>
1525+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#aln' title="Parse alphanumeric characters"><code>++aln</code></a>
1526+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#alp' title="Parse alphanumeric characters and -"><code>++alp</code></a>
1527+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#bet' title="Parse hep and lus axis syntax"><code>++bet</code></a>
1528+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#bin' title="Binary to atom"><code>++bin</code></a>
1529+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#but' title="Parse binary digit"><code>++but</code></a>
1530+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#cit' title="Octal digit"><code>++cit</code></a>
1531+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dem' title="Decimal to atom"><code>++dem</code></a>
1532+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dit' title="Decimal digit"><code>++dit</code></a>
1533+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dog' title="Optional gap"><code>++dog</code></a>
1534+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#doh' title="@p separator"><code>++doh</code></a>
1535+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dun' title="-- to ~"><code>++dun</code></a>
1536+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#duz' title="== to ~"><code>++duz</code></a>
1537+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gah' title="New line or ''"><code>++gah</code></a>
1538+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gap' title="Plural whitespace"><code>++gap</code></a>
1539+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gaq' title="End of line"><code>++gaq</code></a>
1540+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gaw' title="Classic whitespace"><code>++gaw</code></a>
1541+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gay' title="Optional gap"><code>++gay</code></a>
1542+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gon' title="Parse long numbers"><code>++gon</code></a>
1543+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gul' title="Axis syntax < or >"><code>++gul</code></a>
1544+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hex' title="Hexadecimal to atom"><code>++hex</code></a>
1545+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hig' title="Parse single uppercase letter"><code>++hig</code></a>
1546+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hit' title="Parse single hexadecimal digit"><code>++hit</code></a>
1547+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#iny' title="Indentation block"><code>++iny</code></a>
1548+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#low' title="Parse lowercase letter"><code>++low</code></a>
1549+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#mes' title="Parse hexabyte"><code>++mes</code></a>
1550+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#nix' title="Parse letters and -"><code>++nix</code></a>
1551+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#nud' title="Parse numeric character"><code>++nud</code></a>
1552+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#prn' title="Parse any printable character"><code>++prn</code></a>
1553+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qit' title="Parse character to cord atom"><code>++qit</code></a>
1554+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qut' title="Parse cord"><code>++qut</code></a>
1555+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#soz' title="Parse triple single-quote"><code>++soz</code></a>
1556+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#sym' title="Term"><code>++sym</code></a>
1557+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#ven' title="Axis syntax parser"><code>++ven</code></a>
1558+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#vit' title="Parse base 64 digit"><code>++vit</code></a>
1559+<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#vul' title="Comments to null"><code>++vul</code></a>
1560+
1561+### 4j: parsing (bases and base digits)
1562+
1563+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ab' title="Primitive parser engine"><code>++ab</code></a>
1564+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bix-ab' title="Parse hex pair"><code>++bix:ab</code></a>
1565+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hif-ab' title="Parse phonetic pair"><code>++hif:ab</code></a>
1566+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#huf-ab' title="Parse two phonetic pairs"><code>++huf:ab</code></a>
1567+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hyf-ab' title="Parse 8 phonetic bytes"><code>++hyf:ab</code></a>
1568+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pev-ab' title="Parse <=5 in base 32"><code>++pev:ab</code></a>
1569+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pew-ab' title="Parse <= 5 in base 64"><code>++pew:ab</code></a>
1570+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#piv-ab' title="Parse 5 digits in base 32"><code>++piv:ab</code></a>
1571+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#piw-ab' title="Parse 5 digits in base 64"><code>++piw:ab</code></a>
1572+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qeb-ab' title="Parse <=4 binary digits"><code>++qeb:ab</code></a>
1573+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qex-ab' title="Parse <=4 hexadecimal digits"><code>++qex:ab</code></a>
1574+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qib-ab' title="Parse 4 binary digits"><code>++qib:ab</code></a>
1575+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qix-ab' title="Parse 4 hexadecimal digits"><code>++qix:ab</code></a>
1576+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#seb-ab' title="Parse 1"><code>++seb:ab</code></a>
1577+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sed-ab' title="Parse non-zero decimal digit"><code>++sed:ab</code></a>
1578+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sev-ab' title="Parse non-zero base 32 digit"><code>++sev:ab</code></a>
1579+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sew-ab' title="Parse non-zero base 64 digit"><code>++sew:ab</code></a>
1580+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sex-ab' title="Parse nonzero hexadecimal digit"><code>++sex:ab</code></a>
1581+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sib-ab' title="Parse binary digit"><code>++sib:ab</code></a>
1582+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sid-ab' title="Parse decimal digit"><code>++sid:ab</code></a>
1583+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#siv-ab' title="Parse a base 32 digit"><code>++siv:ab</code></a>
1584+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#siw-ab' title="Parse a base 64 digit"><code>++siw:ab</code></a>
1585+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#six-ab' title="Parse a hexadecimal digit"><code>++six:ab</code></a>
1586+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sov-ab' title="Parse base 32 letter"><code>++sov:ab</code></a>
1587+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sow-ab' title="Parse base 64 letter/symbol"><code>++sow:ab</code></a>
1588+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sox-ab' title="Parse hexadecimal letter"><code>++sox:ab</code></a>
1589+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ted-ab' title="Parse decimal number with <= 3 digits"><code>++ted:ab</code></a>
1590+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tid-ab' title="Parse 3 decimal digits"><code>++tid:ab</code></a>
1591+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#til-ab' title="Parse 3 lowercase letters"><code>++til:ab</code></a>
1592+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tip-ab' title="Leading phonetic byte"><code>++tip:ab</code></a>
1593+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tiq-ab' title="Trailing phonetic syllable"><code>++tiq:ab</code></a>
1594+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#urs-ab' title="Parse span characters"><code>++urs:ab</code></a>
1595+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#urt-ab' title="Parse non-_ span"><code>++urt:ab</code></a>
1596+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#voy-ab' title="Parse bas, soq, or bix"><code>++voy:ab</code></a>
1597+
1598+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ag' title="Top-level atom parser engine"><code>++ag</code></a>
1599+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ape-ag' title="Parse 0 or rule"><code>++ape:ag</code></a>
1600+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bay-ag' title="Parses binary number"><code>++bay:ag</code></a>
1601+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bip-ag' title="Parse IPv6"><code>++bip:ag</code></a>
1602+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dem-ag' title="Parse decmal with dots"><code>++dem:ag</code></a>
1603+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dim-ag' title="Parse decimal number"><code>++dim:ag</code></a>
1604+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dum-ag' title="Parse decimal with leading zero"><code>++dum:ag</code></a>
1605+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#fed-ag' title="Parse @p"><code>++fed:ag</code></a>
1606+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hex-ag' title="Parse hexadecimal number"><code>++hex:ag</code></a>
1607+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#lip-ag' title="Parse IPv4 address"><code>++lip:ag</code></a>
1608+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#viz-ag' title="Parse base 32 digit with dot separators"><code>++viz:ag</code></a>
1609+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#vum-ag' title="Parse base 32 string"><code>++vum:ag</code></a>
1610+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#wiz-ag' title="Parse base 64 number"><code>++wiz:ag</code></a>
1611+
1612+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#mu' title="Core used to scramble 16-bit atoms"><code>++mu</code></a>
1613+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zag-mu' title="Add bottom into top"><code>++zag:mu</code></a>
1614+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zig-mu' title="Subtract bottom from top"><code>++zig:mu</code></a>
1615+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zug-mu' title="Concatenate into atom"><code>++zug:mu</code></a>
1616+
1617+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ne' title="Digit rendering engine"><code>++ne</code></a>
1618+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#d-ne' title="Render decimal"><code>++d:ne</code></a>
1619+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#v-ne' title="Render base 32"><code>++v:ne</code></a>
1620+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#w-ne' title="Render base 64 digit"><code>++w:ne</code></a>
1621+<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#x-ne' title="Render hexadecimal digit as atom of ASCII byte value"><code>++x:ne</code></a>
1622+
1623+### 4k: parsing (atom printing)
1624+
1625+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#co' title="Literal rendering engine"><code>++co</code></a>
1626+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rear-co' title="Prepend and render atom as tape"><code>++rear:co</code></a>
1627+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rend-co' title="Render coin lot as tape"><code>++rend:co</code></a>
1628+<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rent-co' title="Render coin lot as span"><code>++rent:co</code></a>
1629+
1630+### 4l: parsing (atom parsing)
1631+
1632+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#so' title="Coin parser engine"><code>++so</code></a>
1633+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#bisk-so' title="Parse aura-atom pair"><code>++bisk:so</code></a>
1634+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#crub-so' title="Parse @da, @dr, @p, @t"><code>++crub:so</code></a>
1635+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#nuck-so' title="Top-level coin parser"><code>++nuck:so</code></a>
1636+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#nusk-so' title="Parse coin literal with escapes"><code>++nusk:so</code></a>
1637+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#perd-so' title="Parses dime/tiple without standard prefixes"><code>++perd:so</code></a>
1638+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-so' title="Parse dime float"><code>++royl:so</code></a>
1639+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-cell-so' title="(Undocumented)"><code>++royl-cell:so</code></a>
1640+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#tash-so' title="Parse signed dime"><code>++tash:so</code></a>
1641+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#twid-so' title="Parse coins without ~ prefix"><code>++twid:so</code></a>
1642+<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#zust-so' title="Parse prefixed dimes from IP, loobean, or floating point"><code>++zust:so</code></a>
1643+
1644+### 4m: parsing (formatting functions)
1645+
1646+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#scot' title="Render dime as cord"><code>++scot</code></a>
1647+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#scow' title="Render dime as tape"><code>++scow</code></a>
1648+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slat' title="Curried slaw"><code>++slat</code></a>
1649+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slav' title="Demand: parse cord with input aura"><code>++slav</code></a>
1650+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slaw' title="Parse cord to input aura"><code>++slaw</code></a>
1651+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slay' title="Parse cord to coin"><code>++slay</code></a>
1652+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#smyt' title="Render path as tank"><code>++smyt</code></a>
1653+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#spat' title="Render path as cord"><code>++spat</code></a>
1654+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#spud' title="Render path as tape"><code>++spud</code></a>
1655+<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#stab' title="Parse cord to path"><code>++stab</code></a>
1656+
1657+### 4n: parsing (virtualization)
1658+
1659+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mack' title="Nock subject to unit"><code>++mack</code></a>
1660+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mink' title="Mock (virtual Nock) interpreter"><code>++mink</code></a>
1661+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mock' title="Compute formula on subject with hint"><code>++mock</code></a>
1662+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mong' title="Slam gate with sample"><code>++mong</code></a>
1663+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mook' title="Intelligently render crash annotation"><code>++mook</code></a>
1664+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mule' title="Typed virtual"><code>++mule</code></a>
1665+<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mute' title="Untyped virtual"><code>++mute</code></a>
1666+
1667+### 4o: parsing (molds)
1668+
1669+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#abel' title="Compiler alias"><code>++abel</code></a>
1670+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#aura' title="'Type' of atom"><code>++aura</code></a>
1671+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#axis' title="Nock axis"><code>++axis</code></a>
1672+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#base' title="Base type"><code>++base</code></a>
1673+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#bean' title="Boolean"><code>++bean</code></a>
1674+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#beer' title="Tape builder"><code>++beer</code></a>
1675+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#beet' title="XML interpolation cases"><code>++beet</code></a>
1676+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#chum' title="Jet hint information"><code>++chum</code></a>
1677+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#coil' title="Tuple of core information"><code>++coil</code></a>
1678+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#foot' title="Cases of arms by variance model"><code>++foot</code></a>
1679+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#limb' title="Reference into subject by name/axis"><code>++limb</code></a>
1680+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#line' title="(Undocumented)"><code>++line</code></a>
1681+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#metl' title="(Undocumented)"><code>++metl</code></a>
1682+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#nock' title="Virtual machine (see Nock)"><code>++nock</code></a>
1683+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#noun' title="(Undocumented)"><code>++noun</code></a>
1684+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#null' title="(Undocumented)"><code>++null</code></a>
1685+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#port' title="(Undocumented)"><code>++port</code></a>
1686+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#span' title="ASCII atom"><code>++span</code></a>
1687+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tiki' title="(Undocumented)"><code>++tiki</code></a>
1688+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#toga' title="Tree of faces"><code>++toga</code></a>
1689+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tone'><code>++tone</code></a>
1690+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tuna' title="XML template tree"><code>++tuna</code></a>
1691+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tusk' title="List of expressions"><code>++tusk</code></a>
1692+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tyke' title="List of 'maybe' hoons"><code>++tyke</code></a>
1693+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#typo' title="Pointer for ++type"><code>++typo</code></a>
1694+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tyre' title="List, term hoon"><code>++tyre</code></a>
1695+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vase' title="Typed data"><code>++vase</code></a>
1696+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vise' title="Convert during reboot"><code>++vise</code></a>
1697+<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#wing' title="Address in subject"><code>++wing</code></a>
1698+
1699+### 5a: compiler utilities
1700+
1701+<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/'>_(To be documented)_</a>
1702+
1703+### 5b: macro expansion
1704+
1705+<a class="tooltip" href='/docs/hoon/reference/stdlib/5b/'>_(To be documented)_</a>
1706+
1707+### 5c: compiler backend and prettyprinter
1708+
1709+<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/'>_(To be documented)_</a>
1710+
1711+### 5d: parser
1712+
1713+<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/'>_(To be documented)_</a>
1714+
1715+### 5e: caching compiler
1716+
1717+<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/'>_(To be documented)_</a>
1718+
1719+### 5f: molds and mold builders
1720+
1721+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#mane'><code>++mane</code></a>
1722+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#manx'><code>++manx</code></a>
1723+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#marl'><code>++marl</code></a>
1724+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#mars'><code>++mars</code></a>
1725+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#mart'><code>++mart</code></a>
1726+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#marx'><code>++marx</code></a>
1727+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pass'><code>++pass</code></a>
1728+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#ring'><code>++ring</code></a>
1729+<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#time'><code>++time</code></a>
1730+
1731+### 5g: profiling support
1732+
1733+<a class="tooltip" href='/docs/hoon/reference/stdlib/5g/'>_(To be documented)_</a>
tutorials/hoon/hoon-school/style.md → hoon/reference/style.mdrenamed+3−3
@@ -1,6 +1,6 @@
11+++
2−title = "Appendix: Hoon Style Guide"
3−weight = 100
2+title = "Hoon Style Guide"
3+weight = 40
44template = "doc.html"
55aliases = ["docs/learn/hoon/style/"]
66+++
@@ -42,7 +42,7 @@ or
4242```
4343
4444These are regular forms -- every rune can be written this way.
45−Hoon also has a variety of wide [irregular forms](@/docs/reference/hoon-expressions/irregular.md). All tall
45+Hoon also has a variety of wide [irregular forms](@/docs/hoon/reference/irregular.md). All tall
4646forms are regular. All code within a wide form is wide.
4747Almost all code has both wide and tall forms, the exception
4848being named [cores](/docs/glossary/core/).
landscape/_index.mdnew file+17
@@ -0,0 +1,17 @@
1++++
2+title = "Landscape"
3+weight = 800
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+While not technically part of Urbit, Landscape serves as a reference
9+implementation for how to build applications in user space.
10+
11+## [Landscape Architecture](@/docs/landscape/overview.md)
12+
13+An overview of how Landscape, our flagship client, is structured.
14+
15+## [API Reference](@/docs/landscape/reference/_index.md)
16+
17+API documentation about specific agents that comprise Landscape.
landscape/overview.mdnew file+195
@@ -0,0 +1,195 @@
1++++
2+title = "Overview"
3+weight = 1
4+template = "doc.html"
5++++
6+
7+![landscape](https://storage.googleapis.com/media.urbit.org/tlon/landscapes.png)
8+
9+The architecture of Landscape’s userspace application suite has gone through a
10+number of overhauls in the past few years, and each iteration has gotten closer
11+to a point where Urbit’s userspace can truly perform as a next-generation social
12+suite built entirely on distributed networking and individual-owned personal
13+servers.
14+
15+As of this year, this application suite has arrived at a point where we’re
16+confident both in how all the parts fit together, and confident in the
17+individual parts.
18+
19+
20+## What is Landscape Intended to Be?
21+
22+Landscape is a single suite of userspace applications built to run on top of
23+Urbit. Landscape is maintained by [Tlon](https://tlon.io), a for-profit corporation that helps
24+research Urbit. Landscape is one of many possible application suites for Urbit,
25+and we hope many others emerge that build on top of the Arvo kernel. We plan on
26+making Landscape itself more extensible for user-developers in late 2021.
27+
28+Landscape is specifically a social suite of applications, meant to enable
29+communication and socializing in many forms.
30+
31+
32+## What is Landscape technically composed of?
33+
34+Landscape is composed of two primary parts: its backend, which runs as a suite of userspace applications (also known as Gall agents), and its frontend interface, which runs as a single-page web application. Both the backend and the frontend may be decomposed into their constituent parts for further understanding.
35+
36+
37+### Backend
38+
39+The Landscape backend is implemented as a collection of long-running
40+microservices known as [Gall agents](@/docs/arvo/gall/gall.md). They can be divided into the following,
41+though this is a simplification:
42+
43+- **Graph**: handles storing messages / posts in a non-relational database
44+- **Groups**: organizes people into groups and roles and handles permissioning
45+- **Metadata**: a database join between graphs and groups, it also provides
46+ titles and descriptions for graphs and groups
47+- **Contacts**: handles nicknames, profile pictures, and ship-related metadata
48+- **Invites**: a generic inviting subsystem that is used for joining graphs or groups
49+- **Hark**: a notification subsystem for keeping track of read state and
50+ notifying users
51+
52+Each of these components are built out using a few microservices that handle
53+more specific responsibilities. These responsibilities can be subdivided into
54+two main categories: [stores](#stores) and [hooks](#hooks). To simply describe
55+the separation of responsibilities, stores are dumb databases (models in MVC)
56+and hooks are for processing data (controllers in MVC).
57+
58+
59+### Stores {#stores}
60+
61+Concisely defined, a store is a dumb database. It does not send outgoing pokes,
62+watches, or peeks, except in an `+on-load` to migrate its state. It does store
63+permanent and/or temporary state, allows incoming peeks/watches to read that
64+data, and allows pokes to modify that data. A store may only accept local reads
65+and writes, not remote ones. It may or may not interact with various kernel
66+modules. Examples include:
67+[graph-store](https://github.com/urbit/urbit/blob/ac096d85ae847fcfe8786b51039c92c69abc006e/pkg/arvo/app/graph-store.hoon),
68+[group-store](https://github.com/urbit/urbit/blob/ac096d85ae847fcfe8786b51039c92c69abc006e/pkg/arvo/app/group-store.hoon),
69+[metadata-store](https://github.com/urbit/urbit/blob/ac096d85ae847fcfe8786b51039c92c69abc006e/pkg/arvo/app/metadata-store.hoon),
70+[contact-store](https://github.com/urbit/urbit/blob/ac096d85ae847fcfe8786b51039c92c69abc006e/pkg/arvo/app/contact-store.hoon),
71+and
72+[invite-store](https://github.com/urbit/urbit/blob/ac096d85ae847fcfe8786b51039c92c69abc006e/pkg/arvo/app/invite-store.hoon).
73+
74+
75+### Hooks {#hooks}
76+
77+A hook is a more loosely-defined agent that performs business logic. It should
78+only keep track of a minimal amount of state (*e.g.* active subscriptions). Hooks
79+are used for a variety of purposes in the system, but there are a few important
80+hook patterns to be aware of:
81+
82+#### Pull Hooks
83+
84+A pull-hook syncs data from a remote resource down to a local resource. There is
85+a
86+[pull-hook](https://github.com/urbit/urbit/blob/master/pkg/arvo/lib/pull-hook.hoon)
87+library that drastically simplifies the implementation of such a hook, and is
88+the defacto standard for how to sync down remote data to your ship.
89+
90+#### Push Hooks
91+
92+A push-hook allows remote ships to subscribe to and sync down the information
93+from a local resource. There is a [push-hook
94+library](https://github.com/urbit/urbit/blob/ac096d85ae847fcfe8786b51039c92c69abc006e/pkg/arvo/lib/push-hook.hoon)
95+that drastically simplifies the implementation of such a hook, and is the
96+defacto standard for how to make local data available to remote ships.
97+
98+#### Observe Hook
99+
100+The observe-hook subscribes to data coming in from another agent, and starts up
101+a thread of computation every time a subscription update from that agent is
102+received.
103+
104+#### Poke-Proxy Hook
105+
106+The poke-proxy-hook conditionally forwards a poke from a foreign ship to a store
107+on the local ship if the foreign ship has permission to do so.
108+
109+
110+### Major Components
111+
112+#### Groups
113+
114+Groups are the core building block of data permissioning within Landscape. A
115+group is made up of the following fields:
116+
117+```
118++$ group
119+ $: members=(set ship)
120+ =tags
121+ =policy
122+ hidden=?
123+ ==
124+```
125+
126+- `members` is a set of ships that are at present in the group
127+- `tags` are strings that may define additional permissions or roles within the
128+ group
129+- The `policy` defines whether a group is open to new members, is invite-only, or
130+ has some other scheme
131+- `hidden` is a boolean flag that determines whether the group’s lifecycle is
132+ attached to a single external resource (such as a chat DM, which when the DM
133+ is deleted, the group is deleted too), or whether it has an independent life
134+ of its own. This flag also determines whether the group should show up in
135+ interfaces as something that may be managed and edited.
136+
137+The `%group-store` holds a map of these groups and allows subscriptions to their
138+data. The group-store may be accessed from foreign ships through the use of the
139+`%group-pull-hook` and `%group-push-hook`. Groups may be joined either by
140+manually discovering and pasting in a group name into the “join group” dialogue
141+in the interface for an open group, or by accepting an invite to an invite-only
142+group. When a group is deleted, all data related to it is deleted or archived as
143+well.
144+
145+#### Graphs
146+
147+Graphs are the core place where we store social user-generated content: chat
148+messages, social network posts, blog posts, links, and eventually multimedia.
149+Graph store is built to be flexible enough to support many different types of
150+“apps” built on top of it, whether you want to have a forum with some friends, a
151+Pinterest equivalent, a more private version of Facebook, a decentralized
152+Reddit, or an even more distributed version of Mastodon. You can read more about
153+graph-store by [viewing the
154+source](https://github.com/urbit/urbit/blob/ac096d85ae847fcfe8786b51039c92c69abc006e/pkg/arvo/app/graph-store.hoon)
155+or reading our [API Reference](@/docs/landscape/reference/graph-store.md) documentation.
156+
157+The `%graph-store` may be accessed from foreign ships through the use of the
158+`%graph-pull-hook` and `%graph-push-hook`.
159+
160+#### Metadata
161+
162+Metadata is stored in the `%metadata-store`, and is where we store metadata
163+about resources (ex: graphs or groups). We store their display name,
164+description, a color, and the date they were added. We also store what group the
165+resource is associated with, what app the resource is associated with, and what
166+module (display mode) the resource should be used with.
167+
168+Metadata within the broader context of the userspace application suite can best
169+be thought of as a database join between the `%group-store` and the
170+`%graph-store`, as it provides bidirectional indices for querying all of the
171+graphs that a group has, or which group a particular graph is associated with.
172+
173+
174+#### Contacts
175+
176+Contacts are your address book. Individual ships (people) you talk to may have a
177+ nickname, a profile picture, or a colored sigil background that helps you
178+ identify them in groups, chatrooms, blogs, and collections.
179+
180+
181+#### Invites
182+
183+Invites is a simple subsystem that allows you to send all the details of a given
184+resource (*e.g.* graph or group) to some other ship so that they may join it if
185+they desire to. Invite acceptance is handled with threads that listen to the
186+`%invite-store` using the `%observe-hook` and invite sending is handled with the
187+`%invite-hook`, which allows any ship to send you an invite without any
188+permissions involved.
189+
190+
191+#### Hark
192+
193+Hark is a generic notification and unread-tracking subsystem that currently
194+keeps track of all unread functionality for the system. The `%hark-graph-hook`
195+sends data about `%graph-store` events to `%hark-store`.
landscape/reference/_index.mdnew file+10
@@ -0,0 +1,10 @@
1++++
2+title = "API Reference"
3+weight = 100
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+## [Graph Store](@/docs/landscape/reference/graph-store.md)
9+
10+The primary data backend utilized by Landscape.
tutorials/hoon/graph.md → landscape/reference/graph-store.mdrenamed+6−4
@@ -4,9 +4,11 @@ weight = 3
44template = "doc.html"
55+++
66
7−# What is Graph Store?
8−
9−Graph Store is a gall implementation of a tree with additional virtual edges by allowing nodes to reference other nodes. It is most comparable to modern NoSQL databases in structure, though it allows for schemas to be written in the form of marks. It is used as the backend for an increasing number of Landscape applications, and is considered to be best used for social data.
7+`graph-store` is a gall agent that implements of a tree with additional virtual
8+edges by allowing nodes to reference other nodes. It is most comparable to
9+modern NoSQL databases in structure, though it allows for schemas to be written
10+in the form of marks. It is used as the backend for an increasing number of
11+Landscape applications, and is considered to be best used for social data.
1012
1113## Data types
1214
@@ -155,4 +157,4 @@ What follows is a summary of the scrys available in graph-store
155157
156158## Marks
157159
158−There are marks in `mar/graph/validator` that are worth reviewing. They are each short enough to read quickly. They are used to validate the shapes of various nouns to be stored in the graph-store.
160+There are marks in `mar/graph/validator` that are worth reviewing. They are each short enough to read quickly. They are used to validate the shapes of various nouns to be stored in the graph-store.
tutorials/nock/_index.md → nock/_index.mdrenamed+5−5
@@ -1,6 +1,6 @@
11+++
22title = "Nock"
3−weight = 3
3+weight = 500
44sort_by = "weight"
55template = "sections/docs/chapters.html"
66aliases = ["docs/learn/nock/"]
@@ -9,18 +9,18 @@ aliases = ["docs/learn/nock/"]
99
1010Nock is the low-level functional programming language that is interpreted by Vere. You don't need to know Nock to write Hoon, or even to work on most parts of Vere. But if you want to understand the foundations of Urbit and are mathematically-inclined, dive right in.
1111
12−## [Nock Definition](@/docs/tutorials/nock/definition.md)
12+## [Nock Definition](@/docs/nock/definition.md)
1313
1414The Nock specification.
1515
16−## [An explanation of Nock](@/docs/tutorials/nock/explanation.md)
16+## [An explanation of Nock](@/docs/nock/explanation.md)
1717
1818A comprehensive walkthrough of the Nock spec.
1919
20−## [Nock by hand](@/docs/tutorials/nock/example.md)
20+## [Nock by hand](@/docs/nock/example.md)
2121
2222Learn Nock by example.
2323
24−## [Nock Implementations](@/docs/tutorials/nock/implementations.md)
24+## [Nock Implementations](@/docs/nock/implementations.md)
2525
2626The many ways that Nock has been implemented.
tutorials/nock/definition.md → nock/definition.mdrenamed

The content is the same.

tutorials/nock/example.md → nock/example.mdrenamed

The content is the same.

tutorials/nock/explanation.md → nock/explanation.mdrenamed

The content is the same.

tutorials/nock/implementations.md → nock/implementations.mdrenamed+1−1
@@ -34,7 +34,7 @@ We use a C implementation for our Nock interpreter. But building a Nock interpre
3434
3535The actual production Nock interpreter. Note gotos for tail-call elimination,
3636and manual reference counting. More about the C environment can be found
37−in the [runtime system documentation](@/docs/tutorials/vere/runtime.md).
37+in the [runtime system documentation](@/docs/vere/runtime.md).
3838```
3939/* _n_nock_on(): produce .*(bus fol). Do not virtualize.
4040*/
reference/_index.mddeleted−20
@@ -1,20 +0,0 @@
1−+++
2−title = "Reference"
3−weight = 3
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−+++
7−Various reference documents are stored here, particularly for Hoon, but also for other parts of the system.
8−
9−## [The Cheat Sheet](@/docs/reference/cheat-sheet.md)
10−
11−The cheat sheet is a compact document for looking up Hoon runes.
12−
13−## [Hoon Expressions](@/docs/reference/hoon-expressions/_index.md)
14−
15−This section contains more comprehensive reference materials for Hoon runes and other expressions, describing their exact
16−semantics and syntax.
17−
18−## [Standard Library](@/docs/reference/library/_index.md)
19−
20−This section documents the gates and mold-builders of the Hoon standard library.
reference/hoon-expressions/_index.mddeleted−28
@@ -1,28 +0,0 @@
1−+++
2−title = "Hoon Expressions"
3−weight = 1
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−aliases = ["/docs/reference/hoon-expressions/"]
7−+++
8−Documentation for Hoon expressions.
9−
10−## [Runes](@/docs/reference/hoon-expressions/rune/_index.md)
11−
12−Runes are a way to form expressions in Hoon. Their exact semantics and
13−
14−## [Limbs and Wings](@/docs/reference/hoon-expressions/limb/_index.md)
15−
16−Limbs and wings are ways to extract data from the subject.
17−
18−## [Basic Types](@/docs/reference/hoon-expressions/basic.md)
19−
20−A simplified explanation of of the Hoon type system.
21−
22−## [Advanced Types](@/docs/reference/hoon-expressions/advanced.md)
23−
24−A more comprehensive explanation of the Hoon type system, covering aliasing and polymorphism.
25−
26−## [Irregular Forms](@/docs/reference/hoon-expressions/irregular.md)
27−
28−Alternative syntaxes for Hoon runes.
reference/library/_index.mddeleted−1736
@@ -1,1736 +0,0 @@
1−+++
2−title = "Standard library"
3−weight = 2
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−+++
7−
8−Documentation for the standard library.
9−
10−Can be navigated [alphabetically](#alphabetical) or [by section](#by-section).
11−
12−## Alphabetical
13−
14−### a
15−
16−<a class="tooltip" href='/docs/reference/library/4j/#ab' title="Primitive parser engine"><code>++ab</code></a>
17−<a class="tooltip" href='/docs/reference/library/3b/#abs-fl' title="Absolute value"><code>++abs:fl</code></a>
18−<a class="tooltip" href='/docs/reference/library/3a/#abs-si' title="Absolute value (signed integer)"><code>++abs:si</code></a>
19−<a class="tooltip" href='/docs/reference/library/4o/#abel' title="Compiler alias"><code>++abel</code></a>
20−<a class="tooltip" href='/docs/reference/library/4h/#ace' title="Parse space"><code>++ace</code></a>
21−<a class="tooltip" href='/docs/reference/library/1a/#add' title="Add"><code>++add</code></a>
22−<a class="tooltip" href='/docs/reference/library/3b/#add-ff' title="Add (floating point)"><code>++add:ff</code></a>
23−<a class="tooltip" href='/docs/reference/library/3b/#add-fl' title="Add (with exact/rounded flag)"><code>++add:fl</code></a>
24−<a class="tooltip" href='/docs/reference/library/2j/#add-ja' title="Prepend to list"><code>+-add:ja</code></a>
25−<a class="tooltip" href='/docs/reference/library/3b/#add-rd' title="Add (double-precision float)"><code>++add:rd</code></a>
26−<a class="tooltip" href='/docs/reference/library/3b/#add-rh' title="Add (half-precision float)"><code>++add:rh</code></a>
27−<a class="tooltip" href='/docs/reference/library/3b/#add-rs' title="Add (single-precision float)"><code>++add:rs</code></a>
28−<a class="tooltip" href='/docs/reference/library/3b/#add-rq' title="Add (quad-precision float)"><code>++add:rq</code></a>
29−<a class="tooltip" href='/docs/reference/library/4j/#ag' title="Top-level atom parser engine"><code>++ag</code></a>
30−<a class="tooltip" href='/docs/reference/library/4i/#alf' title="Parse alphabetic characters"><code>++alf</code></a>
31−<a class="tooltip" href='/docs/reference/library/2i/#all-by' title="Logical AND (map and wet gate)"><code>+-all:by</code></a>
32−<a class="tooltip" href='/docs/reference/library/2h/#all-in' title="Logical AND (set and wet gate)"><code>+-all:in</code></a>
33−<a class="tooltip" href='/docs/reference/library/4i/#aln' title="Parse alphanumeric characters"><code>++aln</code></a>
34−<a class="tooltip" href='/docs/reference/library/4i/#alp' title="Parse alphanumeric characters and -"><code>++alp</code></a>
35−<a class="tooltip" href='/docs/reference/library/2i/#any-by' title="Logical OR (map and wet gate)"><code>+-any:by</code></a>
36−<a class="tooltip" href='/docs/reference/library/2h/#any-in' title="Logical OR (set and gate)"><code>+-any:in</code></a>
37−<a class="tooltip" href='/docs/reference/library/2f/#aor' title="Alphabetical order"><code>++aor</code></a>
38−<a class="tooltip" href='/docs/reference/library/4j/#ape-ag' title="Parse 0 or rule"><code>++ape:ag</code></a>
39−<a class="tooltip" href='/docs/reference/library/2i/#apt-by' title="Check correctness (map)"><code>+-apt:by</code></a>
40−<a class="tooltip" href='/docs/reference/library/2h/#apt-in' title="Check correctness (set)"><code>+-apt:in</code></a>
41−<a class="tooltip" href='/docs/reference/library/4b/#at' title="(Undocumented)"><code>++at</code></a>
42−<a class="tooltip" href='/docs/reference/library/4o/#aura' title="'Type' of atom"><code>++aura</code></a>
43−<a class="tooltip" href='/docs/reference/library/4o/#axis' title="Nock axis"><code>++axis</code></a>
44−
45−### b
46−
47−<a class="tooltip" href='/docs/reference/library/2k/#bal-to' title="Balance queue"><code>+-bal:to</code></a>
48−<a class="tooltip" href='/docs/reference/library/4h/#bar' title="Parse | (bar)"><code>++bar</code></a>
49−<a class="tooltip" href='/docs/reference/library/4h/#bas' title="Parse \ (bas)"><code>++bas</code></a>
50−<a class="tooltip" href='/docs/reference/library/4o/#base' title="Base type"><code>++base</code></a>
51−<a class="tooltip" href='/docs/reference/library/4f/#bass' title="Parser modifier (LSB-ordered ++list as atom of ++base)"><code>++bass</code></a>
52−<a class="tooltip" href='/docs/reference/library/4j/#bay-ag' title="Parses binary number"><code>++bay:ag</code></a>
53−<a class="tooltip" href='/docs/reference/library/4o/#bean' title="Boolean"><code>++bean</code></a>
54−<a class="tooltip" href='/docs/reference/library/4o/#beer' title="Tape builder"><code>++beer</code></a>
55−<a class="tooltip" href='/docs/reference/library/4o/#beet' title="XML interpolation cases"><code>++beet</code></a>
56−<a class="tooltip" href='/docs/reference/library/4e/#bend' title="Conditional composer"><code>++bend</code></a>
57−<a class="tooltip" href='/docs/reference/library/4i/#bet' title="Parse hep and lus axis syntax"><code>++bet</code></a>
58−<a class="tooltip" href='/docs/reference/library/2c/#bex' title="Binary exponent"><code>++bex</code></a>
59−<a class="tooltip" href='/docs/reference/library/3b/#bif-ff' title="Converts from fn to @r"><code>++bif:ff</code></a>
60−<a class="tooltip" href='/docs/reference/library/2i/#bif-by' title="Bifurcate map"><code>+-bif:by</code></a>
61−<a class="tooltip" href='/docs/reference/library/2h/#bif-in' title="Bifurcate set"><code>+-bif:in</code></a>
62−<a class="tooltip" href='/docs/reference/library/2a/#biff' title="Unit as argument"><code>++biff</code></a>
63−<a class="tooltip" href='/docs/reference/library/4i/#bin' title="Binary to atom"><code>++bin</code></a>
64−<a class="tooltip" href='/docs/reference/library/2a/#bind' title="Non-unit function to unit, producing unit"><code>++bind</code></a>
65−<a class="tooltip" href='/docs/reference/library/4j/#bip-ag' title="Parse IPv6"><code>++bip:ag</code></a>
66−<a class="tooltip" href='/docs/reference/library/3b/#bit-ff' title="fn to @r with rounding"><code>++bit:ff</code></a>
67−<a class="tooltip" href='/docs/reference/library/3b/#bit-rd' title="fn to double-precision binary float"><code>++bit:rd</code></a>
68−<a class="tooltip" href='/docs/reference/library/3b/#bit-rh' title="fn to half-precision float"><code>++bit:rh</code></a>
69−<a class="tooltip" href='/docs/reference/library/3b/#bit-rs' title="fn to single-precision float"><code>++bit:rs</code></a>
70−<a class="tooltip" href='/docs/reference/library/3b/#bit-rq' title="fn to quad-precision float"><code>++bit:rq</code></a>
71−<a class="tooltip" href='/docs/reference/library/4j/#bix-ab' title="Parse hex pair"><code>++bix:ab</code></a>
72−<a class="tooltip" href='/docs/reference/library/4l/#bisk-so' title="Parse aura-atom pair"><code>++bisk:so</code></a>
73−<a class="tooltip" href='/docs/reference/library/1c/#bloq' title="Blocksize"><code>++bloq</code></a>
74−<a class="tooltip" href='/docs/reference/library/2a/#bond' title="Replace null"><code>++bond</code></a>
75−<a class="tooltip" href='/docs/reference/library/4f/#boss' title="Parser modifier: LSB"><code>++boss</code></a>
76−<a class="tooltip" href='/docs/reference/library/2a/#both' title="Group unit values into pair"><code>++both</code></a>
77−<a class="tooltip" href='/docs/reference/library/4h/#buc' title="Parse $ (buc)"><code>++buc</code></a>
78−<a class="tooltip" href='/docs/reference/library/4i/#but' title="Parse binary digit"><code>++but</code></a>
79−
80−### c
81−
82−<a class="tooltip" href='/docs/reference/library/4h/#cab' title="Parse _ (cab)"><code>++cab</code></a>
83−<a class="tooltip" href='/docs/reference/library/2c/#can' title="Assemble"><code>++can</code></a>
84−<a class="tooltip" href='/docs/reference/library/1b/#cap' title="Tree head"><code>++cap</code></a>
85−<a class="tooltip" href='/docs/reference/library/4b/#cass' title="To lowercase"><code>++cass</code></a>
86−<a class="tooltip" href='/docs/reference/library/2c/#cat' title="Concatenate"><code>++cat</code></a>
87−<a class="tooltip" href='/docs/reference/library/4h/#cen' title="Parse % (cen)"><code>++cen</code></a>
88−<a class="tooltip" href='/docs/reference/library/3c/#cet-yo' title="Days in a century"><code>++cet:yo</code></a>
89−<a class="tooltip" href='/docs/reference/library/2q/#char' title="Character"><code>++char</code></a>
90−<a class="tooltip" href='/docs/reference/library/4o/#chum' title="Jet hint information"><code>++chum</code></a>
91−<a class="tooltip" href='/docs/reference/library/4i/#cit' title="Octal digit"><code>++cit</code></a>
92−<a class="tooltip" href='/docs/reference/library/2a/#clap' title="Apply function to two units"><code>++clap</code></a>
93−<a class="tooltip" href='/docs/reference/library/3a/#cmp-si' title="Compare (signed integer)"><code>++cmp:si</code></a>
94−<a class="tooltip" href='/docs/reference/library/4k/#co' title="Literal rendering engine"><code>++co</code></a>
95−<a class="tooltip" href='/docs/reference/library/4o/#coil' title="Tuple of core information"><code>++coil</code></a>
96−<a class="tooltip" href='/docs/reference/library/3g/#coin' title="Noun-literal syntax cases"><code>++coin</code></a>
97−<a class="tooltip" href='/docs/reference/library/4h/#col' title="Parse : (col)"><code>++col</code></a>
98−<a class="tooltip" href='/docs/reference/library/4f/#cold' title="Replace with constant"><code>++cold</code></a>
99−<a class="tooltip" href='/docs/reference/library/4h/#com' title="Parse , (com)"><code>++com</code></a>
100−<a class="tooltip" href='/docs/reference/library/4e/#comp' title="Arbitrary compose"><code>++comp</code></a>
101−<a class="tooltip" href='/docs/reference/library/2d/#con' title="Binary OR"><code>++con</code></a>
102−<a class="tooltip" href='/docs/reference/library/4f/#cook' title="Apply gate"><code>++cook</code></a>
103−<a class="tooltip" href='/docs/reference/library/2q/#cord' title="UTF-8 text"><code>++cord</code></a>
104−<a class="tooltip" href='/docs/reference/library/2n/#cork' title="Compose forward"><code>++cork</code></a>
105−<a class="tooltip" href='/docs/reference/library/2n/#corl' title="Compose backward"><code>++corl</code></a>
106−<a class="tooltip" href='/docs/reference/library/4b/#crip' title="Tape to cord"><code>++crip</code></a>
107−<a class="tooltip" href='/docs/reference/library/4l/#crub-so' title="Parse @da, @dr, @p, @t"><code>++crub:so</code></a>
108−<a class="tooltip" href='/docs/reference/library/2p/#cue' title="Unpack atom to noun"><code>++cue</code></a>
109−<a class="tooltip" href='/docs/reference/library/2n/#curr' title="Right-curry a gate"><code>++curr</code></a>
110−<a class="tooltip" href='/docs/reference/library/2n/#cury' title="Curry left a gate"><code>++cury</code></a>
111−<a class="tooltip" href='/docs/reference/library/4b/#cuss' title="To uppercase"><code>++cuss</code></a>
112−<a class="tooltip" href='/docs/reference/library/2c/#cut' title="Slice"><code>++cut</code></a>
113−
114−### d
115−
116−<a class="tooltip" href='/docs/reference/library/4j/#d-ne' title="Render decimal"><code>++d:ne</code></a>
117−<a class="tooltip" href='/docs/reference/library/2q/#date' title="Point in time"><code>++date</code></a>
118−<a class="tooltip" href='/docs/reference/library/3c/#day-yo' title="Seconds in day"><code>++day:yo</code></a>
119−<a class="tooltip" href='/docs/reference/library/1a/#dec' title="Decrement"><code>++dec</code></a>
120−<a class="tooltip" href='/docs/reference/library/2i/#def-by' title="Difference (map)"><code>+-def:by</code></a>
121−<a class="tooltip" href='/docs/reference/library/2i/#del-by' title="Delete (map)"><code>+-del:by</code></a>
122−<a class="tooltip" href='/docs/reference/library/2h/#del-in' title="Delete (set)"><code>+-del:in</code></a>
123−<a class="tooltip" href='/docs/reference/library/2j/#del-ju' title="Delete (jug)"><code>+-del:ju</code></a>
124−<a class="tooltip" href='/docs/reference/library/4i/#dem' title="Decimal to atom"><code>++dem</code></a>
125−<a class="tooltip" href='/docs/reference/library/4j/#dem-ag' title="Parse decmal with dots"><code>++dem:ag</code></a>
126−<a class="tooltip" href='/docs/reference/library/3b/#den-fl' title="Denormalizes (floating point)"><code>++den:fl</code></a>
127−<a class="tooltip" href='/docs/reference/library/2i/#dep-by' title="Difference as patch (map)"><code>+-dep:by</code></a>
128−<a class="tooltip" href='/docs/reference/library/2k/#dep-to' title="Maximum depth (queue)"><code>+-dep:to</code></a>
129−<a class="tooltip" href='/docs/reference/library/2c/#dif-fe' title="Difference between atoms (modular basis)"><code>++dif:fe</code></a>
130−<a class="tooltip" href='/docs/reference/library/3a/#dif-fo' title='Subtraction (modular base)'><code>++dif:fo</code></a>
131−<a class="tooltip" href='/docs/reference/library/2h/#dif-in' title='Difference (set)'><code>+-dif:in</code></a>
132−<a class="tooltip" href='/docs/reference/library/3a/#dif-si' title="Subtraction (signed integer)"><code>++dif:si</code></a>
133−<a class="tooltip" href='/docs/reference/library/2i/#dig-by' title="Address of key (map)"><code>+-dig:by</code></a>
134−<a class="tooltip" href='/docs/reference/library/2h/#dig-in' title="Address of a in set"><code>+-dig:in</code></a>
135−<a class="tooltip" href='/docs/reference/library/4j/#dim-ag' title="Parse decimal number"><code>++dim:ag</code></a>
136−<a class="tooltip" href='/docs/reference/library/3g/#dime' title="Aura-atom pair"><code>++dime</code></a>
137−<a class="tooltip" href='/docs/reference/library/4c/#din-re' title="(Undocumented)"><code>++din:re</code></a>
138−<a class="tooltip" href='/docs/reference/library/2d/#dis' title="Binary AND (atoms)"><code>++dis</code></a>
139−<a class="tooltip" href='/docs/reference/library/4i/#dit' title="Decimal digit"><code>++dit</code></a>
140−<a class="tooltip" href='/docs/reference/library/1a/#div' title="Divide"><code>++div</code></a>
141−<a class="tooltip" href='/docs/reference/library/3b/#div-ff' title="Divide (IEEE float)"><code>++div:ff</code></a>
142−<a class="tooltip" href='/docs/reference/library/3b/#div-fl' title="Divide (signed and unsigned integer cell)"><code>++div:fl</code></a>
143−<a class="tooltip" href='/docs/reference/library/3b/#div-rd' title="Double precision float"><code>++div:rd</code></a>
144−<a class="tooltip" href='/docs/reference/library/3b/#div-rh' title="Divide (half-precision float)"><code>++div:rh</code></a>
145−<a class="tooltip" href='/docs/reference/library/3b/#div-rs' title="Divide (single-precision float)"><code>++div:rs</code></a>
146−<a class="tooltip" href='/docs/reference/library/3b/#div-rq' title="Divide (quad-precision float)"><code>++div:rq</code></a>
147−<a class="tooltip" href='/docs/reference/library/4i/#dog' title="Optional gap"><code>++dog</code></a>
148−<a class="tooltip" href='/docs/reference/library/4i/#doh' title="@p separator"><code>++doh</code></a>
149−<a class="tooltip" href='/docs/reference/library/4h/#doq' title="Parse double quote"><code>++doq</code></a>
150−<a class="tooltip" href='/docs/reference/library/2f/#dor' title="Numeric order"><code>++dor</code></a>
151−<a class="tooltip" href='/docs/reference/library/4h/#dot' title="Parse period"><code>++dot</code></a>
152−<a class="tooltip" href='/docs/reference/library/3b/#drg-ff' title="@r to decimal float"><code>++drg:ff</code></a>
153−<a class="tooltip" href='/docs/reference/library/3b/#drg-fl' title="Get printable decimal (signed and unsigned integer cell)"><code>++drg:fl</code></a>
154−<a class="tooltip" href='/docs/reference/library/3b/#drg-rd' title="@rd to decimal float"><code>++drg:rd</code></a>
155−<a class="tooltip" href='/docs/reference/library/3b/#drg-rh' title="@rh to decimal float"><code>++drg:rh</code></a>
156−<a class="tooltip" href='/docs/reference/library/3b/#drg-rs' title="@rs to decimal float"><code>++drg:rs</code></a>
157−<a class="tooltip" href='/docs/reference/library/3b/#drg-rq' title="@rq to decimal float"><code>++drg:rq</code></a>
158−<a class="tooltip" href='/docs/reference/library/2a/#drop' title="Unit to list"><code>++drop</code></a>
159−<a class="tooltip" href='/docs/reference/library/3a/#dul-si' title="Modulus (signed integer)"><code>++dul:si</code></a>
160−<a class="tooltip" href='/docs/reference/library/4j/#dum-ag' title="Parse decimal with leading zero"><code>++dum:ag</code></a>
161−<a class="tooltip" href='/docs/reference/library/4i/#dun' title="-- to ~"><code>++dun</code></a>
162−<a class="tooltip" href='/docs/reference/library/4i/#duz' title="== to ~"><code>++duz</code></a>
163−<a class="tooltip" href='/docs/reference/library/1a/#dvr' title="Divide (with remainder)"><code>++dvr</code></a>
164−
165−### e
166−
167−<a class="tooltip" href='/docs/reference/library/3b/#ead-fl' title="Exact add"><code>++ead:fl</code></a>
168−<a class="tooltip" href='/docs/reference/library/1c/#each' title="Mold of fork between two types"><code>++each</code></a>
169−<a class="tooltip" href='/docs/reference/library/4f/#easy' title="Always parse"><code>++easy</code></a>
170−<a class="tooltip" href='/docs/reference/library/3g/#edge' title="Parsing location metadata"><code>++edge</code></a>
171−<a class="tooltip" href='/docs/reference/library/3a/#egcd' title="Extended Euclidean algorithm"><code>++egcd</code></a>
172−<a class="tooltip" href='/docs/reference/library/3b/#emn-fl' title="Minimum exponent"><code>++emn:fl</code></a>
173−<a class="tooltip" href='/docs/reference/library/3b/#emu-fl' title="Exact multiply"><code>++emu:fl</code></a>
174−<a class="tooltip" href='/docs/reference/library/3b/#emx-fl' title="Maximum exponent"><code>++emx:fl</code></a>
175−<a class="tooltip" href='/docs/reference/library/2c/#end' title="Tail"><code>++end</code></a>
176−<a class="tooltip" href='/docs/reference/library/3b/#equ-ff' title="Equals (IEEE float)"><code>++equ:ff</code></a>
177−<a class="tooltip" href='/docs/reference/library/3b/#equ-fl' title="Equals (signed and unsigned integer cell)"><code>++equ:fl</code></a>
178−<a class="tooltip" href='/docs/reference/library/3b/#equ-rd' title="Equals (double-precision float)"><code>++equ:rd</code></a>
179−<a class="tooltip" href='/docs/reference/library/3b/#equ-rh' title="Equals (half-precision float)"><code>++equ:rh</code></a>
180−<a class="tooltip" href='/docs/reference/library/3b/#equ-rs' title="Equals (single-precision float)"><code>++equ:rs</code></a>
181−<a class="tooltip" href='/docs/reference/library/3b/#equ-rq' title="Equals (quad-precision float)"><code>++equ:rq</code></a>
182−<a class="tooltip" href='/docs/reference/library/3c/#era-yo' title="Leap-year period"><code>++era:yo</code></a>
183−<a class="tooltip" href='/docs/reference/library/3b/#exp-ff' title="Get exponent (IEEE float)"><code>++exp:ff</code></a>
184−<a class="tooltip" href='/docs/reference/library/3a/#exp-fo' title="Exponent (modular base)"><code>++exp:fo</code></a>
185−<a class="tooltip" href='/docs/reference/library/3b/#exp-rd' title="Exponent (@rd)"><code>++exp:rd</code></a>
186−<a class="tooltip" href='/docs/reference/library/3b/#exp-rh' title="Exponent (half-precision float)"><code>++exp:rh</code></a>
187−<a class="tooltip" href='/docs/reference/library/3b/#exp-rs' title="Exponent (@rs)"><code>++exp:rs</code></a>
188−<a class="tooltip" href='/docs/reference/library/3b/#exp-rq' title="Exponent (quad-precision float)"><code>++exp:rq</code></a>
189−
190−### f
191−
192−<a class="tooltip" href='/docs/reference/library/4e/#fail' title="Never parse"><code>++fail</code></a>
193−<a class="tooltip" href='/docs/reference/library/2a/#fall' title="Give unit a default value"><code>++fall</code></a>
194−<a class="tooltip" href='/docs/reference/library/2b/#fand' title="All indices in list"><code>++fand</code></a>
195−<a class="tooltip" href='/docs/reference/library/4h/#fas' title="Parse / (fas)"><code>++fas</code></a>
196−<a class="tooltip" href='/docs/reference/library/2c/#fe' title="Modulo bloq"><code>++fe</code></a>
197−<a class="tooltip" href='/docs/reference/library/4j/#fed-ag' title="Parse @p"><code>++fed:ag</code></a>
198−<a class="tooltip" href='/docs/reference/library/3f/#feen-ob' title="Conceal structure v2"><code>++feen:ob</code></a>
199−<a class="tooltip" href='/docs/reference/library/3f/#fend-ob' title="Restore structure v2"><code>++fend:ob</code></a>
200−<a class="tooltip" href='/docs/reference/library/3f/#fice-ob' title="Feistel-like cipher"><code>++fice:ob</code></a>
201−<a class="tooltip" href='/docs/reference/library/2c/#fil' title="Fill bloqstream"><code>++fil</code></a>
202−<a class="tooltip" href='/docs/reference/library/2b/#find' title="First index in list"><code>++find</code></a>
203−<a class="tooltip" href='/docs/reference/library/4c/#fit-re' title="Fit on one line test"><code>++fit:re</code></a>
204−<a class="tooltip" href='/docs/reference/library/3b/#fli-fl' title="Flip sign"><code>++fli:fl</code></a>
205−<a class="tooltip" href='/docs/reference/library/2b/#flop' title="Reverse list"><code>++flop</code></a>
206−<a class="tooltip" href='/docs/reference/library/3b/#fma-ff' title="Fused multiply-add (IEEE float)"><code>++fma:ff</code></a>
207−<a class="tooltip" href='/docs/reference/library/3b/#fma-fl' title="Fused multiply-add"><code>++fma:fl</code></a>
208−<a class="tooltip" href='/docs/reference/library/3b/#fma-rd' title="Fused multiply-add (@rd)"><code>++fma:rd</code></a>
209−<a class="tooltip" href='/docs/reference/library/3b/#fma-rh' title="Fused multiply-add (half-precision float)"><code>++fma:rh</code></a>
210−<a class="tooltip" href='/docs/reference/library/3b/#fma-rs' title="Fused multiply-add (single-precision float)"><code>++fma:rs</code></a>
211−<a class="tooltip" href='/docs/reference/library/3b/#fma-rq' title="Fused multiply-add (quad-precision float)"><code>++fma:rq</code></a>
212−<a class="tooltip" href='/docs/reference/library/2e/#fnv' title="FNV scrambler"><code>++fnv</code></a>
213−<a class="tooltip" href='/docs/reference/library/3a/#fo' title="Modulo prime"><code>++fo</code></a>
214−<a class="tooltip" href='/docs/reference/library/4o/#foot' title="Cases of arms by variance model"><code>++foot</code></a>
215−<a class="tooltip" href='/docs/reference/library/3b/#fos-rh' title="@rs to @rh"><code>++fos:rh</code></a>
216−<a class="tooltip" href='/docs/reference/library/3a/#fra-fo' title="Divide (modular base)"><code>++fra:fo</code></a>
217−<a class="tooltip" href='/docs/reference/library/3a/#fra-si' title="Divide (signed integer)"><code>++fra:si</code></a>
218−<a class="tooltip" href='/docs/reference/library/4f/#full' title="Parse to end"><code>++full</code></a>
219−<a class="tooltip" href='/docs/reference/library/4f/#funk' title="Add to tape"><code>++funk</code></a>
220−
221−### g
222−
223−<a class="tooltip" href='/docs/reference/library/4i/#gah' title="New line or ''"><code>++gah</code></a>
224−<a class="tooltip" href='/docs/reference/library/4h/#gal' title="Parse < (gal)"><code>++gal</code></a>
225−<a class="tooltip" href='/docs/reference/library/4i/#gap' title="Plural whitespace"><code>++gap</code></a>
226−<a class="tooltip" href='/docs/reference/library/4i/#gaq' title="End of line"><code>++gaq</code></a>
227−<a class="tooltip" href='/docs/reference/library/4h/#gar' title="Parse > (gar)"><code>++gar</code></a>
228−<a class="tooltip" href='/docs/reference/library/2i/#gas-by' title="Concatenate (map)"><code>+-gas:by</code></a>
229−<a class="tooltip" href='/docs/reference/library/2h/#gas-in' title="Concatenate (set)"><code>+-gas:in</code></a>
230−<a class="tooltip" href='/docs/reference/library/2k/#gas-to' title="Push list into queue"><code>+-gas:to</code></a>
231−<a class="tooltip" href='/docs/reference/library/1c/#gate' title="Function"><code>++gate</code></a>
232−<a class="tooltip" href='/docs/reference/library/4i/#gaw' title="Classic whitespace"><code>++gaw</code></a>
233−<a class="tooltip" href='/docs/reference/library/4i/#gay' title="Optional gap"><code>++gay</code></a>
234−<a class="tooltip" href='/docs/reference/library/2i/#get-by' title="Grab unit value"><code>+-get:by</code></a>
235−<a class="tooltip" href='/docs/reference/library/2j/#get-ja' title="Grab value by key"><code>+-get:ja</code></a>
236−<a class="tooltip" href='/docs/reference/library/2j/#get-ju' title="Retrieve set"><code>+-get:ju</code></a>
237−<a class="tooltip" href='/docs/reference/library/2k/#get-to' title="Head-tail pair"><code>+-get:to</code></a>
238−<a class="tooltip" href='/docs/reference/library/4e/#glue' title="Skip delimiter"><code>++glue</code></a>
239−<a class="tooltip" href='/docs/reference/library/4i/#gon' title="Parse long numbers"><code>++gon</code></a>
240−<a class="tooltip" href='/docs/reference/library/2f/#gor' title="Hash order"><code>++gor</code></a>
241−<a class="tooltip" href='/docs/reference/library/2i/#got-by' title="Assert for value (map)"><code>+-got:by</code></a>
242−<a class="tooltip" href='/docs/reference/library/3b/#grd-ff' title="Decimal float to @r"><code>++grd:ff</code></a>
243−<a class="tooltip" href='/docs/reference/library/3b/#grd-fl' title="Decimal to float"><code>++grd:fl</code></a>
244−<a class="tooltip" href='/docs/reference/library/3b/#grd-rd' title="Decimal float to @rd"><code>++grd:rd</code></a>
245−<a class="tooltip" href='/docs/reference/library/3b/#grd-rh' title="Decimal float to @rh"><code>++grd:rh</code></a>
246−<a class="tooltip" href='/docs/reference/library/3b/#grd-rs' title="Decimal float to @rs"><code>++grd:rs</code></a>
247−<a class="tooltip" href='/docs/reference/library/3b/#grd-rq' title="Decimal float to @rq"><code>++grd:rq</code></a>
248−<a class="tooltip" href='/docs/reference/library/1a/#gte' title="Greater than / equal"><code>++gte</code></a>
249−<a class="tooltip" href='/docs/reference/library/3b/#gte-ff' title="Greater than / equal (IEEE float)"><code>++gte:ff</code></a>
250−<a class="tooltip" href='/docs/reference/library/3b/#gte-fl' title="Greater than / equal (producing flag)"><code>++gte:fl</code></a>
251−<a class="tooltip" href='/docs/reference/library/3b/#gte-rd' title="Greater than / equal (double-precision float)"><code>++gte:rd</code></a>
252−<a class="tooltip" href='/docs/reference/library/3b/#gte-rh' title="Greater than / equal (half-precision float)"><code>++gte:rh</code></a>
253−<a class="tooltip" href='/docs/reference/library/3b/#gte-rs' title="Greater than / equal (single-precision float)"><code>++gte:rs</code></a>
254−<a class="tooltip" href='/docs/reference/library/3b/#gte-rq' title="Greater than / equal (quad-precision float)"><code>++gte:rq</code></a>
255−<a class="tooltip" href='/docs/reference/library/1a/#gth' title="Greater than"><code>++gth</code></a>
256−<a class="tooltip" href='/docs/reference/library/3b/#gth-ff' title="Greater than (IEEE float)"><code>++gth:ff</code></a>
257−<a class="tooltip" href='/docs/reference/library/3b/#gth-fl' title="Greater than (producing flag)"><code>++gth:fl</code></a>
258−<a class="tooltip" href='/docs/reference/library/3b/#gth-rd' title="Greater than (double-precision float)"><code>++gth:rd</code></a>
259−<a class="tooltip" href='/docs/reference/library/3b/#gth-rh' title="Greater than (half-precision float)"><code>++gth:rh</code></a>
260−<a class="tooltip" href='/docs/reference/library/3b/#gth-rs' title="Greater than (single-precision float)"><code>++gth:rs</code></a>
261−<a class="tooltip" href='/docs/reference/library/3b/#gth-rq' title="Greater than (quad-precision float)"><code>++gth:rq</code></a>
262−<a class="tooltip" href='/docs/reference/library/4i/#gul' title="Axis syntax < or >"><code>++gul</code></a>
263−<a class="tooltip" href='/docs/reference/library/2b/#gulf' title="List from range"><code>++gulf</code></a>
264−<a class="tooltip" href='/docs/reference/library/2i/#gut-by' title="Grab value with defualt"><code>+-gut:by</code></a>
265−
266−### h
267−
268−<a class="tooltip" href='/docs/reference/library/3g/#hair' title="Parsing line and column"><code>++hair</code></a>
269−<a class="tooltip" href='/docs/reference/library/2n/#hard' title="Force remold"><code>++hard</code></a>
270−<a class="tooltip" href='/docs/reference/library/2i/#has-by' title="Key existence check (map)"><code>+-has:by</code></a>
271−<a class="tooltip" href='/docs/reference/library/2h/#has-in' title="Key existence check (set)"><code>+-has:in</code></a>
272−<a class="tooltip" href='/docs/reference/library/2j/#has-ju' title="Check contents (jug)"><code>+-has:ju</code></a>
273−<a class="tooltip" href='/docs/reference/library/4h/#hax' title="Parse # (hax)"><code>++hax</code></a>
274−<a class="tooltip" href='/docs/reference/library/2n/#head' title="Get head of cell"><code>++head</code></a>
275−<a class="tooltip" href='/docs/reference/library/4f/#here' title="Place-based apply"><code>++here</code></a>
276−<a class="tooltip" href='/docs/reference/library/4h/#hep' title="Parse - (hep)"><code>++hep</code></a>
277−<a class="tooltip" href='/docs/reference/library/4i/#hex' title="Hexadecimal to atom"><code>++hex</code></a>
278−<a class="tooltip" href='/docs/reference/library/4j/#hex-ag' title="Parse hexadecimal number"><code>++hex:ag</code></a>
279−<a class="tooltip" href='/docs/reference/library/4j/#hif-ab' title="Parse phonetic pair"><code>++hif:ab</code></a>
280−<a class="tooltip" href='/docs/reference/library/4i/#hig' title="Parse single uppercase letter"><code>++hig</code></a>
281−<a class="tooltip" href='/docs/reference/library/4i/#hit' title="Parse single hexadecimal digit"><code>++hit</code></a>
282−<a class="tooltip" href='/docs/reference/library/2b/#homo' title="Homogenize list"><code>++homo</code></a>
283−<a class="tooltip" href='/docs/reference/library/2f/#hor' title="Horizontal hash order"><code>++hor</code></a>
284−<a class="tooltip" href='/docs/reference/library/3c/#hor-yo' title="Seconds in hour"><code>++hor:yo</code></a>
285−<a class="tooltip" href='/docs/reference/library/4j/#huf-ab' title="Parse two phonetic pairs"><code>++huf:ab</code></a>
286−<a class="tooltip" href='/docs/reference/library/4j/#hyf-ab' title="Parse 8 phonetic bytes"><code>++hyf:ab</code></a>
287−
288−### i
289−
290−<a class="tooltip" href='/docs/reference/library/3b/#ibl-fl' title="Integer binary logarithm"><code>++ibl:fl</code></a>
291−<a class="tooltip" href='/docs/reference/library/4f/#ifix' title="Infix"><code>++ifix</code></a>
292−<a class="tooltip" href='/docs/reference/library/4a/#ind-po' title="Parse suffix"><code>++ind:po</code></a>
293−<a class="tooltip" href='/docs/reference/library/4a/#ins-po' title="Parse prefix"><code>++ins:po</code></a>
294−<a class="tooltip" href='/docs/reference/library/2i/#int-by' title="Intersection (map)"><code>+-int:by</code></a>
295−<a class="tooltip" href='/docs/reference/library/2h/#int-in' title="Intersection (set)"><code>+-int:in</code></a>
296−<a class="tooltip" href='/docs/reference/library/2c/#inv-fe' title="Inverse order of modular field"><code>++inv:fe</code></a>
297−<a class="tooltip" href='/docs/reference/library/3b/#inv-fl' title="Inverse"><code>++inv:fl</code></a>
298−<a class="tooltip" href='/docs/reference/library/3a/#inv-fo' title="Inverse (signed modulus)"><code>++inv:fo</code></a>
299−<a class="tooltip" href='/docs/reference/library/4i/#iny' title="Indentation block"><code>++iny</code></a>
300−
301−### j
302−
303−<a class="tooltip" href='/docs/reference/library/2j/#ja' title="Jar engine"><code>++ja</code></a>
304−<a class="tooltip" href='/docs/reference/library/2p/#jam' title="Pack noun to atom"><code>++jam</code></a>
305−<a class="tooltip" href='/docs/reference/library/2o/#jar' title="Mold generator (jar)"><code>++jar</code></a>
306−<a class="tooltip" href='/docs/reference/library/3c/#jes-yo' title="Maximum 64-bit timestamp"><code>++jes:yo</code></a>
307−<a class="tooltip" href='/docs/reference/library/4f/#jest' title="Match a cord"><code>++jest</code></a>
308−<a class="tooltip" href='/docs/reference/library/2b/#join' title="Add separator between list elements"><code>++join</code></a>
309−<a class="tooltip" href='/docs/reference/library/2j/#ju' title="Jug operations"><code>++ju</code></a>
310−<a class="tooltip" href='/docs/reference/library/2o/#jug' title="Mold generator (jug)"><code>++jug</code></a>
311−<a class="tooltip" href='/docs/reference/library/4f/#just' title="Match a single character"><code>++just</code></a>
312−
313−### k
314−
315−<a class="tooltip" href='/docs/reference/library/4h/#kel' title="Parse { (kel)"><code>++kel</code></a>
316−<a class="tooltip" href='/docs/reference/library/4h/#ker' title="Parse } (ker)"><code>++ker</code></a>
317−<a class="tooltip" href='/docs/reference/library/4h/#ket' title="Parse ^ (ket)"><code>++ket</code></a>
318−<a class="tooltip" href='/docs/reference/library/4f/#knee' title="Recursive parsers"><code>++knee</code></a>
319−<a class="tooltip" href='/docs/reference/library/2q/#knot' title="Atom type of ASCII characters"><code>++knot</code></a>
320−
321−### l
322−
323−<a class="tooltip" href='/docs/reference/library/4d/#last' title="Further trace"><code>++last</code></a>
324−<a class="tooltip" href='/docs/reference/library/2m/#le-nl' title="Construct list from null-terminated noun"><code>++le:nl</code></a>
325−<a class="tooltip" href='/docs/reference/library/2b/#lent' title="List length"><code>++lent</code></a>
326−<a class="tooltip" href='/docs/reference/library/2b/#levy' title="Logical AND on list"><code>++levy</code></a>
327−<a class="tooltip" href='/docs/reference/library/3b/#lfe-fl' title="Maximum"><code>++lfe:fl</code></a>
328−<a class="tooltip" href='/docs/reference/library/3b/#lfn-fl' title="Largest normal float"><code>++lfn:fl</code></a>
329−<a class="tooltip" href='/docs/reference/library/2b/#lien' title="Logical OR on list"><code>++lien</code></a>
330−<a class="tooltip" href='/docs/reference/library/2a/#lift' title="Curried bind"><code>++lift</code></a>
331−<a class="tooltip" href='/docs/reference/library/3g/#like' title="Generic edge"><code>++like</code></a>
332−<a class="tooltip" href='/docs/reference/library/4o/#limb' title="Reference into subject by name/axis"><code>++limb</code></a>
333−<a class="tooltip" href='/docs/reference/library/2b/#limo' title="Construct list from null-terminated tuple"><code>++limo</code></a>
334−<a class="tooltip" href='/docs/reference/library/4o/#line' title="(Undocumented)"><code>++line</code></a>
335−<a class="tooltip" href='/docs/reference/library/4j/#lip-ag' title="Parse IPv4 address"><code>++lip:ag</code></a>
336−<a class="tooltip" href='/docs/reference/library/1c/#list' title="Mold constructor (list)"><code>++list</code></a>
337−<a class="tooltip" href='/docs/reference/library/1c/#lone' title="Mold generator (face on mold)"><code>++lone</code></a>
338−<a class="tooltip" href='/docs/reference/library/2f/#lor' title="Leg order"><code>++lor</code></a>
339−<a class="tooltip" href='/docs/reference/library/4i/#low' title="Parse lowercase letter"><code>++low</code></a>
340−<a class="tooltip" href='/docs/reference/library/2c/#lsh' title="Left-shift"><code>++lsh</code></a>
341−<a class="tooltip" href='/docs/reference/library/1a/#lte' title="Less than / equal (atom)"><code>++lte</code></a>
342−<a class="tooltip" href='/docs/reference/library/3b/#lte-ff' title="Less than / equal (IEEE float)"><code>++lte:ff</code></a>
343−<a class="tooltip" href='/docs/reference/library/3b/#lte-fl' title="Less than / equal (producing flag)"><code>++lte:fl</code></a>
344−<a class="tooltip" href='/docs/reference/library/3b/#lte-rd' title="Less than / equal (double-precision float)"><code>++lte:rd</code></a>
345−<a class="tooltip" href='/docs/reference/library/3b/#lte-rh' title="Less than / equal (half-precision float)"><code>++lte:rh</code></a>
346−<a class="tooltip" href='/docs/reference/library/3b/#lte-rs' title="Less than / equal (single-precision float)"><code>++lte:rs</code></a>
347−<a class="tooltip" href='/docs/reference/library/3b/#lte-rq' title="Less than / equal (quad-precision float)"><code>++lte:rq</code></a>
348−<a class="tooltip" href='/docs/reference/library/1a/#lth' title="Less than (atom)"><code>++lth</code></a>
349−<a class="tooltip" href='/docs/reference/library/3b/#lth-ff' title="Less than (IEEE float)"><code>++lth:ff</code></a>
350−<a class="tooltip" href='/docs/reference/library/3b/#lth-fl' title="Less than (signed and unsigned integer cell)"><code>++lth:fl</code></a>
351−<a class="tooltip" href='/docs/reference/library/3b/#lth-rd' title="Less than (double-precision float)"><code>++lth:rd</code></a>
352−<a class="tooltip" href='/docs/reference/library/3b/#lth-rh' title="Less than (half-precision float)"><code>++lth:rh</code></a>
353−<a class="tooltip" href='/docs/reference/library/3b/#lth-rs' title="Less than (single-precision float)"><code>++lth:rs</code></a>
354−<a class="tooltip" href='/docs/reference/library/3b/#lth-rq' title="Less than (quad-precision float)"><code>++lth:rq</code></a>
355−<a class="tooltip" href='/docs/reference/library/3b/#lug-fl' title="Central rounding mechanism"><code>++lug:fl</code></a>
356−<a class="tooltip" href='/docs/reference/library/4h/#lus' title="Parse + (lus)"><code>++lus</code></a>
357−<a class="tooltip" href='/docs/reference/library/4d/#lust' title="Detect new line"><code>++lust</code></a>
358−<a class="tooltip" href='/docs/reference/library/4e/#less' title="Parse unless"><code>++less</code></a>
359−<a class="tooltip" href='/docs/reference/library/2m/#ly' title="List from raw noun"><code>++ly</code></a>
360−
361−### m
362−
363−<a class="tooltip" href='/docs/reference/library/3b/#ma-rd' title="Initialize ff (rd core)"><code>++ma:rd</code></a>
364−<a class="tooltip" href='/docs/reference/library/3b/#ma-rh' title="Initialize ff (rh core)"><code>++ma:rh</code></a>
365−<a class="tooltip" href='/docs/reference/library/3b/#ma-rs' title="Initialize ff (rs core)"><code>++ma:rs</code></a>
366−<a class="tooltip" href='/docs/reference/library/3b/#ma-rq' title="Initialize ff (rq core)"><code>++ma:rq</code></a>
367−<a class="tooltip" href='/docs/reference/library/4n/#mack' title="Nock subject to unit"><code>++mack</code></a>
368−<a class="tooltip" href='/docs/reference/library/2l/#malt' title="Map from list"><code>++malt</code></a>
369−<a class="tooltip" href='/docs/reference/library/2o/#map' title="Mold generator (map)"><code>++map</code></a>
370−<a class="tooltip" href='/docs/reference/library/2i/#mar-by' title="Assert and add (map)"><code>+-mar:by</code></a>
371−<a class="tooltip" href='/docs/reference/library/1b/#mas' title="Address within head/tail"><code>++mas</code></a>
372−<a class="tooltip" href='/docs/reference/library/4f/#mask' title="Match character"><code>++mask</code></a>
373−<a class="tooltip" href='/docs/reference/library/2p/#mat' title="Length-encode"><code>++mat</code></a>
374−<a class="tooltip" href='/docs/reference/library/2a/#mate' title="Choose"><code>++mate</code></a>
375−<a class="tooltip" href='/docs/reference/library/1a/#max' title="Maximum"><code>++max</code></a>
376−<a class="tooltip" href='/docs/reference/library/3b/#me-ff' title="Minimum exponent of ff"><code>++me:ff</code></a>
377−<a class="tooltip" href='/docs/reference/library/2n/#mean' title="Crash and printf"><code>++mean</code></a>
378−<a class="tooltip" href='/docs/reference/library/4i/#mes' title="Parse hexabyte"><code>++mes</code></a>
379−<a class="tooltip" href='/docs/reference/library/4b/#mesc' title="Escape special characters"><code>++mesc</code></a>
380−<a class="tooltip" href='/docs/reference/library/2c/#met' title="Measure"><code>++met</code></a>
381−<a class="tooltip" href='/docs/reference/library/4o/#metl' title="(Undocumented)"><code>++metl</code></a>
382−<a class="tooltip" href='/docs/reference/library/1a/#min' title="Minimum (atom)"><code>++min</code></a>
383−<a class="tooltip" href='/docs/reference/library/4n/#mink' title="Mock (virtual Nock) interpreter"><code>++mink</code></a>
384−<a class="tooltip" href='/docs/reference/library/3c/#mit-yo' title="Seconds in minute"><code>++mit:yo</code></a>
385−<a class="tooltip" href='/docs/reference/library/2d/#mix' title="Binary XOR (atom)"><code>++mix</code></a>
386−<a class="tooltip" href='/docs/reference/library/4n/#mock' title="Compute formula on subject with hint"><code>++mock</code></a>
387−<a class="tooltip" href='/docs/reference/library/1a/#mod' title="Modulus (atom)"><code>++mod</code></a>
388−<a class="tooltip" href='/docs/reference/library/3c/#moh-yo' title="Days in month"><code>++moh:yo</code></a>
389−<a class="tooltip" href='/docs/reference/library/2l/#molt' title="Map from pair list"><code>++molt</code></a>
390−<a class="tooltip" href='/docs/reference/library/4n/#mong' title="Slam gate with sample"><code>++mong</code></a>
391−<a class="tooltip" href='/docs/reference/library/4n/#mook' title="Intelligently render crash annotation"><code>++mook</code></a>
392−<a class="tooltip" href='/docs/reference/library/4f/#more' title="Parse list with delimiter"><code>++more</code></a>
393−<a class="tooltip" href='/docs/reference/library/4f/#most' title="Parse list of at least one match"><code>++most</code></a>
394−<a class="tooltip" href='/docs/reference/library/3c/#moy-yo' title="Days in months of leap-year"><code>++moy:yo</code></a>
395−<a class="tooltip" href='/docs/reference/library/4j/#mu' title="Core used to scramble 16-bit atoms"><code>++mu</code></a>
396−<a class="tooltip" href='/docs/reference/library/2e/#mug' title="FNV-1a scrambler"><code>++mug</code></a>
397−<a class="tooltip" href='/docs/reference/library/2e/#muk' title="Standard MurmurHash3"><code>++muk</code></a>
398−<a class="tooltip" href='/docs/reference/library/1a/#mul' title="Multiply (atom)"><code>++mul</code></a>
399−<a class="tooltip" href='/docs/reference/library/3b/#mul-ff' title="Multiply (IEEE float)"><code>++mul:ff</code></a>
400−<a class="tooltip" href='/docs/reference/library/3b/#mul-fl' title="Multiply (signed and unsigned integer cell)"><code>++mul:fl</code></a>
401−<a class="tooltip" href='/docs/reference/library/3b/#mul-rd' title="Multiply (double-precision float)"><code>++mul:rd</code></a>
402−<a class="tooltip" href='/docs/reference/library/3b/#mul-rh' title="Multiply (quad-precision float)"><code>++mul:rh</code></a>
403−<a class="tooltip" href='/docs/reference/library/3b/#mul-rs' title="Multiply (single-precision float)"><code>++mul:rs</code></a>
404−<a class="tooltip" href='/docs/reference/library/3b/#mul-rq' title="Multiply (quad-precision float)"><code>++mul:rq</code></a>
405−<a class="tooltip" href='/docs/reference/library/4n/#mule' title="Typed virtual"><code>++mule</code></a>
406−<a class="tooltip" href='/docs/reference/library/4n/#mute' title="Untyped virtual"><code>++mute</code></a>
407−<a class="tooltip" href='/docs/reference/library/2e/#mum' title="31-bit MurmurHash3 scrambler"><code>++mum</code></a>
408−<a class="tooltip" href='/docs/reference/library/2b/#murn' title="Maybe transform"><code>++murn</code></a>
409−<a class="tooltip" href='/docs/reference/library/2m/#my' title="Map from raw noun"><code>++my</code></a>
410−<a class="tooltip" href='/docs/reference/library/2m/#my-nl' title="Construct map from null-terminated noun"><code>++my:nl</code></a>
411−
412−### n
413−
414−<a class="tooltip" href='/docs/reference/library/3g/#nail' title="Location, remainder of parsed text"><code>++nail</code></a>
415−<a class="tooltip" href='/docs/reference/library/2k/#nap-to' title="Remove head of queue"><code>+-nap:to</code></a>
416−<a class="tooltip" href='/docs/reference/library/4j/#ne' title="Digit rendering engine"><code>++ne</code></a>
417−<a class="tooltip" href='/docs/reference/library/3b/#ned-fl' title="Require float"><code>++ned:fl</code></a>
418−<a class="tooltip" href='/docs/reference/library/2a/#need' title="Unwrap unit"><code>++need</code></a>
419−<a class="tooltip" href='/docs/reference/library/2c/#net-fe' title="Flip endianness"><code>++net:fe</code></a>
420−<a class="tooltip" href='/docs/reference/library/3a/#new-si' title="Atom to @s"><code>++new:si</code></a>
421−<a class="tooltip" href='/docs/reference/library/4f/#next' title="Consume character"><code>++next</code></a>
422−<a class="tooltip" href='/docs/reference/library/2k/#nip-to' title="Remove root of queue"><code>+-nip:to</code></a>
423−<a class="tooltip" href='/docs/reference/library/4i/#nix' title="Parse letters and -"><code>++nix</code></a>
424−<a class="tooltip" href='/docs/reference/library/2m/#nl' title="Noun to container operations"><code>++nl</code></a>
425−<a class="tooltip" href='/docs/reference/library/4o/#nock' title="Virtual machine (see Nock)"><code>++nock</code></a>
426−<a class="tooltip" href='/docs/reference/library/2d/#not' title="Binary NOT (atom)"><code>++not</code></a>
427−<a class="tooltip" href='/docs/reference/library/4o/#noun' title="(Undocumented)"><code>++noun</code></a>
428−<a class="tooltip" href='/docs/reference/library/4l/#nuck-so' title="Top-level coin parser"><code>++nuck:so</code></a>
429−<a class="tooltip" href='/docs/reference/library/4i/#nud' title="Parse numeric character"><code>++nud</code></a>
430−<a class="tooltip" href='/docs/reference/library/4o/#null' title="(Undocumented)"><code>++null</code></a>
431−<a class="tooltip" href='/docs/reference/library/4l/#nusk-so' title="Parse coin literal with escapes"><code>++nusk:so</code></a>
432−
433−### o
434−
435−<a class="tooltip" href='/docs/reference/library/3f/#ob' title="Reversible scrambling v2"><code>++ob</code></a>
436−<a class="tooltip" href='/docs/reference/library/3d/#og' title="Container arm for SHA-256 powered RNG"><code>++og</code></a>
437−<a class="tooltip" href='/docs/reference/library/3a/#old-si' title="Sign and absolute value"><code>++old:si</code></a>
438−<a class="tooltip" href='/docs/reference/library/2b/#oust' title="Remove from list"><code>++oust</code></a>
439−<a class="tooltip" href='/docs/reference/library/2c/#out-fe' title="Maximum integer value"><code>++out:fe</code></a>
440−
441−### p
442−
443−<a class="tooltip" href='/docs/reference/library/3b/#pa-ff' title="Initialize fl from ff core"><code>++pa:ff</code></a>
444−<a class="tooltip" href='/docs/reference/library/1c/#pair' title="Mold of pair of types"><code>++pair</code></a>
445−<a class="tooltip" href='/docs/reference/library/4h/#pam' title="Parse & (pam)"><code>++pam</code></a>
446−<a class="tooltip" href='/docs/reference/library/4h/#pat' title="Parse @ (pat)"><code>++pat</code></a>
447−<a class="tooltip" href='/docs/reference/library/3g/#path' title="Filesystem path"><code>++path</code></a>
448−<a class="tooltip" href='/docs/reference/library/1b/#peg' title="Address within address"><code>++peg</code></a>
449−<a class="tooltip" href='/docs/reference/library/4h/#pel' title="Parse ( (pel)"><code>++pel</code></a>
450−<a class="tooltip" href='/docs/reference/library/4h/#per' title="Parse ) (per)"><code>++per</code></a>
451−<a class="tooltip" href='/docs/reference/library/4l/#perd-so' title="Parses dime/tiple without standard prefixes"><code>++perd:so</code></a>
452−<a class="tooltip" href='/docs/reference/library/4j/#pev-ab' title="Parse <=5 in base 32"><code>++pev:ab</code></a>
453−<a class="tooltip" href='/docs/reference/library/4j/#pew-ab' title="Parse <= 5 in base 64"><code>++pew:ab</code></a>
454−<a class="tooltip" href='/docs/reference/library/4e/#pfix' title="Discard first rule"><code>++pfix</code></a>
455−<a class="tooltip" href='/docs/reference/library/3g/#pint' title="Parsing range"><code>++pint</code></a>
456−<a class="tooltip" href='/docs/reference/library/4j/#piv-ab' title="Parse 5 digits in base 32"><code>++piv:ab</code></a>
457−<a class="tooltip" href='/docs/reference/library/4j/#piw-ab' title="Parse 5 digits in base 64"><code>++piw:ab</code></a>
458−<a class="tooltip" href='/docs/reference/library/4e/#plug' title="Parse to tuple"><code>++plug</code></a>
459−<a class="tooltip" href='/docs/reference/library/4f/#plus' title="List of at least one match"><code>++plus</code></a>
460−<a class="tooltip" href='/docs/reference/library/4a/#po' title="Phonetic base"><code>++po</code></a>
461−<a class="tooltip" href='/docs/reference/library/1c/#pole' title="Mold generator of faceless list"><code>++pole</code></a>
462−<a class="tooltip" href='/docs/reference/library/4o/#port' title="(Undocumented)"><code>++port</code></a>
463−<a class="tooltip" href='/docs/reference/library/4e/#pose' title="Parse options"><code>++pose</code></a>
464−<a class="tooltip" href='/docs/reference/library/2g/#pow' title="Computes a to the power of b"><code>++pow</code></a>
465−<a class="tooltip" href='/docs/reference/library/3b/#prc-fl' title="Force precision of 2 or greater (floating point)"><code>++prc:fl</code></a>
466−<a class="tooltip" href='/docs/reference/library/4i/#prn' title="Parse any printable character"><code>++prn</code></a>
467−<a class="tooltip" href='/docs/reference/library/3a/#pro-fo' title="Multiplies b and c modulo a"><code>++pro:fo</code></a>
468−<a class="tooltip" href='/docs/reference/library/3a/#pro-si' title="Multiply to signed integer"><code>++pro:si</code></a>
469−<a class="tooltip" href='/docs/reference/library/2i/#put-by' title="Add key-value pair (map)"><code>+-put:by</code></a>
470−<a class="tooltip" href='/docs/reference/library/2h/#put-in' title="Put b in a (set)"><code>+-put:in</code></a>
471−<a class="tooltip" href='/docs/reference/library/2j/#put-ju' title="Add key-set pair (jar)"><code>+-put:ju</code></a>
472−<a class="tooltip" href='/docs/reference/library/2k/#put-to' title="Insert into queue"><code>+-put:to</code></a>
473−
474−### q
475−
476−<a class="tooltip" href='/docs/reference/library/3c/#qad-yo' title="Seconds in 4 years"><code>++qad:yo</code></a>
477−<a class="tooltip" href='/docs/reference/library/4j/#qeb-ab' title="Parse <=4 binary digits"><code>++qeb:ab</code></a>
478−<a class="tooltip" href='/docs/reference/library/2o/#qeu' title="Mold generator (queue)"><code>++qeu</code></a>
479−<a class="tooltip" href='/docs/reference/library/4j/#qex-ab' title="Parse <=4 hexadecimal digits"><code>++qex:ab</code></a>
480−<a class="tooltip" href='/docs/reference/library/4j/#qib-ab' title="Parse 4 binary digits"><code>++qib:ab</code></a>
481−<a class="tooltip" href='/docs/reference/library/4i/#qit' title="Parse character to cord atom"><code>++qit</code></a>
482−<a class="tooltip" href='/docs/reference/library/4j/#qix-ab' title="Parse 4 hexadecimal digits"><code>++qix:ab</code></a>
483−<a class="tooltip" href='/docs/reference/library/1c/#quip' title="Mold generator (tuple of list and type)"><code>++quip</code></a>
484−<a class="tooltip" href='/docs/reference/library/4i/#qut' title="Parse cord"><code>++qut</code></a>
485−
486−### r
487−
488−<a class="tooltip" href='/docs/reference/library/4b/#r-at' title="(Undocumented)"><code>++r:at</code></a>
489−<a class="tooltip" href='/docs/reference/library/3d/#rad-og' title="Random in range"><code>++rad:og</code></a>
490−<a class="tooltip" href='/docs/reference/library/3d/#rads-og' title="Random continuation"><code>++rads:og</code></a>
491−<a class="tooltip" href='/docs/reference/library/3f/#raku-ob' title="Key list"><code>++raku:ob</code></a>
492−<a class="tooltip" href='/docs/reference/library/4c/#ram-re' title="Flatten tank to tape"><code>++ram:re</code></a>
493−<a class="tooltip" href='/docs/reference/library/2c/#rap' title="Assemble non-zero"><code>++rap</code></a>
494−<a class="tooltip" href='/docs/reference/library/4g/#rash' title="Parse or crash"><code>++rash</code></a>
495−<a class="tooltip" href='/docs/reference/library/3b/#rau-fl' title="Various roundings (floating point)"><code>++rau:fl</code></a>
496−<a class="tooltip" href='/docs/reference/library/3d/#raw-og' title="Random bits"><code>++raw:og</code></a>
497−<a class="tooltip" href='/docs/reference/library/3d/#raws-og' title="Random bits continuation"><code>++raws:og</code></a>
498−<a class="tooltip" href='/docs/reference/library/4c/#re' title="Pretty-printing engine (tank)"><code>++re</code></a>
499−<a class="tooltip" href='/docs/reference/library/4k/#rear-co' title="Prepend and render atom as tape"><code>++rear:co</code></a>
500−<a class="tooltip" href='/docs/reference/library/2b/#reap' title="Replicate (list)"><code>++reap</code></a>
501−<a class="tooltip" href='/docs/reference/library/2b/#reel' title="Right fold (list)"><code>++reel</code></a>
502−<a class="tooltip" href='/docs/reference/library/3a/#rem-si' title="Remainder (signed integer)"><code>++rem:si</code></a>
503−<a class="tooltip" href='/docs/reference/library/4k/#rend-co' title="Render coin lot as tape"><code>++rend:co</code></a>
504−<a class="tooltip" href='/docs/reference/library/4k/#rent-co' title="Render coin lot as span"><code>++rent:co</code></a>
505−<a class="tooltip" href='/docs/reference/library/2c/#rep' title="Assemble single"><code>++rep</code></a>
506−<a class="tooltip" href='/docs/reference/library/2i/#rep-by' title="Replace by product (map)"><code>+-rep:by</code></a>
507−<a class="tooltip" href='/docs/reference/library/2h/#rep-in' title="Accumulate elements (set)"><code>+-rep:in</code></a>
508−<a class="tooltip" href='/docs/reference/library/4b/#rf-at' title="(Undocumented)"><code>++rf:at</code></a>
509−<a class="tooltip" href='/docs/reference/library/2i/#rib-by' title="Replace values with accumulator (map)"><code>+-rib:by</code></a>
510−<a class="tooltip" href='/docs/reference/library/4c/#rig-re' title="Wrap tape in / (tank)"><code>++rig:re</code></a>
511−<a class="tooltip" href='/docs/reference/library/2c/#rip' title="Disassemble"><code>++rip</code></a>
512−<a class="tooltip" href='/docs/reference/library/4b/#rn-at' title="(Undocumented)"><code>++rn:at</code></a>
513−<a class="tooltip" href='/docs/reference/library/2c/#rol-fe' title="Roll left"><code>++rol:fe</code></a>
514−<a class="tooltip" href='/docs/reference/library/2b/#roll' title="Left fold (list)"><code>++roll</code></a>
515−<code>++rood</code>
516−<a class="tooltip" href='/docs/reference/library/2c/#ror-fe' title="Roll right"><code>++ror:fe</code></a>
517−<a class="tooltip" href='/docs/reference/library/3b/#rou-fl' title="Round to nearest float with 113-bit significand"><code>++rou:fl</code></a>
518−<a class="tooltip" href='/docs/reference/library/4l/#royl-so' title="Parse dime float"><code>++royl:so</code></a>
519−<a class="tooltip" href='/docs/reference/library/4l/#royl-cell-so' title="(Undocumented)"><code>++royl-cell:so</code></a>
520−<a class="tooltip" href='/docs/reference/library/2c/#rsh' title="Right-shift"><code>++rsh</code></a>
521−<a class="tooltip" href='/docs/reference/library/4b/#rt-at' title="(Undocumented)"><code>++rt:at</code></a>
522−<a class="tooltip" href='/docs/reference/library/4b/#rta-at' title="(Undocumented)"><code>++rta:at</code></a>
523−<a class="tooltip" href='/docs/reference/library/4b/#rtam-at' title="(Undocumented)"><code>++rtam:at</code></a>
524−<a class="tooltip" href='/docs/reference/library/2p/#rub' title="Length-decode"><code>++rub</code></a>
525−<a class="tooltip" href='/docs/reference/library/4b/#rub-at' title="(Undocumented)"><code>++rub:at</code></a>
526−<a class="tooltip" href='/docs/reference/library/4b/#rud-at' title="(Undocumented)"><code>++rud:at</code></a>
527−<a class="tooltip" href='/docs/reference/library/3g/#rule' title="Parsing rule (match this with _)"><code>++rule</code></a>
528−<a class="tooltip" href='/docs/reference/library/4b/#rum-at' title="(Undocumented)"><code>++rum:at</code></a>
529−<a class="tooltip" href='/docs/reference/library/2i/#run-by' title="Transform values (map)"><code>+-run:by</code></a>
530−<a class="tooltip" href='/docs/reference/library/2h/#run-in' title="Apply gate to set"><code>+-run:in</code></a>
531−<a class="tooltip" href='/docs/reference/library/3f/#rund-ob' title="Reverse single Feistel-like"><code>++rund:ob</code></a>
532−<a class="tooltip" href='/docs/reference/library/4b/#runt' title="Prepend n times"><code>++runt</code></a>
533−<a class="tooltip" href='/docs/reference/library/4b/#rup-at' title="(Undocumented)"><code>++rup:at</code></a>
534−<a class="tooltip" href='/docs/reference/library/4g/#rush' title="Parse or null"><code>++rush</code></a>
535−<a class="tooltip" href='/docs/reference/library/4g/#rust' title="Parse tape or null"><code>++rust</code></a>
536−<a class="tooltip" href='/docs/reference/library/2i/#rut-by' title="Transform nodes (map)"><code>+-rut:by</code></a>
537−<a class="tooltip" href='/docs/reference/library/4b/#ruv-at' title="(Undocumented)"><code>++ruv:at</code></a>
538−<a class="tooltip" href='/docs/reference/library/4b/#rux-at' title="(Undocumented)"><code>++rux:at</code></a>
539−<a class="tooltip" href='/docs/reference/library/3f/#rynd-ob' title="Reverse Feistel-like cipher"><code>++rynd:ob</code></a>
540−
541−### s
542−
543−<a class="tooltip" href='/docs/reference/library/2n/#same' title="Identity (produces same value)"><code>++same</code></a>
544−<a class="tooltip" href='/docs/reference/library/3b/#san-ff' title="Signed integer to @r"><code>++san:ff</code></a>
545−<a class="tooltip" href='/docs/reference/library/3b/#san-fl' title="Signed integer to float"><code>++san:fl</code></a>
546−<a class="tooltip" href='/docs/reference/library/3b/#san-rd' title="Unsigned integer to @rd"><code>++san:rd</code></a>
547−<a class="tooltip" href='/docs/reference/library/3b/#san-rh' title="Signed integer to @rh"><code>++san:rh</code></a>
548−<a class="tooltip" href='/docs/reference/library/3b/#san-rs' title="Signed integer to @rs"><code>++san:rs</code></a>
549−<a class="tooltip" href='/docs/reference/library/3b/#san-rq' title="Signed integer to @rq"><code>++san:rq</code></a>
550−<a class="tooltip" href='/docs/reference/library/4b/#sand' title="Soft-cast by aura"><code>++sand</code></a>
551−<a class="tooltip" href='/docs/reference/library/4b/#sane' title="Check aura validity"><code>++sane</code></a>
552−<a class="tooltip" href='/docs/reference/library/3b/#sb-ff' title="Sign bit"><code>++sb:ff</code></a>
553−<a class="tooltip" href='/docs/reference/library/2b/#scag' title="Prefix (produce front of list)"><code>++scag</code></a>
554−<a class="tooltip" href='/docs/reference/library/4g/#scan' title="Parse tape or crash"><code>++scan</code></a>
555−<a class="tooltip" href='/docs/reference/library/4m/#scot' title="Render dime as cord"><code>++scot</code></a>
556−<a class="tooltip" href='/docs/reference/library/4m/#scow' title="Render dime as tape"><code>++scow</code></a>
557−<a class="tooltip" href='/docs/reference/library/3b/#sea-ff' title="Convert from IEEE float to fn"><code>++sea:ff</code></a>
558−<a class="tooltip" href='/docs/reference/library/3b/#sea-rd' title="Convert from double-precision binary float to fn"><code>++sea:rd</code></a>
559−<a class="tooltip" href='/docs/reference/library/3b/#sea-rh' title="Convert from half-precision float to fn"><code>++sea:rh</code></a>
560−<a class="tooltip" href='/docs/reference/library/3b/#sea-rs' title="Convert from single-precision float to fn"><code>++sea:rs</code></a>
561−<a class="tooltip" href='/docs/reference/library/3b/#sea-rq' title="Convert from quad-precision float to fn"><code>++sea:rq</code></a>
562−<a class="tooltip" href='/docs/reference/library/4f/#sear' title="Conditional ++cook"><code>++sear</code></a>
563−<a class="tooltip" href='/docs/reference/library/4j/#seb-ab' title="Parse 1"><code>++seb:ab</code></a>
564−<a class="tooltip" href='/docs/reference/library/4j/#sed-ab' title="Parse non-zero decimal digit"><code>++sed:ab</code></a>
565−<a class="tooltip" href='/docs/reference/library/4h/#sel' title="Parse [ (sel)"><code>++sel</code></a>
566−<a class="tooltip" href='/docs/reference/library/4h/#sem' title="Parse ; (sem)"><code>++sem</code></a>
567−<a class="tooltip" href='/docs/reference/library/4h/#ser' title="Parse ] (ser)"><code>++ser</code></a>
568−<a class="tooltip" href='/docs/reference/library/2o/#set' title="Mold generator (set)"><code>++set</code></a>
569−<a class="tooltip" href='/docs/reference/library/4j/#sev-ab' title="Parse non-zero base 32 digit"><code>++sev:ab</code></a>
570−<a class="tooltip" href='/docs/reference/library/4j/#sew-ab' title="Parse non-zero base 64 digit"><code>++sew:ab</code></a>
571−<a class="tooltip" href='/docs/reference/library/4j/#sex-ab' title="Parse nonzero hexadecimal digit"><code>++sex:ab</code></a>
572−<a class="tooltip" href='/docs/reference/library/4e/#sfix' title="Discard second rule"><code>++sfix</code></a>
573−<a class="tooltip" href='/docs/reference/library/3d/#shad' title="Double SHA-256"><code>++shad</code></a>
574−<a class="tooltip" href='/docs/reference/library/3d/#shaf' title="Half SHA-256"><code>++shaf</code></a>
575−<a class="tooltip" href='/docs/reference/library/3d/#shal' title="SHA-512 with length"><code>++shal</code></a>
576−<a class="tooltip" href='/docs/reference/library/3d/#sham' title="128-bit noun hash"><code>++sham</code></a>
577−<a class="tooltip" href='/docs/reference/library/3d/#shan' title="SHA-1"><code>++shan</code></a>
578−<a class="tooltip" href='/docs/reference/library/3d/#shas' title="Salted hash"><code>++shas</code></a>
579−<a class="tooltip" href='/docs/reference/library/3d/#shaw' title="Hash to nbits"><code>++shaw</code></a>
580−<a class="tooltip" href='/docs/reference/library/3d/#shax' title="SHA-256"><code>++shax</code></a>
581−<a class="tooltip" href='/docs/reference/library/3d/#shay' title="SHA-256 with length"><code>++shay</code></a>
582−<a class="tooltip" href='/docs/reference/library/3d/#shaz' title="SHA-512"><code>++shaz</code></a>
583−<a class="tooltip" href='/docs/reference/library/4c/#shep' title="(Undocumented)"><code>++shep</code></a>
584−<a class="tooltip" href='/docs/reference/library/3b/#shf-fl' title="Shift power"><code>++shf:fl</code></a>
585−<a class="tooltip" href='/docs/reference/library/4f/#shim' title="Match character within range"><code>++shim</code></a>
586−<a class="tooltip" href='/docs/reference/library/4c/#shop' title="(Undocumented)"><code>++shop</code></a>
587−<a class="tooltip" href='/docs/reference/library/4c/#show' title="(Undocumented)"><code>++show</code></a>
588−<a class="tooltip" href='/docs/reference/library/3a/#si' title="Signed integer"><code>++si</code></a>
589−<a class="tooltip" href='/docs/reference/library/2m/#si-nl' title="Construct set from null-terminated noun"><code>++si:nl</code></a>
590−<a class="tooltip" href='/docs/reference/library/4j/#sib-ab' title="Parse binary digit"><code>++sib:ab</code></a>
591−<a class="tooltip" href='/docs/reference/library/4j/#sid-ab' title="Parse decimal digit"><code>++sid:ab</code></a>
592−<a class="tooltip" href='/docs/reference/library/4h/#sig' title="Parse ~ (sig)"><code>++sig</code></a>
593−<a class="tooltip" href='/docs/reference/library/3b/#sig-ff' title="Produce sign of IEEE float"><code>++sig:ff</code></a>
594−<a class="tooltip" href='/docs/reference/library/3b/#sig-rd' title="Produce sign of @rd"><code>++sig:rd</code></a>
595−<a class="tooltip" href='/docs/reference/library/3b/#sig-rh' title="Produce sign of half-precision float"><code>++sig:rh</code></a>
596−<a class="tooltip" href='/docs/reference/library/3b/#sig-rs' title="Produce sign of @rs"><code>++sig:rs</code></a>
597−<a class="tooltip" href='/docs/reference/library/3b/#sig-rq' title="Produce sign of quad-precision float"><code>++sig:rq</code></a>
598−<a class="tooltip" href='/docs/reference/library/2l/#silt' title="Produce set from list"><code>++silt</code></a>
599−<a class="tooltip" href='/docs/reference/library/4e/#simu' title="First and second"><code>++simu</code></a>
600−<a class="tooltip" href='/docs/reference/library/2c/#sit-fe' title="Enforce modulo"><code>++sit:fe</code></a>
601−<a class="tooltip" href='/docs/reference/library/3a/#sit-fo' title="Produce remainder of b modulo a"><code>++sit:fo</code></a>
602−<a class="tooltip" href='/docs/reference/library/4j/#siv-ab' title="Parse a base 32 digit"><code>++siv:ab</code></a>
603−<a class="tooltip" href='/docs/reference/library/4j/#siw-ab' title="Parse a base 64 digit"><code>++siw:ab</code></a>
604−<a class="tooltip" href='/docs/reference/library/4j/#six-ab' title="Parse a hexadecimal digit"><code>++six:ab</code></a>
605−<a class="tooltip" href='/docs/reference/library/2b/#skid' title="Separate list into two lists from slammed elments"><code>++skid</code></a>
606−<a class="tooltip" href='/docs/reference/library/2b/#skim' title="Produce list of elements from boolean gate"><code>++skim</code></a>
607−<a class="tooltip" href='/docs/reference/library/2b/#skip' title="Produce list of elements failing boolean gate"><code>++skip</code></a>
608−<a class="tooltip" href='/docs/reference/library/2b/#slag' title="Produce all elements from index in list"><code>++slag</code></a>
609−<a class="tooltip" href='/docs/reference/library/4m/#slat' title="Curried slaw"><code>++slat</code></a>
610−<a class="tooltip" href='/docs/reference/library/4m/#slav' title="Demand: parse cord with input aura"><code>++slav</code></a>
611−<a class="tooltip" href='/docs/reference/library/4m/#slaw' title="Parse cord to input aura"><code>++slaw</code></a>
612−<a class="tooltip" href='/docs/reference/library/4m/#slay' title="Parse cord to coin"><code>++slay</code></a>
613−<a class="tooltip" href='/docs/reference/library/2n/#slog' title="Deify printf"><code>++slog</code></a>
614−<a class="tooltip" href='/docs/reference/library/4f/#slug' title="Use gate to parse delimited list"><code>++slug</code></a>
615−<a class="tooltip" href='/docs/reference/library/4m/#smyt' title="Render path as tank"><code>++smyt</code></a>
616−<a class="tooltip" href='/docs/reference/library/2b/#snag' title="Produce element at specific index (list)"><code>++snag</code></a>
617−<a class="tooltip" href='/docs/reference/library/2m/#snag-nl' title="Produce element from list at specific null-terminated noun"><code>++snag:nl</code></a>
618−<a class="tooltip" href='/docs/reference/library/2b/#snap' title="Replace item at index"><code>++snap</code></a>
619−<a class="tooltip" href='/docs/reference/library/2b/#snoc' title="Append noun to list"><code>++snoc</code></a>
620−<a class="tooltip" href='/docs/reference/library/4l/#so' title="Coin parser engine"><code>++so</code></a>
621−<a class="tooltip" href='/docs/reference/library/2n/#soft' title="Maybe remold"><code>++soft</code></a>
622−<a class="tooltip" href='/docs/reference/library/2a/#some' title="Wrap value in unit"><code>++some</code></a>
623−<a class="tooltip" href='/docs/reference/library/4h/#soq' title="Parse ' (soq)"><code>++soq</code></a>
624−<a class="tooltip" href='/docs/reference/library/2b/#sort' title="Quicksort (list)"><code>++sort</code></a>
625−<a class="tooltip" href='/docs/reference/library/4j/#sov-ab' title="Parse base 32 letter"><code>++sov:ab</code></a>
626−<a class="tooltip" href='/docs/reference/library/4j/#sow-ab' title="Parse base 64 letter/symbol"><code>++sow:ab</code></a>
627−<a class="tooltip" href='/docs/reference/library/4j/#sox-ab' title="Parse hexadecimal letter"><code>++sox:ab</code></a>
628−<a class="tooltip" href='/docs/reference/library/4i/#soz' title="Parse triple single-quote"><code>++soz</code></a>
629−<a class="tooltip" href='/docs/reference/library/4o/#span' title="ASCII atom"><code>++span</code></a>
630−<a class="tooltip" href='/docs/reference/library/4m/#spat' title="Render path as cord"><code>++spat</code></a>
631−<a class="tooltip" href='/docs/reference/library/3b/#spd-fl' title="Produce smallest denormalized float"><code>++spd:fl</code></a>
632−<a class="tooltip" href='/docs/reference/library/2b/#spin' title="Gate to list (with state)"><code>++spin</code></a>
633−<a class="tooltip" href='/docs/reference/library/3b/#spn-fl' title="Produce smallest normal float"><code>++spn:fl</code></a>
634−<a class="tooltip" href='/docs/reference/library/3g/#spot' title="Stack trace line"><code>++spot</code></a>
635−<a class="tooltip" href='/docs/reference/library/4m/#spud' title="Render path as tape"><code>++spud</code></a>
636−<a class="tooltip" href='/docs/reference/library/2b/#spun' title="Gate to list (with state)"><code>++spun</code></a>
637−<a class="tooltip" href='/docs/reference/library/2g/#sqt' title="Compute square root with remainder"><code>++sqt</code></a>
638−<a class="tooltip" href='/docs/reference/library/3b/#sqt-ff' title="Produce square root of IEEE float"><code>++sqt:ff</code></a>
639−<a class="tooltip" href='/docs/reference/library/3b/#sqt-fl' title="Produce square root from signed and unsigned integer cell"><code>++sqt:fl</code></a>
640−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rd' title="Produce square root of double-precision float"><code>++sqt:rd</code></a>
641−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rh' title="Produce square root of half-precision float"><code>++sqt:rh</code></a>
642−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rs' title="Produce square root of single-precision float"><code>++sqt:rs</code></a>
643−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rq' title="Produce square root of quad-precision float"><code>++sqt:rq</code></a>
644−<a class="tooltip" href='/docs/reference/library/4m/#stab' title="Parse cord to path"><code>++stab</code></a>
645−<a class="tooltip" href='/docs/reference/library/4f/#stag' title="Add label"><code>++stag</code></a>
646−<a class="tooltip" href='/docs/reference/library/4f/#star' title="Produce list of matches"><code>++star</code></a>
647−<a class="tooltip" href='/docs/reference/library/4f/#stet' title="Add faces to range-parser pairs in list"><code>++stet</code></a>
648−<a class="tooltip" href='/docs/reference/library/4f/#stew' title="Switch by first"><code>++stew</code></a>
649−<a class="tooltip" href='/docs/reference/library/4f/#stir' title="Parse repeatedly"><code>++stir</code></a>
650−<a class="tooltip" href='/docs/reference/library/4f/#stun' title="Parse several times"><code>++stun</code></a>
651−<a class="tooltip" href='/docs/reference/library/1a/#sub' title="Subtract"><code>++sub</code></a>
652−<a class="tooltip" href='/docs/reference/library/3b/#sub-ff' title="Subtract from IEEE float"><code>++sub:ff</code></a>
653−<a class="tooltip" href='/docs/reference/library/3b/#sub-fl' title="Subtract from signed and unsigned integer cells"><code>++sub:fl</code></a>
654−<a class="tooltip" href='/docs/reference/library/3b/#sub-rd' title="Subtract from double-precision float"><code>++sub:rd</code></a>
655−<a class="tooltip" href='/docs/reference/library/3b/#sub-rh' title="Subtract from half-precision float"><code>++sub:rh</code></a>
656−<a class="tooltip" href='/docs/reference/library/3b/#sub-rs' title="Subtract from single-precision float"><code>++sub:rs</code></a>
657−<a class="tooltip" href='/docs/reference/library/3b/#sub-rq' title="Subtract from quad-precision float"><code>++sub:rq</code></a>
658−<a class="tooltip" href='/docs/reference/library/2c/#sum-fe' title="Sum two numbers in modular field"><code>++sum:fe</code></a>
659−<a class="tooltip" href='/docs/reference/library/3a/#sum-fo' title="Modular sum"><code>++sum:fo</code></a>
660−<a class="tooltip" href='/docs/reference/library/3a/#sum-si' title="Addition (signed integer)"><code>++sum:si</code></a>
661−<a class="tooltip" href='/docs/reference/library/3b/#sun-ff' title="Unsigned integer to IEEE float"><code>++sun:ff</code></a>
662−<a class="tooltip" href='/docs/reference/library/3b/#sun-fl' title="Unsigned integer to float"><code>++sun:fl</code></a>
663−<a class="tooltip" href='/docs/reference/library/3b/#sun-rd' title="Unsigned integer to double-precision float"><code>++sun:rd</code></a>
664−<a class="tooltip" href='/docs/reference/library/3b/#sun-rh' title="Unsigned integer to half-precision float"><code>++sun:rh</code></a>
665−<a class="tooltip" href='/docs/reference/library/3b/#sun-rs' title="Unsigned integer to single-precision float"><code>++sun:rs</code></a>
666−<a class="tooltip" href='/docs/reference/library/3b/#sun-rq' title="Unsigned integer to quad-precision float"><code>++sun:rq</code></a>
667−<a class="tooltip" href='/docs/reference/library/3a/#sun-si' title="@u to @s"><code>++sun:si</code></a>
668−<a class="tooltip" href='/docs/reference/library/2b/#swag' title="Infix (list)"><code>++swag</code></a>
669−<a class="tooltip" href='/docs/reference/library/2c/#swp' title="Reverse block order"><code>++swp</code></a>
670−<a class="tooltip" href='/docs/reference/library/3b/#swr-fl' title="Switch rounding mode of floating point"><code>++swr:fl</code></a>
671−<a class="tooltip" href='/docs/reference/library/2m/#sy' title="Produce set from null-terminated noun"><code>++sy</code></a>
672−<a class="tooltip" href='/docs/reference/library/4i/#sym' title="Term"><code>++sym</code></a>
673−<a class="tooltip" href='/docs/reference/library/3b/#syn-fl' title="Get sign"><code>++syn:fl</code></a>
674−<a class="tooltip" href='/docs/reference/library/3a/#syn-si' title="Sign test"><code>++syn:si</code></a>
675−
676−### t
677−
678−<a class="tooltip" href='/docs/reference/library/2n/#tail' title="Get tail of cell"><code>++tail</code></a>
679−<a class="tooltip" href='/docs/reference/library/2k/#tap-to' title="Queue to list"><code>+-tap:to</code></a>
680−<a class="tooltip" href='/docs/reference/library/4h/#tar' title="Parse * (tar)"><code>++tar</code></a>
681−<a class="tooltip" href='/docs/reference/library/2q/#tang' title="Generic print structure"><code>++tang</code></a>
682−<a class="tooltip" href='/docs/reference/library/2q/#tank' title="Pretty-printing structure"><code>++tank</code></a>
683−<a class="tooltip" href='/docs/reference/library/2i/#tap-by' title="Listify pairs"><code>+-tap:by</code></a>
684−<a class="tooltip" href='/docs/reference/library/2h/#tap-in' title="Flatten set into list"><code>+-tap:in</code></a>
685−<a class="tooltip" href='/docs/reference/library/2q/#tape' title="List of characters"><code>++tape</code></a>
686−<a class="tooltip" href='/docs/reference/library/2q/#tarp' title="Parsed time"><code>++tarp</code></a>
687−<a class="tooltip" href='/docs/reference/library/4l/#tash-so' title="Parse signed dime"><code>++tash:so</code></a>
688−<a class="tooltip" href='/docs/reference/library/4h/#tec' title="Parse ` (tec)"><code>++tec</code></a>
689−<a class="tooltip" href='/docs/reference/library/4j/#ted-ab' title="Parse decimal number with <= 3 digits"><code>++ted:ab</code></a>
690−<a class="tooltip" href='/docs/reference/library/4b/#teff' title="UTF-8 length"><code>++teff</code></a>
691−<a class="tooltip" href='/docs/reference/library/3f/#teil-ob' title="Reverse Feistel-like cipher"><code>++teil:ob</code></a>
692−<a class="tooltip" href='/docs/reference/library/2q/#term' title="Hoon constant"><code>++term</code></a>
693−<a class="tooltip" href='/docs/reference/library/2n/#test' title="Test for equality"><code>++test</code></a>
694−<a class="tooltip" href='/docs/reference/library/4j/#tid-ab' title="Parse 3 decimal digits"><code>++tid:ab</code></a>
695−<a class="tooltip" href='/docs/reference/library/4o/#tiki' title="(Undocumented)"><code>++tiki</code></a>
696−<a class="tooltip" href='/docs/reference/library/4j/#til-ab' title="Parse 3 lowercase letters"><code>++til:ab</code></a>
697−<a class="tooltip" href='/docs/reference/library/4j/#tip-ab' title="Leading phonetic byte"><code>++tip:ab</code></a>
698−<a class="tooltip" href='/docs/reference/library/4j/#tiq-ab' title="Trailing phonetic syllable"><code>++tiq:ab</code></a>
699−<a class="tooltip" href='/docs/reference/library/4h/#tis' title="Parse = (tis)"><code>++tis</code></a>
700−<a class="tooltip" href='/docs/reference/library/2k/#to' title="Queue operations"><code>++to</code></a>
701−<a class="tooltip" href='/docs/reference/library/4a/#tod-po' title="Fetch suffix"><code>++tod:po</code></a>
702−<a class="tooltip" href='/docs/reference/library/4o/#toga' title="Tree of faces"><code>++toga</code></a>
703−<a class="tooltip" href='/docs/reference/library/3b/#toi-ff' title="Round IEEE float to nearest signed integer"><code>++toi:ff</code></a>
704−<a class="tooltip" href='/docs/reference/library/3b/#toi-fl' title="Round float to nearest signed integer"><code>++toi:fl</code></a>
705−<a class="tooltip" href='/docs/reference/library/3b/#toi-rd' title="Round double-precision float to nearest signed integer"><code>++toi:rd</code></a>
706−<a class="tooltip" href='/docs/reference/library/3b/#toi-rh' title="Round half-precision float to nearest signed integer"><code>++toi:rh</code></a>
707−<a class="tooltip" href='/docs/reference/library/3b/#toi-rs' title="Round single-precision float to nearest signed integer"><code>++toi:rs</code></a>
708−<a class="tooltip" href='/docs/reference/library/3b/#toi-rq' title="Round quad-precision float to nearest signed integer"><code>++toi:rq</code></a>
709−<a class="tooltip" href='/docs/reference/library/3b/#toj-fl' title="Round unsigned and signed integer to float"><code>++toj:fl</code></a>
710−<a class="tooltip" href='/docs/reference/library/3g/#tone' title="Nock result (error report)"><code>++tone</code></a>
711−<a class="tooltip" href='/docs/reference/library/3g/#toon' title="Nock result (stack trace)"><code>++toon</code></a>
712−<a class="tooltip" href='/docs/reference/library/2k/#top-to' title="Produce head of queue"><code>+-top:to</code></a>
713−<a class="tooltip" href='/docs/reference/library/4a/#tos-po' title="Fetch prefix"><code>++tos:po</code></a>
714−<a class="tooltip" href='/docs/reference/library/3b/#tos-rh' title="Convert half-precision float to single-precision float"><code>++tos:rh</code></a>
715−<a class="tooltip" href='/docs/reference/library/1c/#trap' title="Core with one arm $"><code>++trap</code></a>
716−<a class="tooltip" href='/docs/reference/library/1c/#tree' title="Mold generator (tree)"><code>++tree</code></a>
717−<a class="tooltip" href='/docs/reference/library/1c/#trel' title="Mold generator (tuple of three types)"><code>++trel</code></a>
718−<a class="tooltip" href='/docs/reference/library/4b/#trim' title="Tape split"><code>++trim</code></a>
719−<a class="tooltip" href='/docs/reference/library/4b/#trip' title="Cord to tape"><code>++trip</code></a>
720−<a class="tooltip" href='/docs/reference/library/4b/#tuba' title="UTF-8 to UTF-32 tape"><code>++tuba</code></a>
721−<a class="tooltip" href='/docs/reference/library/4b/#tufa' title="UTF-32 to UTF-8 tape"><code>++tufa</code></a>
722−<a class="tooltip" href='/docs/reference/library/4o/#tuna' title="XML template tree"><code>++tuna</code></a>
723−<a class="tooltip" href='/docs/reference/library/4b/#tuft' title="UTF-32 to UTF-8 text"><code>++tuft</code></a>
724−<a class="tooltip" href='/docs/reference/library/4b/#turf' title="UTF-8 to UTF-32 cord"><code>++turf</code></a>
725−<a class="tooltip" href='/docs/reference/library/2b/#turn' title="Gate to list"><code>++turn</code></a>
726−<a class="tooltip" href='/docs/reference/library/4o/#tusk' title="List of expressions"><code>++tusk</code></a>
727−<a class="tooltip" href='/docs/reference/library/4l/#twid-so' title="Parse coins without ~ prefix"><code>++twid:so</code></a>
728−<a class="tooltip" href='/docs/reference/library/4o/#tyke' title="List of 'maybe' hoons"><code>++tyke</code></a>
729−<a class="tooltip" href='/docs/reference/library/4o/#typo' title="Pointer for ++type"><code>++typo</code></a>
730−<a class="tooltip" href='/docs/reference/library/4o/#tyre' title="List, term hoon"><code>++tyre</code></a>
731−
732−### u
733−
734−<a class="tooltip" href='/docs/reference/library/3f/#un' title="Reversible scrambling"><code>++un</code></a>
735−<a class="tooltip" href='/docs/reference/library/2i/#uni-by' title="Union (map between keys of two lists)"><code>+-uni:by</code></a>
736−<a class="tooltip" href='/docs/reference/library/3b/#uni-fl' title="Change representation to odd"><code>++uni:fl</code></a>
737−<a class="tooltip" href='/docs/reference/library/2h/#uni-in' title="Union (sets)"><code>+-uni:in</code></a>
738−<a class="tooltip" href='/docs/reference/library/1c/#unit' title="Mold generator (maybe)"><code>++unit</code></a>
739−<a class="tooltip" href='/docs/reference/library/2i/#urn-by' title="Turn (with key) (map)"><code>+-urn:by</code></a>
740−<a class="tooltip" href='/docs/reference/library/4j/#urs-ab' title="Parse span characters"><code>++urs:ab</code></a>
741−<a class="tooltip" href='/docs/reference/library/4j/#urt-ab' title="Parse non-_ span"><code>++urt:ab</code></a>
742−
743−### v
744−
745−<a class="tooltip" href='/docs/reference/library/4j/#v-ne' title="Render base 32"><code>++v:ne</code></a>
746−<code>++vang</code>
747−<a class="tooltip" href='/docs/reference/library/4o/#vase' title="Typed data"><code>++vase</code></a>
748−<code>++vast</code>
749−<a class="tooltip" href='/docs/reference/library/4i/#ven' title="Axis syntax parser"><code>++ven</code></a>
750−<a class="tooltip" href='/docs/reference/library/4o/#vise' title="Convert during reboot"><code>++vise</code></a>
751−<a class="tooltip" href='/docs/reference/library/4i/#vit' title="Parse base 64 digit"><code>++vit</code></a>
752−<a class="tooltip" href='/docs/reference/library/4j/#viz-ag' title="Parse base 32 digit with dot separators"><code>++viz:ag</code></a>
753−<a class="tooltip" href='/docs/reference/library/2f/#vor' title="Vertical order"><code>++vor</code></a>
754−<a class="tooltip" href='/docs/reference/library/4j/#voy-ab' title="Parse bas, soq, or bix"><code>++voy:ab</code></a>
755−<a class="tooltip" href='/docs/reference/library/4i/#vul' title="Comments to null"><code>++vul</code></a>
756−<a class="tooltip" href='/docs/reference/library/4j/#vum-ag' title="Parse base 32 string"><code>++vum:ag</code></a>
757−
758−### w
759−
760−<a class="tooltip" href='/docs/reference/library/4j/#w-ne' title="Render base 64 digit"><code>++w:ne</code></a>
761−<a class="tooltip" href='/docs/reference/library/4b/#wack' title="Coin format encode"><code>++wack</code></a>
762−<a class="tooltip" href='/docs/reference/library/2q/#wain' title="List of cords"><code>++wain</code></a>
763−<a class="tooltip" href='/docs/reference/library/2q/#wall' title="List of list of characters"><code>++wall</code></a>
764−<a class="tooltip" href='/docs/reference/library/2b/#weld' title="Concatenate two lists"><code>++weld</code></a>
765−<a class="tooltip" href='/docs/reference/library/2m/#weld-nl' title="Concatenate null-terminated nouns"><code>++weld:nl</code></a>
766−<a class="tooltip" href='/docs/reference/library/2b/#welp' title="Perfect concatenate (lists)"><code>++welp</code></a>
767−<a class="tooltip" href='/docs/reference/library/4b/#wick' title="Coin format decode"><code>++wick</code></a>
768−<a class="tooltip" href='/docs/reference/library/4c/#wig-re' title="++win - render tape"><code>++wig:re</code></a>
769−<a class="tooltip" href='/docs/reference/library/4c/#win-re' title="Render at indent"><code>++win:re</code></a>
770−<a class="tooltip" href='/docs/reference/library/4o/#wing' title="Address in subject"><code>++wing</code></a>
771−<a class="tooltip" href='/docs/reference/library/4j/#wiz-ag' title="Parse base 64 number"><code>++wiz:ag</code></a>
772−<a class="tooltip" href='/docs/reference/library/4b/#woad' title="Unescape cord"><code>++woad</code></a>
773−<a class="tooltip" href='/docs/reference/library/4b/#wood' title="Escape cord"><code>++wood</code></a>
774−<a class="tooltip" href='/docs/reference/library/3g/#wonk' title="Product from edge"><code>++wonk</code></a>
775−<a class="tooltip" href='/docs/reference/library/3f/#wred-un' title="Restore structure"><code>++wred:un</code></a>
776−<a class="tooltip" href='/docs/reference/library/3f/#wren-un' title="Conceal structure"><code>++wren:un</code></a>
777−<a class="tooltip" href='/docs/reference/library/4h/#wut' title="Parse ? (wut)"><code>++wut</code></a>
778−<a class="tooltip" href='/docs/reference/library/2i/#wyt-by' title="Produce depth of tree map"><code>+-wyt:by</code></a>
779−<a class="tooltip" href='/docs/reference/library/2h/#wyt-in' title="Produce number of elements in set"><code>+-wyt:in</code></a>
780−
781−### x
782−
783−<a class="tooltip" href='/docs/reference/library/4j/#x-ne' title="Render hexadecimal digit as atom of ASCII byte value"><code>++x:ne</code></a>
784−<a class="tooltip" href='/docs/reference/library/2c/#xeb' title="Binary logarithm"><code>++xeb</code></a>
785−<a class="tooltip" href='/docs/reference/library/3b/#xpd-fl' title="Expand signed and unsigned integer cell"><code>++xpd:fl</code></a>
786−
787−### y
788−
789−<a class="tooltip" href='/docs/reference/library/3c/#yall' title="Time since beginning of time"><code>++yall</code></a>
790−<a class="tooltip" href='/docs/reference/library/3c/#yawn' title="Days since beginning of time"><code>++yawn</code></a>
791−<a class="tooltip" href='/docs/reference/library/3c/#year' title="Date to @d"><code>++year</code></a>
792−<a class="tooltip" href='/docs/reference/library/3c/#yell' title="Tarp from atomic date"><code>++yell</code></a>
793−<a class="tooltip" href='/docs/reference/library/3c/#yelp' title="Determine if leap-week"><code>++yelp</code></a>
794−<a class="tooltip" href='/docs/reference/library/3c/#yer-yo' title="Seconds in year"><code>++yer:yo</code></a>
795−<a class="tooltip" href='/docs/reference/library/3c/#yo' title="Time constants core"><code>++yo</code></a>
796−<a class="tooltip" href='/docs/reference/library/3c/#yore' title="Date from atomic date"><code>++yore</code></a>
797−<a class="tooltip" href='/docs/reference/library/3c/#yule' title="Daily time to time atom"><code>++yule</code></a>
798−
799−### z
800−
801−<a class="tooltip" href='/docs/reference/library/3f/#zaft-un' title="Look up in 255 sub box"><code>++zaft:un</code></a>
802−<a class="tooltip" href='/docs/reference/library/4j/#zag-mu' title="Add bottom into top"><code>++zag:mu</code></a>
803−<a class="tooltip" href='/docs/reference/library/4h/#zap' title="Parse ! (zap)"><code>++zap</code></a>
804−<a class="tooltip" href='/docs/reference/library/3f/#zart-un' title="Reverse look up in 255 sub box"><code>++zart:un</code></a>
805−<a class="tooltip" href='/docs/reference/library/3b/#zer-fl' title="Produce zero as float"><code>++zer:fl</code></a>
806−<a class="tooltip" href='/docs/reference/library/4j/#zig-mu' title="Subtract bottom from top"><code>++zig:mu</code></a>
807−<a class="tooltip" href='/docs/reference/library/2b/#zing' title="Turn lists into single list by promoting elements from sublists"><code>++zing</code></a>
808−<a class="tooltip" href='/docs/reference/library/4j/#zug-mu' title="Concatenate into atom"><code>++zug:mu</code></a>
809−<a class="tooltip" href='/docs/reference/library/4l/#zust-so' title="Parse prefixed dimes from IP, loobean, or floating point"><code>++zust:so</code></a>
810−<a class="tooltip" href='/docs/reference/library/3f/#zyft-un' title="Lookup byte in 256 sub box"><code>++zyft:un</code></a>
811−<a class="tooltip" href='/docs/reference/library/3f/#zyrt-un' title="Reverse lookup byte in 256 sub box"><code>++zyrt:un</code></a>
812−
813−## By Section
814−
815−### 1a: basic arithmetic
816−
817−<a class="tooltip" href='/docs/reference/library/1a/#add' title="Add"><code>++add</code></a>
818−<a class="tooltip" href='/docs/reference/library/1a/#dec' title="Decrement"><code>++dec</code></a>
819−<a class="tooltip" href='/docs/reference/library/1a/#div' title="Divide"><code>++div</code></a>
820−<a class="tooltip" href='/docs/reference/library/1a/#dvr' title="Divide (with remainder)"><code>++dvr</code></a>
821−<a class="tooltip" href='/docs/reference/library/1a/#gte' title="Greater than / equal"><code>++gte</code></a>
822−<a class="tooltip" href='/docs/reference/library/1a/#gth' title="Greater than"><code>++gth</code></a>
823−<a class="tooltip" href='/docs/reference/library/1a/#lte' title="Less than / equal (atom)"><code>++lte</code></a>
824−<a class="tooltip" href='/docs/reference/library/1a/#lth' title="Less than (atom)"><code>++lth</code></a>
825−<a class="tooltip" href='/docs/reference/library/1a/#max' title="Maximum"><code>++max</code></a>
826−<a class="tooltip" href='/docs/reference/library/1a/#min' title="Minimum (atom)"><code>++min</code></a>
827−<a class="tooltip" href='/docs/reference/library/1a/#mod' title="Modulus (atom)"><code>++mod</code></a>
828−<a class="tooltip" href='/docs/reference/library/1a/#mul' title="Multiply (atom)"><code>++mul</code></a>
829−<a class="tooltip" href='/docs/reference/library/1a/#sub' title="Subtract"><code>++sub</code></a>
830−
831−### 1b: tree addressing
832−
833−<a class="tooltip" href='/docs/reference/library/1b/#cap' title="Tree head"><code>++cap</code></a>
834−<a class="tooltip" href='/docs/reference/library/1b/#mas' title="Address within head/tail"><code>++mas</code></a>
835−<a class="tooltip" href='/docs/reference/library/1b/#peg' title="Address within address"><code>++peg</code></a>
836−
837−### 1c: molds and mold builders
838−
839−<a class="tooltip" href='/docs/reference/library/1c/#bloq' title="Blocksize"><code>++bloq</code></a>
840−<a class="tooltip" href='/docs/reference/library/1c/#each' title="Mold of fork between two types"><code>++each</code></a>
841−<a class="tooltip" href='/docs/reference/library/1c/#gate' title="Function"><code>++gate</code></a>
842−<a class="tooltip" href='/docs/reference/library/1c/#list' title="Mold constructor (list)"><code>++list</code></a>
843−<a class="tooltip" href='/docs/reference/library/1c/#lone' title="Mold generator (face on mold)"><code>++lone</code></a>
844−<a class="tooltip" href='/docs/reference/library/1c/#pair' title="Mold of pair of types"><code>++pair</code></a>
845−<a class="tooltip" href='/docs/reference/library/1c/#pole' title="Mold generator of faceless list"><code>++pole</code></a>
846−<a class="tooltip" href='/docs/reference/library/1c/#quip' title="Mold generator (tuple of list and type)"><code>++quip</code></a>
847−<a class="tooltip" href='/docs/reference/library/1c/#trap' title="Core with one arm $"><code>++trap</code></a>
848−<a class="tooltip" href='/docs/reference/library/1c/#tree' title="Mold generator (tree)"><code>++tree</code></a>
849−<a class="tooltip" href='/docs/reference/library/1c/#trel' title="Mold generator (tuple of three types)"><code>++trel</code></a>
850−<a class="tooltip" href='/docs/reference/library/1c/#unit' title="Mold generator (maybe)"><code>++unit</code></a>
851−
852−### 2a: unit logic
853−
854−<a class="tooltip" href='/docs/reference/library/2a/#biff' title="Unit as argument"><code>++biff</code></a>
855−<a class="tooltip" href='/docs/reference/library/2a/#bind' title="Non-unit function to unit, producing unit"><code>++bind</code></a>
856−<a class="tooltip" href='/docs/reference/library/2a/#bond' title="Replace null"><code>++bond</code></a>
857−<a class="tooltip" href='/docs/reference/library/2a/#both' title="Group unit values into pair"><code>++both</code></a>
858−<a class="tooltip" href='/docs/reference/library/2a/#clap' title="Apply function to two units"><code>++clap</code></a>
859−<a class="tooltip" href='/docs/reference/library/2a/#drop' title="Unit to list"><code>++drop</code></a>
860−<a class="tooltip" href='/docs/reference/library/2a/#fall' title="Give unit a default value"><code>++fall</code></a>
861−<a class="tooltip" href='/docs/reference/library/2a/#lift' title="Curried bind"><code>++lift</code></a>
862−<a class="tooltip" href='/docs/reference/library/2a/#mate' title="Choose"><code>++mate</code></a>
863−<a class="tooltip" href='/docs/reference/library/2a/#need' title="Unwrap unit"><code>++need</code></a>
864−<a class="tooltip" href='/docs/reference/library/2a/#some' title="Wrap value in unit"><code>++some</code></a>
865−
866−### 2b: list logic
867−
868−<a class="tooltip" href='/docs/reference/library/2b/#fand' title="All indices in list"><code>++fand</code></a>
869−<a class="tooltip" href='/docs/reference/library/2b/#find' title="First index in list"><code>++find</code></a>
870−<a class="tooltip" href='/docs/reference/library/2b/#flop' title="Reverse list"><code>++flop</code></a>
871−<a class="tooltip" href='/docs/reference/library/2b/#gulf' title="List from range"><code>++gulf</code></a>
872−<a class="tooltip" href='/docs/reference/library/2b/#homo' title="Homogenize list"><code>++homo</code></a>
873−<a class="tooltip" href='/docs/reference/library/2b/#join' title="Add separator between list elements"><code>++join</code></a>
874−<a class="tooltip" href='/docs/reference/library/2b/#lent' title="List length"><code>++lent</code></a>
875−<a class="tooltip" href='/docs/reference/library/2b/#levy' title="Logical AND on list"><code>++levy</code></a>
876−<a class="tooltip" href='/docs/reference/library/2b/#lien' title="Logical OR on list"><code>++lien</code></a>
877−<a class="tooltip" href='/docs/reference/library/2b/#limo' title="Construct list from null-terminated tuple"><code>++limo</code></a>
878−<a class="tooltip" href='/docs/reference/library/2b/#murn' title="Maybe transform"><code>++murn</code></a>
879−<a class="tooltip" href='/docs/reference/library/2b/#oust' title="Remove from list"><code>++oust</code></a>
880−<a class="tooltip" href='/docs/reference/library/2b/#reap' title="Replicate (list)"><code>++reap</code></a>
881−<a class="tooltip" href='/docs/reference/library/2b/#reel' title="Right fold (list)"><code>++reel</code></a>
882−<a class="tooltip" href='/docs/reference/library/2b/#roll' title="Left fold (list)"><code>++roll</code></a>
883−<a class="tooltip" href='/docs/reference/library/2b/#scag' title="Prefix (produce front of list)"><code>++scag</code></a>
884−<a class="tooltip" href='/docs/reference/library/2b/#skid' title="Separate list into two lists from slammed elments"><code>++skid</code></a>
885−<a class="tooltip" href='/docs/reference/library/2b/#skim' title="Produce list of elements from boolean gate"><code>++skim</code></a>
886−<a class="tooltip" href='/docs/reference/library/2b/#skip' title="Produce list of elements failing boolean gate"><code>++skip</code></a>
887−<a class="tooltip" href='/docs/reference/library/2b/#slag' title="Produce all elements from index in list"><code>++slag</code></a>
888−<a class="tooltip" href='/docs/reference/library/2b/#snag' title="Produce element at specific index (list)"><code>++snag</code></a>
889−<a class="tooltip" href='/docs/reference/library/2b/#snap' title="Replace item at index"><code>++snap</code></a>
890−<a class="tooltip" href='/docs/reference/library/2b/#snoc' title="Append noun to list"><code>++snoc</code></a>
891−<a class="tooltip" href='/docs/reference/library/2b/#sort' title="Quicksort (list)"><code>++sort</code></a>
892−<a class="tooltip" href='/docs/reference/library/2b/#spin' title="Gate to list (with state)"><code>++spin</code></a>
893−<a class="tooltip" href='/docs/reference/library/2b/#spun' title="Gate to list (with state)"><code>++spun</code></a>
894−<a class="tooltip" href='/docs/reference/library/2b/#swag' title="Infix (list)"><code>++swag</code></a>
895−<a class="tooltip" href='/docs/reference/library/2b/#turn' title="Gate to list"><code>++turn</code></a>
896−<a class="tooltip" href='/docs/reference/library/2b/#weld' title="Concatenate two lists"><code>++weld</code></a>
897−<a class="tooltip" href='/docs/reference/library/2b/#welp' title="Perfect concatenate (lists)"><code>++welp</code></a>
898−<a class="tooltip" href='/docs/reference/library/2b/#zing' title="Turn lists into single list by promoting elements from sublists"><code>++zing</code></a>
899−
900−### 2c: bit arithmetic
901−
902−<a class="tooltip" href='/docs/reference/library/2c/#fe' title="Modulo bloq"><code>++fe</code></a>
903−<a class="tooltip" href='/docs/reference/library/2c/#dif-fe' title="Difference between atoms (modular basis)"><code>++dif:fe</code></a>
904−<a class="tooltip" href='/docs/reference/library/2c/#inv-fe' title="Inverse order of modular field"><code>++inv:fe</code></a>
905−<a class="tooltip" href='/docs/reference/library/2c/#net-fe' title="Flip endianness"><code>++net:fe</code></a>
906−<a class="tooltip" href='/docs/reference/library/2c/#out-fe' title="Maximum integer value"><code>++out:fe</code></a>
907−<a class="tooltip" href='/docs/reference/library/2c/#rol-fe' title="Roll left"><code>++rol:fe</code></a>
908−<a class="tooltip" href='/docs/reference/library/2c/#ror-fe' title="Roll right"><code>++ror:fe</code></a>
909−<a class="tooltip" href='/docs/reference/library/2c/#sit-fe' title="Enforce modulo"><code>++sit:fe</code></a>
910−<a class="tooltip" href='/docs/reference/library/2c/#sum-fe' title="Sum two numbers in modular field"><code>++sum:fe</code></a>
911−
912−<a class="tooltip" href='/docs/reference/library/2c/#bex' title="Binary exponent"><code>++bex</code></a>
913−<a class="tooltip" href='/docs/reference/library/2c/#can' title="Assemble"><code>++can</code></a>
914−<a class="tooltip" href='/docs/reference/library/2c/#cat' title="Concatenate"><code>++cat</code></a>
915−<a class="tooltip" href='/docs/reference/library/2c/#cut' title="Slice"><code>++cut</code></a>
916−<a class="tooltip" href='/docs/reference/library/2c/#end' title="Tail"><code>++end</code></a>
917−<a class="tooltip" href='/docs/reference/library/2c/#fil' title="Fill bloqstream"><code>++fil</code></a>
918−<a class="tooltip" href='/docs/reference/library/2c/#lsh' title="Left-shift"><code>++lsh</code></a>
919−<a class="tooltip" href='/docs/reference/library/2c/#met' title="Measure"><code>++met</code></a>
920−<a class="tooltip" href='/docs/reference/library/2c/#rap' title="Assemble non-zero"><code>++rap</code></a>
921−<a class="tooltip" href='/docs/reference/library/2c/#rep' title="Assemble single"><code>++rep</code></a>
922−<a class="tooltip" href='/docs/reference/library/2c/#rip' title="Disassemble"><code>++rip</code></a>
923−<a class="tooltip" href='/docs/reference/library/2c/#rsh' title="Right-shift"><code>++rsh</code></a>
924−<a class="tooltip" href='/docs/reference/library/2c/#swp' title="Reverse block order"><code>++swp</code></a>
925−<a class="tooltip" href='/docs/reference/library/2c/#xeb' title="Binary logarithm"><code>++xeb</code></a>
926−
927−### 2d: bit logic
928−
929−<a class="tooltip" href='/docs/reference/library/2d/#con' title="Binary OR"><code>++con</code></a>
930−<a class="tooltip" href='/docs/reference/library/2d/#dis' title="Binary AND (atoms)"><code>++dis</code></a>
931−<a class="tooltip" href='/docs/reference/library/2d/#mix' title="Binary XOR (atom)"><code>++mix</code></a>
932−<a class="tooltip" href='/docs/reference/library/2d/#not' title="Binary NOT (atom)"><code>++not</code></a>
933−
934−### 2e: insecure hashing
935−
936−<a class="tooltip" href='/docs/reference/library/2e/#fnv' title="FNV scrambler"><code>++fnv</code></a>
937−<a class="tooltip" href='/docs/reference/library/2e/#mug' title="FNV-1a scrambler"><code>++mug</code></a>
938−<a class="tooltip" href='/docs/reference/library/2e/#muk' title="Standard MurmurHash3"><code>++muk</code></a>
939−<a class="tooltip" href='/docs/reference/library/2e/#mum' title="31-bit MurmurHash3 scrambler"><code>++mum</code></a>
940−
941−### 2f: noun ordering
942−
943−<a class="tooltip" href='/docs/reference/library/2f/#aor' title="Alphabetical order"><code>++aor</code></a>
944−<a class="tooltip" href='/docs/reference/library/2f/#dor' title="Numeric order"><code>++dor</code></a>
945−<a class="tooltip" href='/docs/reference/library/2f/#gor' title="Hash order"><code>++gor</code></a>
946−<a class="tooltip" href='/docs/reference/library/2f/#hor' title="Horizontal hash order"><code>++hor</code></a>
947−<a class="tooltip" href='/docs/reference/library/2f/#lor' title="Leg order"><code>++lor</code></a>
948−<a class="tooltip" href='/docs/reference/library/2f/#vor' title="Vertical order"><code>++vor</code></a>
949−
950−### 2g: unsigned powers
951−
952−<a class="tooltip" href='/docs/reference/library/2g/#pow' title="Computes a to the power of b"><code>++pow</code></a>
953−<a class="tooltip" href='/docs/reference/library/2g/#sqt' title="Compute square root with remainder"><code>++sqt</code></a>
954−
955−### 2h: set logic
956−
957−<a class="tooltip" href='/docs/reference/library/2h/#in'><code>++in</code></a>
958−<a class="tooltip" href='/docs/reference/library/2h/#all-in' title="Logical AND (set and wet gate)"><code>+-all:in</code></a>
959−<a class="tooltip" href='/docs/reference/library/2h/#any-in' title="Logical OR (set and gate)"><code>+-any:in</code></a>
960−<a class="tooltip" href='/docs/reference/library/2h/#apt-in' title="Check correctness (set)"><code>+-apt:in</code></a>
961−<a class="tooltip" href='/docs/reference/library/2h/#bif-in' title="Bifurcate set"><code>+-bif:in</code></a>
962−<a class="tooltip" href='/docs/reference/library/2h/#del-in' title="Delete (set)"><code>+-del:in</code></a>
963−<a class="tooltip" href='/docs/reference/library/2h/#dif-in' title='Difference (set)'><code>+-dif:in</code></a>
964−<a class="tooltip" href='/docs/reference/library/2h/#dig-in' title="Address of a in set"><code>+-dig:in</code></a>
965−<a class="tooltip" href='/docs/reference/library/2h/#gas-in' title="Concatenate (set)"><code>+-gas:in</code></a>
966−<a class="tooltip" href='/docs/reference/library/2h/#has-in' title="Key existence check (set)"><code>+-has:in</code></a>
967−<a class="tooltip" href='/docs/reference/library/2h/#int-in' title="Intersection (set)"><code>+-int:in</code></a>
968−<a class="tooltip" href='/docs/reference/library/2h/#put-in' title="Put b in a (set)"><code>+-put:in</code></a>
969−<a class="tooltip" href='/docs/reference/library/2h/#rep-in' title="Accumulate elements (set)"><code>+-rep:in</code></a>
970−<a class="tooltip" href='/docs/reference/library/2h/#run-in' title="Apply gate to set"><code>+-run:in</code></a>
971−<a class="tooltip" href='/docs/reference/library/2h/#tap-in' title="Flatten set into list"><code>+-tap:in</code></a>
972−<a class="tooltip" href='/docs/reference/library/2h/#uni-in' title="Union (sets)"><code>+-uni:in</code></a>
973−<a class="tooltip" href='/docs/reference/library/2h/#wyt-in' title="Produce number of elements in set"><code>+-wyt:in</code></a>
974−
975−### 2i: map logic
976−
977−<a class="tooltip" href='/docs/reference/library/2i/#by' title="Map operations"><code>++by</code></a>
978−<a class="tooltip" href='/docs/reference/library/2i/#all-by' title="Logical AND (map and wet gate)"><code>+-all:by</code></a>
979−<a class="tooltip" href='/docs/reference/library/2i/#any-by' title="Logical OR (map and wet gate)"><code>+-any:by</code></a>
980−<a class="tooltip" href='/docs/reference/library/2i/#apt-by' title="Check correctness (map)"><code>+-apt:by</code></a>
981−<a class="tooltip" href='/docs/reference/library/2i/#bif-by' title="Bifurcate map"><code>+-bif:by</code></a>
982−<a class="tooltip" href='/docs/reference/library/2i/#def-by' title="Difference (map)"><code>+-def:by</code></a>
983−<a class="tooltip" href='/docs/reference/library/2i/#del-by' title="Delete (map)"><code>+-del:by</code></a>
984−<a class="tooltip" href='/docs/reference/library/2i/#dep-by' title="Difference as patch (map)"><code>+-dep:by</code></a>
985−<a class="tooltip" href='/docs/reference/library/2i/#dig-by' title="Address of key (map)"><code>+-dig:by</code></a>
986−<a class="tooltip" href='/docs/reference/library/2i/#gas-by' title="Concatenate (map)"><code>+-gas:by</code></a>
987−<a class="tooltip" href='/docs/reference/library/2i/#get-by' title="Grab unit value"><code>+-get:by</code></a>
988−<a class="tooltip" href='/docs/reference/library/2i/#got-by' title="Assert for value (map)"><code>+-got:by</code></a>
989−<a class="tooltip" href='/docs/reference/library/2i/#gut-by' title="Grab value with default"><code>+-gut:by</code></a>
990−<a class="tooltip" href='/docs/reference/library/2i/#has-by' title="Key existence check (map)"><code>+-has:by</code></a>
991−<a class="tooltip" href='/docs/reference/library/2i/#int-by' title="Intersection (map)"><code>+-int:by</code></a>
992−<a class="tooltip" href='/docs/reference/library/2i/#mar-by' title="Assert and add (map)"><code>+-mar:by</code></a>
993−<a class="tooltip" href='/docs/reference/library/2i/#put-by' title="Add key-value pair (map)"><code>+-put:by</code></a>
994−<a class="tooltip" href='/docs/reference/library/2i/#rep-by' title="Replace by product (map)"><code>+-rep:by</code></a>
995−<a class="tooltip" href='/docs/reference/library/2i/#rib-by' title="Replace values with accumulator (map)"><code>+-rib:by</code></a>
996−<a class="tooltip" href='/docs/reference/library/2i/#run-by' title="Transform values (map)"><code>+-run:by</code></a>
997−<a class="tooltip" href='/docs/reference/library/2i/#rut-by' title="Transform nodes (map)"><code>+-rut:by</code></a>
998−<a class="tooltip" href='/docs/reference/library/2i/#tap-by' title="Listify pairs"><code>+-tap:by</code></a>
999−<a class="tooltip" href='/docs/reference/library/2i/#uni-by' title="Union (map between keys of two lists)"><code>+-uni:by</code></a>
1000−<a class="tooltip" href='/docs/reference/library/2i/#urn-by' title="Turn (with key) (map)"><code>+-urn:by</code></a>
1001−<a class="tooltip" href='/docs/reference/library/2i/#wyt-by' title="Produce depth of tree map"><code>+-wyt:by</code></a>
1002−
1003−### 2j: jar and jug logic
1004−
1005−<a class="tooltip" href='/docs/reference/library/2j/#ja' title="Jar engine"><code>++ja</code></a>
1006−<a class="tooltip" href='/docs/reference/library/2j/#add-ja' title="Prepend to list"><code>+-add:ja</code></a>
1007−<a class="tooltip" href='/docs/reference/library/2j/#get-ja' title="Grab value by key"><code>+-get:ja</code></a>
1008−
1009−<a class="tooltip" href='/docs/reference/library/2j/#ju' title="Jug operations"><code>++ju</code></a>
1010−<a class="tooltip" href='/docs/reference/library/2j/#del-ju' title="Delete (jug)"><code>+-del:ju</code></a>
1011−<a class="tooltip" href='/docs/reference/library/2j/#get-ju' title="Retrieve set"><code>+-get:ju</code></a>
1012−<a class="tooltip" href='/docs/reference/library/2j/#has-ju' title="Check contents (jug)"><code>+-has:ju</code></a>
1013−<a class="tooltip" href='/docs/reference/library/2j/#put-ju' title="Add key-set pair (jar)"><code>+-put:ju</code></a>
1014−
1015−### 2k: queue logic
1016−
1017−<a class="tooltip" href='/docs/reference/library/2k/#to' title="Queue operations"><code>++to</code></a>
1018−<a class="tooltip" href='/docs/reference/library/2k/#bal-to' title="Balance queue"><code>+-bal:to</code></a>
1019−<a class="tooltip" href='/docs/reference/library/2k/#dep-to' title="Maximum depth (queue)"><code>+-dep:to</code></a>
1020−<a class="tooltip" href='/docs/reference/library/2k/#gas-to' title="Push list into queue"><code>+-gas:to</code></a>
1021−<a class="tooltip" href='/docs/reference/library/2k/#get-to' title="Head-tail pair"><code>+-get:to</code></a>
1022−<a class="tooltip" href='/docs/reference/library/2k/#nap-to' title="Remove head of queue"><code>+-nap:to</code></a>
1023−<a class="tooltip" href='/docs/reference/library/2k/#nip-to' title="Remove root of queue"><code>+-nip:to</code></a>
1024−<a class="tooltip" href='/docs/reference/library/2k/#put-to' title="Insert into queue"><code>+-put:to</code></a>
1025−<a class="tooltip" href='/docs/reference/library/2k/#tap-to' title="Queue to list"><code>+-tap:to</code></a>
1026−<a class="tooltip" href='/docs/reference/library/2k/#top-to' title="Produce head of queue"><code>+-top:to</code></a>
1027−
1028−### 2l: container from container
1029−
1030−<a class="tooltip" href='/docs/reference/library/2l/#malt' title="Map from list"><code>++malt</code></a>
1031−<a class="tooltip" href='/docs/reference/library/2l/#molt' title="Map from pair list"><code>++molt</code></a>
1032−<a class="tooltip" href='/docs/reference/library/2l/#silt' title="Produce set from list"><code>++silt</code></a>
1033−
1034−### 2m: container from noun
1035−
1036−<a class="tooltip" href='/docs/reference/library/2m/#nl' title="Noun to container operations"><code>++nl</code></a>
1037−<a class="tooltip" href='/docs/reference/library/2m/#le-nl' title="Construct list from null-terminated noun"><code>++le:nl</code></a>
1038−<a class="tooltip" href='/docs/reference/library/2m/#my-nl' title="Construct map from null-terminated noun"><code>++my:nl</code></a>
1039−<a class="tooltip" href='/docs/reference/library/2m/#si-nl' title="Construct set from null-terminated noun"><code>++si:nl</code></a>
1040−<a class="tooltip" href='/docs/reference/library/2m/#snag-nl' title="Produce element from list at specific null-terminated noun"><code>++snag:nl</code></a>
1041−<a class="tooltip" href='/docs/reference/library/2m/#weld-nl' title="Concatenate null-terminated nouns"><code>++weld:nl</code></a>
1042−
1043−<a class="tooltip" href='/docs/reference/library/2m/#ly' title="List from raw noun"><code>++ly</code></a>
1044−<a class="tooltip" href='/docs/reference/library/2m/#my' title="Map from raw noun"><code>++my</code></a>
1045−<a class="tooltip" href='/docs/reference/library/2m/#sy' title="Produce set from null-terminated noun"><code>++sy</code></a>
1046−
1047−### 2n: functional hacks
1048−
1049−<a class="tooltip" href='/docs/reference/library/2n/#cork' title="Compose forward"><code>++cork</code></a>
1050−<a class="tooltip" href='/docs/reference/library/2n/#corl' title="Compose backward"><code>++corl</code></a>
1051−<a class="tooltip" href='/docs/reference/library/2n/#curr' title="Right-curry a gate"><code>++curr</code></a>
1052−<a class="tooltip" href='/docs/reference/library/2n/#cury' title="Curry left a gate"><code>++cury</code></a>
1053−<a class="tooltip" href='/docs/reference/library/2n/#hard' title="Force remold"><code>++hard</code></a>
1054−<a class="tooltip" href='/docs/reference/library/2n/#head' title="Get head of cell"><code>++head</code></a>
1055−<a class="tooltip" href='/docs/reference/library/2n/#mean' title="Crash and printf"><code>++mean</code></a>
1056−<a class="tooltip" href='/docs/reference/library/2n/#same' title="Identity (produces same value)"><code>++same</code></a>
1057−<a class="tooltip" href='/docs/reference/library/2n/#slog' title="Deify printf"><code>++slog</code></a>
1058−<a class="tooltip" href='/docs/reference/library/2n/#soft' title="Maybe remold"><code>++soft</code></a>
1059−<a class="tooltip" href='/docs/reference/library/2n/#tail' title="Get tail of cell"><code>++tail</code></a>
1060−<a class="tooltip" href='/docs/reference/library/2n/#test' title="Test for equality"><code>++test</code></a>
1061−
1062−### 2o: normalizing containers
1063−
1064−<a class="tooltip" href='/docs/reference/library/2o/#jar' title="Mold generator (jar)"><code>++jar</code></a>
1065−<a class="tooltip" href='/docs/reference/library/2o/#jug' title="Mold generator (jug)"><code>++jug</code></a>
1066−<a class="tooltip" href='/docs/reference/library/2o/#map' title="Mold generator (map)"><code>++map</code></a>
1067−<a class="tooltip" href='/docs/reference/library/2o/#qeu' title="Mold generator (queue)"><code>++qeu</code></a>
1068−<a class="tooltip" href='/docs/reference/library/2o/#set' title="Mold generator (set)"><code>++set</code></a>
1069−
1070−### 2p: serialization
1071−
1072−<a class="tooltip" href='/docs/reference/library/2p/#cue' title="Unpack atom to noun"><code>++cue</code></a>
1073−<a class="tooltip" href='/docs/reference/library/2p/#jam' title="Pack noun to atom"><code>++jam</code></a>
1074−<a class="tooltip" href='/docs/reference/library/2p/#mat' title="Length-encode"><code>++mat</code></a>
1075−<a class="tooltip" href='/docs/reference/library/2p/#rub' title="Length-decode"><code>++rub</code></a>
1076−
1077−### 2q: molds and mold builders
1078−
1079−<a class="tooltip" href='/docs/reference/library/2q/#char' title="Character"><code>++char</code></a>
1080−<a class="tooltip" href='/docs/reference/library/2q/#cord' title="UTF-8 text"><code>++cord</code></a>
1081−<a class="tooltip" href='/docs/reference/library/2q/#date' title="Point in time"><code>++date</code></a>
1082−<a class="tooltip" href='/docs/reference/library/2q/#knot' title="Atom type of ASCII characters"><code>++knot</code></a>
1083−<a class="tooltip" href='/docs/reference/library/2q/#tang' title="Generic print structure"><code>++tang</code></a>
1084−<a class="tooltip" href='/docs/reference/library/2q/#tank' title="Pretty-printing structure"><code>++tank</code></a>
1085−<a class="tooltip" href='/docs/reference/library/2q/#tape' title="List of characters"><code>++tape</code></a>
1086−<a class="tooltip" href='/docs/reference/library/2q/#tarp' title="Parsed time"><code>++tarp</code></a>
1087−<a class="tooltip" href='/docs/reference/library/2q/#term' title="Hoon constant"><code>++term</code></a>
1088−<a class="tooltip" href='/docs/reference/library/2q/#wain' title="List of cords"><code>++wain</code></a>
1089−<a class="tooltip" href='/docs/reference/library/2q/#wall' title="List of list of characters"><code>++wall</code></a>
1090−
1091−### 3a: modular and signed ints
1092−
1093−<a class="tooltip" href='/docs/reference/library/3a/#fo' title="Modulo prime"><code>++fo</code></a>
1094−<a class="tooltip" href='/docs/reference/library/3a/#dif-fo' title='Subtraction (modular base)'><code>++dif:fo</code></a>
1095−<a class="tooltip" href='/docs/reference/library/3a/#exp-fo' title="Exponent (modular base)"><code>++exp:fo</code></a>
1096−<a class="tooltip" href='/docs/reference/library/3a/#fra-fo' title="Divide (modular base)"><code>++fra:fo</code></a>
1097−<a class="tooltip" href='/docs/reference/library/3a/#inv-fo' title="Inverse (signed modulus)"><code>++inv:fo</code></a>
1098−<a class="tooltip" href='/docs/reference/library/3a/#pro-fo' title="Multiplies b and c modulo a"><code>++pro:fo</code></a>
1099−<a class="tooltip" href='/docs/reference/library/3a/#sit-fo' title="Produce remainder of b modulo a"><code>++sit:fo</code></a>
1100−<a class="tooltip" href='/docs/reference/library/3a/#sum-fo' title="Modular sum"><code>++sum:fo</code></a>
1101−
1102−<a class="tooltip" href='/docs/reference/library/3a/#si' title="Signed integer"><code>++si</code></a>
1103−<a class="tooltip" href='/docs/reference/library/3a/#abs-si' title="Absolute value (signed integer)"><code>++abs:si</code></a>
1104−<a class="tooltip" href='/docs/reference/library/3a/#cmp-si' title="Compare (signed integer)"><code>++cmp:si</code></a>
1105−<a class="tooltip" href='/docs/reference/library/3a/#dif-si' title="Subtraction (signed integer)"><code>++dif:si</code></a>
1106−<a class="tooltip" href='/docs/reference/library/3a/#dul-si' title="Modulus (signed integer)"><code>++dul:si</code></a>
1107−<a class="tooltip" href='/docs/reference/library/3a/#fra-si' title="Divide (signed integer)"><code>++fra:si</code></a>
1108−<a class="tooltip" href='/docs/reference/library/3a/#new-si' title="Atom to @s"><code>++new:si</code></a>
1109−<a class="tooltip" href='/docs/reference/library/3a/#old-si' title="Sign and absolute value"><code>++old:si</code></a>
1110−<a class="tooltip" href='/docs/reference/library/3a/#pro-si' title="Multiply to signed integer"><code>++pro:si</code></a>
1111−<a class="tooltip" href='/docs/reference/library/3a/#rem-si' title="Remainder (signed integer)"><code>++rem:si</code></a>
1112−<a class="tooltip" href='/docs/reference/library/3a/#sum-si' title="Addition (signed integer)"><code>++sum:si</code></a>
1113−<a class="tooltip" href='/docs/reference/library/3a/#sun-si' title="@u to @s"><code>++sun:si</code></a>
1114−<a class="tooltip" href='/docs/reference/library/3a/#syn-si' title="Sign test"><code>++syn:si</code></a>
1115−
1116−<a class="tooltip" href='/docs/reference/library/3a/#egcd' title="Extended Euclidean algorithm"><code>++egcd</code></a>
1117−
1118−### 3b: floating point
1119−
1120−<a class="tooltip" href='/docs/reference/library/3b/#dn'><code>++dn</code></a>
1121−<a class="tooltip" href='/docs/reference/library/3b/#fn'><code>++fn</code></a>
1122−<a class="tooltip" href='/docs/reference/library/3b/#rn'><code>++rn</code></a>
1123−
1124−<a class="tooltip" href='/docs/reference/library/3b/#ff'><code>++ff</code></a>
1125−<a class="tooltip" href='/docs/reference/library/3b/#add-ff' title="Add (floating point)"><code>++add:ff</code></a>
1126−<a class="tooltip" href='/docs/reference/library/3b/#bif-ff' title="Converts from fn to @r"><code>++bif:ff</code></a>
1127−<a class="tooltip" href='/docs/reference/library/3b/#bit-ff' title="fn to @r with rounding"><code>++bit:ff</code></a>
1128−<a class="tooltip" href='/docs/reference/library/3b/#div-ff' title="Divide (IEEE float)"><code>++div:ff</code></a>
1129−<a class="tooltip" href='/docs/reference/library/3b/#drg-ff' title="@r to decimal float"><code>++drg:ff</code></a>
1130−<a class="tooltip" href='/docs/reference/library/3b/#equ-ff' title="Equals (IEEE float)"><code>++equ:ff</code></a>
1131−<a class="tooltip" href='/docs/reference/library/3b/#exp-ff' title="Get exponent (IEEE float)"><code>++exp:ff</code></a>
1132−<a class="tooltip" href='/docs/reference/library/3b/#fma-ff' title="Fused multiply-add (IEEE float)"><code>++fma:ff</code></a>
1133−<a class="tooltip" href='/docs/reference/library/3b/#grd-ff' title="Decimal float to @r"><code>++grd:ff</code></a>
1134−<a class="tooltip" href='/docs/reference/library/3b/#gte-ff' title="Greater than / equal (IEEE float)"><code>++gte:ff</code></a>
1135−<a class="tooltip" href='/docs/reference/library/3b/#gth-ff' title="Greater than (IEEE float)"><code>++gth:ff</code></a>
1136−<a class="tooltip" href='/docs/reference/library/3b/#lte-ff' title="Less than / equal (IEEE float)"><code>++lte:ff</code></a>
1137−<a class="tooltip" href='/docs/reference/library/3b/#lth-ff' title="Less than (IEEE float)"><code>++lth:ff</code></a>
1138−<a class="tooltip" href='/docs/reference/library/3b/#me-ff' title="Minimum exponent of ff"><code>++me:ff</code></a>
1139−<a class="tooltip" href='/docs/reference/library/3b/#mul-ff' title="Multiply (IEEE float)"><code>++mul:ff</code></a>
1140−<a class="tooltip" href='/docs/reference/library/3b/#pa-ff' title="Initialize fl from ff core"><code>++pa:ff</code></a>
1141−<a class="tooltip" href='/docs/reference/library/3b/#san-ff' title="Signed integer to @r"><code>++san:ff</code></a>
1142−<a class="tooltip" href='/docs/reference/library/3b/#sb-ff' title="Sign bit"><code>++sb:ff</code></a>
1143−<a class="tooltip" href='/docs/reference/library/3b/#sea-ff' title="Convert from IEEE float to fn"><code>++sea:ff</code></a>
1144−<a class="tooltip" href='/docs/reference/library/3b/#sig-ff' title="Produce sign of IEEE float"><code>++sig:ff</code></a>
1145−<a class="tooltip" href='/docs/reference/library/3b/#sqt-ff' title="Produce square root from IEEE float"><code>++sqt:ff</code></a>
1146−<a class="tooltip" href='/docs/reference/library/3b/#sub-ff' title="Subtract from IEEE float"><code>++sub:ff</code></a>
1147−<a class="tooltip" href='/docs/reference/library/3b/#sun-ff' title="Unsigned integer to IEEE float"><code>++sun:ff</code></a>
1148−<a class="tooltip" href='/docs/reference/library/3b/#toi-ff' title="Round IEEE float to nearest signed integer"><code>++toi:ff</code></a>
1149−
1150−<a class="tooltip" href='/docs/reference/library/3b/#fl'><code>++fl</code></a>
1151−<a class="tooltip" href='/docs/reference/library/3b/#abs-fl' title="Absolute value"><code>++abs:fl</code></a>
1152−<a class="tooltip" href='/docs/reference/library/3b/#add-fl' title="Add (with exact/rounded flag)"><code>++add:fl</code></a>
1153−<a class="tooltip" href='/docs/reference/library/3b/#den-fl' title="Denormalizes (floating point)"><code>++den:fl</code></a>
1154−<a class="tooltip" href='/docs/reference/library/3b/#div-fl' title="Divide (signed and unsigned integer cell)"><code>++div:fl</code></a>
1155−<a class="tooltip" href='/docs/reference/library/3b/#drg-fl' title="Get printable decimal (signed and unsigned integer cell)"><code>++drg:fl</code></a>
1156−<a class="tooltip" href='/docs/reference/library/3b/#ead-fl' title="Exact add"><code>++ead:fl</code></a>
1157−<a class="tooltip" href='/docs/reference/library/3b/#emn-fl' title="Minimum exponent"><code>++emn:fl</code></a>
1158−<a class="tooltip" href='/docs/reference/library/3b/#emu-fl' title="Exact multiply"><code>++emu:fl</code></a>
1159−<a class="tooltip" href='/docs/reference/library/3b/#emx-fl' title="Maximum exponent"><code>++emx:fl</code></a>
1160−<a class="tooltip" href='/docs/reference/library/3b/#equ-fl' title="Equals (signed and unsigned integer cell)"><code>++equ:fl</code></a>
1161−<a class="tooltip" href='/docs/reference/library/3b/#fli-fl' title="Flip sign"><code>++fli:fl</code></a>
1162−<a class="tooltip" href='/docs/reference/library/3b/#fma-fl' title="Fused multiply-add"><code>++fma:fl</code></a>
1163−<a class="tooltip" href='/docs/reference/library/3b/#grd-fl' title="Decimal to float"><code>++grd:fl</code></a>
1164−<a class="tooltip" href='/docs/reference/library/3b/#gte-fl' title="Greater than / equal (producing flag)"><code>++gte:fl</code></a>
1165−<a class="tooltip" href='/docs/reference/library/3b/#gth-fl' title="Greater than (producing flag)"><code>++gth:fl</code></a>
1166−<a class="tooltip" href='/docs/reference/library/3b/#ibl-fl' title="Integer binary logarithm"><code>++ibl:fl</code></a>
1167−<a class="tooltip" href='/docs/reference/library/3b/#inv-fl' title="Inverse"><code>++inv:fl</code></a>
1168−<a class="tooltip" href='/docs/reference/library/3b/#lfe-fl' title="Maximum"><code>++lfe:fl</code></a>
1169−<a class="tooltip" href='/docs/reference/library/3b/#lfn-fl' title="Largest normal float"><code>++lfn:fl</code></a>
1170−<a class="tooltip" href='/docs/reference/library/3b/#lte-fl' title="Less than / equal (producing flag)"><code>++lte:fl</code></a>
1171−<a class="tooltip" href='/docs/reference/library/3b/#lth-fl' title="Less than (signed and unsigned integer cell)"><code>++lth:fl</code></a>
1172−<a class="tooltip" href='/docs/reference/library/3b/#lug-fl' title="Central rounding mechanism"><code>++lug:fl</code></a>
1173−<a class="tooltip" href='/docs/reference/library/3b/#mul-fl' title="Multiply (signed and unsigned integer cell)"><code>++mul:fl</code></a>
1174−<a class="tooltip" href='/docs/reference/library/3b/#ned-fl' title="Require float"><code>++ned:fl</code></a>
1175−<a class="tooltip" href='/docs/reference/library/3b/#prc-fl' title="Force precision of 2 or greater (floating point)"><code>++prc:fl</code></a>
1176−<a class="tooltip" href='/docs/reference/library/3b/#rau-fl' title="Various roundings (floating point)"><code>++rau:fl</code></a>
1177−<a class="tooltip" href='/docs/reference/library/3b/#rou-fl' title="Round to nearest float with 113-bit significand"><code>++rou:fl</code></a>
1178−<a class="tooltip" href='/docs/reference/library/3b/#san-fl' title="Signed integer to float"><code>++san:fl</code></a>
1179−<a class="tooltip" href='/docs/reference/library/3b/#shf-fl' title="Shift power"><code>++shf:fl</code></a>
1180−<a class="tooltip" href='/docs/reference/library/3b/#spd-fl' title="Produce smallest denormalized float"><code>++spd:fl</code></a>
1181−<a class="tooltip" href='/docs/reference/library/3b/#spn-fl' title="Produce smallest normal float"><code>++spn:fl</code></a>
1182−<a class="tooltip" href='/docs/reference/library/3b/#sqt-fl' title="Produce square root from signed and unsigned integer cell"><code>++sqt:fl</code></a>
1183−<a class="tooltip" href='/docs/reference/library/3b/#sub-fl' title="Subtract from signed and unsigned integer cells"><code>++sub:fl</code></a>
1184−<a class="tooltip" href='/docs/reference/library/3b/#sun-fl' title="Unsigned integer to float"><code>++sun:fl</code></a>
1185−<a class="tooltip" href='/docs/reference/library/3b/#swr-fl' title="Switch rounding mode of floating point"><code>++swr:fl</code></a>
1186−<a class="tooltip" href='/docs/reference/library/3b/#syn-fl' title="Get sign"><code>++syn:fl</code></a>
1187−<a class="tooltip" href='/docs/reference/library/3b/#toi-fl' title="Round float to nearest signed integer"><code>++toi:fl</code></a>
1188−<a class="tooltip" href='/docs/reference/library/3b/#toj-fl' title="Round unsigned and signed integer to float"><code>++toj:fl</code></a>
1189−<a class="tooltip" href='/docs/reference/library/3b/#uni-fl' title="Change representation to odd"><code>++uni:fl</code></a>
1190−<a class="tooltip" href='/docs/reference/library/3b/#xpd-fl' title="Expand signed and unsigned integer cell"><code>++xpd:fl</code></a>
1191−<a class="tooltip" href='/docs/reference/library/3b/#zer-fl' title="Produce zero as float"><code>++zer:fl</code></a>
1192−
1193−<a class="tooltip" href='/docs/reference/library/3b/#rd'><code>++rd</code></a>
1194−<a class="tooltip" href='/docs/reference/library/3b/#add-rd' title="Add (double-precision float)"><code>++add:rd</code></a>
1195−<a class="tooltip" href='/docs/reference/library/3b/#bit-rd' title="fn to double-precision binary float"><code>++bit:rd</code></a>
1196−<a class="tooltip" href='/docs/reference/library/3b/#div-rd' title="Double precision float"><code>++div:rd</code></a>
1197−<a class="tooltip" href='/docs/reference/library/3b/#drg-rd' title="@rd to decimal float"><code>++drg:rd</code></a>
1198−<a class="tooltip" href='/docs/reference/library/3b/#equ-rd' title="Equals (double-precision float)"><code>++equ:rd</code></a>
1199−<a class="tooltip" href='/docs/reference/library/3b/#exp-rd' title="Exponent (@rd)"><code>++exp:rd</code></a>
1200−<a class="tooltip" href='/docs/reference/library/3b/#fma-rd' title="Fused multiply-add (@rd)"><code>++fma:rd</code></a>
1201−<a class="tooltip" href='/docs/reference/library/3b/#grd-rd' title="Decimal float to @rd"><code>++grd:rd</code></a>
1202−<a class="tooltip" href='/docs/reference/library/3b/#gte-rd' title="Greater than / equal (double-precision float)"><code>++gte:rd</code></a>
1203−<a class="tooltip" href='/docs/reference/library/3b/#gth-rd' title="Greater than (double-precision float)"><code>++gth:rd</code></a>
1204−<a class="tooltip" href='/docs/reference/library/3b/#lte-rd' title="Less than / equal (double-precision float)"><code>++lte:rd</code></a>
1205−<a class="tooltip" href='/docs/reference/library/3b/#lth-rd' title="Less than (double-precision float)"><code>++lth:rd</code></a>
1206−<a class="tooltip" href='/docs/reference/library/3b/#ma-rd' title="Initialize ff (rd core)"><code>++ma:rd</code></a>
1207−<a class="tooltip" href='/docs/reference/library/3b/#mul-rd' title="Multiply (double-precision float)"><code>++mul:rd</code></a>
1208−<a class="tooltip" href='/docs/reference/library/3b/#san-rd' title="Unsigned integer to @rd"><code>++san:rd</code></a>
1209−<a class="tooltip" href='/docs/reference/library/3b/#sea-rd' title="Convert from double-precision binary float to fn"><code>++sea:rd</code></a>
1210−<a class="tooltip" href='/docs/reference/library/3b/#sig-rd' title="Produce sign of @rd"><code>++sig:rd</code></a>
1211−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rd' title="Produce square root of double-precision float"><code>++sqt:rd</code></a>
1212−<a class="tooltip" href='/docs/reference/library/3b/#sub-rd' title="Subtract from double-precision float"><code>++sub:rd</code></a>
1213−<a class="tooltip" href='/docs/reference/library/3b/#sun-rd' title="Unsigned integer to double-precision float"><code>++sun:rd</code></a>
1214−<a class="tooltip" href='/docs/reference/library/3b/#toi-rd' title="Round double-precision float to nearest signed integer"><code>++toi:rd</code></a>
1215−
1216−<a class="tooltip" href='/docs/reference/library/3b/#rh'><code>++rh</code></a>
1217−<a class="tooltip" href='/docs/reference/library/3b/#add-rh' title="Add (half-precision float)"><code>++add:rh</code></a>
1218−<a class="tooltip" href='/docs/reference/library/3b/#bit-rh' title="fn to half-precision float"><code>++bit:rh</code></a>
1219−<a class="tooltip" href='/docs/reference/library/3b/#div-rh' title="Divide (half-precision float)"><code>++div:rh</code></a>
1220−<a class="tooltip" href='/docs/reference/library/3b/#drg-rh' title="@rh to decimal float"><code>++drg:rh</code></a>
1221−<a class="tooltip" href='/docs/reference/library/3b/#equ-rh' title="Equals (half-precision float)"><code>++equ:rh</code></a>
1222−<a class="tooltip" href='/docs/reference/library/3b/#exp-rh' title="Exponent (half-precision float)"><code>++exp:rh</code></a>
1223−<a class="tooltip" href='/docs/reference/library/3b/#fma-rh' title="Fused multiply-add (half-precision float)"><code>++fma:rh</code></a>
1224−<a class="tooltip" href='/docs/reference/library/3b/#fos-rh' title="@rs to @rh"><code>++fos:rh</code></a>
1225−<a class="tooltip" href='/docs/reference/library/3b/#grd-rh' title="Decimal float to @rh"><code>++grd:rh</code></a>
1226−<a class="tooltip" href='/docs/reference/library/3b/#gte-rh' title="Greater than / equal (half-precision float)"><code>++gte:rh</code></a>
1227−<a class="tooltip" href='/docs/reference/library/3b/#gth-rh' title="Greater than (half-precision float)"><code>++gth:rh</code></a>
1228−<a class="tooltip" href='/docs/reference/library/3b/#lte-rh' title="Less than / equal (half-precision float)"><code>++lte:rh</code></a>
1229−<a class="tooltip" href='/docs/reference/library/3b/#lth-rh' title="Less than (half-precision float)"><code>++lth:rh</code></a>
1230−<a class="tooltip" href='/docs/reference/library/3b/#ma-rh' title="Initialize ff (rh core)"><code>++ma:rh</code></a>
1231−<a class="tooltip" href='/docs/reference/library/3b/#mul-rh' title="Multiply (quad-precision float)"><code>++mul:rh</code></a>
1232−<a class="tooltip" href='/docs/reference/library/3b/#san-rh' title="Signed integer to @rh"><code>++san:rh</code></a>
1233−<a class="tooltip" href='/docs/reference/library/3b/#sea-rh' title="Convert from half-precision float to fn"><code>++sea:rh</code></a>
1234−<a class="tooltip" href='/docs/reference/library/3b/#sig-rh' title="Produce sign of half-precision float"><code>++sig:rh</code></a>
1235−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rh' title="Produce square root of half-precision float"><code>++sqt:rh</code></a>
1236−<a class="tooltip" href='/docs/reference/library/3b/#sub-rh' title="Subtract from half-precision float"><code>++sub:rh</code></a>
1237−<a class="tooltip" href='/docs/reference/library/3b/#sun-rh' title="Unsigned integer to half-precision float"><code>++sun:rh</code></a>
1238−<a class="tooltip" href='/docs/reference/library/3b/#toi-rh' title="Round half-precision float to nearest signed integer"><code>++toi:rh</code></a>
1239−<a class="tooltip" href='/docs/reference/library/3b/#tos-rh' title="Convert half-precision float to single-precision float"><code>++tos:rh</code></a>
1240−
1241−<a class="tooltip" href='/docs/reference/library/3b/#rs'><code>++rs</code></a>
1242−<a class="tooltip" href='/docs/reference/library/3b/#add-rs' title="Add (single-precision float)"><code>++add:rs</code></a>
1243−<a class="tooltip" href='/docs/reference/library/3b/#bit-rs' title="fn to single-precision float"><code>++bit:rs</code></a>
1244−<a class="tooltip" href='/docs/reference/library/3b/#div-rs' title="Divide (single-precision float)"><code>++div:rs</code></a>
1245−<a class="tooltip" href='/docs/reference/library/3b/#drg-rs' title="@rs to decimal float"><code>++drg:rs</code></a>
1246−<a class="tooltip" href='/docs/reference/library/3b/#equ-rs' title="Equals (single-precision float)"><code>++equ:rs</code></a>
1247−<a class="tooltip" href='/docs/reference/library/3b/#exp-rs' title="Exponent (@rs)"><code>++exp:rs</code></a>
1248−<a class="tooltip" href='/docs/reference/library/3b/#fma-rs' title="Fused multiply-add (single-precision float)"><code>++fma:rs</code></a>
1249−<a class="tooltip" href='/docs/reference/library/3b/#grd-rs' title="Decimal float to @rs"><code>++grd:rs</code></a>
1250−<a class="tooltip" href='/docs/reference/library/3b/#gte-rs' title="Greater than / equal (single-precision float)"><code>++gte:rs</code></a>
1251−<a class="tooltip" href='/docs/reference/library/3b/#gth-rs' title="Greater than (single-precision float)"><code>++gth:rs</code></a>
1252−<a class="tooltip" href='/docs/reference/library/3b/#lte-rs' title="Less than / equal (single-precision float)"><code>++lte:rs</code></a>
1253−<a class="tooltip" href='/docs/reference/library/3b/#lth-rs' title="Less than (single-precision float)"><code>++lth:rs</code></a>
1254−<a class="tooltip" href='/docs/reference/library/3b/#ma-rs' title="Initialize ff (rs core)"><code>++ma:rs</code></a>
1255−<a class="tooltip" href='/docs/reference/library/3b/#mul-rs' title="Multiply (single-precision float)"><code>++mul:rs</code></a>
1256−<a class="tooltip" href='/docs/reference/library/3b/#san-rs' title="Signed integer to @rs"><code>++san:rs</code></a>
1257−<a class="tooltip" href='/docs/reference/library/3b/#sea-rs' title="Convert from single-precision float to fn"><code>++sea:rs</code></a>
1258−<a class="tooltip" href='/docs/reference/library/3b/#sig-rs' title="Produce sign of @rs"><code>++sig:rs</code></a>
1259−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rs' title="Produce square root of single-precision float"><code>++sqt:rs</code></a>
1260−<a class="tooltip" href='/docs/reference/library/3b/#sub-rs' title="Subtract from single-precision float"><code>++sub:rs</code></a>
1261−<a class="tooltip" href='/docs/reference/library/3b/#sun-rs' title="Unsigned integer to single-precision float"><code>++sun:rs</code></a>
1262−<a class="tooltip" href='/docs/reference/library/3b/#toi-rs' title="Round single-precision float to nearest signed integer"><code>++toi:rs</code></a>
1263−
1264−<a class="tooltip" href='/docs/reference/library/3b/#rq'><code>++rq</code></a>
1265−<a class="tooltip" href='/docs/reference/library/3b/#add-rq' title="Add (quad-precision float)"><code>++add:rq</code></a>
1266−<a class="tooltip" href='/docs/reference/library/3b/#bit-rq' title="fn to quad-precision float"><code>++bit:rq</code></a>
1267−<a class="tooltip" href='/docs/reference/library/3b/#div-rq' title="Divide (quad-precision float)"><code>++div:rq</code></a>
1268−<a class="tooltip" href='/docs/reference/library/3b/#drg-rq' title="@rq to decimal float"><code>++drg:rq</code></a>
1269−<a class="tooltip" href='/docs/reference/library/3b/#equ-rq' title="Equals (quad-precision float)"><code>++equ:rq</code></a>
1270−<a class="tooltip" href='/docs/reference/library/3b/#exp-rq' title="Exponent (quad-precision float)"><code>++exp:rq</code></a>
1271−<a class="tooltip" href='/docs/reference/library/3b/#fma-rq' title="Fused multiply-add (quad-precision float)"><code>++fma:rq</code></a>
1272−<a class="tooltip" href='/docs/reference/library/3b/#grd-rq' title="Decimal float to @rq"><code>++grd:rq</code></a>
1273−<a class="tooltip" href='/docs/reference/library/3b/#gte-rq' title="Greater than / equal (quad-precision float)"><code>++gte:rq</code></a>
1274−<a class="tooltip" href='/docs/reference/library/3b/#gth-rq' title="Greater than (quad-precision float)"><code>++gth:rq</code></a>
1275−<a class="tooltip" href='/docs/reference/library/3b/#lte-rq' title="Less than / equal (quad-precision float)"><code>++lte:rq</code></a>
1276−<a class="tooltip" href='/docs/reference/library/3b/#lth-rq' title="Less than (quad-precision float)"><code>++lth:rq</code></a>
1277−<a class="tooltip" href='/docs/reference/library/3b/#ma-rq' title="Initialize ff (rq core)"><code>++ma:rq</code></a>
1278−<a class="tooltip" href='/docs/reference/library/3b/#mul-rq' title="Multiply (quad-precision float)"><code>++mul:rq</code></a>
1279−<a class="tooltip" href='/docs/reference/library/3b/#san-rq' title="Signed integer to @rq"><code>++san:rq</code></a>
1280−<a class="tooltip" href='/docs/reference/library/3b/#sea-rq' title="Convert from quad-precision float to fn"><code>++sea:rq</code></a>
1281−<a class="tooltip" href='/docs/reference/library/3b/#sig-rq' title="Produce sign of quad-precision float"><code>++sig:rq</code></a>
1282−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rq' title="Produce square root of quad-precision float"><code>++sqt:rq</code></a>
1283−<a class="tooltip" href='/docs/reference/library/3b/#sub-rq' title="Subtract from quad-precision float"><code>++sub:rq</code></a>
1284−<a class="tooltip" href='/docs/reference/library/3b/#sun-rq' title="Unsigned integer to quad-precision float"><code>++sun:rq</code></a>
1285−<a class="tooltip" href='/docs/reference/library/3b/#toi-rq' title="Round quad-precision float to nearest signed integer"><code>++toi:rq</code></a>
1286−
1287−<a class="tooltip" href='/docs/reference/library/3b/#rlyd'><code>++rlyd</code></a>
1288−<a class="tooltip" href='/docs/reference/library/3b/#rlyh'><code>++rlyh</code></a>
1289−<a class="tooltip" href='/docs/reference/library/3b/#rlyq'><code>++rlyq</code></a>
1290−<a class="tooltip" href='/docs/reference/library/3b/#rlys'><code>++rlys</code></a>
1291−<a class="tooltip" href='/docs/reference/library/3b/#ryld'><code>++ryld</code></a>
1292−<a class="tooltip" href='/docs/reference/library/3b/#rylh'><code>++rylh</code></a>
1293−<a class="tooltip" href='/docs/reference/library/3b/#rylq'><code>++rylq</code></a>
1294−<a class="tooltip" href='/docs/reference/library/3b/#ryls'><code>++ryls</code></a>
1295−
1296−### 3c: urbit time
1297−
1298−<a class="tooltip" href='/docs/reference/library/3c/#yo' title="Time constants core"><code>++yo</code></a>
1299−<a class="tooltip" href='/docs/reference/library/3c/#cet-yo' title="Days in a century"><code>++cet:yo</code></a>
1300−<a class="tooltip" href='/docs/reference/library/3c/#day-yo' title="Seconds in day"><code>++day:yo</code></a>
1301−<a class="tooltip" href='/docs/reference/library/3c/#era-yo' title="Leap-year period"><code>++era:yo</code></a>
1302−<a class="tooltip" href='/docs/reference/library/3c/#hor-yo' title="Seconds in hour"><code>++hor:yo</code></a>
1303−<a class="tooltip" href='/docs/reference/library/3c/#jes-yo' title="Maximum 64-bit timestamp"><code>++jes:yo</code></a>
1304−<a class="tooltip" href='/docs/reference/library/3c/#mit-yo' title="Seconds in minute"><code>++mit:yo</code></a>
1305−<a class="tooltip" href='/docs/reference/library/3c/#moh-yo' title="Days in month"><code>++moh:yo</code></a>
1306−<a class="tooltip" href='/docs/reference/library/3c/#moy-yo' title="Days in months of leap-year"><code>++moy:yo</code></a>
1307−<a class="tooltip" href='/docs/reference/library/3c/#qad-yo' title="Seconds in 4 years"><code>++qad:yo</code></a>
1308−<a class="tooltip" href='/docs/reference/library/3c/#yer-yo' title="Seconds in year"><code>++yer:yo</code></a>
1309−
1310−<a class="tooltip" href='/docs/reference/library/3c/#yall' title="Time since beginning of time"><code>++yall</code></a>
1311−<a class="tooltip" href='/docs/reference/library/3c/#yawn' title="Days since beginning of time"><code>++yawn</code></a>
1312−<a class="tooltip" href='/docs/reference/library/3c/#year' title="Date to @d"><code>++year</code></a>
1313−<a class="tooltip" href='/docs/reference/library/3c/#yell' title="Tarp from atomic date"><code>++yell</code></a>
1314−<a class="tooltip" href='/docs/reference/library/3c/#yelp' title="Determine if leap-week"><code>++yelp</code></a>
1315−<a class="tooltip" href='/docs/reference/library/3c/#yore' title="Date from atomic date"><code>++yore</code></a>
1316−<a class="tooltip" href='/docs/reference/library/3c/#yule' title="Daily time to time atom"><code>++yule</code></a>
1317−
1318−### 3d: SHA hash family
1319−
1320−<a class="tooltip" href='/docs/reference/library/3d/#og' title="Container arm for SHA-256 powered RNG"><code>++og</code></a>
1321−<a class="tooltip" href='/docs/reference/library/3d/#rad-og' title="Random in range"><code>++rad:og</code></a>
1322−<a class="tooltip" href='/docs/reference/library/3d/#rads-og' title="Random continuation"><code>++rads:og</code></a>
1323−<a class="tooltip" href='/docs/reference/library/3d/#raw-og' title="Random bits"><code>++raw:og</code></a>
1324−<a class="tooltip" href='/docs/reference/library/3d/#raws-og' title="Random bits continuation"><code>++raws:og</code></a>
1325−
1326−<a class="tooltip" href='/docs/reference/library/3d/#shad' title="Double SHA-256"><code>++shad</code></a>
1327−<a class="tooltip" href='/docs/reference/library/3d/#shaf' title="Half SHA-256"><code>++shaf</code></a>
1328−<a class="tooltip" href='/docs/reference/library/3d/#shal' title="SHA-512 with length"><code>++shal</code></a>
1329−<a class="tooltip" href='/docs/reference/library/3d/#sham' title="128-bit noun hash"><code>++sham</code></a>
1330−<a class="tooltip" href='/docs/reference/library/3d/#shan' title="SHA-1"><code>++shan</code></a>
1331−<a class="tooltip" href='/docs/reference/library/3d/#shas' title="Salted hash"><code>++shas</code></a>
1332−<a class="tooltip" href='/docs/reference/library/3d/#shaw' title="Hash to nbits"><code>++shaw</code></a>
1333−<a class="tooltip" href='/docs/reference/library/3d/#shax' title="SHA-256"><code>++shax</code></a>
1334−<a class="tooltip" href='/docs/reference/library/3d/#shay' title="SHA-256 with length"><code>++shay</code></a>
1335−<a class="tooltip" href='/docs/reference/library/3d/#shaz' title="SHA-512"><code>++shaz</code></a>
1336−
1337−### 3e: AES encryption
1338−
1339−<a href='/docs/reference/library/3e/'>_(removed)_</a>
1340−
1341−### 3f: scrambling
1342−
1343−<a class="tooltip" href='/docs/reference/library/3f/#ob' title="Reversible scrambling v2"><code>++ob</code></a>
1344−<a class="tooltip" href='/docs/reference/library/3f/#feen-ob' title="Conceal structure v2"><code>++feen:ob</code></a>
1345−<a class="tooltip" href='/docs/reference/library/3f/#fend-ob' title="Restore structure v2"><code>++fend:ob</code></a>
1346−<a class="tooltip" href='/docs/reference/library/3f/#fice-ob' title="Feistel-like cipher"><code>++fice:ob</code></a>
1347−<a class="tooltip" href='/docs/reference/library/3f/#raku-ob' title="Key list"><code>++raku:ob</code></a>
1348−<a class="tooltip" href='/docs/reference/library/3f/#rund-ob' title="Reverse single Feistel-like"><code>++rund:ob</code></a>
1349−<a class="tooltip" href='/docs/reference/library/3f/#rynd-ob' title="Reverse Feistel-like cipher"><code>++rynd:ob</code></a>
1350−<a class="tooltip" href='/docs/reference/library/3f/#teil-ob' title="Reverse Feistel-like cipher"><code>++teil:ob</code></a>
1351−
1352−<a class="tooltip" href='/docs/reference/library/3f/#un' title="Reversible scrambling"><code>++un</code></a>
1353−<a class="tooltip" href='/docs/reference/library/3f/#wred-un' title="Restore structure"><code>++wred:un</code></a>
1354−<a class="tooltip" href='/docs/reference/library/3f/#wren-un' title="Conceal structure"><code>++wren:un</code></a>
1355−<a class="tooltip" href='/docs/reference/library/3f/#xafo-un'><code>++xafo:un</code></a>
1356−<a class="tooltip" href='/docs/reference/library/3f/#xaro-un'><code>++xaro:un</code></a>
1357−<a class="tooltip" href='/docs/reference/library/3f/#zaft-un' title="Look up in 255 sub box"><code>++zaft:un</code></a>
1358−<a class="tooltip" href='/docs/reference/library/3f/#zart-un' title="Reverse look up in 255 sub box"><code>++zart:un</code></a>
1359−<a class="tooltip" href='/docs/reference/library/3f/#zyft-un' title="Lookup byte in 256 sub box"><code>++zyft:un</code></a>
1360−<a class="tooltip" href='/docs/reference/library/3f/#zyrt-un' title="Reverse lookup byte in 256 sub box"><code>++zyrt:un</code></a>
1361−
1362−### 3g: molds and mold builders
1363−
1364−<a class="tooltip" href='/docs/reference/library/3g/#coin' title="Noun-literal syntax cases"><code>++coin</code></a>
1365−<a class="tooltip" href='/docs/reference/library/3g/#dime' title="Aura-atom pair"><code>++dime</code></a>
1366−<a class="tooltip" href='/docs/reference/library/3g/#edge' title="Parsing location metadata"><code>++edge</code></a>
1367−<a class="tooltip" href='/docs/reference/library/3g/#hair' title="Parsing line and column"><code>++hair</code></a>
1368−<a class="tooltip" href='/docs/reference/library/3g/#like' title="Generic edge"><code>++like</code></a>
1369−<a class="tooltip" href='/docs/reference/library/3g/#nail' title="Location, remainder of parsed text"><code>++nail</code></a>
1370−<a class="tooltip" href='/docs/reference/library/3g/#path' title="Filesystem path"><code>++path</code></a>
1371−<a class="tooltip" href='/docs/reference/library/3g/#pint' title="Parsing range"><code>++pint</code></a>
1372−<a class="tooltip" href='/docs/reference/library/3g/#rule' title="Parsing rule (match this with _)"><code>++rule</code></a>
1373−<a class="tooltip" href='/docs/reference/library/3g/#spot' title="Stack trace line"><code>++spot</code></a>
1374−<a class="tooltip" href='/docs/reference/library/3g/#tone' title="Nock result (error report)"><code>++tone</code></a>
1375−<a class="tooltip" href='/docs/reference/library/3g/#toon' title="Nock result (stack trace)"><code>++toon</code></a>
1376−<a class="tooltip" href='/docs/reference/library/3g/#wonk' title="Product from edge"><code>++wonk</code></a>
1377−
1378−### 4a: exotic bases
1379−
1380−<a class="tooltip" href='/docs/reference/library/4a/#po' title="Phonetic base"><code>++po</code></a>
1381−<a class="tooltip" href='/docs/reference/library/4a/#ind-po' title="Parse suffix"><code>++ind:po</code></a>
1382−<a class="tooltip" href='/docs/reference/library/4a/#ins-po' title="Parse prefix"><code>++ins:po</code></a>
1383−<a class="tooltip" href='/docs/reference/library/4a/#tod-po' title="Fetch suffix"><code>++tod:po</code></a>
1384−<a class="tooltip" href='/docs/reference/library/4a/#tos-po' title="Fetch prefix"><code>++tos:po</code></a>
1385−
1386−### 4b: text processing
1387−
1388−<a class="tooltip" href='/docs/reference/library/4b/#at' title="(Undocumented)"><code>++at</code></a>
1389−<a class="tooltip" href='/docs/reference/library/4b/#r-at' title="(Undocumented)"><code>++r:at</code></a>
1390−<a class="tooltip" href='/docs/reference/library/4b/#rf-at' title="(Undocumented)"><code>++rf:at</code></a>
1391−<a class="tooltip" href='/docs/reference/library/4b/#rn-at' title="(Undocumented)"><code>++rn:at</code></a>
1392−<a class="tooltip" href='/docs/reference/library/4b/#rt-at' title="(Undocumented)"><code>++rt:at</code></a>
1393−<a class="tooltip" href='/docs/reference/library/4b/#rta-at' title="(Undocumented)"><code>++rta:at</code></a>
1394−<a class="tooltip" href='/docs/reference/library/4b/#rtam-at' title="(Undocumented)"><code>++rtam:at</code></a>
1395−<a class="tooltip" href='/docs/reference/library/4b/#rub-at' title="(Undocumented)"><code>++rub:at</code></a>
1396−<a class="tooltip" href='/docs/reference/library/4b/#rud-at' title="(Undocumented)"><code>++rud:at</code></a>
1397−<a class="tooltip" href='/docs/reference/library/4b/#rum-at' title="(Undocumented)"><code>++rum:at</code></a>
1398−<a class="tooltip" href='/docs/reference/library/4b/#rup-at' title="(Undocumented)"><code>++rup:at</code></a>
1399−<a class="tooltip" href='/docs/reference/library/4b/#ruv-at' title="(Undocumented)"><code>++ruv:at</code></a>
1400−<a class="tooltip" href='/docs/reference/library/4b/#rux-at' title="(Undocumented)"><code>++rux:at</code></a>
1401−
1402−<a class="tooltip" href='/docs/reference/library/4b/#cass' title="To lowercase"><code>++cass</code></a>
1403−<a class="tooltip" href='/docs/reference/library/4b/#crip' title="Tape to cord"><code>++crip</code></a>
1404−<a class="tooltip" href='/docs/reference/library/4b/#cuss' title="To uppercase"><code>++cuss</code></a>
1405−<a class="tooltip" href='/docs/reference/library/4b/#mesc' title="Escape special characters"><code>++mesc</code></a>
1406−<a class="tooltip" href='/docs/reference/library/4b/#runt' title="Prepend n times"><code>++runt</code></a>
1407−<a class="tooltip" href='/docs/reference/library/4b/#sand' title="Soft-cast by aura"><code>++sand</code></a>
1408−<a class="tooltip" href='/docs/reference/library/4b/#sane' title="Check aura validity"><code>++sane</code></a>
1409−<a class="tooltip" href='/docs/reference/library/4b/#teff' title="UTF-8 length"><code>++teff</code></a>
1410−<a class="tooltip" href='/docs/reference/library/4b/#trim' title="Tape split"><code>++trim</code></a>
1411−<a class="tooltip" href='/docs/reference/library/4b/#trip' title="Cord to tape"><code>++trip</code></a>
1412−<a class="tooltip" href='/docs/reference/library/4b/#tuba' title="UTF-8 to UTF-32 tape"><code>++tuba</code></a>
1413−<a class="tooltip" href='/docs/reference/library/4b/#tufa' title="UTF-32 to UTF-8 tape"><code>++tufa</code></a>
1414−<a class="tooltip" href='/docs/reference/library/4b/#tuft' title="UTF-32 to UTF-8 text"><code>++tuft</code></a>
1415−<a class="tooltip" href='/docs/reference/library/4b/#turf' title="UTF-8 to UTF-32 cord"><code>++turf</code></a>
1416−<a class="tooltip" href='/docs/reference/library/4b/#wack' title="Coin format encode"><code>++wack</code></a>
1417−<a class="tooltip" href='/docs/reference/library/4b/#wick' title="Coin format decode"><code>++wick</code></a>
1418−<a class="tooltip" href='/docs/reference/library/4b/#woad' title="Unescape cord"><code>++woad</code></a>
1419−<a class="tooltip" href='/docs/reference/library/4b/#wood' title="Escape cord"><code>++wood</code></a>
1420−
1421−### 4c: tank printer
1422−
1423−<a class="tooltip" href='/docs/reference/library/4c/#re' title="Pretty-printing engine (tank)"><code>++re</code></a>
1424−<a class="tooltip" href='/docs/reference/library/4c/#din-re' title="(Undocumented)"><code>++din:re</code></a>
1425−<a class="tooltip" href='/docs/reference/library/4c/#fit-re' title="Fit on one line test"><code>++fit:re</code></a>
1426−<a class="tooltip" href='/docs/reference/library/4c/#ram-re' title="Flatten tank to tape"><code>++ram:re</code></a>
1427−<a class="tooltip" href='/docs/reference/library/4c/#rig-re' title="Wrap tape in / (tank)"><code>++rig:re</code></a>
1428−<a class="tooltip" href='/docs/reference/library/4c/#wig-re' title="++win - render tape"><code>++wig:re</code></a>
1429−<a class="tooltip" href='/docs/reference/library/4c/#win-re' title="Render at indent"><code>++win:re</code></a>
1430−
1431−<a class="tooltip" href='/docs/reference/library/4c/#shep' title="(Undocumented)"><code>++shep</code></a>
1432−<a class="tooltip" href='/docs/reference/library/4c/#shop' title="(Undocumented)"><code>++shop</code></a>
1433−<a class="tooltip" href='/docs/reference/library/4c/#show' title="(Undocumented)"><code>++show</code></a>
1434−
1435−### 4d: parsing (tracing)
1436−
1437−<a class="tooltip" href='/docs/reference/library/4d/#last' title="Further trace"><code>++last</code></a>
1438−<a class="tooltip" href='/docs/reference/library/4d/#lust' title="Detect new line"><code>++lust</code></a>
1439−
1440−### 4e: parsing (combinators)
1441−
1442−<a class="tooltip" href='/docs/reference/library/4e/#bend' title="Conditional composer"><code>++bend</code></a>
1443−<a class="tooltip" href='/docs/reference/library/4e/#comp' title="Arbitrary compose"><code>++comp</code></a>
1444−<a class="tooltip" href='/docs/reference/library/4e/#fail' title="Never parse"><code>++fail</code></a>
1445−<a class="tooltip" href='/docs/reference/library/4e/#glue' title="Skip delimiter"><code>++glue</code></a>
1446−<a class="tooltip" href='/docs/reference/library/4e/#less' title="Parse unless"><code>++less</code></a>
1447−<a class="tooltip" href='/docs/reference/library/4e/#pfix' title="Discard first rule"><code>++pfix</code></a>
1448−<a class="tooltip" href='/docs/reference/library/4e/#plug' title="Parse to tuple"><code>++plug</code></a>
1449−<a class="tooltip" href='/docs/reference/library/4e/#pose' title="Parse options"><code>++pose</code></a>
1450−<a class="tooltip" href='/docs/reference/library/4e/#sfix' title="Discard second rule"><code>++sfix</code></a>
1451−<a class="tooltip" href='/docs/reference/library/4e/#simu' title="First and second"><code>++simu</code></a>
1452−
1453−### 4f: parsing (rule builders)
1454−
1455−<a class="tooltip" href='/docs/reference/library/4f/#bass' title="Parser modifier (LSB-ordered ++list as atom of ++base)"><code>++bass</code></a>
1456−<a class="tooltip" href='/docs/reference/library/4f/#boss' title="Parser modifier: LSB"><code>++boss</code></a>
1457−<a class="tooltip" href='/docs/reference/library/4f/#cold' title="Replace with constant"><code>++cold</code></a>
1458−<a class="tooltip" href='/docs/reference/library/4f/#cook' title="Apply gate"><code>++cook</code></a>
1459−<a class="tooltip" href='/docs/reference/library/4f/#easy' title="Always parse"><code>++easy</code></a>
1460−<a class="tooltip" href='/docs/reference/library/4f/#full' title="Parse to end"><code>++full</code></a>
1461−<a class="tooltip" href='/docs/reference/library/4f/#funk' title="Add to tape"><code>++funk</code></a>
1462−<a class="tooltip" href='/docs/reference/library/4f/#here' title="Place-based apply"><code>++here</code></a>
1463−<a class="tooltip" href='/docs/reference/library/4f/#ifix' title="Infix"><code>++ifix</code></a>
1464−<a class="tooltip" href='/docs/reference/library/4f/#jest' title="Match a cord"><code>++jest</code></a>
1465−<a class="tooltip" href='/docs/reference/library/4f/#just' title="Match a single character"><code>++just</code></a>
1466−<a class="tooltip" href='/docs/reference/library/4f/#knee' title="Recursive parsers"><code>++knee</code></a>
1467−<a class="tooltip" href='/docs/reference/library/4f/#mask' title="Match character"><code>++mask</code></a>
1468−<a class="tooltip" href='/docs/reference/library/4f/#more' title="Parse list with delimiter"><code>++more</code></a>
1469−<a class="tooltip" href='/docs/reference/library/4f/#most' title="Parse list of at least one match"><code>++most</code></a>
1470−<a class="tooltip" href='/docs/reference/library/4f/#next' title="Consume character"><code>++next</code></a>
1471−<a class="tooltip" href='/docs/reference/library/4f/#plus' title="List of at least one match"><code>++plus</code></a>
1472−<a class="tooltip" href='/docs/reference/library/4f/#sear' title="Conditional ++cook"><code>++sear</code></a>
1473−<a class="tooltip" href='/docs/reference/library/4f/#shim' title="Match character within range"><code>++shim</code></a>
1474−<a class="tooltip" href='/docs/reference/library/4f/#slug' title="Use gate to parse delimited list"><code>++slug</code></a>
1475−<a class="tooltip" href='/docs/reference/library/4f/#stag' title="Add label"><code>++stag</code></a>
1476−<a class="tooltip" href='/docs/reference/library/4f/#star' title="Produce list of matches"><code>++star</code></a>
1477−<a class="tooltip" href='/docs/reference/library/4f/#stet' title="Add faces to range-parser pairs in list"><code>++stet</code></a>
1478−<a class="tooltip" href='/docs/reference/library/4f/#stew' title="Switch by first"><code>++stew</code></a>
1479−<a class="tooltip" href='/docs/reference/library/4f/#stir' title="Parse repeatedly"><code>++stir</code></a>
1480−<a class="tooltip" href='/docs/reference/library/4f/#stun' title="Parse several times"><code>++stun</code></a>
1481−
1482−### 4g: parsing (outside caller)
1483−
1484−<a class="tooltip" href='/docs/reference/library/4g/#rash' title="Parse or crash"><code>++rash</code></a>
1485−<a class="tooltip" href='/docs/reference/library/4g/#rush' title="Parse or null"><code>++rush</code></a>
1486−<a class="tooltip" href='/docs/reference/library/4g/#rust' title="Parse tape or null"><code>++rust</code></a>
1487−<a class="tooltip" href='/docs/reference/library/4g/#scan' title="Parse tape or crash"><code>++scan</code></a>
1488−
1489−### 4h: parsing (ascii glyphs)
1490−
1491−<a class="tooltip" href='/docs/reference/library/4h/#ace' title="Parse space"><code>++ace</code></a>
1492−<a class="tooltip" href='/docs/reference/library/4h/#bar' title="Parse | (bar)"><code>++bar</code></a>
1493−<a class="tooltip" href='/docs/reference/library/4h/#bas' title="Parse \ (bas)"><code>++bas</code></a>
1494−<a class="tooltip" href='/docs/reference/library/4h/#buc' title="Parse $ (buc)"><code>++buc</code></a>
1495−<a class="tooltip" href='/docs/reference/library/4h/#cab' title="Parse _ (cab)"><code>++cab</code></a>
1496−<a class="tooltip" href='/docs/reference/library/4h/#cen' title="Parse % (cen)"><code>++cen</code></a>
1497−<a class="tooltip" href='/docs/reference/library/4h/#col' title="Parse : (col)"><code>++col</code></a>
1498−<a class="tooltip" href='/docs/reference/library/4h/#com' title="Parse , (comma)"><code>++com</code></a>
1499−<a class="tooltip" href='/docs/reference/library/4h/#doq' title="Parse double quote"><code>++doq</code></a>
1500−<a class="tooltip" href='/docs/reference/library/4h/#dot' title="Parse period"><code>++dot</code></a>
1501−<a class="tooltip" href='/docs/reference/library/4h/#fas' title="Parse / (fas)"><code>++fas</code></a>
1502−<a class="tooltip" href='/docs/reference/library/4h/#gal' title="Parse < (gal)"><code>++gal</code></a>
1503−<a class="tooltip" href='/docs/reference/library/4h/#gar' title="Parse > (gar)"><code>++gar</code></a>
1504−<a class="tooltip" href='/docs/reference/library/4h/#hax' title="Parse # (hax)"><code>++hax</code></a>
1505−<a class="tooltip" href='/docs/reference/library/4h/#hep' title="Parse - (hep)"><code>++hep</code></a>
1506−<a class="tooltip" href='/docs/reference/library/4h/#kel' title="Parse { (kel)"><code>++kel</code></a>
1507−<a class="tooltip" href='/docs/reference/library/4h/#ker' title="Parse } (ker)"><code>++ker</code></a>
1508−<a class="tooltip" href='/docs/reference/library/4h/#ket' title="Parse ^ (ket)"><code>++ket</code></a>
1509−<a class="tooltip" href='/docs/reference/library/4h/#lus' title="Parse + (lus)"><code>++lus</code></a>
1510−<a class="tooltip" href='/docs/reference/library/4h/#pam' title="Parse & (pam)"><code>++pam</code></a>
1511−<a class="tooltip" href='/docs/reference/library/4h/#pat' title="Parse @ (pat)"><code>++pat</code></a>
1512−<a class="tooltip" href='/docs/reference/library/4h/#pel' title="Parse ( (pel)"><code>++pel</code></a>
1513−<a class="tooltip" href='/docs/reference/library/4h/#per' title="Parse ) (per)"><code>++per</code></a>
1514−<a class="tooltip" href='/docs/reference/library/4h/#sel' title="Parse [ (sel)"><code>++sel</code></a>
1515−<a class="tooltip" href='/docs/reference/library/4h/#sem' title="Parse ; (sem)"><code>++sem</code></a>
1516−<a class="tooltip" href='/docs/reference/library/4h/#ser' title="Parse ] (ser)"><code>++ser</code></a>
1517−<a class="tooltip" href='/docs/reference/library/4h/#sig' title="Parse ~ (sig)"><code>++sig</code></a>
1518−<a class="tooltip" href='/docs/reference/library/4h/#soq' title="Parse ' (soq)"><code>++soq</code></a>
1519−<a class="tooltip" href='/docs/reference/library/4h/#tar' title="Parse * (tar)"><code>++tar</code></a>
1520−<a class="tooltip" href='/docs/reference/library/4h/#tec' title="Parse ` (tec)"><code>++tec</code></a>
1521−<a class="tooltip" href='/docs/reference/library/4h/#tis' title="Parse = (tis)"><code>++tis</code></a>
1522−<a class="tooltip" href='/docs/reference/library/4h/#wut' title="Parse ? (wut)"><code>++wut</code></a>
1523−<a class="tooltip" href='/docs/reference/library/4h/#zap' title="Parse ! (zap)"><code>++zap</code></a>
1524−
1525−### 4i: parsing (useful idioms)
1526−
1527−<a class="tooltip" href='/docs/reference/library/4i/#alf' title="Parse alphabetic characters"><code>++alf</code></a>
1528−<a class="tooltip" href='/docs/reference/library/4i/#aln' title="Parse alphanumeric characters"><code>++aln</code></a>
1529−<a class="tooltip" href='/docs/reference/library/4i/#alp' title="Parse alphanumeric characters and -"><code>++alp</code></a>
1530−<a class="tooltip" href='/docs/reference/library/4i/#bet' title="Parse hep and lus axis syntax"><code>++bet</code></a>
1531−<a class="tooltip" href='/docs/reference/library/4i/#bin' title="Binary to atom"><code>++bin</code></a>
1532−<a class="tooltip" href='/docs/reference/library/4i/#but' title="Parse binary digit"><code>++but</code></a>
1533−<a class="tooltip" href='/docs/reference/library/4i/#cit' title="Octal digit"><code>++cit</code></a>
1534−<a class="tooltip" href='/docs/reference/library/4i/#dem' title="Decimal to atom"><code>++dem</code></a>
1535−<a class="tooltip" href='/docs/reference/library/4i/#dit' title="Decimal digit"><code>++dit</code></a>
1536−<a class="tooltip" href='/docs/reference/library/4i/#dog' title="Optional gap"><code>++dog</code></a>
1537−<a class="tooltip" href='/docs/reference/library/4i/#doh' title="@p separator"><code>++doh</code></a>
1538−<a class="tooltip" href='/docs/reference/library/4i/#dun' title="-- to ~"><code>++dun</code></a>
1539−<a class="tooltip" href='/docs/reference/library/4i/#duz' title="== to ~"><code>++duz</code></a>
1540−<a class="tooltip" href='/docs/reference/library/4i/#gah' title="New line or ''"><code>++gah</code></a>
1541−<a class="tooltip" href='/docs/reference/library/4i/#gap' title="Plural whitespace"><code>++gap</code></a>
1542−<a class="tooltip" href='/docs/reference/library/4i/#gaq' title="End of line"><code>++gaq</code></a>
1543−<a class="tooltip" href='/docs/reference/library/4i/#gaw' title="Classic whitespace"><code>++gaw</code></a>
1544−<a class="tooltip" href='/docs/reference/library/4i/#gay' title="Optional gap"><code>++gay</code></a>
1545−<a class="tooltip" href='/docs/reference/library/4i/#gon' title="Parse long numbers"><code>++gon</code></a>
1546−<a class="tooltip" href='/docs/reference/library/4i/#gul' title="Axis syntax < or >"><code>++gul</code></a>
1547−<a class="tooltip" href='/docs/reference/library/4i/#hex' title="Hexadecimal to atom"><code>++hex</code></a>
1548−<a class="tooltip" href='/docs/reference/library/4i/#hig' title="Parse single uppercase letter"><code>++hig</code></a>
1549−<a class="tooltip" href='/docs/reference/library/4i/#hit' title="Parse single hexadecimal digit"><code>++hit</code></a>
1550−<a class="tooltip" href='/docs/reference/library/4i/#iny' title="Indentation block"><code>++iny</code></a>
1551−<a class="tooltip" href='/docs/reference/library/4i/#low' title="Parse lowercase letter"><code>++low</code></a>
1552−<a class="tooltip" href='/docs/reference/library/4i/#mes' title="Parse hexabyte"><code>++mes</code></a>
1553−<a class="tooltip" href='/docs/reference/library/4i/#nix' title="Parse letters and -"><code>++nix</code></a>
1554−<a class="tooltip" href='/docs/reference/library/4i/#nud' title="Parse numeric character"><code>++nud</code></a>
1555−<a class="tooltip" href='/docs/reference/library/4i/#prn' title="Parse any printable character"><code>++prn</code></a>
1556−<a class="tooltip" href='/docs/reference/library/4i/#qit' title="Parse character to cord atom"><code>++qit</code></a>
1557−<a class="tooltip" href='/docs/reference/library/4i/#qut' title="Parse cord"><code>++qut</code></a>
1558−<a class="tooltip" href='/docs/reference/library/4i/#soz' title="Parse triple single-quote"><code>++soz</code></a>
1559−<a class="tooltip" href='/docs/reference/library/4i/#sym' title="Term"><code>++sym</code></a>
1560−<a class="tooltip" href='/docs/reference/library/4i/#ven' title="Axis syntax parser"><code>++ven</code></a>
1561−<a class="tooltip" href='/docs/reference/library/4i/#vit' title="Parse base 64 digit"><code>++vit</code></a>
1562−<a class="tooltip" href='/docs/reference/library/4i/#vul' title="Comments to null"><code>++vul</code></a>
1563−
1564−### 4j: parsing (bases and base digits)
1565−
1566−<a class="tooltip" href='/docs/reference/library/4j/#ab' title="Primitive parser engine"><code>++ab</code></a>
1567−<a class="tooltip" href='/docs/reference/library/4j/#bix-ab' title="Parse hex pair"><code>++bix:ab</code></a>
1568−<a class="tooltip" href='/docs/reference/library/4j/#hif-ab' title="Parse phonetic pair"><code>++hif:ab</code></a>
1569−<a class="tooltip" href='/docs/reference/library/4j/#huf-ab' title="Parse two phonetic pairs"><code>++huf:ab</code></a>
1570−<a class="tooltip" href='/docs/reference/library/4j/#hyf-ab' title="Parse 8 phonetic bytes"><code>++hyf:ab</code></a>
1571−<a class="tooltip" href='/docs/reference/library/4j/#pev-ab' title="Parse <=5 in base 32"><code>++pev:ab</code></a>
1572−<a class="tooltip" href='/docs/reference/library/4j/#pew-ab' title="Parse <= 5 in base 64"><code>++pew:ab</code></a>
1573−<a class="tooltip" href='/docs/reference/library/4j/#piv-ab' title="Parse 5 digits in base 32"><code>++piv:ab</code></a>
1574−<a class="tooltip" href='/docs/reference/library/4j/#piw-ab' title="Parse 5 digits in base 64"><code>++piw:ab</code></a>
1575−<a class="tooltip" href='/docs/reference/library/4j/#qeb-ab' title="Parse <=4 binary digits"><code>++qeb:ab</code></a>
1576−<a class="tooltip" href='/docs/reference/library/4j/#qex-ab' title="Parse <=4 hexadecimal digits"><code>++qex:ab</code></a>
1577−<a class="tooltip" href='/docs/reference/library/4j/#qib-ab' title="Parse 4 binary digits"><code>++qib:ab</code></a>
1578−<a class="tooltip" href='/docs/reference/library/4j/#qix-ab' title="Parse 4 hexadecimal digits"><code>++qix:ab</code></a>
1579−<a class="tooltip" href='/docs/reference/library/4j/#seb-ab' title="Parse 1"><code>++seb:ab</code></a>
1580−<a class="tooltip" href='/docs/reference/library/4j/#sed-ab' title="Parse non-zero decimal digit"><code>++sed:ab</code></a>
1581−<a class="tooltip" href='/docs/reference/library/4j/#sev-ab' title="Parse non-zero base 32 digit"><code>++sev:ab</code></a>
1582−<a class="tooltip" href='/docs/reference/library/4j/#sew-ab' title="Parse non-zero base 64 digit"><code>++sew:ab</code></a>
1583−<a class="tooltip" href='/docs/reference/library/4j/#sex-ab' title="Parse nonzero hexadecimal digit"><code>++sex:ab</code></a>
1584−<a class="tooltip" href='/docs/reference/library/4j/#sib-ab' title="Parse binary digit"><code>++sib:ab</code></a>
1585−<a class="tooltip" href='/docs/reference/library/4j/#sid-ab' title="Parse decimal digit"><code>++sid:ab</code></a>
1586−<a class="tooltip" href='/docs/reference/library/4j/#siv-ab' title="Parse a base 32 digit"><code>++siv:ab</code></a>
1587−<a class="tooltip" href='/docs/reference/library/4j/#siw-ab' title="Parse a base 64 digit"><code>++siw:ab</code></a>
1588−<a class="tooltip" href='/docs/reference/library/4j/#six-ab' title="Parse a hexadecimal digit"><code>++six:ab</code></a>
1589−<a class="tooltip" href='/docs/reference/library/4j/#sov-ab' title="Parse base 32 letter"><code>++sov:ab</code></a>
1590−<a class="tooltip" href='/docs/reference/library/4j/#sow-ab' title="Parse base 64 letter/symbol"><code>++sow:ab</code></a>
1591−<a class="tooltip" href='/docs/reference/library/4j/#sox-ab' title="Parse hexadecimal letter"><code>++sox:ab</code></a>
1592−<a class="tooltip" href='/docs/reference/library/4j/#ted-ab' title="Parse decimal number with <= 3 digits"><code>++ted:ab</code></a>
1593−<a class="tooltip" href='/docs/reference/library/4j/#tid-ab' title="Parse 3 decimal digits"><code>++tid:ab</code></a>
1594−<a class="tooltip" href='/docs/reference/library/4j/#til-ab' title="Parse 3 lowercase letters"><code>++til:ab</code></a>
1595−<a class="tooltip" href='/docs/reference/library/4j/#tip-ab' title="Leading phonetic byte"><code>++tip:ab</code></a>
1596−<a class="tooltip" href='/docs/reference/library/4j/#tiq-ab' title="Trailing phonetic syllable"><code>++tiq:ab</code></a>
1597−<a class="tooltip" href='/docs/reference/library/4j/#urs-ab' title="Parse span characters"><code>++urs:ab</code></a>
1598−<a class="tooltip" href='/docs/reference/library/4j/#urt-ab' title="Parse non-_ span"><code>++urt:ab</code></a>
1599−<a class="tooltip" href='/docs/reference/library/4j/#voy-ab' title="Parse bas, soq, or bix"><code>++voy:ab</code></a>
1600−
1601−<a class="tooltip" href='/docs/reference/library/4j/#ag' title="Top-level atom parser engine"><code>++ag</code></a>
1602−<a class="tooltip" href='/docs/reference/library/4j/#ape-ag' title="Parse 0 or rule"><code>++ape:ag</code></a>
1603−<a class="tooltip" href='/docs/reference/library/4j/#bay-ag' title="Parses binary number"><code>++bay:ag</code></a>
1604−<a class="tooltip" href='/docs/reference/library/4j/#bip-ag' title="Parse IPv6"><code>++bip:ag</code></a>
1605−<a class="tooltip" href='/docs/reference/library/4j/#dem-ag' title="Parse decmal with dots"><code>++dem:ag</code></a>
1606−<a class="tooltip" href='/docs/reference/library/4j/#dim-ag' title="Parse decimal number"><code>++dim:ag</code></a>
1607−<a class="tooltip" href='/docs/reference/library/4j/#dum-ag' title="Parse decimal with leading zero"><code>++dum:ag</code></a>
1608−<a class="tooltip" href='/docs/reference/library/4j/#fed-ag' title="Parse @p"><code>++fed:ag</code></a>
1609−<a class="tooltip" href='/docs/reference/library/4j/#hex-ag' title="Parse hexadecimal number"><code>++hex:ag</code></a>
1610−<a class="tooltip" href='/docs/reference/library/4j/#lip-ag' title="Parse IPv4 address"><code>++lip:ag</code></a>
1611−<a class="tooltip" href='/docs/reference/library/4j/#viz-ag' title="Parse base 32 digit with dot separators"><code>++viz:ag</code></a>
1612−<a class="tooltip" href='/docs/reference/library/4j/#vum-ag' title="Parse base 32 string"><code>++vum:ag</code></a>
1613−<a class="tooltip" href='/docs/reference/library/4j/#wiz-ag' title="Parse base 64 number"><code>++wiz:ag</code></a>
1614−
1615−<a class="tooltip" href='/docs/reference/library/4j/#mu' title="Core used to scramble 16-bit atoms"><code>++mu</code></a>
1616−<a class="tooltip" href='/docs/reference/library/4j/#zag-mu' title="Add bottom into top"><code>++zag:mu</code></a>
1617−<a class="tooltip" href='/docs/reference/library/4j/#zig-mu' title="Subtract bottom from top"><code>++zig:mu</code></a>
1618−<a class="tooltip" href='/docs/reference/library/4j/#zug-mu' title="Concatenate into atom"><code>++zug:mu</code></a>
1619−
1620−<a class="tooltip" href='/docs/reference/library/4j/#ne' title="Digit rendering engine"><code>++ne</code></a>
1621−<a class="tooltip" href='/docs/reference/library/4j/#d-ne' title="Render decimal"><code>++d:ne</code></a>
1622−<a class="tooltip" href='/docs/reference/library/4j/#v-ne' title="Render base 32"><code>++v:ne</code></a>
1623−<a class="tooltip" href='/docs/reference/library/4j/#w-ne' title="Render base 64 digit"><code>++w:ne</code></a>
1624−<a class="tooltip" href='/docs/reference/library/4j/#x-ne' title="Render hexadecimal digit as atom of ASCII byte value"><code>++x:ne</code></a>
1625−
1626−### 4k: parsing (atom printing)
1627−
1628−<a class="tooltip" href='/docs/reference/library/4k/#co' title="Literal rendering engine"><code>++co</code></a>
1629−<a class="tooltip" href='/docs/reference/library/4k/#rear-co' title="Prepend and render atom as tape"><code>++rear:co</code></a>
1630−<a class="tooltip" href='/docs/reference/library/4k/#rend-co' title="Render coin lot as tape"><code>++rend:co</code></a>
1631−<a class="tooltip" href='/docs/reference/library/4k/#rent-co' title="Render coin lot as span"><code>++rent:co</code></a>
1632−
1633−### 4l: parsing (atom parsing)
1634−
1635−<a class="tooltip" href='/docs/reference/library/4l/#so' title="Coin parser engine"><code>++so</code></a>
1636−<a class="tooltip" href='/docs/reference/library/4l/#bisk-so' title="Parse aura-atom pair"><code>++bisk:so</code></a>
1637−<a class="tooltip" href='/docs/reference/library/4l/#crub-so' title="Parse @da, @dr, @p, @t"><code>++crub:so</code></a>
1638−<a class="tooltip" href='/docs/reference/library/4l/#nuck-so' title="Top-level coin parser"><code>++nuck:so</code></a>
1639−<a class="tooltip" href='/docs/reference/library/4l/#nusk-so' title="Parse coin literal with escapes"><code>++nusk:so</code></a>
1640−<a class="tooltip" href='/docs/reference/library/4l/#perd-so' title="Parses dime/tiple without standard prefixes"><code>++perd:so</code></a>
1641−<a class="tooltip" href='/docs/reference/library/4l/#royl-so' title="Parse dime float"><code>++royl:so</code></a>
1642−<a class="tooltip" href='/docs/reference/library/4l/#royl-cell-so' title="(Undocumented)"><code>++royl-cell:so</code></a>
1643−<a class="tooltip" href='/docs/reference/library/4l/#tash-so' title="Parse signed dime"><code>++tash:so</code></a>
1644−<a class="tooltip" href='/docs/reference/library/4l/#twid-so' title="Parse coins without ~ prefix"><code>++twid:so</code></a>
1645−<a class="tooltip" href='/docs/reference/library/4l/#zust-so' title="Parse prefixed dimes from IP, loobean, or floating point"><code>++zust:so</code></a>
1646−
1647−### 4m: parsing (formatting functions)
1648−
1649−<a class="tooltip" href='/docs/reference/library/4m/#scot' title="Render dime as cord"><code>++scot</code></a>
1650−<a class="tooltip" href='/docs/reference/library/4m/#scow' title="Render dime as tape"><code>++scow</code></a>
1651−<a class="tooltip" href='/docs/reference/library/4m/#slat' title="Curried slaw"><code>++slat</code></a>
1652−<a class="tooltip" href='/docs/reference/library/4m/#slav' title="Demand: parse cord with input aura"><code>++slav</code></a>
1653−<a class="tooltip" href='/docs/reference/library/4m/#slaw' title="Parse cord to input aura"><code>++slaw</code></a>
1654−<a class="tooltip" href='/docs/reference/library/4m/#slay' title="Parse cord to coin"><code>++slay</code></a>
1655−<a class="tooltip" href='/docs/reference/library/4m/#smyt' title="Render path as tank"><code>++smyt</code></a>
1656−<a class="tooltip" href='/docs/reference/library/4m/#spat' title="Render path as cord"><code>++spat</code></a>
1657−<a class="tooltip" href='/docs/reference/library/4m/#spud' title="Render path as tape"><code>++spud</code></a>
1658−<a class="tooltip" href='/docs/reference/library/4m/#stab' title="Parse cord to path"><code>++stab</code></a>
1659−
1660−### 4n: parsing (virtualization)
1661−
1662−<a class="tooltip" href='/docs/reference/library/4n/#mack' title="Nock subject to unit"><code>++mack</code></a>
1663−<a class="tooltip" href='/docs/reference/library/4n/#mink' title="Mock (virtual Nock) interpreter"><code>++mink</code></a>
1664−<a class="tooltip" href='/docs/reference/library/4n/#mock' title="Compute formula on subject with hint"><code>++mock</code></a>
1665−<a class="tooltip" href='/docs/reference/library/4n/#mong' title="Slam gate with sample"><code>++mong</code></a>
1666−<a class="tooltip" href='/docs/reference/library/4n/#mook' title="Intelligently render crash annotation"><code>++mook</code></a>
1667−<a class="tooltip" href='/docs/reference/library/4n/#mule' title="Typed virtual"><code>++mule</code></a>
1668−<a class="tooltip" href='/docs/reference/library/4n/#mute' title="Untyped virtual"><code>++mute</code></a>
1669−
1670−### 4o: parsing (molds)
1671−
1672−<a class="tooltip" href='/docs/reference/library/4o/#abel' title="Compiler alias"><code>++abel</code></a>
1673−<a class="tooltip" href='/docs/reference/library/4o/#aura' title="'Type' of atom"><code>++aura</code></a>
1674−<a class="tooltip" href='/docs/reference/library/4o/#axis' title="Nock axis"><code>++axis</code></a>
1675−<a class="tooltip" href='/docs/reference/library/4o/#base' title="Base type"><code>++base</code></a>
1676−<a class="tooltip" href='/docs/reference/library/4o/#bean' title="Boolean"><code>++bean</code></a>
1677−<a class="tooltip" href='/docs/reference/library/4o/#beer' title="Tape builder"><code>++beer</code></a>
1678−<a class="tooltip" href='/docs/reference/library/4o/#beet' title="XML interpolation cases"><code>++beet</code></a>
1679−<a class="tooltip" href='/docs/reference/library/4o/#chum' title="Jet hint information"><code>++chum</code></a>
1680−<a class="tooltip" href='/docs/reference/library/4o/#coil' title="Tuple of core information"><code>++coil</code></a>
1681−<a class="tooltip" href='/docs/reference/library/4o/#foot' title="Cases of arms by variance model"><code>++foot</code></a>
1682−<a class="tooltip" href='/docs/reference/library/4o/#limb' title="Reference into subject by name/axis"><code>++limb</code></a>
1683−<a class="tooltip" href='/docs/reference/library/4o/#line' title="(Undocumented)"><code>++line</code></a>
1684−<a class="tooltip" href='/docs/reference/library/4o/#metl' title="(Undocumented)"><code>++metl</code></a>
1685−<a class="tooltip" href='/docs/reference/library/4o/#nock' title="Virtual machine (see Nock)"><code>++nock</code></a>
1686−<a class="tooltip" href='/docs/reference/library/4o/#noun' title="(Undocumented)"><code>++noun</code></a>
1687−<a class="tooltip" href='/docs/reference/library/4o/#null' title="(Undocumented)"><code>++null</code></a>
1688−<a class="tooltip" href='/docs/reference/library/4o/#port' title="(Undocumented)"><code>++port</code></a>
1689−<a class="tooltip" href='/docs/reference/library/4o/#span' title="ASCII atom"><code>++span</code></a>
1690−<a class="tooltip" href='/docs/reference/library/4o/#tiki' title="(Undocumented)"><code>++tiki</code></a>
1691−<a class="tooltip" href='/docs/reference/library/4o/#toga' title="Tree of faces"><code>++toga</code></a>
1692−<a class="tooltip" href='/docs/reference/library/4o/#tone'><code>++tone</code></a>
1693−<a class="tooltip" href='/docs/reference/library/4o/#tuna' title="XML template tree"><code>++tuna</code></a>
1694−<a class="tooltip" href='/docs/reference/library/4o/#tusk' title="List of expressions"><code>++tusk</code></a>
1695−<a class="tooltip" href='/docs/reference/library/4o/#tyke' title="List of 'maybe' hoons"><code>++tyke</code></a>
1696−<a class="tooltip" href='/docs/reference/library/4o/#typo' title="Pointer for ++type"><code>++typo</code></a>
1697−<a class="tooltip" href='/docs/reference/library/4o/#tyre' title="List, term hoon"><code>++tyre</code></a>
1698−<a class="tooltip" href='/docs/reference/library/4o/#vase' title="Typed data"><code>++vase</code></a>
1699−<a class="tooltip" href='/docs/reference/library/4o/#vise' title="Convert during reboot"><code>++vise</code></a>
1700−<a class="tooltip" href='/docs/reference/library/4o/#wing' title="Address in subject"><code>++wing</code></a>
1701−
1702−### 5a: compiler utilities
1703−
1704−<a class="tooltip" href='/docs/reference/library/5a/'>_(To be documented)_</a>
1705−
1706−### 5b: macro expansion
1707−
1708−<a class="tooltip" href='/docs/reference/library/5b/'>_(To be documented)_</a>
1709−
1710−### 5c: compiler backend and prettyprinter
1711−
1712−<a class="tooltip" href='/docs/reference/library/5c/'>_(To be documented)_</a>
1713−
1714−### 5d: parser
1715−
1716−<a class="tooltip" href='/docs/reference/library/5d/'>_(To be documented)_</a>
1717−
1718−### 5e: caching compiler
1719−
1720−<a class="tooltip" href='/docs/reference/library/5e/'>_(To be documented)_</a>
1721−
1722−### 5f: molds and mold builders
1723−
1724−<a class="tooltip" href='/docs/reference/library/5f/#mane'><code>++mane</code></a>
1725−<a class="tooltip" href='/docs/reference/library/5f/#manx'><code>++manx</code></a>
1726−<a class="tooltip" href='/docs/reference/library/5f/#marl'><code>++marl</code></a>
1727−<a class="tooltip" href='/docs/reference/library/5f/#mars'><code>++mars</code></a>
1728−<a class="tooltip" href='/docs/reference/library/5f/#mart'><code>++mart</code></a>
1729−<a class="tooltip" href='/docs/reference/library/5f/#marx'><code>++marx</code></a>
1730−<a class="tooltip" href='/docs/reference/library/5f/#pass'><code>++pass</code></a>
1731−<a class="tooltip" href='/docs/reference/library/5f/#ring'><code>++ring</code></a>
1732−<a class="tooltip" href='/docs/reference/library/5f/#time'><code>++time</code></a>
1733−
1734−### 5g: profiling support
1735−
1736−<a class="tooltip" href='/docs/reference/library/5g/'>_(To be documented)_</a>
reference/library/table-of-contents.mddeleted−1733
@@ -1,1733 +0,0 @@
1−+++
2−title = "Table of Contents"
3−weight = 0
4−sort_by = "weight"
5−template = "doc.html"
6−+++
7−
8−Documentation for the standard library.
9−
10−Can be navigated [alphabetically](#alphabetical) or [by section](#by-section).
11−
12−## Alphabetical
13−
14−### a
15−
16−<a class="tooltip" href='/docs/reference/library/4j/#ab' title="Primitive parser engine"><code>++ab</code></a>
17−<a class="tooltip" href='/docs/reference/library/3b/#abs-fl' title="Absolute value"><code>++abs:fl</code></a>
18−<a class="tooltip" href='/docs/reference/library/3a/#abs-si' title="Absolute value (signed integer)"><code>++abs:si</code></a>
19−<a class="tooltip" href='/docs/reference/library/4o/#abel' title="Compiler alias"><code>++abel</code></a>
20−<a class="tooltip" href='/docs/reference/library/4h/#ace' title="Parse space"><code>++ace</code></a>
21−<a class="tooltip" href='/docs/reference/library/1a/#add' title="Add"><code>++add</code></a>
22−<a class="tooltip" href='/docs/reference/library/3b/#add-ff' title="Add (floating point)"><code>++add:ff</code></a>
23−<a class="tooltip" href='/docs/reference/library/3b/#add-fl' title="Add (with exact/rounded flag)"><code>++add:fl</code></a>
24−<a class="tooltip" href='/docs/reference/library/2j/#add-ja' title="Prepend to list"><code>+-add:ja</code></a>
25−<a class="tooltip" href='/docs/reference/library/3b/#add-rd' title="Add (double-precision float)"><code>++add:rd</code></a>
26−<a class="tooltip" href='/docs/reference/library/3b/#add-rh' title="Add (half-precision float)"><code>++add:rh</code></a>
27−<a class="tooltip" href='/docs/reference/library/3b/#add-rs' title="Add (single-precision float)"><code>++add:rs</code></a>
28−<a class="tooltip" href='/docs/reference/library/3b/#add-rq' title="Add (quad-precision float)"><code>++add:rq</code></a>
29−<a class="tooltip" href='/docs/reference/library/4j/#ag' title="Top-level atom parser engine"><code>++ag</code></a>
30−<a class="tooltip" href='/docs/reference/library/4i/#alf' title="Parse alphabetic characters"><code>++alf</code></a>
31−<a class="tooltip" href='/docs/reference/library/2i/#all-by' title="Logical AND (map and wet gate)"><code>+-all:by</code></a>
32−<a class="tooltip" href='/docs/reference/library/2h/#all-in' title="Logical AND (set and wet gate)"><code>+-all:in</code></a>
33−<a class="tooltip" href='/docs/reference/library/4i/#aln' title="Parse alphanumeric characters"><code>++aln</code></a>
34−<a class="tooltip" href='/docs/reference/library/4i/#alp' title="Parse alphanumeric characters and -"><code>++alp</code></a>
35−<a class="tooltip" href='/docs/reference/library/2i/#any-by' title="Logical OR (map and wet gate)"><code>+-any:by</code></a>
36−<a class="tooltip" href='/docs/reference/library/2h/#any-in' title="Logical OR (set and gate)"><code>+-any:in</code></a>
37−<a class="tooltip" href='/docs/reference/library/2f/#aor' title="Alphabetical order"><code>++aor</code></a>
38−<a class="tooltip" href='/docs/reference/library/4j/#ape-ag' title="Parse 0 or rule"><code>++ape:ag</code></a>
39−<a class="tooltip" href='/docs/reference/library/2i/#apt-by' title="Check correctness (map)"><code>+-apt:by</code></a>
40−<a class="tooltip" href='/docs/reference/library/2h/#apt-in' title="Check correctness (set)"><code>+-apt:in</code></a>
41−<a class="tooltip" href='/docs/reference/library/4b/#at' title="(Undocumented)"><code>++at</code></a>
42−<a class="tooltip" href='/docs/reference/library/4o/#aura' title="'Type' of atom"><code>++aura</code></a>
43−<a class="tooltip" href='/docs/reference/library/4o/#axis' title="Nock axis"><code>++axis</code></a>
44−
45−### b
46−
47−<a class="tooltip" href='/docs/reference/library/2k/#bal-to' title="Balance queue"><code>+-bal:to</code></a>
48−<a class="tooltip" href='/docs/reference/library/4h/#bar' title="Parse | (bar)"><code>++bar</code></a>
49−<a class="tooltip" href='/docs/reference/library/4h/#bas' title="Parse \ (bas)"><code>++bas</code></a>
50−<a class="tooltip" href='/docs/reference/library/4o/#base' title="Base type"><code>++base</code></a>
51−<a class="tooltip" href='/docs/reference/library/4f/#bass' title="Parser modifier (LSB-ordered ++list as atom of ++base)"><code>++bass</code></a>
52−<a class="tooltip" href='/docs/reference/library/4j/#bay-ag' title="Parses binary number"><code>++bay:ag</code></a>
53−<a class="tooltip" href='/docs/reference/library/4o/#bean' title="Boolean"><code>++bean</code></a>
54−<a class="tooltip" href='/docs/reference/library/4o/#beer' title="Tape builder"><code>++beer</code></a>
55−<a class="tooltip" href='/docs/reference/library/4o/#beet' title="XML interpolation cases"><code>++beet</code></a>
56−<a class="tooltip" href='/docs/reference/library/4e/#bend' title="Conditional composer"><code>++bend</code></a>
57−<a class="tooltip" href='/docs/reference/library/4i/#bet' title="Parse hep and lus axis syntax"><code>++bet</code></a>
58−<a class="tooltip" href='/docs/reference/library/2c/#bex' title="Binary exponent"><code>++bex</code></a>
59−<a class="tooltip" href='/docs/reference/library/3b/#bif-ff' title="Converts from fn to @r"><code>++bif:ff</code></a>
60−<a class="tooltip" href='/docs/reference/library/2i/#bif-by' title="Bifurcate map"><code>+-bif:by</code></a>
61−<a class="tooltip" href='/docs/reference/library/2h/#bif-in' title="Bifurcate set"><code>+-bif:in</code></a>
62−<a class="tooltip" href='/docs/reference/library/2a/#biff' title="Unit as argument"><code>++biff</code></a>
63−<a class="tooltip" href='/docs/reference/library/4i/#bin' title="Binary to atom"><code>++bin</code></a>
64−<a class="tooltip" href='/docs/reference/library/2a/#bind' title="Non-unit function to unit, producing unit"><code>++bind</code></a>
65−<a class="tooltip" href='/docs/reference/library/4j/#bip-ag' title="Parse IPv6"><code>++bip:ag</code></a>
66−<a class="tooltip" href='/docs/reference/library/3b/#bit-ff' title="fn to @r with rounding"><code>++bit:ff</code></a>
67−<a class="tooltip" href='/docs/reference/library/3b/#bit-rd' title="fn to double-precision binary float"><code>++bit:rd</code></a>
68−<a class="tooltip" href='/docs/reference/library/3b/#bit-rh' title="fn to half-precision float"><code>++bit:rh</code></a>
69−<a class="tooltip" href='/docs/reference/library/3b/#bit-rs' title="fn to single-precision float"><code>++bit:rs</code></a>
70−<a class="tooltip" href='/docs/reference/library/3b/#bit-rq' title="fn to quad-precision float"><code>++bit:rq</code></a>
71−<a class="tooltip" href='/docs/reference/library/4j/#bix-ab' title="Parse hex pair"><code>++bix:ab</code></a>
72−<a class="tooltip" href='/docs/reference/library/4l/#bisk-so' title="Parse aura-atom pair"><code>++bisk:so</code></a>
73−<a class="tooltip" href='/docs/reference/library/1c/#bloq' title="Blocksize"><code>++bloq</code></a>
74−<a class="tooltip" href='/docs/reference/library/2a/#bond' title="Replace null"><code>++bond</code></a>
75−<a class="tooltip" href='/docs/reference/library/4f/#boss' title="Parser modifier: LSB"><code>++boss</code></a>
76−<a class="tooltip" href='/docs/reference/library/2a/#both' title="Group unit values into pair"><code>++both</code></a>
77−<a class="tooltip" href='/docs/reference/library/4h/#buc' title="Parse $ (buc)"><code>++buc</code></a>
78−<a class="tooltip" href='/docs/reference/library/4i/#but' title="Parse binary digit"><code>++but</code></a>
79−
80−### c
81−
82−<a class="tooltip" href='/docs/reference/library/4h/#cab' title="Parse _ (cab)"><code>++cab</code></a>
83−<a class="tooltip" href='/docs/reference/library/2c/#can' title="Assemble"><code>++can</code></a>
84−<a class="tooltip" href='/docs/reference/library/1b/#cap' title="Tree head"><code>++cap</code></a>
85−<a class="tooltip" href='/docs/reference/library/4b/#cass' title="To lowercase"><code>++cass</code></a>
86−<a class="tooltip" href='/docs/reference/library/2c/#cat' title="Concatenate"><code>++cat</code></a>
87−<a class="tooltip" href='/docs/reference/library/4h/#cen' title="Parse % (cen)"><code>++cen</code></a>
88−<a class="tooltip" href='/docs/reference/library/3c/#cet-yo' title="Days in a century"><code>++cet:yo</code></a>
89−<a class="tooltip" href='/docs/reference/library/2q/#char' title="Character"><code>++char</code></a>
90−<a class="tooltip" href='/docs/reference/library/4o/#chum' title="Jet hint information"><code>++chum</code></a>
91−<a class="tooltip" href='/docs/reference/library/4i/#cit' title="Octal digit"><code>++cit</code></a>
92−<a class="tooltip" href='/docs/reference/library/2a/#clap' title="Apply function to two units"><code>++clap</code></a>
93−<a class="tooltip" href='/docs/reference/library/3a/#cmp-si' title="Compare (signed integer)"><code>++cmp:si</code></a>
94−<a class="tooltip" href='/docs/reference/library/4k/#co' title="Literal rendering engine"><code>++co</code></a>
95−<a class="tooltip" href='/docs/reference/library/4o/#coil' title="Tuple of core information"><code>++coil</code></a>
96−<a class="tooltip" href='/docs/reference/library/3g/#coin' title="Noun-literal syntax cases"><code>++coin</code></a>
97−<a class="tooltip" href='/docs/reference/library/4h/#col' title="Parse : (col)"><code>++col</code></a>
98−<a class="tooltip" href='/docs/reference/library/4f/#cold' title="Replace with constant"><code>++cold</code></a>
99−<a class="tooltip" href='/docs/reference/library/4h/#com' title="Parse , (com)"><code>++com</code></a>
100−<a class="tooltip" href='/docs/reference/library/4e/#comp' title="Arbitrary compose"><code>++comp</code></a>
101−<a class="tooltip" href='/docs/reference/library/2d/#con' title="Binary OR"><code>++con</code></a>
102−<a class="tooltip" href='/docs/reference/library/4f/#cook' title="Apply gate"><code>++cook</code></a>
103−<a class="tooltip" href='/docs/reference/library/2q/#cord' title="UTF-8 text"><code>++cord</code></a>
104−<a class="tooltip" href='/docs/reference/library/2n/#cork' title="Compose forward"><code>++cork</code></a>
105−<a class="tooltip" href='/docs/reference/library/2n/#corl' title="Compose backward"><code>++corl</code></a>
106−<a class="tooltip" href='/docs/reference/library/4b/#crip' title="Tape to cord"><code>++crip</code></a>
107−<a class="tooltip" href='/docs/reference/library/4l/#crub-so' title="Parse @da, @dr, @p, @t"><code>++crub:so</code></a>
108−<a class="tooltip" href='/docs/reference/library/2p/#cue' title="Unpack atom to noun"><code>++cue</code></a>
109−<a class="tooltip" href='/docs/reference/library/2n/#curr' title="Right-curry a gate"><code>++curr</code></a>
110−<a class="tooltip" href='/docs/reference/library/2n/#cury' title="Curry left a gate"><code>++cury</code></a>
111−<a class="tooltip" href='/docs/reference/library/4b/#cuss' title="To uppercase"><code>++cuss</code></a>
112−<a class="tooltip" href='/docs/reference/library/2c/#cut' title="Slice"><code>++cut</code></a>
113−
114−### d
115−
116−<a class="tooltip" href='/docs/reference/library/4j/#d-ne' title="Render decimal"><code>++d:ne</code></a>
117−<a class="tooltip" href='/docs/reference/library/2q/#date' title="Point in time"><code>++date</code></a>
118−<a class="tooltip" href='/docs/reference/library/3c/#day-yo' title="Seconds in day"><code>++day:yo</code></a>
119−<a class="tooltip" href='/docs/reference/library/1a/#dec' title="Decrement"><code>++dec</code></a>
120−<a class="tooltip" href='/docs/reference/library/2i/#def-by' title="Difference (map)"><code>+-def:by</code></a>
121−<a class="tooltip" href='/docs/reference/library/2i/#del-by' title="Delete (map)"><code>+-del:by</code></a>
122−<a class="tooltip" href='/docs/reference/library/2h/#del-in' title="Delete (set)"><code>+-del:in</code></a>
123−<a class="tooltip" href='/docs/reference/library/2j/#del-ju' title="Delete (jug)"><code>+-del:ju</code></a>
124−<a class="tooltip" href='/docs/reference/library/4i/#dem' title="Decimal to atom"><code>++dem</code></a>
125−<a class="tooltip" href='/docs/reference/library/4j/#dem-ag' title="Parse decmal with dots"><code>++dem:ag</code></a>
126−<a class="tooltip" href='/docs/reference/library/3b/#den-fl' title="Denormalizes (floating point)"><code>++den:fl</code></a>
127−<a class="tooltip" href='/docs/reference/library/2i/#dep-by' title="Difference as patch (map)"><code>+-dep:by</code></a>
128−<a class="tooltip" href='/docs/reference/library/2k/#dep-to' title="Maximum depth (queue)"><code>+-dep:to</code></a>
129−<a class="tooltip" href='/docs/reference/library/2c/#dif-fe' title="Difference between atoms (modular basis)"><code>++dif:fe</code></a>
130−<a class="tooltip" href='/docs/reference/library/3a/#dif-fo' title='Subtraction (modular base)'><code>++dif:fo</code></a>
131−<a class="tooltip" href='/docs/reference/library/2h/#dif-in' title='Difference (set)'><code>+-dif:in</code></a>
132−<a class="tooltip" href='/docs/reference/library/3a/#dif-si' title="Subtraction (signed integer)"><code>++dif:si</code></a>
133−<a class="tooltip" href='/docs/reference/library/2i/#dig-by' title="Address of key (map)"><code>+-dig:by</code></a>
134−<a class="tooltip" href='/docs/reference/library/2h/#dig-in' title="Address of a in set"><code>+-dig:in</code></a>
135−<a class="tooltip" href='/docs/reference/library/4j/#dim-ag' title="Parse decimal number"><code>++dim:ag</code></a>
136−<a class="tooltip" href='/docs/reference/library/3g/#dime' title="Aura-atom pair"><code>++dime</code></a>
137−<a class="tooltip" href='/docs/reference/library/4c/#din-re' title="(Undocumented)"><code>++din:re</code></a>
138−<a class="tooltip" href='/docs/reference/library/2d/#dis' title="Binary AND (atoms)"><code>++dis</code></a>
139−<a class="tooltip" href='/docs/reference/library/4i/#dit' title="Decimal digit"><code>++dit</code></a>
140−<a class="tooltip" href='/docs/reference/library/1a/#div' title="Divide"><code>++div</code></a>
141−<a class="tooltip" href='/docs/reference/library/3b/#div-ff' title="Divide (IEEE float)"><code>++div:ff</code></a>
142−<a class="tooltip" href='/docs/reference/library/3b/#div-fl' title="Divide (signed and unsigned integer cell)"><code>++div:fl</code></a>
143−<a class="tooltip" href='/docs/reference/library/3b/#div-rd' title="Double precision float"><code>++div:rd</code></a>
144−<a class="tooltip" href='/docs/reference/library/3b/#div-rh' title="Divide (half-precision float)"><code>++div:rh</code></a>
145−<a class="tooltip" href='/docs/reference/library/3b/#div-rs' title="Divide (single-precision float)"><code>++div:rs</code></a>
146−<a class="tooltip" href='/docs/reference/library/3b/#div-rq' title="Divide (quad-precision float)"><code>++div:rq</code></a>
147−<a class="tooltip" href='/docs/reference/library/4i/#dog' title="Optional gap"><code>++dog</code></a>
148−<a class="tooltip" href='/docs/reference/library/4i/#doh' title="@p separator"><code>++doh</code></a>
149−<a class="tooltip" href='/docs/reference/library/4h/#doq' title="Parse double quote"><code>++doq</code></a>
150−<a class="tooltip" href='/docs/reference/library/2f/#dor' title="Numeric order"><code>++dor</code></a>
151−<a class="tooltip" href='/docs/reference/library/4h/#dot' title="Parse period"><code>++dot</code></a>
152−<a class="tooltip" href='/docs/reference/library/3b/#drg-ff' title="@r to decimal float"><code>++drg:ff</code></a>
153−<a class="tooltip" href='/docs/reference/library/3b/#drg-fl' title="Get printable decimal (signed and unsigned integer cell)"><code>++drg:fl</code></a>
154−<a class="tooltip" href='/docs/reference/library/3b/#drg-rd' title="@rd to decimal float"><code>++drg:rd</code></a>
155−<a class="tooltip" href='/docs/reference/library/3b/#drg-rh' title="@rh to decimal float"><code>++drg:rh</code></a>
156−<a class="tooltip" href='/docs/reference/library/3b/#drg-rs' title="@rs to decimal float"><code>++drg:rs</code></a>
157−<a class="tooltip" href='/docs/reference/library/3b/#drg-rq' title="@rq to decimal float"><code>++drg:rq</code></a>
158−<a class="tooltip" href='/docs/reference/library/2a/#drop' title="Unit to list"><code>++drop</code></a>
159−<a class="tooltip" href='/docs/reference/library/3a/#dul-si' title="Modulus (signed integer)"><code>++dul:si</code></a>
160−<a class="tooltip" href='/docs/reference/library/4j/#dum-ag' title="Parse decimal with leading zero"><code>++dum:ag</code></a>
161−<a class="tooltip" href='/docs/reference/library/4i/#dun' title="-- to ~"><code>++dun</code></a>
162−<a class="tooltip" href='/docs/reference/library/4i/#duz' title="== to ~"><code>++duz</code></a>
163−<a class="tooltip" href='/docs/reference/library/1a/#dvr' title="Divide (with remainder)"><code>++dvr</code></a>
164−
165−### e
166−
167−<a class="tooltip" href='/docs/reference/library/3b/#ead-fl' title="Exact add"><code>++ead:fl</code></a>
168−<a class="tooltip" href='/docs/reference/library/1c/#each' title="Mold of fork between two types"><code>++each</code></a>
169−<a class="tooltip" href='/docs/reference/library/4f/#easy' title="Always parse"><code>++easy</code></a>
170−<a class="tooltip" href='/docs/reference/library/3g/#edge' title="Parsing location metadata"><code>++edge</code></a>
171−<a class="tooltip" href='/docs/reference/library/3a/#egcd' title="Extended Euclidean algorithm"><code>++egcd</code></a>
172−<a class="tooltip" href='/docs/reference/library/3b/#emn-fl' title="Minimum exponent"><code>++emn:fl</code></a>
173−<a class="tooltip" href='/docs/reference/library/3b/#emu-fl' title="Exact multiply"><code>++emu:fl</code></a>
174−<a class="tooltip" href='/docs/reference/library/3b/#emx-fl' title="Maximum exponent"><code>++emx:fl</code></a>
175−<a class="tooltip" href='/docs/reference/library/2c/#end' title="Tail"><code>++end</code></a>
176−<a class="tooltip" href='/docs/reference/library/3b/#equ-ff' title="Equals (IEEE float)"><code>++equ:ff</code></a>
177−<a class="tooltip" href='/docs/reference/library/3b/#equ-fl' title="Equals (signed and unsigned integer cell)"><code>++equ:fl</code></a>
178−<a class="tooltip" href='/docs/reference/library/3b/#equ-rd' title="Equals (double-precision float)"><code>++equ:rd</code></a>
179−<a class="tooltip" href='/docs/reference/library/3b/#equ-rh' title="Equals (half-precision float)"><code>++equ:rh</code></a>
180−<a class="tooltip" href='/docs/reference/library/3b/#equ-rs' title="Equals (single-precision float)"><code>++equ:rs</code></a>
181−<a class="tooltip" href='/docs/reference/library/3b/#equ-rq' title="Equals (quad-precision float)"><code>++equ:rq</code></a>
182−<a class="tooltip" href='/docs/reference/library/3c/#era-yo' title="Leap-year period"><code>++era:yo</code></a>
183−<a class="tooltip" href='/docs/reference/library/3b/#exp-ff' title="Get exponent (IEEE float)"><code>++exp:ff</code></a>
184−<a class="tooltip" href='/docs/reference/library/3a/#exp-fo' title="Exponent (modular base)"><code>++exp:fo</code></a>
185−<a class="tooltip" href='/docs/reference/library/3b/#exp-rd' title="Exponent (@rd)"><code>++exp:rd</code></a>
186−<a class="tooltip" href='/docs/reference/library/3b/#exp-rh' title="Exponent (half-precision float)"><code>++exp:rh</code></a>
187−<a class="tooltip" href='/docs/reference/library/3b/#exp-rs' title="Exponent (@rs)"><code>++exp:rs</code></a>
188−<a class="tooltip" href='/docs/reference/library/3b/#exp-rq' title="Exponent (quad-precision float)"><code>++exp:rq</code></a>
189−
190−### f
191−
192−<a class="tooltip" href='/docs/reference/library/4e/#fail' title="Never parse"><code>++fail</code></a>
193−<a class="tooltip" href='/docs/reference/library/2a/#fall' title="Give unit a default value"><code>++fall</code></a>
194−<a class="tooltip" href='/docs/reference/library/2b/#fand' title="All indices in list"><code>++fand</code></a>
195−<a class="tooltip" href='/docs/reference/library/4h/#fas' title="Parse / (fas)"><code>++fas</code></a>
196−<a class="tooltip" href='/docs/reference/library/2c/#fe' title="Modulo bloq"><code>++fe</code></a>
197−<a class="tooltip" href='/docs/reference/library/4j/#fed-ag' title="Parse @p"><code>++fed:ag</code></a>
198−<a class="tooltip" href='/docs/reference/library/3f/#feen-ob' title="Conceal structure v2"><code>++feen:ob</code></a>
199−<a class="tooltip" href='/docs/reference/library/3f/#fend-ob' title="Restore structure v2"><code>++fend:ob</code></a>
200−<a class="tooltip" href='/docs/reference/library/3f/#fice-ob' title="Feistel-like cipher"><code>++fice:ob</code></a>
201−<a class="tooltip" href='/docs/reference/library/2c/#fil' title="Fill bloqstream"><code>++fil</code></a>
202−<a class="tooltip" href='/docs/reference/library/2b/#find' title="First index in list"><code>++find</code></a>
203−<a class="tooltip" href='/docs/reference/library/4c/#fit-re' title="Fit on one line test"><code>++fit:re</code></a>
204−<a class="tooltip" href='/docs/reference/library/3b/#fli-fl' title="Flip sign"><code>++fli:fl</code></a>
205−<a class="tooltip" href='/docs/reference/library/2b/#flop' title="Reverse list"><code>++flop</code></a>
206−<a class="tooltip" href='/docs/reference/library/3b/#fma-ff' title="Fused multiply-add (IEEE float)"><code>++fma:ff</code></a>
207−<a class="tooltip" href='/docs/reference/library/3b/#fma-fl' title="Fused multiply-add"><code>++fma:fl</code></a>
208−<a class="tooltip" href='/docs/reference/library/3b/#fma-rd' title="Fused multiply-add (@rd)"><code>++fma:rd</code></a>
209−<a class="tooltip" href='/docs/reference/library/3b/#fma-rh' title="Fused multiply-add (half-precision float)"><code>++fma:rh</code></a>
210−<a class="tooltip" href='/docs/reference/library/3b/#fma-rs' title="Fused multiply-add (single-precision float)"><code>++fma:rs</code></a>
211−<a class="tooltip" href='/docs/reference/library/3b/#fma-rq' title="Fused multiply-add (quad-precision float)"><code>++fma:rq</code></a>
212−<a class="tooltip" href='/docs/reference/library/2e/#fnv' title="FNV scrambler"><code>++fnv</code></a>
213−<a class="tooltip" href='/docs/reference/library/3a/#fo' title="Modulo prime"><code>++fo</code></a>
214−<a class="tooltip" href='/docs/reference/library/4o/#foot' title="Cases of arms by variance model"><code>++foot</code></a>
215−<a class="tooltip" href='/docs/reference/library/3b/#fos-rh' title="@rs to @rh"><code>++fos:rh</code></a>
216−<a class="tooltip" href='/docs/reference/library/3a/#fra-fo' title="Divide (modular base)"><code>++fra:fo</code></a>
217−<a class="tooltip" href='/docs/reference/library/3a/#fra-si' title="Divide (signed integer)"><code>++fra:si</code></a>
218−<a class="tooltip" href='/docs/reference/library/4f/#full' title="Parse to end"><code>++full</code></a>
219−<a class="tooltip" href='/docs/reference/library/4f/#funk' title="Add to tape"><code>++funk</code></a>
220−
221−### g
222−
223−<a class="tooltip" href='/docs/reference/library/4i/#gah' title="New line or ''"><code>++gah</code></a>
224−<a class="tooltip" href='/docs/reference/library/4h/#gal' title="Parse < (gal)"><code>++gal</code></a>
225−<a class="tooltip" href='/docs/reference/library/4i/#gap' title="Plural whitespace"><code>++gap</code></a>
226−<a class="tooltip" href='/docs/reference/library/4i/#gaq' title="End of line"><code>++gaq</code></a>
227−<a class="tooltip" href='/docs/reference/library/4h/#gar' title="Parse > (gar)"><code>++gar</code></a>
228−<a class="tooltip" href='/docs/reference/library/2i/#gas-by' title="Concatenate (map)"><code>+-gas:by</code></a>
229−<a class="tooltip" href='/docs/reference/library/2h/#gas-in' title="Concatenate (set)"><code>+-gas:in</code></a>
230−<a class="tooltip" href='/docs/reference/library/2k/#gas-to' title="Push list into queue"><code>+-gas:to</code></a>
231−<a class="tooltip" href='/docs/reference/library/1c/#gate' title="Function"><code>++gate</code></a>
232−<a class="tooltip" href='/docs/reference/library/4i/#gaw' title="Classic whitespace"><code>++gaw</code></a>
233−<a class="tooltip" href='/docs/reference/library/4i/#gay' title="Optional gap"><code>++gay</code></a>
234−<a class="tooltip" href='/docs/reference/library/2i/#get-by' title="Grab unit value"><code>+-get:by</code></a>
235−<a class="tooltip" href='/docs/reference/library/2j/#get-ja' title="Grab value by key"><code>+-get:ja</code></a>
236−<a class="tooltip" href='/docs/reference/library/2j/#get-ju' title="Retrieve set"><code>+-get:ju</code></a>
237−<a class="tooltip" href='/docs/reference/library/2k/#get-to' title="Head-tail pair"><code>+-get:to</code></a>
238−<a class="tooltip" href='/docs/reference/library/4e/#glue' title="Skip delimiter"><code>++glue</code></a>
239−<a class="tooltip" href='/docs/reference/library/4i/#gon' title="Parse long numbers"><code>++gon</code></a>
240−<a class="tooltip" href='/docs/reference/library/2f/#gor' title="Hash order"><code>++gor</code></a>
241−<a class="tooltip" href='/docs/reference/library/2i/#got-by' title="Assert for value (map)"><code>+-got:by</code></a>
242−<a class="tooltip" href='/docs/reference/library/3b/#grd-ff' title="Decimal float to @r"><code>++grd:ff</code></a>
243−<a class="tooltip" href='/docs/reference/library/3b/#grd-fl' title="Decimal to float"><code>++grd:fl</code></a>
244−<a class="tooltip" href='/docs/reference/library/3b/#grd-rd' title="Decimal float to @rd"><code>++grd:rd</code></a>
245−<a class="tooltip" href='/docs/reference/library/3b/#grd-rh' title="Decimal float to @rh"><code>++grd:rh</code></a>
246−<a class="tooltip" href='/docs/reference/library/3b/#grd-rs' title="Decimal float to @rs"><code>++grd:rs</code></a>
247−<a class="tooltip" href='/docs/reference/library/3b/#grd-rq' title="Decimal float to @rq"><code>++grd:rq</code></a>
248−<a class="tooltip" href='/docs/reference/library/1a/#gte' title="Greater than / equal"><code>++gte</code></a>
249−<a class="tooltip" href='/docs/reference/library/3b/#gte-ff' title="Greater than / equal (IEEE float)"><code>++gte:ff</code></a>
250−<a class="tooltip" href='/docs/reference/library/3b/#gte-fl' title="Greater than / equal (producing flag)"><code>++gte:fl</code></a>
251−<a class="tooltip" href='/docs/reference/library/3b/#gte-rd' title="Greater than / equal (double-precision float)"><code>++gte:rd</code></a>
252−<a class="tooltip" href='/docs/reference/library/3b/#gte-rh' title="Greater than / equal (half-precision float)"><code>++gte:rh</code></a>
253−<a class="tooltip" href='/docs/reference/library/3b/#gte-rs' title="Greater than / equal (single-precision float)"><code>++gte:rs</code></a>
254−<a class="tooltip" href='/docs/reference/library/3b/#gte-rq' title="Greater than / equal (quad-precision float)"><code>++gte:rq</code></a>
255−<a class="tooltip" href='/docs/reference/library/1a/#gth' title="Greater than"><code>++gth</code></a>
256−<a class="tooltip" href='/docs/reference/library/3b/#gth-ff' title="Greater than (IEEE float)"><code>++gth:ff</code></a>
257−<a class="tooltip" href='/docs/reference/library/3b/#gth-fl' title="Greater than (producing flag)"><code>++gth:fl</code></a>
258−<a class="tooltip" href='/docs/reference/library/3b/#gth-rd' title="Greater than (double-precision float)"><code>++gth:rd</code></a>
259−<a class="tooltip" href='/docs/reference/library/3b/#gth-rh' title="Greater than (half-precision float)"><code>++gth:rh</code></a>
260−<a class="tooltip" href='/docs/reference/library/3b/#gth-rs' title="Greater than (single-precision float)"><code>++gth:rs</code></a>
261−<a class="tooltip" href='/docs/reference/library/3b/#gth-rq' title="Greater than (quad-precision float)"><code>++gth:rq</code></a>
262−<a class="tooltip" href='/docs/reference/library/4i/#gul' title="Axis syntax < or >"><code>++gul</code></a>
263−<a class="tooltip" href='/docs/reference/library/2b/#gulf' title="List from range"><code>++gulf</code></a>
264−
265−### h
266−
267−<a class="tooltip" href='/docs/reference/library/3g/#hair' title="Parsing line and column"><code>++hair</code></a>
268−<a class="tooltip" href='/docs/reference/library/2n/#hard' title="Force remold"><code>++hard</code></a>
269−<a class="tooltip" href='/docs/reference/library/2i/#has-by' title="Key existence check (map)"><code>+-has:by</code></a>
270−<a class="tooltip" href='/docs/reference/library/2h/#has-in' title="Key existence check (set)"><code>+-has:in</code></a>
271−<a class="tooltip" href='/docs/reference/library/2j/#has-ju' title="Check contents (jug)"><code>+-has:ju</code></a>
272−<a class="tooltip" href='/docs/reference/library/4h/#hax' title="Parse # (hax)"><code>++hax</code></a>
273−<a class="tooltip" href='/docs/reference/library/2n/#head' title="Get head of cell"><code>++head</code></a>
274−<a class="tooltip" href='/docs/reference/library/4f/#here' title="Place-based apply"><code>++here</code></a>
275−<a class="tooltip" href='/docs/reference/library/4h/#hep' title="Parse - (hep)"><code>++hep</code></a>
276−<a class="tooltip" href='/docs/reference/library/4i/#hex' title="Hexadecimal to atom"><code>++hex</code></a>
277−<a class="tooltip" href='/docs/reference/library/4j/#hex-ag' title="Parse hexadecimal number"><code>++hex:ag</code></a>
278−<a class="tooltip" href='/docs/reference/library/4j/#hif-ab' title="Parse phonetic pair"><code>++hif:ab</code></a>
279−<a class="tooltip" href='/docs/reference/library/4i/#hig' title="Parse single uppercase letter"><code>++hig</code></a>
280−<a class="tooltip" href='/docs/reference/library/4i/#hit' title="Parse single hexadecimal digit"><code>++hit</code></a>
281−<a class="tooltip" href='/docs/reference/library/2b/#homo' title="Homogenize list"><code>++homo</code></a>
282−<a class="tooltip" href='/docs/reference/library/2f/#hor' title="Horizontal hash order"><code>++hor</code></a>
283−<a class="tooltip" href='/docs/reference/library/3c/#hor-yo' title="Seconds in hour"><code>++hor:yo</code></a>
284−<a class="tooltip" href='/docs/reference/library/4j/#huf-ab' title="Parse two phonetic pairs"><code>++huf:ab</code></a>
285−<a class="tooltip" href='/docs/reference/library/4j/#hyf-ab' title="Parse 8 phonetic bytes"><code>++hyf:ab</code></a>
286−
287−### i
288−
289−<a class="tooltip" href='/docs/reference/library/3b/#ibl-fl' title="Integer binary logarithm"><code>++ibl:fl</code></a>
290−<a class="tooltip" href='/docs/reference/library/4f/#ifix' title="Infix"><code>++ifix</code></a>
291−<a class="tooltip" href='/docs/reference/library/4a/#ind-po' title="Parse suffix"><code>++ind:po</code></a>
292−<a class="tooltip" href='/docs/reference/library/4a/#ins-po' title="Parse prefix"><code>++ins:po</code></a>
293−<a class="tooltip" href='/docs/reference/library/2i/#int-by' title="Intersection (map)"><code>+-int:by</code></a>
294−<a class="tooltip" href='/docs/reference/library/2h/#int-in' title="Intersection (set)"><code>+-int:in</code></a>
295−<a class="tooltip" href='/docs/reference/library/2c/#inv-fe' title="Inverse order of modular field"><code>++inv:fe</code></a>
296−<a class="tooltip" href='/docs/reference/library/3b/#inv-fl' title="Inverse"><code>++inv:fl</code></a>
297−<a class="tooltip" href='/docs/reference/library/3a/#inv-fo' title="Inverse (signed modulus)"><code>++inv:fo</code></a>
298−<a class="tooltip" href='/docs/reference/library/4i/#iny' title="Indentation block"><code>++iny</code></a>
299−
300−### j
301−
302−<a class="tooltip" href='/docs/reference/library/2j/#ja' title="Jar engine"><code>++ja</code></a>
303−<a class="tooltip" href='/docs/reference/library/2p/#jam' title="Pack noun to atom"><code>++jam</code></a>
304−<a class="tooltip" href='/docs/reference/library/2o/#jar' title="Mold generator (jar)"><code>++jar</code></a>
305−<a class="tooltip" href='/docs/reference/library/3c/#jes-yo' title="Maximum 64-bit timestamp"><code>++jes:yo</code></a>
306−<a class="tooltip" href='/docs/reference/library/4f/#jest' title="Match a cord"><code>++jest</code></a>
307−<a class="tooltip" href='/docs/reference/library/2b/#join' title="Add separator between list elements"><code>++join</code></a>
308−<a class="tooltip" href='/docs/reference/library/2j/#ju' title="Jug operations"><code>++ju</code></a>
309−<a class="tooltip" href='/docs/reference/library/2o/#jug' title="Mold generator (jug)"><code>++jug</code></a>
310−<a class="tooltip" href='/docs/reference/library/4f/#just' title="Match a single character"><code>++just</code></a>
311−
312−### k
313−
314−<a class="tooltip" href='/docs/reference/library/4h/#kel' title="Parse { (kel)"><code>++kel</code></a>
315−<a class="tooltip" href='/docs/reference/library/4h/#ker' title="Parse } (ker)"><code>++ker</code></a>
316−<a class="tooltip" href='/docs/reference/library/4h/#ket' title="Parse ^ (ket)"><code>++ket</code></a>
317−<a class="tooltip" href='/docs/reference/library/2i/#key-by' title="Set of keys"><code>++key:by</code></a>
318−<a class="tooltip" href='/docs/reference/library/4f/#knee' title="Recursive parsers"><code>++knee</code></a>
319−<a class="tooltip" href='/docs/reference/library/2q/#knot' title="Atom type of ASCII characters"><code>++knot</code></a>
320−
321−### l
322−
323−<a class="tooltip" href='/docs/reference/library/4d/#last' title="Further trace"><code>++last</code></a>
324−<a class="tooltip" href='/docs/reference/library/2m/#le-nl' title="Construct list from null-terminated noun"><code>++le:nl</code></a>
325−<a class="tooltip" href='/docs/reference/library/2b/#lent' title="List length"><code>++lent</code></a>
326−<a class="tooltip" href='/docs/reference/library/2b/#levy' title="Logical AND on list"><code>++levy</code></a>
327−<a class="tooltip" href='/docs/reference/library/3b/#lfe-fl' title="Maximum"><code>++lfe:fl</code></a>
328−<a class="tooltip" href='/docs/reference/library/3b/#lfn-fl' title="Largest normal float"><code>++lfn:fl</code></a>
329−<a class="tooltip" href='/docs/reference/library/2b/#lien' title="Logical OR on list"><code>++lien</code></a>
330−<a class="tooltip" href='/docs/reference/library/2a/#lift' title="Curried bind"><code>++lift</code></a>
331−<a class="tooltip" href='/docs/reference/library/3g/#like' title="Generic edge"><code>++like</code></a>
332−<a class="tooltip" href='/docs/reference/library/4o/#limb' title="Reference into subject by name/axis"><code>++limb</code></a>
333−<a class="tooltip" href='/docs/reference/library/2b/#limo' title="Construct list from null-terminated tuple"><code>++limo</code></a>
334−<a class="tooltip" href='/docs/reference/library/4o/#line' title="(Undocumented)"><code>++line</code></a>
335−<a class="tooltip" href='/docs/reference/library/4j/#lip-ag' title="Parse IPv4 address"><code>++lip:ag</code></a>
336−<a class="tooltip" href='/docs/reference/library/1c/#list' title="Mold constructor (list)"><code>++list</code></a>
337−<a class="tooltip" href='/docs/reference/library/1c/#lone' title="Mold generator (face on mold)"><code>++lone</code></a>
338−<a class="tooltip" href='/docs/reference/library/2f/#lor' title="Leg order"><code>++lor</code></a>
339−<a class="tooltip" href='/docs/reference/library/4i/#low' title="Parse lowercase letter"><code>++low</code></a>
340−<a class="tooltip" href='/docs/reference/library/2c/#lsh' title="Left-shift"><code>++lsh</code></a>
341−<a class="tooltip" href='/docs/reference/library/1a/#lte' title="Less than / equal (atom)"><code>++lte</code></a>
342−<a class="tooltip" href='/docs/reference/library/3b/#lte-ff' title="Less than / equal (IEEE float)"><code>++lte:ff</code></a>
343−<a class="tooltip" href='/docs/reference/library/3b/#lte-fl' title="Less than / equal (producing flag)"><code>++lte:fl</code></a>
344−<a class="tooltip" href='/docs/reference/library/3b/#lte-rd' title="Less than / equal (double-precision float)"><code>++lte:rd</code></a>
345−<a class="tooltip" href='/docs/reference/library/3b/#lte-rh' title="Less than / equal (half-precision float)"><code>++lte:rh</code></a>
346−<a class="tooltip" href='/docs/reference/library/3b/#lte-rs' title="Less than / equal (single-precision float)"><code>++lte:rs</code></a>
347−<a class="tooltip" href='/docs/reference/library/3b/#lte-rq' title="Less than / equal (quad-precision float)"><code>++lte:rq</code></a>
348−<a class="tooltip" href='/docs/reference/library/1a/#lth' title="Less than (atom)"><code>++lth</code></a>
349−<a class="tooltip" href='/docs/reference/library/3b/#lth-ff' title="Less than (IEEE float)"><code>++lth:ff</code></a>
350−<a class="tooltip" href='/docs/reference/library/3b/#lth-fl' title="Less than (signed and unsigned integer cell)"><code>++lth:fl</code></a>
351−<a class="tooltip" href='/docs/reference/library/3b/#lth-rd' title="Less than (double-precision float)"><code>++lth:rd</code></a>
352−<a class="tooltip" href='/docs/reference/library/3b/#lth-rh' title="Less than (half-precision float)"><code>++lth:rh</code></a>
353−<a class="tooltip" href='/docs/reference/library/3b/#lth-rs' title="Less than (single-precision float)"><code>++lth:rs</code></a>
354−<a class="tooltip" href='/docs/reference/library/3b/#lth-rq' title="Less than (quad-precision float)"><code>++lth:rq</code></a>
355−<a class="tooltip" href='/docs/reference/library/3b/#lug-fl' title="Central rounding mechanism"><code>++lug:fl</code></a>
356−<a class="tooltip" href='/docs/reference/library/4h/#lus' title="Parse + (lus)"><code>++lus</code></a>
357−<a class="tooltip" href='/docs/reference/library/4d/#lust' title="Detect new line"><code>++lust</code></a>
358−<a class="tooltip" href='/docs/reference/library/4e/#less' title="Parse unless"><code>++less</code></a>
359−<a class="tooltip" href='/docs/reference/library/2m/#ly' title="List from raw noun"><code>++ly</code></a>
360−
361−### m
362−
363−<a class="tooltip" href='/docs/reference/library/3b/#ma-rd' title="Initialize ff (rd core)"><code>++ma:rd</code></a>
364−<a class="tooltip" href='/docs/reference/library/3b/#ma-rh' title="Initialize ff (rh core)"><code>++ma:rh</code></a>
365−<a class="tooltip" href='/docs/reference/library/3b/#ma-rs' title="Initialize ff (rs core)"><code>++ma:rs</code></a>
366−<a class="tooltip" href='/docs/reference/library/3b/#ma-rq' title="Initialize ff (rq core)"><code>++ma:rq</code></a>
367−<a class="tooltip" href='/docs/reference/library/4n/#mack' title="Nock subject to unit"><code>++mack</code></a>
368−<a class="tooltip" href='/docs/reference/library/2l/#malt' title="Map from list"><code>++malt</code></a>
369−<a class="tooltip" href='/docs/reference/library/2o/#map' title="Mold generator (map)"><code>++map</code></a>
370−<a class="tooltip" href='/docs/reference/library/2i/#mar-by' title="Assert and add (map)"><code>+-mar:by</code></a>
371−<a class="tooltip" href='/docs/reference/library/1b/#mas' title="Address within head/tail"><code>++mas</code></a>
372−<a class="tooltip" href='/docs/reference/library/4f/#mask' title="Match character"><code>++mask</code></a>
373−<a class="tooltip" href='/docs/reference/library/2p/#mat' title="Length-encode"><code>++mat</code></a>
374−<a class="tooltip" href='/docs/reference/library/2a/#mate' title="Choose"><code>++mate</code></a>
375−<a class="tooltip" href='/docs/reference/library/1a/#max' title="Maximum"><code>++max</code></a>
376−<a class="tooltip" href='/docs/reference/library/3b/#me-ff' title="Minimum exponent of ff"><code>++me:ff</code></a>
377−<a class="tooltip" href='/docs/reference/library/2n/#mean' title="Crash and printf"><code>++mean</code></a>
378−<a class="tooltip" href='/docs/reference/library/4i/#mes' title="Parse hexabyte"><code>++mes</code></a>
379−<a class="tooltip" href='/docs/reference/library/4b/#mesc' title="Escape special characters"><code>++mesc</code></a>
380−<a class="tooltip" href='/docs/reference/library/2c/#met' title="Measure"><code>++met</code></a>
381−<a class="tooltip" href='/docs/reference/library/4o/#metl' title="(Undocumented)"><code>++metl</code></a>
382−<a class="tooltip" href='/docs/reference/library/1a/#min' title="Minimum (atom)"><code>++min</code></a>
383−<a class="tooltip" href='/docs/reference/library/4n/#mink' title="Mock (virtual Nock) interpreter"><code>++mink</code></a>
384−<a class="tooltip" href='/docs/reference/library/3c/#mit-yo' title="Seconds in minute"><code>++mit:yo</code></a>
385−<a class="tooltip" href='/docs/reference/library/2d/#mix' title="Binary XOR (atom)"><code>++mix</code></a>
386−<a class="tooltip" href='/docs/reference/library/4n/#mock' title="Compute formula on subject with hint"><code>++mock</code></a>
387−<a class="tooltip" href='/docs/reference/library/1a/#mod' title="Modulus (atom)"><code>++mod</code></a>
388−<a class="tooltip" href='/docs/reference/library/3c/#moh-yo' title="Days in month"><code>++moh:yo</code></a>
389−<a class="tooltip" href='/docs/reference/library/2l/#molt' title="Map from pair list"><code>++molt</code></a>
390−<a class="tooltip" href='/docs/reference/library/4n/#mong' title="Slam gate with sample"><code>++mong</code></a>
391−<a class="tooltip" href='/docs/reference/library/4n/#mook' title="Intelligently render crash annotation"><code>++mook</code></a>
392−<a class="tooltip" href='/docs/reference/library/4f/#more' title="Parse list with delimiter"><code>++more</code></a>
393−<a class="tooltip" href='/docs/reference/library/4f/#most' title="Parse list of at least one match"><code>++most</code></a>
394−<a class="tooltip" href='/docs/reference/library/3c/#moy-yo' title="Days in months of leap-year"><code>++moy:yo</code></a>
395−<a class="tooltip" href='/docs/reference/library/4j/#mu' title="Core used to scramble 16-bit atoms"><code>++mu</code></a>
396−<a class="tooltip" href='/docs/reference/library/2e/#mug' title="FNV-1a scrambler"><code>++mug</code></a>
397−<a class="tooltip" href='/docs/reference/library/2e/#muk' title="Standard MurmurHash3"><code>++muk</code></a>
398−<a class="tooltip" href='/docs/reference/library/1a/#mul' title="Multiply (atom)"><code>++mul</code></a>
399−<a class="tooltip" href='/docs/reference/library/3b/#mul-ff' title="Multiply (IEEE float)"><code>++mul:ff</code></a>
400−<a class="tooltip" href='/docs/reference/library/3b/#mul-fl' title="Multiply (signed and unsigned integer cell)"><code>++mul:fl</code></a>
401−<a class="tooltip" href='/docs/reference/library/3b/#mul-rd' title="Multiply (double-precision float)"><code>++mul:rd</code></a>
402−<a class="tooltip" href='/docs/reference/library/3b/#mul-rh' title="Multiply (quad-precision float)"><code>++mul:rh</code></a>
403−<a class="tooltip" href='/docs/reference/library/3b/#mul-rs' title="Multiply (single-precision float)"><code>++mul:rs</code></a>
404−<a class="tooltip" href='/docs/reference/library/3b/#mul-rq' title="Multiply (quad-precision float)"><code>++mul:rq</code></a>
405−<a class="tooltip" href='/docs/reference/library/4n/#mule' title="Typed virtual"><code>++mule</code></a>
406−<a class="tooltip" href='/docs/reference/library/4n/#mute' title="Untyped virtual"><code>++mute</code></a>
407−<a class="tooltip" href='/docs/reference/library/2e/#mum' title="31-bit MurmurHash3 scrambler"><code>++mum</code></a>
408−<a class="tooltip" href='/docs/reference/library/2b/#murn' title="Maybe transform"><code>++murn</code></a>
409−<a class="tooltip" href='/docs/reference/library/2m/#my' title="Map from raw noun"><code>++my</code></a>
410−<a class="tooltip" href='/docs/reference/library/2m/#my-nl' title="Construct map from null-terminated noun"><code>++my:nl</code></a>
411−
412−### n
413−
414−<a class="tooltip" href='/docs/reference/library/3g/#nail' title="Location, remainder of parsed text"><code>++nail</code></a>
415−<a class="tooltip" href='/docs/reference/library/2k/#nap-to' title="Remove head of queue"><code>+-nap:to</code></a>
416−<a class="tooltip" href='/docs/reference/library/4j/#ne' title="Digit rendering engine"><code>++ne</code></a>
417−<a class="tooltip" href='/docs/reference/library/3b/#ned-fl' title="Require float"><code>++ned:fl</code></a>
418−<a class="tooltip" href='/docs/reference/library/2a/#need' title="Unwrap unit"><code>++need</code></a>
419−<a class="tooltip" href='/docs/reference/library/2c/#net-fe' title="Flip endianness"><code>++net:fe</code></a>
420−<a class="tooltip" href='/docs/reference/library/3a/#new-si' title="Atom to @s"><code>++new:si</code></a>
421−<a class="tooltip" href='/docs/reference/library/4f/#next' title="Consume character"><code>++next</code></a>
422−<a class="tooltip" href='/docs/reference/library/2k/#nip-to' title="Remove root of queue"><code>+-nip:to</code></a>
423−<a class="tooltip" href='/docs/reference/library/4i/#nix' title="Parse letters and -"><code>++nix</code></a>
424−<a class="tooltip" href='/docs/reference/library/2m/#nl' title="Noun to container operations"><code>++nl</code></a>
425−<a class="tooltip" href='/docs/reference/library/4o/#nock' title="Virtual machine (see Nock)"><code>++nock</code></a>
426−<a class="tooltip" href='/docs/reference/library/2d/#not' title="Binary NOT (atom)"><code>++not</code></a>
427−<a class="tooltip" href='/docs/reference/library/4o/#noun' title="(Undocumented)"><code>++noun</code></a>
428−<a class="tooltip" href='/docs/reference/library/4l/#nuck-so' title="Top-level coin parser"><code>++nuck:so</code></a>
429−<a class="tooltip" href='/docs/reference/library/4i/#nud' title="Parse numeric character"><code>++nud</code></a>
430−<a class="tooltip" href='/docs/reference/library/4o/#null' title="(Undocumented)"><code>++null</code></a>
431−<a class="tooltip" href='/docs/reference/library/4l/#nusk-so' title="Parse coin literal with escapes"><code>++nusk:so</code></a>
432−
433−### o
434−
435−<a class="tooltip" href='/docs/reference/library/3f/#ob' title="Reversible scrambling v2"><code>++ob</code></a>
436−<a class="tooltip" href='/docs/reference/library/3d/#og' title="Container arm for SHA-256 powered RNG"><code>++og</code></a>
437−<a class="tooltip" href='/docs/reference/library/3a/#old-si' title="Sign and absolute value"><code>++old:si</code></a>
438−<a class="tooltip" href='/docs/reference/library/2b/#oust' title="Remove from list"><code>++oust</code></a>
439−<a class="tooltip" href='/docs/reference/library/2c/#out-fe' title="Maximum integer value"><code>++out:fe</code></a>
440−
441−### p
442−
443−<a class="tooltip" href='/docs/reference/library/3b/#pa-ff' title="Initialize fl from ff core"><code>++pa:ff</code></a>
444−<a class="tooltip" href='/docs/reference/library/1c/#pair' title="Mold of pair of types"><code>++pair</code></a>
445−<a class="tooltip" href='/docs/reference/library/4h/#pam' title="Parse & (pam)"><code>++pam</code></a>
446−<a class="tooltip" href='/docs/reference/library/4h/#pat' title="Parse @ (pat)"><code>++pat</code></a>
447−<a class="tooltip" href='/docs/reference/library/3g/#path' title="Filesystem path"><code>++path</code></a>
448−<a class="tooltip" href='/docs/reference/library/1b/#peg' title="Address within address"><code>++peg</code></a>
449−<a class="tooltip" href='/docs/reference/library/4h/#pel' title="Parse ( (pel)"><code>++pel</code></a>
450−<a class="tooltip" href='/docs/reference/library/4h/#per' title="Parse ) (per)"><code>++per</code></a>
451−<a class="tooltip" href='/docs/reference/library/4l/#perd-so' title="Parses dime/tiple without standard prefixes"><code>++perd:so</code></a>
452−<a class="tooltip" href='/docs/reference/library/4j/#pev-ab' title="Parse <=5 in base 32"><code>++pev:ab</code></a>
453−<a class="tooltip" href='/docs/reference/library/4j/#pew-ab' title="Parse <= 5 in base 64"><code>++pew:ab</code></a>
454−<a class="tooltip" href='/docs/reference/library/4e/#pfix' title="Discard first rule"><code>++pfix</code></a>
455−<a class="tooltip" href='/docs/reference/library/3g/#pint' title="Parsing range"><code>++pint</code></a>
456−<a class="tooltip" href='/docs/reference/library/4j/#piv-ab' title="Parse 5 digits in base 32"><code>++piv:ab</code></a>
457−<a class="tooltip" href='/docs/reference/library/4j/#piw-ab' title="Parse 5 digits in base 64"><code>++piw:ab</code></a>
458−<a class="tooltip" href='/docs/reference/library/4e/#plug' title="Parse to tuple"><code>++plug</code></a>
459−<a class="tooltip" href='/docs/reference/library/4f/#plus' title="List of at least one match"><code>++plus</code></a>
460−<a class="tooltip" href='/docs/reference/library/4a/#po' title="Phonetic base"><code>++po</code></a>
461−<a class="tooltip" href='/docs/reference/library/1c/#pole' title="Mold generator of faceless list"><code>++pole</code></a>
462−<a class="tooltip" href='/docs/reference/library/4o/#port' title="(Undocumented)"><code>++port</code></a>
463−<a class="tooltip" href='/docs/reference/library/4e/#pose' title="Parse options"><code>++pose</code></a>
464−<a class="tooltip" href='/docs/reference/library/2g/#pow' title="Computes a to the power of b"><code>++pow</code></a>
465−<a class="tooltip" href='/docs/reference/library/3b/#prc-fl' title="Force precision of 2 or greater (floating point)"><code>++prc:fl</code></a>
466−<a class="tooltip" href='/docs/reference/library/4i/#prn' title="Parse any printable character"><code>++prn</code></a>
467−<a class="tooltip" href='/docs/reference/library/3a/#pro-fo' title="Multiplies b and c modulo a"><code>++pro:fo</code></a>
468−<a class="tooltip" href='/docs/reference/library/3a/#pro-si' title="Multiply to signed integer"><code>++pro:si</code></a>
469−<a class="tooltip" href='/docs/reference/library/2i/#put-by' title="Add key-value pair (map)"><code>+-put:by</code></a>
470−<a class="tooltip" href='/docs/reference/library/2h/#put-in' title="Put b in a (set)"><code>+-put:in</code></a>
471−<a class="tooltip" href='/docs/reference/library/2j/#put-ju' title="Add key-set pair (jar)"><code>+-put:ju</code></a>
472−<a class="tooltip" href='/docs/reference/library/2k/#put-to' title="Insert into queue"><code>+-put:to</code></a>
473−
474−### q
475−
476−<a class="tooltip" href='/docs/reference/library/3c/#qad-yo' title="Seconds in 4 years"><code>++qad:yo</code></a>
477−<a class="tooltip" href='/docs/reference/library/4j/#qeb-ab' title="Parse <=4 binary digits"><code>++qeb:ab</code></a>
478−<a class="tooltip" href='/docs/reference/library/2o/#qeu' title="Mold generator (queue)"><code>++qeu</code></a>
479−<a class="tooltip" href='/docs/reference/library/4j/#qex-ab' title="Parse <=4 hexadecimal digits"><code>++qex:ab</code></a>
480−<a class="tooltip" href='/docs/reference/library/4j/#qib-ab' title="Parse 4 binary digits"><code>++qib:ab</code></a>
481−<a class="tooltip" href='/docs/reference/library/4i/#qit' title="Parse character to cord atom"><code>++qit</code></a>
482−<a class="tooltip" href='/docs/reference/library/4j/#qix-ab' title="Parse 4 hexadecimal digits"><code>++qix:ab</code></a>
483−<a class="tooltip" href='/docs/reference/library/1c/#quip' title="Mold generator (tuple of list and type)"><code>++quip</code></a>
484−<a class="tooltip" href='/docs/reference/library/4i/#qut' title="Parse cord"><code>++qut</code></a>
485−
486−### r
487−
488−<a class="tooltip" href='/docs/reference/library/4b/#r-at' title="(Undocumented)"><code>++r:at</code></a>
489−<a class="tooltip" href='/docs/reference/library/3d/#rad-og' title="Random in range"><code>++rad:og</code></a>
490−<a class="tooltip" href='/docs/reference/library/3d/#rads-og' title="Random continuation"><code>++rads:og</code></a>
491−<a class="tooltip" href='/docs/reference/library/3f/#raku-ob' title="Key list"><code>++raku:ob</code></a>
492−<a class="tooltip" href='/docs/reference/library/4c/#ram-re' title="Flatten tank to tape"><code>++ram:re</code></a>
493−<a class="tooltip" href='/docs/reference/library/2c/#rap' title="Assemble non-zero"><code>++rap</code></a>
494−<a class="tooltip" href='/docs/reference/library/4g/#rash' title="Parse or crash"><code>++rash</code></a>
495−<a class="tooltip" href='/docs/reference/library/3b/#rau-fl' title="Various roundings (floating point)"><code>++rau:fl</code></a>
496−<a class="tooltip" href='/docs/reference/library/3d/#raw-og' title="Random bits"><code>++raw:og</code></a>
497−<a class="tooltip" href='/docs/reference/library/3d/#raws-og' title="Random bits continuation"><code>++raws:og</code></a>
498−<a class="tooltip" href='/docs/reference/library/4c/#re' title="Pretty-printing engine (tank)"><code>++re</code></a>
499−<a class="tooltip" href='/docs/reference/library/4k/#rear-co' title="Prepend and render atom as tape"><code>++rear:co</code></a>
500−<a class="tooltip" href='/docs/reference/library/2b/#reap' title="Replicate (list)"><code>++reap</code></a>
501−<a class="tooltip" href='/docs/reference/library/2b/#reel' title="Right fold (list)"><code>++reel</code></a>
502−<a class="tooltip" href='/docs/reference/library/3a/#rem-si' title="Remainder (signed integer)"><code>++rem:si</code></a>
503−<a class="tooltip" href='/docs/reference/library/4k/#rend-co' title="Render coin lot as tape"><code>++rend:co</code></a>
504−<a class="tooltip" href='/docs/reference/library/4k/#rent-co' title="Render coin lot as span"><code>++rent:co</code></a>
505−<a class="tooltip" href='/docs/reference/library/2c/#rep' title="Assemble single"><code>++rep</code></a>
506−<a class="tooltip" href='/docs/reference/library/2i/#rep-by' title="Replace by product (map)"><code>+-rep:by</code></a>
507−<a class="tooltip" href='/docs/reference/library/2h/#rep-in' title="Accumulate elements (set)"><code>+-rep:in</code></a>
508−<a class="tooltip" href='/docs/reference/library/4b/#rf-at' title="(Undocumented)"><code>++rf:at</code></a>
509−<a class="tooltip" href='/docs/reference/library/2i/#rib-by' title="Replace values with accumulator (map)"><code>+-rib:by</code></a>
510−<a class="tooltip" href='/docs/reference/library/4c/#rig-re' title="Wrap tape in / (tank)"><code>++rig:re</code></a>
511−<a class="tooltip" href='/docs/reference/library/2c/#rip' title="Disassemble"><code>++rip</code></a>
512−<a class="tooltip" href='/docs/reference/library/4b/#rn-at' title="(Undocumented)"><code>++rn:at</code></a>
513−<a class="tooltip" href='/docs/reference/library/2c/#rol-fe' title="Roll left"><code>++rol:fe</code></a>
514−<a class="tooltip" href='/docs/reference/library/2b/#roll' title="Left fold (list)"><code>++roll</code></a>
515−<code>++rood</code>
516−<a class="tooltip" href='/docs/reference/library/2c/#ror-fe' title="Roll right"><code>++ror:fe</code></a>
517−<a class="tooltip" href='/docs/reference/library/3b/#rou-fl' title="Round to nearest float with 113-bit significand"><code>++rou:fl</code></a>
518−<a class="tooltip" href='/docs/reference/library/4l/#royl-so' title="Parse dime float"><code>++royl:so</code></a>
519−<a class="tooltip" href='/docs/reference/library/4l/#royl-cell-so' title="(Undocumented)"><code>++royl-cell:so</code></a>
520−<a class="tooltip" href='/docs/reference/library/2c/#rsh' title="Right-shift"><code>++rsh</code></a>
521−<a class="tooltip" href='/docs/reference/library/4b/#rt-at' title="(Undocumented)"><code>++rt:at</code></a>
522−<a class="tooltip" href='/docs/reference/library/4b/#rta-at' title="(Undocumented)"><code>++rta:at</code></a>
523−<a class="tooltip" href='/docs/reference/library/4b/#rtam-at' title="(Undocumented)"><code>++rtam:at</code></a>
524−<a class="tooltip" href='/docs/reference/library/2p/#rub' title="Length-decode"><code>++rub</code></a>
525−<a class="tooltip" href='/docs/reference/library/4b/#rub-at' title="(Undocumented)"><code>++rub:at</code></a>
526−<a class="tooltip" href='/docs/reference/library/4b/#rud-at' title="(Undocumented)"><code>++rud:at</code></a>
527−<a class="tooltip" href='/docs/reference/library/3g/#rule' title="Parsing rule (match this with _)"><code>++rule</code></a>
528−<a class="tooltip" href='/docs/reference/library/4b/#rum-at' title="(Undocumented)"><code>++rum:at</code></a>
529−<a class="tooltip" href='/docs/reference/library/2i/#run-by' title="Transform values (map)"><code>+-run:by</code></a>
530−<a class="tooltip" href='/docs/reference/library/2h/#run-in' title="Apply gate to set"><code>+-run:in</code></a>
531−<a class="tooltip" href='/docs/reference/library/3f/#rund-ob' title="Reverse single Feistel-like"><code>++rund:ob</code></a>
532−<a class="tooltip" href='/docs/reference/library/4b/#runt' title="Prepend n times"><code>++runt</code></a>
533−<a class="tooltip" href='/docs/reference/library/4b/#rup-at' title="(Undocumented)"><code>++rup:at</code></a>
534−<a class="tooltip" href='/docs/reference/library/4g/#rush' title="Parse or null"><code>++rush</code></a>
535−<a class="tooltip" href='/docs/reference/library/4g/#rust' title="Parse tape or null"><code>++rust</code></a>
536−<a class="tooltip" href='/docs/reference/library/2i/#rut-by' title="Transform nodes (map)"><code>+-rut:by</code></a>
537−<a class="tooltip" href='/docs/reference/library/4b/#ruv-at' title="(Undocumented)"><code>++ruv:at</code></a>
538−<a class="tooltip" href='/docs/reference/library/4b/#rux-at' title="(Undocumented)"><code>++rux:at</code></a>
539−<a class="tooltip" href='/docs/reference/library/3f/#rynd-ob' title="Reverse Feistel-like cipher"><code>++rynd:ob</code></a>
540−
541−### s
542−
543−<a class="tooltip" href='/docs/reference/library/2n/#same' title="Identity (produces same value)"><code>++same</code></a>
544−<a class="tooltip" href='/docs/reference/library/3b/#san-ff' title="Signed integer to @r"><code>++san:ff</code></a>
545−<a class="tooltip" href='/docs/reference/library/3b/#san-fl' title="Signed integer to float"><code>++san:fl</code></a>
546−<a class="tooltip" href='/docs/reference/library/3b/#san-rd' title="Unsigned integer to @rd"><code>++san:rd</code></a>
547−<a class="tooltip" href='/docs/reference/library/3b/#san-rh' title="Signed integer to @rh"><code>++san:rh</code></a>
548−<a class="tooltip" href='/docs/reference/library/3b/#san-rs' title="Signed integer to @rs"><code>++san:rs</code></a>
549−<a class="tooltip" href='/docs/reference/library/3b/#san-rq' title="Signed integer to @rq"><code>++san:rq</code></a>
550−<a class="tooltip" href='/docs/reference/library/4b/#sand' title="Soft-cast by aura"><code>++sand</code></a>
551−<a class="tooltip" href='/docs/reference/library/4b/#sane' title="Check aura validity"><code>++sane</code></a>
552−<a class="tooltip" href='/docs/reference/library/3b/#sb-ff' title="Sign bit"><code>++sb:ff</code></a>
553−<a class="tooltip" href='/docs/reference/library/2b/#scag' title="Prefix (produce front of list)"><code>++scag</code></a>
554−<a class="tooltip" href='/docs/reference/library/4g/#scan' title="Parse tape or crash"><code>++scan</code></a>
555−<a class="tooltip" href='/docs/reference/library/4m/#scot' title="Render dime as cord"><code>++scot</code></a>
556−<a class="tooltip" href='/docs/reference/library/4m/#scow' title="Render dime as tape"><code>++scow</code></a>
557−<a class="tooltip" href='/docs/reference/library/3b/#sea-ff' title="Convert from IEEE float to fn"><code>++sea:ff</code></a>
558−<a class="tooltip" href='/docs/reference/library/3b/#sea-rd' title="Convert from double-precision binary float to fn"><code>++sea:rd</code></a>
559−<a class="tooltip" href='/docs/reference/library/3b/#sea-rh' title="Convert from half-precision float to fn"><code>++sea:rh</code></a>
560−<a class="tooltip" href='/docs/reference/library/3b/#sea-rs' title="Convert from single-precision float to fn"><code>++sea:rs</code></a>
561−<a class="tooltip" href='/docs/reference/library/3b/#sea-rq' title="Convert from quad-precision float to fn"><code>++sea:rq</code></a>
562−<a class="tooltip" href='/docs/reference/library/4f/#sear' title="Conditional ++cook"><code>++sear</code></a>
563−<a class="tooltip" href='/docs/reference/library/4j/#seb-ab' title="Parse 1"><code>++seb:ab</code></a>
564−<a class="tooltip" href='/docs/reference/library/4j/#sed-ab' title="Parse non-zero decimal digit"><code>++sed:ab</code></a>
565−<a class="tooltip" href='/docs/reference/library/4h/#sel' title="Parse [ (sel)"><code>++sel</code></a>
566−<a class="tooltip" href='/docs/reference/library/4h/#sem' title="Parse ; (sem)"><code>++sem</code></a>
567−<a class="tooltip" href='/docs/reference/library/4h/#ser' title="Parse ] (ser)"><code>++ser</code></a>
568−<a class="tooltip" href='/docs/reference/library/2o/#set' title="Mold generator (set)"><code>++set</code></a>
569−<a class="tooltip" href='/docs/reference/library/4j/#sev-ab' title="Parse non-zero base 32 digit"><code>++sev:ab</code></a>
570−<a class="tooltip" href='/docs/reference/library/4j/#sew-ab' title="Parse non-zero base 64 digit"><code>++sew:ab</code></a>
571−<a class="tooltip" href='/docs/reference/library/4j/#sex-ab' title="Parse nonzero hexadecimal digit"><code>++sex:ab</code></a>
572−<a class="tooltip" href='/docs/reference/library/4e/#sfix' title="Discard second rule"><code>++sfix</code></a>
573−<a class="tooltip" href='/docs/reference/library/3d/#shad' title="Double SHA-256"><code>++shad</code></a>
574−<a class="tooltip" href='/docs/reference/library/3d/#shaf' title="Half SHA-256"><code>++shaf</code></a>
575−<a class="tooltip" href='/docs/reference/library/3d/#shal' title="SHA-512 with length"><code>++shal</code></a>
576−<a class="tooltip" href='/docs/reference/library/3d/#sham' title="128-bit noun hash"><code>++sham</code></a>
577−<a class="tooltip" href='/docs/reference/library/3d/#shan' title="SHA-1"><code>++shan</code></a>
578−<a class="tooltip" href='/docs/reference/library/3d/#shas' title="Salted hash"><code>++shas</code></a>
579−<a class="tooltip" href='/docs/reference/library/3d/#shaw' title="Hash to nbits"><code>++shaw</code></a>
580−<a class="tooltip" href='/docs/reference/library/3d/#shax' title="SHA-256"><code>++shax</code></a>
581−<a class="tooltip" href='/docs/reference/library/3d/#shay' title="SHA-256 with length"><code>++shay</code></a>
582−<a class="tooltip" href='/docs/reference/library/3d/#shaz' title="SHA-512"><code>++shaz</code></a>
583−<a class="tooltip" href='/docs/reference/library/4c/#shep' title="(Undocumented)"><code>++shep</code></a>
584−<a class="tooltip" href='/docs/reference/library/3b/#shf-fl' title="Shift power"><code>++shf:fl</code></a>
585−<a class="tooltip" href='/docs/reference/library/4f/#shim' title="Match character within range"><code>++shim</code></a>
586−<a class="tooltip" href='/docs/reference/library/4c/#shop' title="(Undocumented)"><code>++shop</code></a>
587−<a class="tooltip" href='/docs/reference/library/4c/#show' title="(Undocumented)"><code>++show</code></a>
588−<a class="tooltip" href='/docs/reference/library/3a/#si' title="Signed integer"><code>++si</code></a>
589−<a class="tooltip" href='/docs/reference/library/2m/#si-nl' title="Construct set from null-terminated noun"><code>++si:nl</code></a>
590−<a class="tooltip" href='/docs/reference/library/4j/#sib-ab' title="Parse binary digit"><code>++sib:ab</code></a>
591−<a class="tooltip" href='/docs/reference/library/4j/#sid-ab' title="Parse decimal digit"><code>++sid:ab</code></a>
592−<a class="tooltip" href='/docs/reference/library/4h/#sig' title="Parse ~ (sig)"><code>++sig</code></a>
593−<a class="tooltip" href='/docs/reference/library/3b/#sig-ff' title="Produce sign of IEEE float"><code>++sig:ff</code></a>
594−<a class="tooltip" href='/docs/reference/library/3b/#sig-rd' title="Produce sign of @rd"><code>++sig:rd</code></a>
595−<a class="tooltip" href='/docs/reference/library/3b/#sig-rh' title="Produce sign of half-precision float"><code>++sig:rh</code></a>
596−<a class="tooltip" href='/docs/reference/library/3b/#sig-rs' title="Produce sign of @rs"><code>++sig:rs</code></a>
597−<a class="tooltip" href='/docs/reference/library/3b/#sig-rq' title="Produce sign of quad-precision float"><code>++sig:rq</code></a>
598−<a class="tooltip" href='/docs/reference/library/2l/#silt' title="Produce set from list"><code>++silt</code></a>
599−<a class="tooltip" href='/docs/reference/library/4e/#simu' title="First and second"><code>++simu</code></a>
600−<a class="tooltip" href='/docs/reference/library/2c/#sit-fe' title="Enforce modulo"><code>++sit:fe</code></a>
601−<a class="tooltip" href='/docs/reference/library/3a/#sit-fo' title="Produce remainder of b modulo a"><code>++sit:fo</code></a>
602−<a class="tooltip" href='/docs/reference/library/4j/#siv-ab' title="Parse a base 32 digit"><code>++siv:ab</code></a>
603−<a class="tooltip" href='/docs/reference/library/4j/#siw-ab' title="Parse a base 64 digit"><code>++siw:ab</code></a>
604−<a class="tooltip" href='/docs/reference/library/4j/#six-ab' title="Parse a hexadecimal digit"><code>++six:ab</code></a>
605−<a class="tooltip" href='/docs/reference/library/2b/#skid' title="Separate list into two lists from slammed elments"><code>++skid</code></a>
606−<a class="tooltip" href='/docs/reference/library/2b/#skim' title="Produce list of elements from boolean gate"><code>++skim</code></a>
607−<a class="tooltip" href='/docs/reference/library/2b/#skip' title="Produce list of elements failing boolean gate"><code>++skip</code></a>
608−<a class="tooltip" href='/docs/reference/library/2b/#slag' title="Produce all elements from index in list"><code>++slag</code></a>
609−<a class="tooltip" href='/docs/reference/library/4m/#slat' title="Curried slaw"><code>++slat</code></a>
610−<a class="tooltip" href='/docs/reference/library/4m/#slav' title="Demand: parse cord with input aura"><code>++slav</code></a>
611−<a class="tooltip" href='/docs/reference/library/4m/#slaw' title="Parse cord to input aura"><code>++slaw</code></a>
612−<a class="tooltip" href='/docs/reference/library/4m/#slay' title="Parse cord to coin"><code>++slay</code></a>
613−<a class="tooltip" href='/docs/reference/library/2n/#slog' title="Deify printf"><code>++slog</code></a>
614−<a class="tooltip" href='/docs/reference/library/4f/#slug' title="Use gate to parse delimited list"><code>++slug</code></a>
615−<a class="tooltip" href='/docs/reference/library/4m/#smyt' title="Render path as tank"><code>++smyt</code></a>
616−<a class="tooltip" href='/docs/reference/library/2b/#snag' title="Produce element at specific index (list)"><code>++snag</code></a>
617−<a class="tooltip" href='/docs/reference/library/2m/#snag-nl' title="Produce element from list at specific null-terminated noun"><code>++snag:nl</code></a>
618−<a class="tooltip" href='/docs/reference/library/2b/#snoc' title="Append noun to list"><code>++snoc</code></a>
619−<a class="tooltip" href='/docs/reference/library/4l/#so' title="Coin parser engine"><code>++so</code></a>
620−<a class="tooltip" href='/docs/reference/library/2n/#soft' title="Maybe remold"><code>++soft</code></a>
621−<a class="tooltip" href='/docs/reference/library/2a/#some' title="Wrap value in unit"><code>++some</code></a>
622−<a class="tooltip" href='/docs/reference/library/4h/#soq' title="Parse ' (soq)"><code>++soq</code></a>
623−<a class="tooltip" href='/docs/reference/library/2b/#sort' title="Quicksort (list)"><code>++sort</code></a>
624−<a class="tooltip" href='/docs/reference/library/4j/#sov-ab' title="Parse base 32 letter"><code>++sov:ab</code></a>
625−<a class="tooltip" href='/docs/reference/library/4j/#sow-ab' title="Parse base 64 letter/symbol"><code>++sow:ab</code></a>
626−<a class="tooltip" href='/docs/reference/library/4j/#sox-ab' title="Parse hexadecimal letter"><code>++sox:ab</code></a>
627−<a class="tooltip" href='/docs/reference/library/4i/#soz' title="Parse triple single-quote"><code>++soz</code></a>
628−<a class="tooltip" href='/docs/reference/library/4o/#span' title="ASCII atom"><code>++span</code></a>
629−<a class="tooltip" href='/docs/reference/library/4m/#spat' title="Render path as cord"><code>++spat</code></a>
630−<a class="tooltip" href='/docs/reference/library/3b/#spd-fl' title="Produce smallest denormalized float"><code>++spd:fl</code></a>
631−<a class="tooltip" href='/docs/reference/library/2b/#spin' title="Gate to list (with state)"><code>++spin</code></a>
632−<a class="tooltip" href='/docs/reference/library/3b/#spn-fl' title="Produce smallest normal float"><code>++spn:fl</code></a>
633−<a class="tooltip" href='/docs/reference/library/3g/#spot' title="Stack trace line"><code>++spot</code></a>
634−<a class="tooltip" href='/docs/reference/library/4m/#spud' title="Render path as tape"><code>++spud</code></a>
635−<a class="tooltip" href='/docs/reference/library/2b/#spun' title="Gate to list (with state)"><code>++spun</code></a>
636−<a class="tooltip" href='/docs/reference/library/2g/#sqt' title="Compute square root with remainder"><code>++sqt</code></a>
637−<a class="tooltip" href='/docs/reference/library/3b/#sqt-ff' title="Produce square root of IEEE float"><code>++sqt:ff</code></a>
638−<a class="tooltip" href='/docs/reference/library/3b/#sqt-fl' title="Produce square root from signed and unsigned integer cell"><code>++sqt:fl</code></a>
639−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rd' title="Produce square root of double-precision float"><code>++sqt:rd</code></a>
640−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rh' title="Produce square root of half-precision float"><code>++sqt:rh</code></a>
641−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rs' title="Produce square root of single-precision float"><code>++sqt:rs</code></a>
642−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rq' title="Produce square root of quad-precision float"><code>++sqt:rq</code></a>
643−<a class="tooltip" href='/docs/reference/library/4m/#stab' title="Parse cord to path"><code>++stab</code></a>
644−<a class="tooltip" href='/docs/reference/library/4f/#stag' title="Add label"><code>++stag</code></a>
645−<a class="tooltip" href='/docs/reference/library/4f/#star' title="Produce list of matches"><code>++star</code></a>
646−<a class="tooltip" href='/docs/reference/library/4f/#stet' title="Add faces to range-parser pairs in list"><code>++stet</code></a>
647−<a class="tooltip" href='/docs/reference/library/4f/#stew' title="Switch by first"><code>++stew</code></a>
648−<a class="tooltip" href='/docs/reference/library/4f/#stir' title="Parse repeatedly"><code>++stir</code></a>
649−<a class="tooltip" href='/docs/reference/library/4f/#stun' title="Parse several times"><code>++stun</code></a>
650−<a class="tooltip" href='/docs/reference/library/1a/#sub' title="Subtract"><code>++sub</code></a>
651−<a class="tooltip" href='/docs/reference/library/3b/#sub-ff' title="Subtract from IEEE float"><code>++sub:ff</code></a>
652−<a class="tooltip" href='/docs/reference/library/3b/#sub-fl' title="Subtract from signed and unsigned integer cells"><code>++sub:fl</code></a>
653−<a class="tooltip" href='/docs/reference/library/3b/#sub-rd' title="Subtract from double-precision float"><code>++sub:rd</code></a>
654−<a class="tooltip" href='/docs/reference/library/3b/#sub-rh' title="Subtract from half-precision float"><code>++sub:rh</code></a>
655−<a class="tooltip" href='/docs/reference/library/3b/#sub-rs' title="Subtract from single-precision float"><code>++sub:rs</code></a>
656−<a class="tooltip" href='/docs/reference/library/3b/#sub-rq' title="Subtract from quad-precision float"><code>++sub:rq</code></a>
657−<a class="tooltip" href='/docs/reference/library/2c/#sum-fe' title="Sum two numbers in modular field"><code>++sum:fe</code></a>
658−<a class="tooltip" href='/docs/reference/library/3a/#sum-fo' title="Modular sum"><code>++sum:fo</code></a>
659−<a class="tooltip" href='/docs/reference/library/3a/#sum-si' title="Addition (signed integer)"><code>++sum:si</code></a>
660−<a class="tooltip" href='/docs/reference/library/3b/#sun-ff' title="Unsigned integer to IEEE float"><code>++sun:ff</code></a>
661−<a class="tooltip" href='/docs/reference/library/3b/#sun-fl' title="Unsigned integer to float"><code>++sun:fl</code></a>
662−<a class="tooltip" href='/docs/reference/library/3b/#sun-rd' title="Unsigned integer to double-precision float"><code>++sun:rd</code></a>
663−<a class="tooltip" href='/docs/reference/library/3b/#sun-rh' title="Unsigned integer to half-precision float"><code>++sun:rh</code></a>
664−<a class="tooltip" href='/docs/reference/library/3b/#sun-rs' title="Unsigned integer to single-precision float"><code>++sun:rs</code></a>
665−<a class="tooltip" href='/docs/reference/library/3b/#sun-rq' title="Unsigned integer to quad-precision float"><code>++sun:rq</code></a>
666−<a class="tooltip" href='/docs/reference/library/3a/#sun-si' title="@u to @s"><code>++sun:si</code></a>
667−<a class="tooltip" href='/docs/reference/library/2b/#swag' title="Infix (list)"><code>++swag</code></a>
668−<a class="tooltip" href='/docs/reference/library/2c/#swp' title="Reverse block order"><code>++swp</code></a>
669−<a class="tooltip" href='/docs/reference/library/3b/#swr-fl' title="Switch rounding mode of floating point"><code>++swr:fl</code></a>
670−<a class="tooltip" href='/docs/reference/library/2m/#sy' title="Produce set from null-terminated noun"><code>++sy</code></a>
671−<a class="tooltip" href='/docs/reference/library/4i/#sym' title="Term"><code>++sym</code></a>
672−<a class="tooltip" href='/docs/reference/library/3b/#syn-fl' title="Get sign"><code>++syn:fl</code></a>
673−<a class="tooltip" href='/docs/reference/library/3a/#syn-si' title="Sign test"><code>++syn:si</code></a>
674−
675−### t
676−
677−<a class="tooltip" href='/docs/reference/library/2n/#tail' title="Get tail of cell"><code>++tail</code></a>
678−<a class="tooltip" href='/docs/reference/library/2k/#tap-to' title="Queue to list"><code>+-tap:to</code></a>
679−<a class="tooltip" href='/docs/reference/library/4h/#tar' title="Parse * (tar)"><code>++tar</code></a>
680−<a class="tooltip" href='/docs/reference/library/2q/#tang' title="Generic print structure"><code>++tang</code></a>
681−<a class="tooltip" href='/docs/reference/library/2q/#tank' title="Pretty-printing structure"><code>++tank</code></a>
682−<a class="tooltip" href='/docs/reference/library/2i/#tap-by' title="Listify pairs"><code>+-tap:by</code></a>
683−<a class="tooltip" href='/docs/reference/library/2h/#tap-in' title="Flatten set into list"><code>+-tap:in</code></a>
684−<a class="tooltip" href='/docs/reference/library/2q/#tape' title="List of characters"><code>++tape</code></a>
685−<a class="tooltip" href='/docs/reference/library/2q/#tarp' title="Parsed time"><code>++tarp</code></a>
686−<a class="tooltip" href='/docs/reference/library/4l/#tash-so' title="Parse signed dime"><code>++tash:so</code></a>
687−<a class="tooltip" href='/docs/reference/library/4h/#tec' title="Parse ` (tec)"><code>++tec</code></a>
688−<a class="tooltip" href='/docs/reference/library/4j/#ted-ab' title="Parse decimal number with <= 3 digits"><code>++ted:ab</code></a>
689−<a class="tooltip" href='/docs/reference/library/4b/#teff' title="UTF-8 length"><code>++teff</code></a>
690−<a class="tooltip" href='/docs/reference/library/3f/#teil-ob' title="Reverse Feistel-like cipher"><code>++teil:ob</code></a>
691−<a class="tooltip" href='/docs/reference/library/2q/#term' title="Hoon constant"><code>++term</code></a>
692−<a class="tooltip" href='/docs/reference/library/2n/#test' title="Test for equality"><code>++test</code></a>
693−<a class="tooltip" href='/docs/reference/library/4j/#tid-ab' title="Parse 3 decimal digits"><code>++tid:ab</code></a>
694−<a class="tooltip" href='/docs/reference/library/4o/#tiki' title="(Undocumented)"><code>++tiki</code></a>
695−<a class="tooltip" href='/docs/reference/library/4j/#til-ab' title="Parse 3 lowercase letters"><code>++til:ab</code></a>
696−<a class="tooltip" href='/docs/reference/library/4j/#tip-ab' title="Leading phonetic byte"><code>++tip:ab</code></a>
697−<a class="tooltip" href='/docs/reference/library/4j/#tiq-ab' title="Trailing phonetic syllable"><code>++tiq:ab</code></a>
698−<a class="tooltip" href='/docs/reference/library/4h/#tis' title="Parse = (tis)"><code>++tis</code></a>
699−<a class="tooltip" href='/docs/reference/library/2k/#to' title="Queue operations"><code>++to</code></a>
700−<a class="tooltip" href='/docs/reference/library/4a/#tod-po' title="Fetch suffix"><code>++tod:po</code></a>
701−<a class="tooltip" href='/docs/reference/library/4o/#toga' title="Tree of faces"><code>++toga</code></a>
702−<a class="tooltip" href='/docs/reference/library/3b/#toi-ff' title="Round IEEE float to nearest signed integer"><code>++toi:ff</code></a>
703−<a class="tooltip" href='/docs/reference/library/3b/#toi-fl' title="Round float to nearest signed integer"><code>++toi:fl</code></a>
704−<a class="tooltip" href='/docs/reference/library/3b/#toi-rd' title="Round double-precision float to nearest signed integer"><code>++toi:rd</code></a>
705−<a class="tooltip" href='/docs/reference/library/3b/#toi-rh' title="Round half-precision float to nearest signed integer"><code>++toi:rh</code></a>
706−<a class="tooltip" href='/docs/reference/library/3b/#toi-rs' title="Round single-precision float to nearest signed integer"><code>++toi:rs</code></a>
707−<a class="tooltip" href='/docs/reference/library/3b/#toi-rq' title="Round quad-precision float to nearest signed integer"><code>++toi:rq</code></a>
708−<a class="tooltip" href='/docs/reference/library/3b/#toj-fl' title="Round unsigned and signed integer to float"><code>++toj:fl</code></a>
709−<a class="tooltip" href='/docs/reference/library/3g/#tone' title="Nock result (error report)"><code>++tone</code></a>
710−<a class="tooltip" href='/docs/reference/library/3g/#toon' title="Nock result (stack trace)"><code>++toon</code></a>
711−<a class="tooltip" href='/docs/reference/library/2k/#top-to' title="Produce head of queue"><code>+-top:to</code></a>
712−<a class="tooltip" href='/docs/reference/library/4a/#tos-po' title="Fetch prefix"><code>++tos:po</code></a>
713−<a class="tooltip" href='/docs/reference/library/3b/#tos-rh' title="Convert half-precision float to single-precision float"><code>++tos:rh</code></a>
714−<a class="tooltip" href='/docs/reference/library/1c/#trap' title="Core with one arm $"><code>++trap</code></a>
715−<a class="tooltip" href='/docs/reference/library/1c/#tree' title="Mold generator (tree)"><code>++tree</code></a>
716−<a class="tooltip" href='/docs/reference/library/1c/#trel' title="Mold generator (tuple of three types)"><code>++trel</code></a>
717−<a class="tooltip" href='/docs/reference/library/4b/#trim' title="Tape split"><code>++trim</code></a>
718−<a class="tooltip" href='/docs/reference/library/4b/#trip' title="Cord to tape"><code>++trip</code></a>
719−<a class="tooltip" href='/docs/reference/library/4b/#tuba' title="UTF-8 to UTF-32 tape"><code>++tuba</code></a>
720−<a class="tooltip" href='/docs/reference/library/4b/#tufa' title="UTF-32 to UTF-8 tape"><code>++tufa</code></a>
721−<a class="tooltip" href='/docs/reference/library/4o/#tuna' title="XML template tree"><code>++tuna</code></a>
722−<a class="tooltip" href='/docs/reference/library/4b/#tuft' title="UTF-32 to UTF-8 text"><code>++tuft</code></a>
723−<a class="tooltip" href='/docs/reference/library/4b/#turf' title="UTF-8 to UTF-32 cord"><code>++turf</code></a>
724−<a class="tooltip" href='/docs/reference/library/2b/#turn' title="Gate to list"><code>++turn</code></a>
725−<a class="tooltip" href='/docs/reference/library/4o/#tusk' title="List of expressions"><code>++tusk</code></a>
726−<a class="tooltip" href='/docs/reference/library/4l/#twid-so' title="Parse coins without ~ prefix"><code>++twid:so</code></a>
727−<a class="tooltip" href='/docs/reference/library/4o/#tyke' title="List of 'maybe' hoons"><code>++tyke</code></a>
728−<a class="tooltip" href='/docs/reference/library/4o/#typo' title="Pointer for ++type"><code>++typo</code></a>
729−<a class="tooltip" href='/docs/reference/library/4o/#tyre' title="List, term hoon"><code>++tyre</code></a>
730−
731−### u
732−
733−<a class="tooltip" href='/docs/reference/library/3f/#un' title="Reversible scrambling"><code>++un</code></a>
734−<a class="tooltip" href='/docs/reference/library/2i/#uni-by' title="Union (map between keys of two lists)"><code>+-uni:by</code></a>
735−<a class="tooltip" href='/docs/reference/library/3b/#uni-fl' title="Change representation to odd"><code>++uni:fl</code></a>
736−<a class="tooltip" href='/docs/reference/library/2h/#uni-in' title="Union (sets)"><code>+-uni:in</code></a>
737−<a class="tooltip" href='/docs/reference/library/1c/#unit' title="Mold generator (maybe)"><code>++unit</code></a>
738−<a class="tooltip" href='/docs/reference/library/2i/#urn-by' title="Turn (with key) (map)"><code>+-urn:by</code></a>
739−<a class="tooltip" href='/docs/reference/library/4j/#urs-ab' title="Parse span characters"><code>++urs:ab</code></a>
740−<a class="tooltip" href='/docs/reference/library/4j/#urt-ab' title="Parse non-_ span"><code>++urt:ab</code></a>
741−
742−### v
743−
744−<a class="tooltip" href='/docs/reference/library/4j/#v-ne' title="Render base 32"><code>++v:ne</code></a>
745−<code>++vang</code>
746−<a class="tooltip" href='/docs/reference/library/4o/#vase' title="Typed data"><code>++vase</code></a>
747−<code>++vast</code>
748−<a class="tooltip" href='/docs/reference/library/4i/#ven' title="Axis syntax parser"><code>++ven</code></a>
749−<a class="tooltip" href='/docs/reference/library/4o/#vise' title="Convert during reboot"><code>++vise</code></a>
750−<a class="tooltip" href='/docs/reference/library/4i/#vit' title="Parse base 64 digit"><code>++vit</code></a>
751−<a class="tooltip" href='/docs/reference/library/4j/#viz-ag' title="Parse base 32 digit with dot separators"><code>++viz:ag</code></a>
752−<a class="tooltip" href='/docs/reference/library/2f/#vor' title="Vertical order"><code>++vor</code></a>
753−<a class="tooltip" href='/docs/reference/library/4j/#voy-ab' title="Parse bas, soq, or bix"><code>++voy:ab</code></a>
754−<a class="tooltip" href='/docs/reference/library/4i/#vul' title="Comments to null"><code>++vul</code></a>
755−<a class="tooltip" href='/docs/reference/library/4j/#vum-ag' title="Parse base 32 string"><code>++vum:ag</code></a>
756−
757−### w
758−
759−<a class="tooltip" href='/docs/reference/library/4j/#w-ne' title="Render base 64 digit"><code>++w:ne</code></a>
760−<a class="tooltip" href='/docs/reference/library/4b/#wack' title="Coin format encode"><code>++wack</code></a>
761−<a class="tooltip" href='/docs/reference/library/2q/#wain' title="List of cords"><code>++wain</code></a>
762−<a class="tooltip" href='/docs/reference/library/2q/#wall' title="List of list of characters"><code>++wall</code></a>
763−<a class="tooltip" href='/docs/reference/library/2b/#weld' title="Concatenate two lists"><code>++weld</code></a>
764−<a class="tooltip" href='/docs/reference/library/2m/#weld-nl' title="Concatenate null-terminated nouns"><code>++weld:nl</code></a>
765−<a class="tooltip" href='/docs/reference/library/2b/#welp' title="Perfect concatenate (lists)"><code>++welp</code></a>
766−<a class="tooltip" href='/docs/reference/library/4b/#wick' title="Coin format decode"><code>++wick</code></a>
767−<a class="tooltip" href='/docs/reference/library/4c/#wig-re' title="++win - render tape"><code>++wig:re</code></a>
768−<a class="tooltip" href='/docs/reference/library/4c/#win-re' title="Render at indent"><code>++win:re</code></a>
769−<a class="tooltip" href='/docs/reference/library/4o/#wing' title="Address in subject"><code>++wing</code></a>
770−<a class="tooltip" href='/docs/reference/library/4j/#wiz-ag' title="Parse base 64 number"><code>++wiz:ag</code></a>
771−<a class="tooltip" href='/docs/reference/library/4b/#woad' title="Unescape cord"><code>++woad</code></a>
772−<a class="tooltip" href='/docs/reference/library/4b/#wood' title="Escape cord"><code>++wood</code></a>
773−<a class="tooltip" href='/docs/reference/library/3g/#wonk' title="Product from edge"><code>++wonk</code></a>
774−<a class="tooltip" href='/docs/reference/library/3f/#wred-un' title="Restore structure"><code>++wred:un</code></a>
775−<a class="tooltip" href='/docs/reference/library/3f/#wren-un' title="Conceal structure"><code>++wren:un</code></a>
776−<a class="tooltip" href='/docs/reference/library/4h/#wut' title="Parse ? (wut)"><code>++wut</code></a>
777−<a class="tooltip" href='/docs/reference/library/2i/#wyt-by' title="Produce depth of tree map"><code>+-wyt:by</code></a>
778−<a class="tooltip" href='/docs/reference/library/2h/#wyt-in' title="Produce number of elements in set"><code>+-wyt:in</code></a>
779−
780−### x
781−
782−<a class="tooltip" href='/docs/reference/library/4j/#x-ne' title="Render hexadecimal digit as atom of ASCII byte value"><code>++x:ne</code></a>
783−<a class="tooltip" href='/docs/reference/library/2c/#xeb' title="Binary logarithm"><code>++xeb</code></a>
784−<a class="tooltip" href='/docs/reference/library/3b/#xpd-fl' title="Expand signed and unsigned integer cell"><code>++xpd:fl</code></a>
785−
786−### y
787−
788−<a class="tooltip" href='/docs/reference/library/3c/#yall' title="Time since beginning of time"><code>++yall</code></a>
789−<a class="tooltip" href='/docs/reference/library/3c/#yawn' title="Days since beginning of time"><code>++yawn</code></a>
790−<a class="tooltip" href='/docs/reference/library/3c/#year' title="Date to @d"><code>++year</code></a>
791−<a class="tooltip" href='/docs/reference/library/3c/#yell' title="Tarp from atomic date"><code>++yell</code></a>
792−<a class="tooltip" href='/docs/reference/library/3c/#yelp' title="Determine if leap-week"><code>++yelp</code></a>
793−<a class="tooltip" href='/docs/reference/library/3c/#yer-yo' title="Seconds in year"><code>++yer:yo</code></a>
794−<a class="tooltip" href='/docs/reference/library/3c/#yo' title="Time constants core"><code>++yo</code></a>
795−<a class="tooltip" href='/docs/reference/library/3c/#yore' title="Date from atomic date"><code>++yore</code></a>
796−<a class="tooltip" href='/docs/reference/library/3c/#yule' title="Daily time to time atom"><code>++yule</code></a>
797−
798−### z
799−
800−<a class="tooltip" href='/docs/reference/library/3f/#zaft-un' title="Look up in 255 sub box"><code>++zaft:un</code></a>
801−<a class="tooltip" href='/docs/reference/library/4j/#zag-mu' title="Add bottom into top"><code>++zag:mu</code></a>
802−<a class="tooltip" href='/docs/reference/library/4h/#zap' title="Parse ! (zap)"><code>++zap</code></a>
803−<a class="tooltip" href='/docs/reference/library/3f/#zart-un' title="Reverse look up in 255 sub box"><code>++zart:un</code></a>
804−<a class="tooltip" href='/docs/reference/library/3b/#zer-fl' title="Produce zero as float"><code>++zer:fl</code></a>
805−<a class="tooltip" href='/docs/reference/library/4j/#zig-mu' title="Subtract bottom from top"><code>++zig:mu</code></a>
806−<a class="tooltip" href='/docs/reference/library/2b/#zing' title="Turn lists into single list by promoting elements from sublists"><code>++zing</code></a>
807−<a class="tooltip" href='/docs/reference/library/4j/#zug-mu' title="Concatenate into atom"><code>++zug:mu</code></a>
808−<a class="tooltip" href='/docs/reference/library/4l/#zust-so' title="Parse prefixed dimes from IP, loobean, or floating point"><code>++zust:so</code></a>
809−<a class="tooltip" href='/docs/reference/library/3f/#zyft-un' title="Lookup byte in 256 sub box"><code>++zyft:un</code></a>
810−<a class="tooltip" href='/docs/reference/library/3f/#zyrt-un' title="Reverse lookup byte in 256 sub box"><code>++zyrt:un</code></a>
811−
812−## By Section
813−
814−### 1a: basic arithmetic
815−
816−<a class="tooltip" href='/docs/reference/library/1a/#add' title="Add"><code>++add</code></a>
817−<a class="tooltip" href='/docs/reference/library/1a/#dec' title="Decrement"><code>++dec</code></a>
818−<a class="tooltip" href='/docs/reference/library/1a/#div' title="Divide"><code>++div</code></a>
819−<a class="tooltip" href='/docs/reference/library/1a/#dvr' title="Divide (with remainder)"><code>++dvr</code></a>
820−<a class="tooltip" href='/docs/reference/library/1a/#gte' title="Greater than / equal"><code>++gte</code></a>
821−<a class="tooltip" href='/docs/reference/library/1a/#gth' title="Greater than"><code>++gth</code></a>
822−<a class="tooltip" href='/docs/reference/library/1a/#lte' title="Less than / equal (atom)"><code>++lte</code></a>
823−<a class="tooltip" href='/docs/reference/library/1a/#lth' title="Less than (atom)"><code>++lth</code></a>
824−<a class="tooltip" href='/docs/reference/library/1a/#max' title="Maximum"><code>++max</code></a>
825−<a class="tooltip" href='/docs/reference/library/1a/#min' title="Minimum (atom)"><code>++min</code></a>
826−<a class="tooltip" href='/docs/reference/library/1a/#mod' title="Modulus (atom)"><code>++mod</code></a>
827−<a class="tooltip" href='/docs/reference/library/1a/#mul' title="Multiply (atom)"><code>++mul</code></a>
828−<a class="tooltip" href='/docs/reference/library/1a/#sub' title="Subtract"><code>++sub</code></a>
829−
830−### 1b: tree addressing
831−
832−<a class="tooltip" href='/docs/reference/library/1b/#cap' title="Tree head"><code>++cap</code></a>
833−<a class="tooltip" href='/docs/reference/library/1b/#mas' title="Address within head/tail"><code>++mas</code></a>
834−<a class="tooltip" href='/docs/reference/library/1b/#peg' title="Address within address"><code>++peg</code></a>
835−
836−### 1c: molds and mold builders
837−
838−<a class="tooltip" href='/docs/reference/library/1c/#bloq' title="Blocksize"><code>++bloq</code></a>
839−<a class="tooltip" href='/docs/reference/library/1c/#each' title="Mold of fork between two types"><code>++each</code></a>
840−<a class="tooltip" href='/docs/reference/library/1c/#gate' title="Function"><code>++gate</code></a>
841−<a class="tooltip" href='/docs/reference/library/1c/#list' title="Mold constructor (list)"><code>++list</code></a>
842−<a class="tooltip" href='/docs/reference/library/1c/#lone' title="Mold generator (face on mold)"><code>++lone</code></a>
843−<a class="tooltip" href='/docs/reference/library/1c/#pair' title="Mold of pair of types"><code>++pair</code></a>
844−<a class="tooltip" href='/docs/reference/library/1c/#pole' title="Mold generator of faceless list"><code>++pole</code></a>
845−<a class="tooltip" href='/docs/reference/library/1c/#quip' title="Mold generator (tuple of list and type)"><code>++quip</code></a>
846−<a class="tooltip" href='/docs/reference/library/1c/#trap' title="Core with one arm $"><code>++trap</code></a>
847−<a class="tooltip" href='/docs/reference/library/1c/#tree' title="Mold generator (tree)"><code>++tree</code></a>
848−<a class="tooltip" href='/docs/reference/library/1c/#trel' title="Mold generator (tuple of three types)"><code>++trel</code></a>
849−<a class="tooltip" href='/docs/reference/library/1c/#unit' title="Mold generator (maybe)"><code>++unit</code></a>
850−
851−### 2a: unit logic
852−
853−<a class="tooltip" href='/docs/reference/library/2a/#biff' title="Unit as argument"><code>++biff</code></a>
854−<a class="tooltip" href='/docs/reference/library/2a/#bind' title="Non-unit function to unit, producing unit"><code>++bind</code></a>
855−<a class="tooltip" href='/docs/reference/library/2a/#bond' title="Replace null"><code>++bond</code></a>
856−<a class="tooltip" href='/docs/reference/library/2a/#both' title="Group unit values into pair"><code>++both</code></a>
857−<a class="tooltip" href='/docs/reference/library/2a/#clap' title="Apply function to two units"><code>++clap</code></a>
858−<a class="tooltip" href='/docs/reference/library/2a/#drop' title="Unit to list"><code>++drop</code></a>
859−<a class="tooltip" href='/docs/reference/library/2a/#fall' title="Give unit a default value"><code>++fall</code></a>
860−<a class="tooltip" href='/docs/reference/library/2a/#lift' title="Curried bind"><code>++lift</code></a>
861−<a class="tooltip" href='/docs/reference/library/2a/#mate' title="Choose"><code>++mate</code></a>
862−<a class="tooltip" href='/docs/reference/library/2a/#need' title="Unwrap unit"><code>++need</code></a>
863−<a class="tooltip" href='/docs/reference/library/2a/#some' title="Wrap value in unit"><code>++some</code></a>
864−
865−### 2b: list logic
866−
867−<a class="tooltip" href='/docs/reference/library/2b/#fand' title="All indices in list"><code>++fand</code></a>
868−<a class="tooltip" href='/docs/reference/library/2b/#find' title="First index in list"><code>++find</code></a>
869−<a class="tooltip" href='/docs/reference/library/2b/#flop' title="Reverse list"><code>++flop</code></a>
870−<a class="tooltip" href='/docs/reference/library/2b/#gulf' title="List from range"><code>++gulf</code></a>
871−<a class="tooltip" href='/docs/reference/library/2b/#homo' title="Homogenize list"><code>++homo</code></a>
872−<a class="tooltip" href='/docs/reference/library/2b/#join' title="Add separator between list elements"><code>++join</code></a>
873−<a class="tooltip" href='/docs/reference/library/2b/#lent' title="List length"><code>++lent</code></a>
874−<a class="tooltip" href='/docs/reference/library/2b/#levy' title="Logical AND on list"><code>++levy</code></a>
875−<a class="tooltip" href='/docs/reference/library/2b/#lien' title="Logical OR on list"><code>++lien</code></a>
876−<a class="tooltip" href='/docs/reference/library/2b/#limo' title="Construct list from null-terminated tuple"><code>++limo</code></a>
877−<a class="tooltip" href='/docs/reference/library/2b/#murn' title="Maybe transform"><code>++murn</code></a>
878−<a class="tooltip" href='/docs/reference/library/2b/#oust' title="Remove from list"><code>++oust</code></a>
879−<a class="tooltip" href='/docs/reference/library/2b/#reap' title="Replicate (list)"><code>++reap</code></a>
880−<a class="tooltip" href='/docs/reference/library/2b/#reel' title="Right fold (list)"><code>++reel</code></a>
881−<a class="tooltip" href='/docs/reference/library/2b/#roll' title="Left fold (list)"><code>++roll</code></a>
882−<a class="tooltip" href='/docs/reference/library/2b/#scag' title="Prefix (produce front of list)"><code>++scag</code></a>
883−<a class="tooltip" href='/docs/reference/library/2b/#skid' title="Separate list into two lists from slammed elments"><code>++skid</code></a>
884−<a class="tooltip" href='/docs/reference/library/2b/#skim' title="Produce list of elements from boolean gate"><code>++skim</code></a>
885−<a class="tooltip" href='/docs/reference/library/2b/#skip' title="Produce list of elements failing boolean gate"><code>++skip</code></a>
886−<a class="tooltip" href='/docs/reference/library/2b/#slag' title="Produce all elements from index in list"><code>++slag</code></a>
887−<a class="tooltip" href='/docs/reference/library/2b/#snag' title="Produce element at specific index (list)"><code>++snag</code></a>
888−<a class="tooltip" href='/docs/reference/library/2b/#snoc' title="Append noun to list"><code>++snoc</code></a>
889−<a class="tooltip" href='/docs/reference/library/2b/#sort' title="Quicksort (list)"><code>++sort</code></a>
890−<a class="tooltip" href='/docs/reference/library/2b/#spin' title="Gate to list (with state)"><code>++spin</code></a>
891−<a class="tooltip" href='/docs/reference/library/2b/#spun' title="Gate to list (with state)"><code>++spun</code></a>
892−<a class="tooltip" href='/docs/reference/library/2b/#swag' title="Infix (list)"><code>++swag</code></a>
893−<a class="tooltip" href='/docs/reference/library/2b/#turn' title="Gate to list"><code>++turn</code></a>
894−<a class="tooltip" href='/docs/reference/library/2b/#weld' title="Concatenate two lists"><code>++weld</code></a>
895−<a class="tooltip" href='/docs/reference/library/2b/#welp' title="Perfect concatenate (lists)"><code>++welp</code></a>
896−<a class="tooltip" href='/docs/reference/library/2b/#zing' title="Turn lists into single list by promoting elements from sublists"><code>++zing</code></a>
897−
898−### 2c: bit arithmetic
899−
900−<a class="tooltip" href='/docs/reference/library/2c/#fe' title="Modulo bloq"><code>++fe</code></a>
901−<a class="tooltip" href='/docs/reference/library/2c/#dif-fe' title="Difference between atoms (modular basis)"><code>++dif:fe</code></a>
902−<a class="tooltip" href='/docs/reference/library/2c/#inv-fe' title="Inverse order of modular field"><code>++inv:fe</code></a>
903−<a class="tooltip" href='/docs/reference/library/2c/#net-fe' title="Flip endianness"><code>++net:fe</code></a>
904−<a class="tooltip" href='/docs/reference/library/2c/#out-fe' title="Maximum integer value"><code>++out:fe</code></a>
905−<a class="tooltip" href='/docs/reference/library/2c/#rol-fe' title="Roll left"><code>++rol:fe</code></a>
906−<a class="tooltip" href='/docs/reference/library/2c/#ror-fe' title="Roll right"><code>++ror:fe</code></a>
907−<a class="tooltip" href='/docs/reference/library/2c/#sit-fe' title="Enforce modulo"><code>++sit:fe</code></a>
908−<a class="tooltip" href='/docs/reference/library/2c/#sum-fe' title="Sum two numbers in modular field"><code>++sum:fe</code></a>
909−
910−<a class="tooltip" href='/docs/reference/library/2c/#bex' title="Binary exponent"><code>++bex</code></a>
911−<a class="tooltip" href='/docs/reference/library/2c/#can' title="Assemble"><code>++can</code></a>
912−<a class="tooltip" href='/docs/reference/library/2c/#cat' title="Concatenate"><code>++cat</code></a>
913−<a class="tooltip" href='/docs/reference/library/2c/#cut' title="Slice"><code>++cut</code></a>
914−<a class="tooltip" href='/docs/reference/library/2c/#end' title="Tail"><code>++end</code></a>
915−<a class="tooltip" href='/docs/reference/library/2c/#fil' title="Fill bloqstream"><code>++fil</code></a>
916−<a class="tooltip" href='/docs/reference/library/2c/#lsh' title="Left-shift"><code>++lsh</code></a>
917−<a class="tooltip" href='/docs/reference/library/2c/#met' title="Measure"><code>++met</code></a>
918−<a class="tooltip" href='/docs/reference/library/2c/#rap' title="Assemble non-zero"><code>++rap</code></a>
919−<a class="tooltip" href='/docs/reference/library/2c/#rep' title="Assemble single"><code>++rep</code></a>
920−<a class="tooltip" href='/docs/reference/library/2c/#rip' title="Disassemble"><code>++rip</code></a>
921−<a class="tooltip" href='/docs/reference/library/2c/#rsh' title="Right-shift"><code>++rsh</code></a>
922−<a class="tooltip" href='/docs/reference/library/2c/#swp' title="Reverse block order"><code>++swp</code></a>
923−<a class="tooltip" href='/docs/reference/library/2c/#xeb' title="Binary logarithm"><code>++xeb</code></a>
924−
925−### 2d: bit logic
926−
927−<a class="tooltip" href='/docs/reference/library/2d/#con' title="Binary OR"><code>++con</code></a>
928−<a class="tooltip" href='/docs/reference/library/2d/#dis' title="Binary AND (atoms)"><code>++dis</code></a>
929−<a class="tooltip" href='/docs/reference/library/2d/#mix' title="Binary XOR (atom)"><code>++mix</code></a>
930−<a class="tooltip" href='/docs/reference/library/2d/#not' title="Binary NOT (atom)"><code>++not</code></a>
931−
932−### 2e: insecure hashing
933−
934−<a class="tooltip" href='/docs/reference/library/2e/#fnv' title="FNV scrambler"><code>++fnv</code></a>
935−<a class="tooltip" href='/docs/reference/library/2e/#mug' title="FNV-1a scrambler"><code>++mug</code></a>
936−<a class="tooltip" href='/docs/reference/library/2e/#muk' title="Standard MurmurHash3"><code>++muk</code></a>
937−<a class="tooltip" href='/docs/reference/library/2e/#mum' title="31-bit MurmurHash3 scrambler"><code>++mum</code></a>
938−
939−### 2f: noun ordering
940−
941−<a class="tooltip" href='/docs/reference/library/2f/#aor' title="Alphabetical order"><code>++aor</code></a>
942−<a class="tooltip" href='/docs/reference/library/2f/#dor' title="Numeric order"><code>++dor</code></a>
943−<a class="tooltip" href='/docs/reference/library/2f/#gor' title="Hash order"><code>++gor</code></a>
944−<a class="tooltip" href='/docs/reference/library/2f/#hor' title="Horizontal hash order"><code>++hor</code></a>
945−<a class="tooltip" href='/docs/reference/library/2f/#lor' title="Leg order"><code>++lor</code></a>
946−<a class="tooltip" href='/docs/reference/library/2f/#vor' title="Vertical order"><code>++vor</code></a>
947−
948−### 2g: unsigned powers
949−
950−<a class="tooltip" href='/docs/reference/library/2g/#pow' title="Computes a to the power of b"><code>++pow</code></a>
951−<a class="tooltip" href='/docs/reference/library/2g/#sqt' title="Compute square root with remainder"><code>++sqt</code></a>
952−
953−### 2h: set logic
954−
955−<a class="tooltip" href='/docs/reference/library/2h/#in'><code>++in</code></a>
956−<a class="tooltip" href='/docs/reference/library/2h/#all-in' title="Logical AND (set and wet gate)"><code>+-all:in</code></a>
957−<a class="tooltip" href='/docs/reference/library/2h/#any-in' title="Logical OR (set and gate)"><code>+-any:in</code></a>
958−<a class="tooltip" href='/docs/reference/library/2h/#apt-in' title="Check correctness (set)"><code>+-apt:in</code></a>
959−<a class="tooltip" href='/docs/reference/library/2h/#bif-in' title="Bifurcate set"><code>+-bif:in</code></a>
960−<a class="tooltip" href='/docs/reference/library/2h/#del-in' title="Delete (set)"><code>+-del:in</code></a>
961−<a class="tooltip" href='/docs/reference/library/2h/#dif-in' title='Difference (set)'><code>+-dif:in</code></a>
962−<a class="tooltip" href='/docs/reference/library/2h/#dig-in' title="Address of a in set"><code>+-dig:in</code></a>
963−<a class="tooltip" href='/docs/reference/library/2h/#gas-in' title="Concatenate (set)"><code>+-gas:in</code></a>
964−<a class="tooltip" href='/docs/reference/library/2h/#has-in' title="Key existence check (set)"><code>+-has:in</code></a>
965−<a class="tooltip" href='/docs/reference/library/2h/#int-in' title="Intersection (set)"><code>+-int:in</code></a>
966−<a class="tooltip" href='/docs/reference/library/2h/#put-in' title="Put b in a (set)"><code>+-put:in</code></a>
967−<a class="tooltip" href='/docs/reference/library/2h/#rep-in' title="Accumulate elements (set)"><code>+-rep:in</code></a>
968−<a class="tooltip" href='/docs/reference/library/2h/#run-in' title="Apply gate to set"><code>+-run:in</code></a>
969−<a class="tooltip" href='/docs/reference/library/2h/#tap-in' title="Flatten set into list"><code>+-tap:in</code></a>
970−<a class="tooltip" href='/docs/reference/library/2h/#uni-in' title="Union (sets)"><code>+-uni:in</code></a>
971−<a class="tooltip" href='/docs/reference/library/2h/#wyt-in' title="Produce number of elements in set"><code>+-wyt:in</code></a>
972−
973−### 2i: map logic
974−
975−<a class="tooltip" href='/docs/reference/library/2i/#by' title="Map operations"><code>++by</code></a>
976−<a class="tooltip" href='/docs/reference/library/2i/#all-by' title="Logical AND (map and wet gate)"><code>+-all:by</code></a>
977−<a class="tooltip" href='/docs/reference/library/2i/#any-by' title="Logical OR (map and wet gate)"><code>+-any:by</code></a>
978−<a class="tooltip" href='/docs/reference/library/2i/#apt-by' title="Check correctness (map)"><code>+-apt:by</code></a>
979−<a class="tooltip" href='/docs/reference/library/2i/#bif-by' title="Bifurcate map"><code>+-bif:by</code></a>
980−<a class="tooltip" href='/docs/reference/library/2i/#def-by' title="Difference (map)"><code>+-def:by</code></a>
981−<a class="tooltip" href='/docs/reference/library/2i/#del-by' title="Delete (map)"><code>+-del:by</code></a>
982−<a class="tooltip" href='/docs/reference/library/2i/#dep-by' title="Difference as patch (map)"><code>+-dep:by</code></a>
983−<a class="tooltip" href='/docs/reference/library/2i/#dig-by' title="Address of key (map)"><code>+-dig:by</code></a>
984−<a class="tooltip" href='/docs/reference/library/2i/#gas-by' title="Concatenate (map)"><code>+-gas:by</code></a>
985−<a class="tooltip" href='/docs/reference/library/2i/#get-by' title="Grab unit value"><code>+-get:by</code></a>
986−<a class="tooltip" href='/docs/reference/library/2i/#got-by' title="Assert for value (map)"><code>+-got:by</code></a>
987−<a class="tooltip" href='/docs/reference/library/2i/#has-by' title="Key existence check (map)"><code>+-has:by</code></a>
988−<a class="tooltip" href='/docs/reference/library/2i/#int-by' title="Intersection (map)"><code>+-int:by</code></a>
989−<a class="tooltip" href='/docs/reference/library/2i/#mar-by' title="Assert and add (map)"><code>+-mar:by</code></a>
990−<a class="tooltip" href='/docs/reference/library/2i/#put-by' title="Add key-value pair (map)"><code>+-put:by</code></a>
991−<a class="tooltip" href='/docs/reference/library/2i/#rep-by' title="Replace by product (map)"><code>+-rep:by</code></a>
992−<a class="tooltip" href='/docs/reference/library/2i/#rib-by' title="Replace values with accumulator (map)"><code>+-rib:by</code></a>
993−<a class="tooltip" href='/docs/reference/library/2i/#run-by' title="Transform values (map)"><code>+-run:by</code></a>
994−<a class="tooltip" href='/docs/reference/library/2i/#rut-by' title="Transform nodes (map)"><code>+-rut:by</code></a>
995−<a class="tooltip" href='/docs/reference/library/2i/#tap-by' title="Listify pairs"><code>+-tap:by</code></a>
996−<a class="tooltip" href='/docs/reference/library/2i/#uni-by' title="Union (map between keys of two lists)"><code>+-uni:by</code></a>
997−<a class="tooltip" href='/docs/reference/library/2i/#urn-by' title="Turn (with key) (map)"><code>+-urn:by</code></a>
998−<a class="tooltip" href='/docs/reference/library/2i/#wyt-by' title="Produce depth of tree map"><code>+-wyt:by</code></a>
999−
1000−### 2j: jar and jug logic
1001−
1002−<a class="tooltip" href='/docs/reference/library/2j/#ja' title="Jar engine"><code>++ja</code></a>
1003−<a class="tooltip" href='/docs/reference/library/2j/#add-ja' title="Prepend to list"><code>+-add:ja</code></a>
1004−<a class="tooltip" href='/docs/reference/library/2j/#get-ja' title="Grab value by key"><code>+-get:ja</code></a>
1005−
1006−<a class="tooltip" href='/docs/reference/library/2j/#ju' title="Jug operations"><code>++ju</code></a>
1007−<a class="tooltip" href='/docs/reference/library/2j/#del-ju' title="Delete (jug)"><code>+-del:ju</code></a>
1008−<a class="tooltip" href='/docs/reference/library/2j/#get-ju' title="Retrieve set"><code>+-get:ju</code></a>
1009−<a class="tooltip" href='/docs/reference/library/2j/#has-ju' title="Check contents (jug)"><code>+-has:ju</code></a>
1010−<a class="tooltip" href='/docs/reference/library/2j/#put-ju' title="Add key-set pair (jar)"><code>+-put:ju</code></a>
1011−
1012−### 2k: queue logic
1013−
1014−<a class="tooltip" href='/docs/reference/library/2k/#to' title="Queue operations"><code>++to</code></a>
1015−<a class="tooltip" href='/docs/reference/library/2k/#bal-to' title="Balance queue"><code>+-bal:to</code></a>
1016−<a class="tooltip" href='/docs/reference/library/2k/#dep-to' title="Maximum depth (queue)"><code>+-dep:to</code></a>
1017−<a class="tooltip" href='/docs/reference/library/2k/#gas-to' title="Push list into queue"><code>+-gas:to</code></a>
1018−<a class="tooltip" href='/docs/reference/library/2k/#get-to' title="Head-tail pair"><code>+-get:to</code></a>
1019−<a class="tooltip" href='/docs/reference/library/2k/#nap-to' title="Remove head of queue"><code>+-nap:to</code></a>
1020−<a class="tooltip" href='/docs/reference/library/2k/#nip-to' title="Remove root of queue"><code>+-nip:to</code></a>
1021−<a class="tooltip" href='/docs/reference/library/2k/#put-to' title="Insert into queue"><code>+-put:to</code></a>
1022−<a class="tooltip" href='/docs/reference/library/2k/#tap-to' title="Queue to list"><code>+-tap:to</code></a>
1023−<a class="tooltip" href='/docs/reference/library/2k/#top-to' title="Produce head of queue"><code>+-top:to</code></a>
1024−
1025−### 2l: container from container
1026−
1027−<a class="tooltip" href='/docs/reference/library/2l/#malt' title="Map from list"><code>++malt</code></a>
1028−<a class="tooltip" href='/docs/reference/library/2l/#molt' title="Map from pair list"><code>++molt</code></a>
1029−<a class="tooltip" href='/docs/reference/library/2l/#silt' title="Produce set from list"><code>++silt</code></a>
1030−
1031−### 2m: container from noun
1032−
1033−<a class="tooltip" href='/docs/reference/library/2m/#nl' title="Noun to container operations"><code>++nl</code></a>
1034−<a class="tooltip" href='/docs/reference/library/2m/#le-nl' title="Construct list from null-terminated noun"><code>++le:nl</code></a>
1035−<a class="tooltip" href='/docs/reference/library/2m/#my-nl' title="Construct map from null-terminated noun"><code>++my:nl</code></a>
1036−<a class="tooltip" href='/docs/reference/library/2m/#si-nl' title="Construct set from null-terminated noun"><code>++si:nl</code></a>
1037−<a class="tooltip" href='/docs/reference/library/2m/#snag-nl' title="Produce element from list at specific null-terminated noun"><code>++snag:nl</code></a>
1038−<a class="tooltip" href='/docs/reference/library/2m/#weld-nl' title="Concatenate null-terminated nouns"><code>++weld:nl</code></a>
1039−
1040−<a class="tooltip" href='/docs/reference/library/2m/#ly' title="List from raw noun"><code>++ly</code></a>
1041−<a class="tooltip" href='/docs/reference/library/2m/#my' title="Map from raw noun"><code>++my</code></a>
1042−<a class="tooltip" href='/docs/reference/library/2m/#sy' title="Produce set from null-terminated noun"><code>++sy</code></a>
1043−
1044−### 2n: functional hacks
1045−
1046−<a class="tooltip" href='/docs/reference/library/2n/#cork' title="Compose forward"><code>++cork</code></a>
1047−<a class="tooltip" href='/docs/reference/library/2n/#corl' title="Compose backward"><code>++corl</code></a>
1048−<a class="tooltip" href='/docs/reference/library/2n/#curr' title="Right-curry a gate"><code>++curr</code></a>
1049−<a class="tooltip" href='/docs/reference/library/2n/#cury' title="Curry left a gate"><code>++cury</code></a>
1050−<a class="tooltip" href='/docs/reference/library/2n/#hard' title="Force remold"><code>++hard</code></a>
1051−<a class="tooltip" href='/docs/reference/library/2n/#head' title="Get head of cell"><code>++head</code></a>
1052−<a class="tooltip" href='/docs/reference/library/2n/#mean' title="Crash and printf"><code>++mean</code></a>
1053−<a class="tooltip" href='/docs/reference/library/2n/#same' title="Identity (produces same value)"><code>++same</code></a>
1054−<a class="tooltip" href='/docs/reference/library/2n/#slog' title="Deify printf"><code>++slog</code></a>
1055−<a class="tooltip" href='/docs/reference/library/2n/#soft' title="Maybe remold"><code>++soft</code></a>
1056−<a class="tooltip" href='/docs/reference/library/2n/#tail' title="Get tail of cell"><code>++tail</code></a>
1057−<a class="tooltip" href='/docs/reference/library/2n/#test' title="Test for equality"><code>++test</code></a>
1058−
1059−### 2o: normalizing containers
1060−
1061−<a class="tooltip" href='/docs/reference/library/2o/#jar' title="Mold generator (jar)"><code>++jar</code></a>
1062−<a class="tooltip" href='/docs/reference/library/2o/#jug' title="Mold generator (jug)"><code>++jug</code></a>
1063−<a class="tooltip" href='/docs/reference/library/2o/#map' title="Mold generator (map)"><code>++map</code></a>
1064−<a class="tooltip" href='/docs/reference/library/2o/#qeu' title="Mold generator (queue)"><code>++qeu</code></a>
1065−<a class="tooltip" href='/docs/reference/library/2o/#set' title="Mold generator (set)"><code>++set</code></a>
1066−
1067−### 2p: serialization
1068−
1069−<a class="tooltip" href='/docs/reference/library/2p/#cue' title="Unpack atom to noun"><code>++cue</code></a>
1070−<a class="tooltip" href='/docs/reference/library/2p/#jam' title="Pack noun to atom"><code>++jam</code></a>
1071−<a class="tooltip" href='/docs/reference/library/2p/#mat' title="Length-encode"><code>++mat</code></a>
1072−<a class="tooltip" href='/docs/reference/library/2p/#rub' title="Length-decode"><code>++rub</code></a>
1073−
1074−### 2q: molds and mold builders
1075−
1076−<a class="tooltip" href='/docs/reference/library/2q/#char' title="Character"><code>++char</code></a>
1077−<a class="tooltip" href='/docs/reference/library/2q/#cord' title="UTF-8 text"><code>++cord</code></a>
1078−<a class="tooltip" href='/docs/reference/library/2q/#date' title="Point in time"><code>++date</code></a>
1079−<a class="tooltip" href='/docs/reference/library/2q/#knot' title="Atom type of ASCII characters"><code>++knot</code></a>
1080−<a class="tooltip" href='/docs/reference/library/2q/#tang' title="Generic print structure"><code>++tang</code></a>
1081−<a class="tooltip" href='/docs/reference/library/2q/#tank' title="Pretty-printing structure"><code>++tank</code></a>
1082−<a class="tooltip" href='/docs/reference/library/2q/#tape' title="List of characters"><code>++tape</code></a>
1083−<a class="tooltip" href='/docs/reference/library/2q/#tarp' title="Parsed time"><code>++tarp</code></a>
1084−<a class="tooltip" href='/docs/reference/library/2q/#term' title="Hoon constant"><code>++term</code></a>
1085−<a class="tooltip" href='/docs/reference/library/2q/#wain' title="List of cords"><code>++wain</code></a>
1086−<a class="tooltip" href='/docs/reference/library/2q/#wall' title="List of list of characters"><code>++wall</code></a>
1087−
1088−### 3a: modular and signed ints
1089−
1090−<a class="tooltip" href='/docs/reference/library/3a/#fo' title="Modulo prime"><code>++fo</code></a>
1091−<a class="tooltip" href='/docs/reference/library/3a/#dif-fo' title='Subtraction (modular base)'><code>++dif:fo</code></a>
1092−<a class="tooltip" href='/docs/reference/library/3a/#exp-fo' title="Exponent (modular base)"><code>++exp:fo</code></a>
1093−<a class="tooltip" href='/docs/reference/library/3a/#fra-fo' title="Divide (modular base)"><code>++fra:fo</code></a>
1094−<a class="tooltip" href='/docs/reference/library/3a/#inv-fo' title="Inverse (signed modulus)"><code>++inv:fo</code></a>
1095−<a class="tooltip" href='/docs/reference/library/3a/#pro-fo' title="Multiplies b and c modulo a"><code>++pro:fo</code></a>
1096−<a class="tooltip" href='/docs/reference/library/3a/#sit-fo' title="Produce remainder of b modulo a"><code>++sit:fo</code></a>
1097−<a class="tooltip" href='/docs/reference/library/3a/#sum-fo' title="Modular sum"><code>++sum:fo</code></a>
1098−
1099−<a class="tooltip" href='/docs/reference/library/3a/#si' title="Signed integer"><code>++si</code></a>
1100−<a class="tooltip" href='/docs/reference/library/3a/#abs-si' title="Absolute value (signed integer)"><code>++abs:si</code></a>
1101−<a class="tooltip" href='/docs/reference/library/3a/#cmp-si' title="Compare (signed integer)"><code>++cmp:si</code></a>
1102−<a class="tooltip" href='/docs/reference/library/3a/#dif-si' title="Subtraction (signed integer)"><code>++dif:si</code></a>
1103−<a class="tooltip" href='/docs/reference/library/3a/#dul-si' title="Modulus (signed integer)"><code>++dul:si</code></a>
1104−<a class="tooltip" href='/docs/reference/library/3a/#fra-si' title="Divide (signed integer)"><code>++fra:si</code></a>
1105−<a class="tooltip" href='/docs/reference/library/3a/#new-si' title="Atom to @s"><code>++new:si</code></a>
1106−<a class="tooltip" href='/docs/reference/library/3a/#old-si' title="Sign and absolute value"><code>++old:si</code></a>
1107−<a class="tooltip" href='/docs/reference/library/3a/#pro-si' title="Multiply to signed integer"><code>++pro:si</code></a>
1108−<a class="tooltip" href='/docs/reference/library/3a/#rem-si' title="Remainder (signed integer)"><code>++rem:si</code></a>
1109−<a class="tooltip" href='/docs/reference/library/3a/#sum-si' title="Addition (signed integer)"><code>++sum:si</code></a>
1110−<a class="tooltip" href='/docs/reference/library/3a/#sun-si' title="@u to @s"><code>++sun:si</code></a>
1111−<a class="tooltip" href='/docs/reference/library/3a/#syn-si' title="Sign test"><code>++syn:si</code></a>
1112−
1113−<a class="tooltip" href='/docs/reference/library/3a/#egcd' title="Extended Euclidean algorithm"><code>++egcd</code></a>
1114−
1115−### 3b: floating point
1116−
1117−<a class="tooltip" href='/docs/reference/library/3b/#dn'><code>++dn</code></a>
1118−<a class="tooltip" href='/docs/reference/library/3b/#fn'><code>++fn</code></a>
1119−<a class="tooltip" href='/docs/reference/library/3b/#rn'><code>++rn</code></a>
1120−
1121−<a class="tooltip" href='/docs/reference/library/3b/#ff'><code>++ff</code></a>
1122−<a class="tooltip" href='/docs/reference/library/3b/#add-ff' title="Add (floating point)"><code>++add:ff</code></a>
1123−<a class="tooltip" href='/docs/reference/library/3b/#bif-ff' title="Converts from fn to @r"><code>++bif:ff</code></a>
1124−<a class="tooltip" href='/docs/reference/library/3b/#bit-ff' title="fn to @r with rounding"><code>++bit:ff</code></a>
1125−<a class="tooltip" href='/docs/reference/library/3b/#div-ff' title="Divide (IEEE float)"><code>++div:ff</code></a>
1126−<a class="tooltip" href='/docs/reference/library/3b/#drg-ff' title="@r to decimal float"><code>++drg:ff</code></a>
1127−<a class="tooltip" href='/docs/reference/library/3b/#equ-ff' title="Equals (IEEE float)"><code>++equ:ff</code></a>
1128−<a class="tooltip" href='/docs/reference/library/3b/#exp-ff' title="Get exponent (IEEE float)"><code>++exp:ff</code></a>
1129−<a class="tooltip" href='/docs/reference/library/3b/#fma-ff' title="Fused multiply-add (IEEE float)"><code>++fma:ff</code></a>
1130−<a class="tooltip" href='/docs/reference/library/3b/#grd-ff' title="Decimal float to @r"><code>++grd:ff</code></a>
1131−<a class="tooltip" href='/docs/reference/library/3b/#gte-ff' title="Greater than / equal (IEEE float)"><code>++gte:ff</code></a>
1132−<a class="tooltip" href='/docs/reference/library/3b/#gth-ff' title="Greater than (IEEE float)"><code>++gth:ff</code></a>
1133−<a class="tooltip" href='/docs/reference/library/3b/#lte-ff' title="Less than / equal (IEEE float)"><code>++lte:ff</code></a>
1134−<a class="tooltip" href='/docs/reference/library/3b/#lth-ff' title="Less than (IEEE float)"><code>++lth:ff</code></a>
1135−<a class="tooltip" href='/docs/reference/library/3b/#me-ff' title="Minimum exponent of ff"><code>++me:ff</code></a>
1136−<a class="tooltip" href='/docs/reference/library/3b/#mul-ff' title="Multiply (IEEE float)"><code>++mul:ff</code></a>
1137−<a class="tooltip" href='/docs/reference/library/3b/#pa-ff' title="Initialize fl from ff core"><code>++pa:ff</code></a>
1138−<a class="tooltip" href='/docs/reference/library/3b/#san-ff' title="Signed integer to @r"><code>++san:ff</code></a>
1139−<a class="tooltip" href='/docs/reference/library/3b/#sb-ff' title="Sign bit"><code>++sb:ff</code></a>
1140−<a class="tooltip" href='/docs/reference/library/3b/#sea-ff' title="Convert from IEEE float to fn"><code>++sea:ff</code></a>
1141−<a class="tooltip" href='/docs/reference/library/3b/#sig-ff' title="Produce sign of IEEE float"><code>++sig:ff</code></a>
1142−<a class="tooltip" href='/docs/reference/library/3b/#sqt-ff' title="Produce square root from IEEE float"><code>++sqt:ff</code></a>
1143−<a class="tooltip" href='/docs/reference/library/3b/#sub-ff' title="Subtract from IEEE float"><code>++sub:ff</code></a>
1144−<a class="tooltip" href='/docs/reference/library/3b/#sun-ff' title="Unsigned integer to IEEE float"><code>++sun:ff</code></a>
1145−<a class="tooltip" href='/docs/reference/library/3b/#toi-ff' title="Round IEEE float to nearest signed integer"><code>++toi:ff</code></a>
1146−
1147−<a class="tooltip" href='/docs/reference/library/3b/#fl'><code>++fl</code></a>
1148−<a class="tooltip" href='/docs/reference/library/3b/#abs-fl' title="Absolute value"><code>++abs:fl</code></a>
1149−<a class="tooltip" href='/docs/reference/library/3b/#add-fl' title="Add (with exact/rounded flag)"><code>++add:fl</code></a>
1150−<a class="tooltip" href='/docs/reference/library/3b/#den-fl' title="Denormalizes (floating point)"><code>++den:fl</code></a>
1151−<a class="tooltip" href='/docs/reference/library/3b/#div-fl' title="Divide (signed and unsigned integer cell)"><code>++div:fl</code></a>
1152−<a class="tooltip" href='/docs/reference/library/3b/#drg-fl' title="Get printable decimal (signed and unsigned integer cell)"><code>++drg:fl</code></a>
1153−<a class="tooltip" href='/docs/reference/library/3b/#ead-fl' title="Exact add"><code>++ead:fl</code></a>
1154−<a class="tooltip" href='/docs/reference/library/3b/#emn-fl' title="Minimum exponent"><code>++emn:fl</code></a>
1155−<a class="tooltip" href='/docs/reference/library/3b/#emu-fl' title="Exact multiply"><code>++emu:fl</code></a>
1156−<a class="tooltip" href='/docs/reference/library/3b/#emx-fl' title="Maximum exponent"><code>++emx:fl</code></a>
1157−<a class="tooltip" href='/docs/reference/library/3b/#equ-fl' title="Equals (signed and unsigned integer cell)"><code>++equ:fl</code></a>
1158−<a class="tooltip" href='/docs/reference/library/3b/#fli-fl' title="Flip sign"><code>++fli:fl</code></a>
1159−<a class="tooltip" href='/docs/reference/library/3b/#fma-fl' title="Fused multiply-add"><code>++fma:fl</code></a>
1160−<a class="tooltip" href='/docs/reference/library/3b/#grd-fl' title="Decimal to float"><code>++grd:fl</code></a>
1161−<a class="tooltip" href='/docs/reference/library/3b/#gte-fl' title="Greater than / equal (producing flag)"><code>++gte:fl</code></a>
1162−<a class="tooltip" href='/docs/reference/library/3b/#gth-fl' title="Greater than (producing flag)"><code>++gth:fl</code></a>
1163−<a class="tooltip" href='/docs/reference/library/3b/#ibl-fl' title="Integer binary logarithm"><code>++ibl:fl</code></a>
1164−<a class="tooltip" href='/docs/reference/library/3b/#inv-fl' title="Inverse"><code>++inv:fl</code></a>
1165−<a class="tooltip" href='/docs/reference/library/3b/#lfe-fl' title="Maximum"><code>++lfe:fl</code></a>
1166−<a class="tooltip" href='/docs/reference/library/3b/#lfn-fl' title="Largest normal float"><code>++lfn:fl</code></a>
1167−<a class="tooltip" href='/docs/reference/library/3b/#lte-fl' title="Less than / equal (producing flag)"><code>++lte:fl</code></a>
1168−<a class="tooltip" href='/docs/reference/library/3b/#lth-fl' title="Less than (signed and unsigned integer cell)"><code>++lth:fl</code></a>
1169−<a class="tooltip" href='/docs/reference/library/3b/#lug-fl' title="Central rounding mechanism"><code>++lug:fl</code></a>
1170−<a class="tooltip" href='/docs/reference/library/3b/#mul-fl' title="Multiply (signed and unsigned integer cell)"><code>++mul:fl</code></a>
1171−<a class="tooltip" href='/docs/reference/library/3b/#ned-fl' title="Require float"><code>++ned:fl</code></a>
1172−<a class="tooltip" href='/docs/reference/library/3b/#prc-fl' title="Force precision of 2 or greater (floating point)"><code>++prc:fl</code></a>
1173−<a class="tooltip" href='/docs/reference/library/3b/#rau-fl' title="Various roundings (floating point)"><code>++rau:fl</code></a>
1174−<a class="tooltip" href='/docs/reference/library/3b/#rou-fl' title="Round to nearest float with 113-bit significand"><code>++rou:fl</code></a>
1175−<a class="tooltip" href='/docs/reference/library/3b/#san-fl' title="Signed integer to float"><code>++san:fl</code></a>
1176−<a class="tooltip" href='/docs/reference/library/3b/#shf-fl' title="Shift power"><code>++shf:fl</code></a>
1177−<a class="tooltip" href='/docs/reference/library/3b/#spd-fl' title="Produce smallest denormalized float"><code>++spd:fl</code></a>
1178−<a class="tooltip" href='/docs/reference/library/3b/#spn-fl' title="Produce smallest normal float"><code>++spn:fl</code></a>
1179−<a class="tooltip" href='/docs/reference/library/3b/#sqt-fl' title="Produce square root from signed and unsigned integer cell"><code>++sqt:fl</code></a>
1180−<a class="tooltip" href='/docs/reference/library/3b/#sub-fl' title="Subtract from signed and unsigned integer cells"><code>++sub:fl</code></a>
1181−<a class="tooltip" href='/docs/reference/library/3b/#sun-fl' title="Unsigned integer to float"><code>++sun:fl</code></a>
1182−<a class="tooltip" href='/docs/reference/library/3b/#swr-fl' title="Switch rounding mode of floating point"><code>++swr:fl</code></a>
1183−<a class="tooltip" href='/docs/reference/library/3b/#syn-fl' title="Get sign"><code>++syn:fl</code></a>
1184−<a class="tooltip" href='/docs/reference/library/3b/#toi-fl' title="Round float to nearest signed integer"><code>++toi:fl</code></a>
1185−<a class="tooltip" href='/docs/reference/library/3b/#toj-fl' title="Round unsigned and signed integer to float"><code>++toj:fl</code></a>
1186−<a class="tooltip" href='/docs/reference/library/3b/#uni-fl' title="Change representation to odd"><code>++uni:fl</code></a>
1187−<a class="tooltip" href='/docs/reference/library/3b/#xpd-fl' title="Expand signed and unsigned integer cell"><code>++xpd:fl</code></a>
1188−<a class="tooltip" href='/docs/reference/library/3b/#zer-fl' title="Produce zero as float"><code>++zer:fl</code></a>
1189−
1190−<a class="tooltip" href='/docs/reference/library/3b/#rd'><code>++rd</code></a>
1191−<a class="tooltip" href='/docs/reference/library/3b/#add-rd' title="Add (double-precision float)"><code>++add:rd</code></a>
1192−<a class="tooltip" href='/docs/reference/library/3b/#bit-rd' title="fn to double-precision binary float"><code>++bit:rd</code></a>
1193−<a class="tooltip" href='/docs/reference/library/3b/#div-rd' title="Double precision float"><code>++div:rd</code></a>
1194−<a class="tooltip" href='/docs/reference/library/3b/#drg-rd' title="@rd to decimal float"><code>++drg:rd</code></a>
1195−<a class="tooltip" href='/docs/reference/library/3b/#equ-rd' title="Equals (double-precision float)"><code>++equ:rd</code></a>
1196−<a class="tooltip" href='/docs/reference/library/3b/#exp-rd' title="Exponent (@rd)"><code>++exp:rd</code></a>
1197−<a class="tooltip" href='/docs/reference/library/3b/#fma-rd' title="Fused multiply-add (@rd)"><code>++fma:rd</code></a>
1198−<a class="tooltip" href='/docs/reference/library/3b/#grd-rd' title="Decimal float to @rd"><code>++grd:rd</code></a>
1199−<a class="tooltip" href='/docs/reference/library/3b/#gte-rd' title="Greater than / equal (double-precision float)"><code>++gte:rd</code></a>
1200−<a class="tooltip" href='/docs/reference/library/3b/#gth-rd' title="Greater than (double-precision float)"><code>++gth:rd</code></a>
1201−<a class="tooltip" href='/docs/reference/library/3b/#lte-rd' title="Less than / equal (double-precision float)"><code>++lte:rd</code></a>
1202−<a class="tooltip" href='/docs/reference/library/3b/#lth-rd' title="Less than (double-precision float)"><code>++lth:rd</code></a>
1203−<a class="tooltip" href='/docs/reference/library/3b/#ma-rd' title="Initialize ff (rd core)"><code>++ma:rd</code></a>
1204−<a class="tooltip" href='/docs/reference/library/3b/#mul-rd' title="Multiply (double-precision float)"><code>++mul:rd</code></a>
1205−<a class="tooltip" href='/docs/reference/library/3b/#san-rd' title="Unsigned integer to @rd"><code>++san:rd</code></a>
1206−<a class="tooltip" href='/docs/reference/library/3b/#sea-rd' title="Convert from double-precision binary float to fn"><code>++sea:rd</code></a>
1207−<a class="tooltip" href='/docs/reference/library/3b/#sig-rd' title="Produce sign of @rd"><code>++sig:rd</code></a>
1208−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rd' title="Produce square root of double-precision float"><code>++sqt:rd</code></a>
1209−<a class="tooltip" href='/docs/reference/library/3b/#sub-rd' title="Subtract from double-precision float"><code>++sub:rd</code></a>
1210−<a class="tooltip" href='/docs/reference/library/3b/#sun-rd' title="Unsigned integer to double-precision float"><code>++sun:rd</code></a>
1211−<a class="tooltip" href='/docs/reference/library/3b/#toi-rd' title="Round double-precision float to nearest signed integer"><code>++toi:rd</code></a>
1212−
1213−<a class="tooltip" href='/docs/reference/library/3b/#rh'><code>++rh</code></a>
1214−<a class="tooltip" href='/docs/reference/library/3b/#add-rh' title="Add (half-precision float)"><code>++add:rh</code></a>
1215−<a class="tooltip" href='/docs/reference/library/3b/#bit-rh' title="fn to half-precision float"><code>++bit:rh</code></a>
1216−<a class="tooltip" href='/docs/reference/library/3b/#div-rh' title="Divide (half-precision float)"><code>++div:rh</code></a>
1217−<a class="tooltip" href='/docs/reference/library/3b/#drg-rh' title="@rh to decimal float"><code>++drg:rh</code></a>
1218−<a class="tooltip" href='/docs/reference/library/3b/#equ-rh' title="Equals (half-precision float)"><code>++equ:rh</code></a>
1219−<a class="tooltip" href='/docs/reference/library/3b/#exp-rh' title="Exponent (half-precision float)"><code>++exp:rh</code></a>
1220−<a class="tooltip" href='/docs/reference/library/3b/#fma-rh' title="Fused multiply-add (half-precision float)"><code>++fma:rh</code></a>
1221−<a class="tooltip" href='/docs/reference/library/3b/#fos-rh' title="@rs to @rh"><code>++fos:rh</code></a>
1222−<a class="tooltip" href='/docs/reference/library/3b/#grd-rh' title="Decimal float to @rh"><code>++grd:rh</code></a>
1223−<a class="tooltip" href='/docs/reference/library/3b/#gte-rh' title="Greater than / equal (half-precision float)"><code>++gte:rh</code></a>
1224−<a class="tooltip" href='/docs/reference/library/3b/#gth-rh' title="Greater than (half-precision float)"><code>++gth:rh</code></a>
1225−<a class="tooltip" href='/docs/reference/library/3b/#lte-rh' title="Less than / equal (half-precision float)"><code>++lte:rh</code></a>
1226−<a class="tooltip" href='/docs/reference/library/3b/#lth-rh' title="Less than (half-precision float)"><code>++lth:rh</code></a>
1227−<a class="tooltip" href='/docs/reference/library/3b/#ma-rh' title="Initialize ff (rh core)"><code>++ma:rh</code></a>
1228−<a class="tooltip" href='/docs/reference/library/3b/#mul-rh' title="Multiply (quad-precision float)"><code>++mul:rh</code></a>
1229−<a class="tooltip" href='/docs/reference/library/3b/#san-rh' title="Signed integer to @rh"><code>++san:rh</code></a>
1230−<a class="tooltip" href='/docs/reference/library/3b/#sea-rh' title="Convert from half-precision float to fn"><code>++sea:rh</code></a>
1231−<a class="tooltip" href='/docs/reference/library/3b/#sig-rh' title="Produce sign of half-precision float"><code>++sig:rh</code></a>
1232−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rh' title="Produce square root of half-precision float"><code>++sqt:rh</code></a>
1233−<a class="tooltip" href='/docs/reference/library/3b/#sub-rh' title="Subtract from half-precision float"><code>++sub:rh</code></a>
1234−<a class="tooltip" href='/docs/reference/library/3b/#sun-rh' title="Unsigned integer to half-precision float"><code>++sun:rh</code></a>
1235−<a class="tooltip" href='/docs/reference/library/3b/#toi-rh' title="Round half-precision float to nearest signed integer"><code>++toi:rh</code></a>
1236−<a class="tooltip" href='/docs/reference/library/3b/#tos-rh' title="Convert half-precision float to single-precision float"><code>++tos:rh</code></a>
1237−
1238−<a class="tooltip" href='/docs/reference/library/3b/#rs'><code>++rs</code></a>
1239−<a class="tooltip" href='/docs/reference/library/3b/#add-rs' title="Add (single-precision float)"><code>++add:rs</code></a>
1240−<a class="tooltip" href='/docs/reference/library/3b/#bit-rs' title="fn to single-precision float"><code>++bit:rs</code></a>
1241−<a class="tooltip" href='/docs/reference/library/3b/#div-rs' title="Divide (single-precision float)"><code>++div:rs</code></a>
1242−<a class="tooltip" href='/docs/reference/library/3b/#drg-rs' title="@rs to decimal float"><code>++drg:rs</code></a>
1243−<a class="tooltip" href='/docs/reference/library/3b/#equ-rs' title="Equals (single-precision float)"><code>++equ:rs</code></a>
1244−<a class="tooltip" href='/docs/reference/library/3b/#exp-rs' title="Exponent (@rs)"><code>++exp:rs</code></a>
1245−<a class="tooltip" href='/docs/reference/library/3b/#fma-rs' title="Fused multiply-add (single-precision float)"><code>++fma:rs</code></a>
1246−<a class="tooltip" href='/docs/reference/library/3b/#grd-rs' title="Decimal float to @rs"><code>++grd:rs</code></a>
1247−<a class="tooltip" href='/docs/reference/library/3b/#gte-rs' title="Greater than / equal (single-precision float)"><code>++gte:rs</code></a>
1248−<a class="tooltip" href='/docs/reference/library/3b/#gth-rs' title="Greater than (single-precision float)"><code>++gth:rs</code></a>
1249−<a class="tooltip" href='/docs/reference/library/3b/#lte-rs' title="Less than / equal (single-precision float)"><code>++lte:rs</code></a>
1250−<a class="tooltip" href='/docs/reference/library/3b/#lth-rs' title="Less than (single-precision float)"><code>++lth:rs</code></a>
1251−<a class="tooltip" href='/docs/reference/library/3b/#ma-rs' title="Initialize ff (rs core)"><code>++ma:rs</code></a>
1252−<a class="tooltip" href='/docs/reference/library/3b/#mul-rs' title="Multiply (single-precision float)"><code>++mul:rs</code></a>
1253−<a class="tooltip" href='/docs/reference/library/3b/#san-rs' title="Signed integer to @rs"><code>++san:rs</code></a>
1254−<a class="tooltip" href='/docs/reference/library/3b/#sea-rs' title="Convert from single-precision float to fn"><code>++sea:rs</code></a>
1255−<a class="tooltip" href='/docs/reference/library/3b/#sig-rs' title="Produce sign of @rs"><code>++sig:rs</code></a>
1256−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rs' title="Produce square root of single-precision float"><code>++sqt:rs</code></a>
1257−<a class="tooltip" href='/docs/reference/library/3b/#sub-rs' title="Subtract from single-precision float"><code>++sub:rs</code></a>
1258−<a class="tooltip" href='/docs/reference/library/3b/#sun-rs' title="Unsigned integer to single-precision float"><code>++sun:rs</code></a>
1259−<a class="tooltip" href='/docs/reference/library/3b/#toi-rs' title="Round single-precision float to nearest signed integer"><code>++toi:rs</code></a>
1260−
1261−<a class="tooltip" href='/docs/reference/library/3b/#rq'><code>++rq</code></a>
1262−<a class="tooltip" href='/docs/reference/library/3b/#add-rq' title="Add (quad-precision float)"><code>++add:rq</code></a>
1263−<a class="tooltip" href='/docs/reference/library/3b/#bit-rq' title="fn to quad-precision float"><code>++bit:rq</code></a>
1264−<a class="tooltip" href='/docs/reference/library/3b/#div-rq' title="Divide (quad-precision float)"><code>++div:rq</code></a>
1265−<a class="tooltip" href='/docs/reference/library/3b/#drg-rq' title="@rq to decimal float"><code>++drg:rq</code></a>
1266−<a class="tooltip" href='/docs/reference/library/3b/#equ-rq' title="Equals (quad-precision float)"><code>++equ:rq</code></a>
1267−<a class="tooltip" href='/docs/reference/library/3b/#exp-rq' title="Exponent (quad-precision float)"><code>++exp:rq</code></a>
1268−<a class="tooltip" href='/docs/reference/library/3b/#fma-rq' title="Fused multiply-add (quad-precision float)"><code>++fma:rq</code></a>
1269−<a class="tooltip" href='/docs/reference/library/3b/#grd-rq' title="Decimal float to @rq"><code>++grd:rq</code></a>
1270−<a class="tooltip" href='/docs/reference/library/3b/#gte-rq' title="Greater than / equal (quad-precision float)"><code>++gte:rq</code></a>
1271−<a class="tooltip" href='/docs/reference/library/3b/#gth-rq' title="Greater than (quad-precision float)"><code>++gth:rq</code></a>
1272−<a class="tooltip" href='/docs/reference/library/3b/#lte-rq' title="Less than / equal (quad-precision float)"><code>++lte:rq</code></a>
1273−<a class="tooltip" href='/docs/reference/library/3b/#lth-rq' title="Less than (quad-precision float)"><code>++lth:rq</code></a>
1274−<a class="tooltip" href='/docs/reference/library/3b/#ma-rq' title="Initialize ff (rq core)"><code>++ma:rq</code></a>
1275−<a class="tooltip" href='/docs/reference/library/3b/#mul-rq' title="Multiply (quad-precision float)"><code>++mul:rq</code></a>
1276−<a class="tooltip" href='/docs/reference/library/3b/#san-rq' title="Signed integer to @rq"><code>++san:rq</code></a>
1277−<a class="tooltip" href='/docs/reference/library/3b/#sea-rq' title="Convert from quad-precision float to fn"><code>++sea:rq</code></a>
1278−<a class="tooltip" href='/docs/reference/library/3b/#sig-rq' title="Produce sign of quad-precision float"><code>++sig:rq</code></a>
1279−<a class="tooltip" href='/docs/reference/library/3b/#sqt-rq' title="Produce square root of quad-precision float"><code>++sqt:rq</code></a>
1280−<a class="tooltip" href='/docs/reference/library/3b/#sub-rq' title="Subtract from quad-precision float"><code>++sub:rq</code></a>
1281−<a class="tooltip" href='/docs/reference/library/3b/#sun-rq' title="Unsigned integer to quad-precision float"><code>++sun:rq</code></a>
1282−<a class="tooltip" href='/docs/reference/library/3b/#toi-rq' title="Round quad-precision float to nearest signed integer"><code>++toi:rq</code></a>
1283−
1284−<a class="tooltip" href='/docs/reference/library/3b/#rlyd'><code>++rlyd</code></a>
1285−<a class="tooltip" href='/docs/reference/library/3b/#rlyh'><code>++rlyh</code></a>
1286−<a class="tooltip" href='/docs/reference/library/3b/#rlyq'><code>++rlyq</code></a>
1287−<a class="tooltip" href='/docs/reference/library/3b/#rlys'><code>++rlys</code></a>
1288−<a class="tooltip" href='/docs/reference/library/3b/#ryld'><code>++ryld</code></a>
1289−<a class="tooltip" href='/docs/reference/library/3b/#rylh'><code>++rylh</code></a>
1290−<a class="tooltip" href='/docs/reference/library/3b/#rylq'><code>++rylq</code></a>
1291−<a class="tooltip" href='/docs/reference/library/3b/#ryls'><code>++ryls</code></a>
1292−
1293−### 3c: urbit time
1294−
1295−<a class="tooltip" href='/docs/reference/library/3c/#yo' title="Time constants core"><code>++yo</code></a>
1296−<a class="tooltip" href='/docs/reference/library/3c/#cet-yo' title="Days in a century"><code>++cet:yo</code></a>
1297−<a class="tooltip" href='/docs/reference/library/3c/#day-yo' title="Seconds in day"><code>++day:yo</code></a>
1298−<a class="tooltip" href='/docs/reference/library/3c/#era-yo' title="Leap-year period"><code>++era:yo</code></a>
1299−<a class="tooltip" href='/docs/reference/library/3c/#hor-yo' title="Seconds in hour"><code>++hor:yo</code></a>
1300−<a class="tooltip" href='/docs/reference/library/3c/#jes-yo' title="Maximum 64-bit timestamp"><code>++jes:yo</code></a>
1301−<a class="tooltip" href='/docs/reference/library/3c/#mit-yo' title="Seconds in minute"><code>++mit:yo</code></a>
1302−<a class="tooltip" href='/docs/reference/library/3c/#moh-yo' title="Days in month"><code>++moh:yo</code></a>
1303−<a class="tooltip" href='/docs/reference/library/3c/#moy-yo' title="Days in months of leap-year"><code>++moy:yo</code></a>
1304−<a class="tooltip" href='/docs/reference/library/3c/#qad-yo' title="Seconds in 4 years"><code>++qad:yo</code></a>
1305−<a class="tooltip" href='/docs/reference/library/3c/#yer-yo' title="Seconds in year"><code>++yer:yo</code></a>
1306−
1307−<a class="tooltip" href='/docs/reference/library/3c/#yall' title="Time since beginning of time"><code>++yall</code></a>
1308−<a class="tooltip" href='/docs/reference/library/3c/#yawn' title="Days since beginning of time"><code>++yawn</code></a>
1309−<a class="tooltip" href='/docs/reference/library/3c/#year' title="Date to @d"><code>++year</code></a>
1310−<a class="tooltip" href='/docs/reference/library/3c/#yell' title="Tarp from atomic date"><code>++yell</code></a>
1311−<a class="tooltip" href='/docs/reference/library/3c/#yelp' title="Determine if leap-week"><code>++yelp</code></a>
1312−<a class="tooltip" href='/docs/reference/library/3c/#yore' title="Date from atomic date"><code>++yore</code></a>
1313−<a class="tooltip" href='/docs/reference/library/3c/#yule' title="Daily time to time atom"><code>++yule</code></a>
1314−
1315−### 3d: SHA hash family
1316−
1317−<a class="tooltip" href='/docs/reference/library/3d/#og' title="Container arm for SHA-256 powered RNG"><code>++og</code></a>
1318−<a class="tooltip" href='/docs/reference/library/3d/#rad-og' title="Random in range"><code>++rad:og</code></a>
1319−<a class="tooltip" href='/docs/reference/library/3d/#rads-og' title="Random continuation"><code>++rads:og</code></a>
1320−<a class="tooltip" href='/docs/reference/library/3d/#raw-og' title="Random bits"><code>++raw:og</code></a>
1321−<a class="tooltip" href='/docs/reference/library/3d/#raws-og' title="Random bits continuation"><code>++raws:og</code></a>
1322−
1323−<a class="tooltip" href='/docs/reference/library/3d/#shad' title="Double SHA-256"><code>++shad</code></a>
1324−<a class="tooltip" href='/docs/reference/library/3d/#shaf' title="Half SHA-256"><code>++shaf</code></a>
1325−<a class="tooltip" href='/docs/reference/library/3d/#shal' title="SHA-512 with length"><code>++shal</code></a>
1326−<a class="tooltip" href='/docs/reference/library/3d/#sham' title="128-bit noun hash"><code>++sham</code></a>
1327−<a class="tooltip" href='/docs/reference/library/3d/#shan' title="SHA-1"><code>++shan</code></a>
1328−<a class="tooltip" href='/docs/reference/library/3d/#shas' title="Salted hash"><code>++shas</code></a>
1329−<a class="tooltip" href='/docs/reference/library/3d/#shaw' title="Hash to nbits"><code>++shaw</code></a>
1330−<a class="tooltip" href='/docs/reference/library/3d/#shax' title="SHA-256"><code>++shax</code></a>
1331−<a class="tooltip" href='/docs/reference/library/3d/#shay' title="SHA-256 with length"><code>++shay</code></a>
1332−<a class="tooltip" href='/docs/reference/library/3d/#shaz' title="SHA-512"><code>++shaz</code></a>
1333−
1334−### 3e: AES encryption
1335−
1336−<a href='/docs/reference/library/3e/'>_(removed)_</a>
1337−
1338−### 3f: scrambling
1339−
1340−<a class="tooltip" href='/docs/reference/library/3f/#ob' title="Reversible scrambling v2"><code>++ob</code></a>
1341−<a class="tooltip" href='/docs/reference/library/3f/#feen-ob' title="Conceal structure v2"><code>++feen:ob</code></a>
1342−<a class="tooltip" href='/docs/reference/library/3f/#fend-ob' title="Restore structure v2"><code>++fend:ob</code></a>
1343−<a class="tooltip" href='/docs/reference/library/3f/#fice-ob' title="Feistel-like cipher"><code>++fice:ob</code></a>
1344−<a class="tooltip" href='/docs/reference/library/3f/#raku-ob' title="Key list"><code>++raku:ob</code></a>
1345−<a class="tooltip" href='/docs/reference/library/3f/#rund-ob' title="Reverse single Feistel-like"><code>++rund:ob</code></a>
1346−<a class="tooltip" href='/docs/reference/library/3f/#rynd-ob' title="Reverse Feistel-like cipher"><code>++rynd:ob</code></a>
1347−<a class="tooltip" href='/docs/reference/library/3f/#teil-ob' title="Reverse Feistel-like cipher"><code>++teil:ob</code></a>
1348−
1349−<a class="tooltip" href='/docs/reference/library/3f/#un' title="Reversible scrambling"><code>++un</code></a>
1350−<a class="tooltip" href='/docs/reference/library/3f/#wred-un' title="Restore structure"><code>++wred:un</code></a>
1351−<a class="tooltip" href='/docs/reference/library/3f/#wren-un' title="Conceal structure"><code>++wren:un</code></a>
1352−<a class="tooltip" href='/docs/reference/library/3f/#xafo-un'><code>++xafo:un</code></a>
1353−<a class="tooltip" href='/docs/reference/library/3f/#xaro-un'><code>++xaro:un</code></a>
1354−<a class="tooltip" href='/docs/reference/library/3f/#zaft-un' title="Look up in 255 sub box"><code>++zaft:un</code></a>
1355−<a class="tooltip" href='/docs/reference/library/3f/#zart-un' title="Reverse look up in 255 sub box"><code>++zart:un</code></a>
1356−<a class="tooltip" href='/docs/reference/library/3f/#zyft-un' title="Lookup byte in 256 sub box"><code>++zyft:un</code></a>
1357−<a class="tooltip" href='/docs/reference/library/3f/#zyrt-un' title="Reverse lookup byte in 256 sub box"><code>++zyrt:un</code></a>
1358−
1359−### 3g: molds and mold builders
1360−
1361−<a class="tooltip" href='/docs/reference/library/3g/#coin' title="Noun-literal syntax cases"><code>++coin</code></a>
1362−<a class="tooltip" href='/docs/reference/library/3g/#dime' title="Aura-atom pair"><code>++dime</code></a>
1363−<a class="tooltip" href='/docs/reference/library/3g/#edge' title="Parsing location metadata"><code>++edge</code></a>
1364−<a class="tooltip" href='/docs/reference/library/3g/#hair' title="Parsing line and column"><code>++hair</code></a>
1365−<a class="tooltip" href='/docs/reference/library/3g/#like' title="Generic edge"><code>++like</code></a>
1366−<a class="tooltip" href='/docs/reference/library/3g/#nail' title="Location, remainder of parsed text"><code>++nail</code></a>
1367−<a class="tooltip" href='/docs/reference/library/3g/#path' title="Filesystem path"><code>++path</code></a>
1368−<a class="tooltip" href='/docs/reference/library/3g/#pint' title="Parsing range"><code>++pint</code></a>
1369−<a class="tooltip" href='/docs/reference/library/3g/#rule' title="Parsing rule (match this with _)"><code>++rule</code></a>
1370−<a class="tooltip" href='/docs/reference/library/3g/#spot' title="Stack trace line"><code>++spot</code></a>
1371−<a class="tooltip" href='/docs/reference/library/3g/#tone' title="Nock result (error report)"><code>++tone</code></a>
1372−<a class="tooltip" href='/docs/reference/library/3g/#toon' title="Nock result (stack trace)"><code>++toon</code></a>
1373−<a class="tooltip" href='/docs/reference/library/3g/#wonk' title="Product from edge"><code>++wonk</code></a>
1374−
1375−### 4a: exotic bases
1376−
1377−<a class="tooltip" href='/docs/reference/library/4a/#po' title="Phonetic base"><code>++po</code></a>
1378−<a class="tooltip" href='/docs/reference/library/4a/#ind-po' title="Parse suffix"><code>++ind:po</code></a>
1379−<a class="tooltip" href='/docs/reference/library/4a/#ins-po' title="Parse prefix"><code>++ins:po</code></a>
1380−<a class="tooltip" href='/docs/reference/library/4a/#tod-po' title="Fetch suffix"><code>++tod:po</code></a>
1381−<a class="tooltip" href='/docs/reference/library/4a/#tos-po' title="Fetch prefix"><code>++tos:po</code></a>
1382−
1383−### 4b: text processing
1384−
1385−<a class="tooltip" href='/docs/reference/library/4b/#at' title="(Undocumented)"><code>++at</code></a>
1386−<a class="tooltip" href='/docs/reference/library/4b/#r-at' title="(Undocumented)"><code>++r:at</code></a>
1387−<a class="tooltip" href='/docs/reference/library/4b/#rf-at' title="(Undocumented)"><code>++rf:at</code></a>
1388−<a class="tooltip" href='/docs/reference/library/4b/#rn-at' title="(Undocumented)"><code>++rn:at</code></a>
1389−<a class="tooltip" href='/docs/reference/library/4b/#rt-at' title="(Undocumented)"><code>++rt:at</code></a>
1390−<a class="tooltip" href='/docs/reference/library/4b/#rta-at' title="(Undocumented)"><code>++rta:at</code></a>
1391−<a class="tooltip" href='/docs/reference/library/4b/#rtam-at' title="(Undocumented)"><code>++rtam:at</code></a>
1392−<a class="tooltip" href='/docs/reference/library/4b/#rub-at' title="(Undocumented)"><code>++rub:at</code></a>
1393−<a class="tooltip" href='/docs/reference/library/4b/#rud-at' title="(Undocumented)"><code>++rud:at</code></a>
1394−<a class="tooltip" href='/docs/reference/library/4b/#rum-at' title="(Undocumented)"><code>++rum:at</code></a>
1395−<a class="tooltip" href='/docs/reference/library/4b/#rup-at' title="(Undocumented)"><code>++rup:at</code></a>
1396−<a class="tooltip" href='/docs/reference/library/4b/#ruv-at' title="(Undocumented)"><code>++ruv:at</code></a>
1397−<a class="tooltip" href='/docs/reference/library/4b/#rux-at' title="(Undocumented)"><code>++rux:at</code></a>
1398−
1399−<a class="tooltip" href='/docs/reference/library/4b/#cass' title="To lowercase"><code>++cass</code></a>
1400−<a class="tooltip" href='/docs/reference/library/4b/#crip' title="Tape to cord"><code>++crip</code></a>
1401−<a class="tooltip" href='/docs/reference/library/4b/#cuss' title="To uppercase"><code>++cuss</code></a>
1402−<a class="tooltip" href='/docs/reference/library/4b/#mesc' title="Escape special characters"><code>++mesc</code></a>
1403−<a class="tooltip" href='/docs/reference/library/4b/#runt' title="Prepend n times"><code>++runt</code></a>
1404−<a class="tooltip" href='/docs/reference/library/4b/#sand' title="Soft-cast by aura"><code>++sand</code></a>
1405−<a class="tooltip" href='/docs/reference/library/4b/#sane' title="Check aura validity"><code>++sane</code></a>
1406−<a class="tooltip" href='/docs/reference/library/4b/#teff' title="UTF-8 length"><code>++teff</code></a>
1407−<a class="tooltip" href='/docs/reference/library/4b/#trim' title="Tape split"><code>++trim</code></a>
1408−<a class="tooltip" href='/docs/reference/library/4b/#trip' title="Cord to tape"><code>++trip</code></a>
1409−<a class="tooltip" href='/docs/reference/library/4b/#tuba' title="UTF-8 to UTF-32 tape"><code>++tuba</code></a>
1410−<a class="tooltip" href='/docs/reference/library/4b/#tufa' title="UTF-32 to UTF-8 tape"><code>++tufa</code></a>
1411−<a class="tooltip" href='/docs/reference/library/4b/#tuft' title="UTF-32 to UTF-8 text"><code>++tuft</code></a>
1412−<a class="tooltip" href='/docs/reference/library/4b/#turf' title="UTF-8 to UTF-32 cord"><code>++turf</code></a>
1413−<a class="tooltip" href='/docs/reference/library/4b/#wack' title="Coin format encode"><code>++wack</code></a>
1414−<a class="tooltip" href='/docs/reference/library/4b/#wick' title="Coin format decode"><code>++wick</code></a>
1415−<a class="tooltip" href='/docs/reference/library/4b/#woad' title="Unescape cord"><code>++woad</code></a>
1416−<a class="tooltip" href='/docs/reference/library/4b/#wood' title="Escape cord"><code>++wood</code></a>
1417−
1418−### 4c: tank printer
1419−
1420−<a class="tooltip" href='/docs/reference/library/4c/#re' title="Pretty-printing engine (tank)"><code>++re</code></a>
1421−<a class="tooltip" href='/docs/reference/library/4c/#din-re' title="(Undocumented)"><code>++din:re</code></a>
1422−<a class="tooltip" href='/docs/reference/library/4c/#fit-re' title="Fit on one line test"><code>++fit:re</code></a>
1423−<a class="tooltip" href='/docs/reference/library/4c/#ram-re' title="Flatten tank to tape"><code>++ram:re</code></a>
1424−<a class="tooltip" href='/docs/reference/library/4c/#rig-re' title="Wrap tape in / (tank)"><code>++rig:re</code></a>
1425−<a class="tooltip" href='/docs/reference/library/4c/#wig-re' title="++win - render tape"><code>++wig:re</code></a>
1426−<a class="tooltip" href='/docs/reference/library/4c/#win-re' title="Render at indent"><code>++win:re</code></a>
1427−
1428−<a class="tooltip" href='/docs/reference/library/4c/#shep' title="(Undocumented)"><code>++shep</code></a>
1429−<a class="tooltip" href='/docs/reference/library/4c/#shop' title="(Undocumented)"><code>++shop</code></a>
1430−<a class="tooltip" href='/docs/reference/library/4c/#show' title="(Undocumented)"><code>++show</code></a>
1431−
1432−### 4d: parsing (tracing)
1433−
1434−<a class="tooltip" href='/docs/reference/library/4d/#last' title="Further trace"><code>++last</code></a>
1435−<a class="tooltip" href='/docs/reference/library/4d/#lust' title="Detect new line"><code>++lust</code></a>
1436−
1437−### 4e: parsing (combinators)
1438−
1439−<a class="tooltip" href='/docs/reference/library/4e/#bend' title="Conditional composer"><code>++bend</code></a>
1440−<a class="tooltip" href='/docs/reference/library/4e/#comp' title="Arbitrary compose"><code>++comp</code></a>
1441−<a class="tooltip" href='/docs/reference/library/4e/#fail' title="Never parse"><code>++fail</code></a>
1442−<a class="tooltip" href='/docs/reference/library/4e/#glue' title="Skip delimiter"><code>++glue</code></a>
1443−<a class="tooltip" href='/docs/reference/library/4e/#less' title="Parse unless"><code>++less</code></a>
1444−<a class="tooltip" href='/docs/reference/library/4e/#pfix' title="Discard first rule"><code>++pfix</code></a>
1445−<a class="tooltip" href='/docs/reference/library/4e/#plug' title="Parse to tuple"><code>++plug</code></a>
1446−<a class="tooltip" href='/docs/reference/library/4e/#pose' title="Parse options"><code>++pose</code></a>
1447−<a class="tooltip" href='/docs/reference/library/4e/#sfix' title="Discard second rule"><code>++sfix</code></a>
1448−<a class="tooltip" href='/docs/reference/library/4e/#simu' title="First and second"><code>++simu</code></a>
1449−
1450−### 4f: parsing (rule builders)
1451−
1452−<a class="tooltip" href='/docs/reference/library/4f/#bass' title="Parser modifier (LSB-ordered ++list as atom of ++base)"><code>++bass</code></a>
1453−<a class="tooltip" href='/docs/reference/library/4f/#boss' title="Parser modifier: LSB"><code>++boss</code></a>
1454−<a class="tooltip" href='/docs/reference/library/4f/#cold' title="Replace with constant"><code>++cold</code></a>
1455−<a class="tooltip" href='/docs/reference/library/4f/#cook' title="Apply gate"><code>++cook</code></a>
1456−<a class="tooltip" href='/docs/reference/library/4f/#easy' title="Always parse"><code>++easy</code></a>
1457−<a class="tooltip" href='/docs/reference/library/4f/#full' title="Parse to end"><code>++full</code></a>
1458−<a class="tooltip" href='/docs/reference/library/4f/#funk' title="Add to tape"><code>++funk</code></a>
1459−<a class="tooltip" href='/docs/reference/library/4f/#here' title="Place-based apply"><code>++here</code></a>
1460−<a class="tooltip" href='/docs/reference/library/4f/#ifix' title="Infix"><code>++ifix</code></a>
1461−<a class="tooltip" href='/docs/reference/library/4f/#jest' title="Match a cord"><code>++jest</code></a>
1462−<a class="tooltip" href='/docs/reference/library/4f/#just' title="Match a single character"><code>++just</code></a>
1463−<a class="tooltip" href='/docs/reference/library/4f/#knee' title="Recursive parsers"><code>++knee</code></a>
1464−<a class="tooltip" href='/docs/reference/library/4f/#mask' title="Match character"><code>++mask</code></a>
1465−<a class="tooltip" href='/docs/reference/library/4f/#more' title="Parse list with delimiter"><code>++more</code></a>
1466−<a class="tooltip" href='/docs/reference/library/4f/#most' title="Parse list of at least one match"><code>++most</code></a>
1467−<a class="tooltip" href='/docs/reference/library/4f/#next' title="Consume character"><code>++next</code></a>
1468−<a class="tooltip" href='/docs/reference/library/4f/#plus' title="List of at least one match"><code>++plus</code></a>
1469−<a class="tooltip" href='/docs/reference/library/4f/#sear' title="Conditional ++cook"><code>++sear</code></a>
1470−<a class="tooltip" href='/docs/reference/library/4f/#shim' title="Match character within range"><code>++shim</code></a>
1471−<a class="tooltip" href='/docs/reference/library/4f/#slug' title="Use gate to parse delimited list"><code>++slug</code></a>
1472−<a class="tooltip" href='/docs/reference/library/4f/#stag' title="Add label"><code>++stag</code></a>
1473−<a class="tooltip" href='/docs/reference/library/4f/#star' title="Produce list of matches"><code>++star</code></a>
1474−<a class="tooltip" href='/docs/reference/library/4f/#stet' title="Add faces to range-parser pairs in list"><code>++stet</code></a>
1475−<a class="tooltip" href='/docs/reference/library/4f/#stew' title="Switch by first"><code>++stew</code></a>
1476−<a class="tooltip" href='/docs/reference/library/4f/#stir' title="Parse repeatedly"><code>++stir</code></a>
1477−<a class="tooltip" href='/docs/reference/library/4f/#stun' title="Parse several times"><code>++stun</code></a>
1478−
1479−### 4g: parsing (outside caller)
1480−
1481−<a class="tooltip" href='/docs/reference/library/4g/#rash' title="Parse or crash"><code>++rash</code></a>
1482−<a class="tooltip" href='/docs/reference/library/4g/#rush' title="Parse or null"><code>++rush</code></a>
1483−<a class="tooltip" href='/docs/reference/library/4g/#rust' title="Parse tape or null"><code>++rust</code></a>
1484−<a class="tooltip" href='/docs/reference/library/4g/#scan' title="Parse tape or crash"><code>++scan</code></a>
1485−
1486−### 4h: parsing (ascii glyphs)
1487−
1488−<a class="tooltip" href='/docs/reference/library/4h/#ace' title="Parse space"><code>++ace</code></a>
1489−<a class="tooltip" href='/docs/reference/library/4h/#bar' title="Parse | (bar)"><code>++bar</code></a>
1490−<a class="tooltip" href='/docs/reference/library/4h/#bas' title="Parse \ (bas)"><code>++bas</code></a>
1491−<a class="tooltip" href='/docs/reference/library/4h/#buc' title="Parse $ (buc)"><code>++buc</code></a>
1492−<a class="tooltip" href='/docs/reference/library/4h/#cab' title="Parse _ (cab)"><code>++cab</code></a>
1493−<a class="tooltip" href='/docs/reference/library/4h/#cen' title="Parse % (cen)"><code>++cen</code></a>
1494−<a class="tooltip" href='/docs/reference/library/4h/#col' title="Parse : (col)"><code>++col</code></a>
1495−<a class="tooltip" href='/docs/reference/library/4h/#com' title="Parse , (comma)"><code>++com</code></a>
1496−<a class="tooltip" href='/docs/reference/library/4h/#doq' title="Parse double quote"><code>++doq</code></a>
1497−<a class="tooltip" href='/docs/reference/library/4h/#dot' title="Parse period"><code>++dot</code></a>
1498−<a class="tooltip" href='/docs/reference/library/4h/#fas' title="Parse / (fas)"><code>++fas</code></a>
1499−<a class="tooltip" href='/docs/reference/library/4h/#gal' title="Parse < (gal)"><code>++gal</code></a>
1500−<a class="tooltip" href='/docs/reference/library/4h/#gar' title="Parse > (gar)"><code>++gar</code></a>
1501−<a class="tooltip" href='/docs/reference/library/4h/#hax' title="Parse # (hax)"><code>++hax</code></a>
1502−<a class="tooltip" href='/docs/reference/library/4h/#hep' title="Parse - (hep)"><code>++hep</code></a>
1503−<a class="tooltip" href='/docs/reference/library/4h/#kel' title="Parse { (kel)"><code>++kel</code></a>
1504−<a class="tooltip" href='/docs/reference/library/4h/#ker' title="Parse } (ker)"><code>++ker</code></a>
1505−<a class="tooltip" href='/docs/reference/library/4h/#ket' title="Parse ^ (ket)"><code>++ket</code></a>
1506−<a class="tooltip" href='/docs/reference/library/4h/#lus' title="Parse + (lus)"><code>++lus</code></a>
1507−<a class="tooltip" href='/docs/reference/library/4h/#pam' title="Parse & (pam)"><code>++pam</code></a>
1508−<a class="tooltip" href='/docs/reference/library/4h/#pat' title="Parse @ (pat)"><code>++pat</code></a>
1509−<a class="tooltip" href='/docs/reference/library/4h/#pel' title="Parse ( (pel)"><code>++pel</code></a>
1510−<a class="tooltip" href='/docs/reference/library/4h/#per' title="Parse ) (per)"><code>++per</code></a>
1511−<a class="tooltip" href='/docs/reference/library/4h/#sel' title="Parse [ (sel)"><code>++sel</code></a>
1512−<a class="tooltip" href='/docs/reference/library/4h/#sem' title="Parse ; (sem)"><code>++sem</code></a>
1513−<a class="tooltip" href='/docs/reference/library/4h/#ser' title="Parse ] (ser)"><code>++ser</code></a>
1514−<a class="tooltip" href='/docs/reference/library/4h/#sig' title="Parse ~ (sig)"><code>++sig</code></a>
1515−<a class="tooltip" href='/docs/reference/library/4h/#soq' title="Parse ' (soq)"><code>++soq</code></a>
1516−<a class="tooltip" href='/docs/reference/library/4h/#tar' title="Parse * (tar)"><code>++tar</code></a>
1517−<a class="tooltip" href='/docs/reference/library/4h/#tec' title="Parse ` (tec)"><code>++tec</code></a>
1518−<a class="tooltip" href='/docs/reference/library/4h/#tis' title="Parse = (tis)"><code>++tis</code></a>
1519−<a class="tooltip" href='/docs/reference/library/4h/#wut' title="Parse ? (wut)"><code>++wut</code></a>
1520−<a class="tooltip" href='/docs/reference/library/4h/#zap' title="Parse ! (zap)"><code>++zap</code></a>
1521−
1522−### 4i: parsing (useful idioms)
1523−
1524−<a class="tooltip" href='/docs/reference/library/4i/#alf' title="Parse alphabetic characters"><code>++alf</code></a>
1525−<a class="tooltip" href='/docs/reference/library/4i/#aln' title="Parse alphanumeric characters"><code>++aln</code></a>
1526−<a class="tooltip" href='/docs/reference/library/4i/#alp' title="Parse alphanumeric characters and -"><code>++alp</code></a>
1527−<a class="tooltip" href='/docs/reference/library/4i/#bet' title="Parse hep and lus axis syntax"><code>++bet</code></a>
1528−<a class="tooltip" href='/docs/reference/library/4i/#bin' title="Binary to atom"><code>++bin</code></a>
1529−<a class="tooltip" href='/docs/reference/library/4i/#but' title="Parse binary digit"><code>++but</code></a>
1530−<a class="tooltip" href='/docs/reference/library/4i/#cit' title="Octal digit"><code>++cit</code></a>
1531−<a class="tooltip" href='/docs/reference/library/4i/#dem' title="Decimal to atom"><code>++dem</code></a>
1532−<a class="tooltip" href='/docs/reference/library/4i/#dit' title="Decimal digit"><code>++dit</code></a>
1533−<a class="tooltip" href='/docs/reference/library/4i/#dog' title="Optional gap"><code>++dog</code></a>
1534−<a class="tooltip" href='/docs/reference/library/4i/#doh' title="@p separator"><code>++doh</code></a>
1535−<a class="tooltip" href='/docs/reference/library/4i/#dun' title="-- to ~"><code>++dun</code></a>
1536−<a class="tooltip" href='/docs/reference/library/4i/#duz' title="== to ~"><code>++duz</code></a>
1537−<a class="tooltip" href='/docs/reference/library/4i/#gah' title="New line or ''"><code>++gah</code></a>
1538−<a class="tooltip" href='/docs/reference/library/4i/#gap' title="Plural whitespace"><code>++gap</code></a>
1539−<a class="tooltip" href='/docs/reference/library/4i/#gaq' title="End of line"><code>++gaq</code></a>
1540−<a class="tooltip" href='/docs/reference/library/4i/#gaw' title="Classic whitespace"><code>++gaw</code></a>
1541−<a class="tooltip" href='/docs/reference/library/4i/#gay' title="Optional gap"><code>++gay</code></a>
1542−<a class="tooltip" href='/docs/reference/library/4i/#gon' title="Parse long numbers"><code>++gon</code></a>
1543−<a class="tooltip" href='/docs/reference/library/4i/#gul' title="Axis syntax < or >"><code>++gul</code></a>
1544−<a class="tooltip" href='/docs/reference/library/4i/#hex' title="Hexadecimal to atom"><code>++hex</code></a>
1545−<a class="tooltip" href='/docs/reference/library/4i/#hig' title="Parse single uppercase letter"><code>++hig</code></a>
1546−<a class="tooltip" href='/docs/reference/library/4i/#hit' title="Parse single hexadecimal digit"><code>++hit</code></a>
1547−<a class="tooltip" href='/docs/reference/library/4i/#iny' title="Indentation block"><code>++iny</code></a>
1548−<a class="tooltip" href='/docs/reference/library/4i/#low' title="Parse lowercase letter"><code>++low</code></a>
1549−<a class="tooltip" href='/docs/reference/library/4i/#mes' title="Parse hexabyte"><code>++mes</code></a>
1550−<a class="tooltip" href='/docs/reference/library/4i/#nix' title="Parse letters and -"><code>++nix</code></a>
1551−<a class="tooltip" href='/docs/reference/library/4i/#nud' title="Parse numeric character"><code>++nud</code></a>
1552−<a class="tooltip" href='/docs/reference/library/4i/#prn' title="Parse any printable character"><code>++prn</code></a>
1553−<a class="tooltip" href='/docs/reference/library/4i/#qit' title="Parse character to cord atom"><code>++qit</code></a>
1554−<a class="tooltip" href='/docs/reference/library/4i/#qut' title="Parse cord"><code>++qut</code></a>
1555−<a class="tooltip" href='/docs/reference/library/4i/#soz' title="Parse triple single-quote"><code>++soz</code></a>
1556−<a class="tooltip" href='/docs/reference/library/4i/#sym' title="Term"><code>++sym</code></a>
1557−<a class="tooltip" href='/docs/reference/library/4i/#ven' title="Axis syntax parser"><code>++ven</code></a>
1558−<a class="tooltip" href='/docs/reference/library/4i/#vit' title="Parse base 64 digit"><code>++vit</code></a>
1559−<a class="tooltip" href='/docs/reference/library/4i/#vul' title="Comments to null"><code>++vul</code></a>
1560−
1561−### 4j: parsing (bases and base digits)
1562−
1563−<a class="tooltip" href='/docs/reference/library/4j/#ab' title="Primitive parser engine"><code>++ab</code></a>
1564−<a class="tooltip" href='/docs/reference/library/4j/#bix-ab' title="Parse hex pair"><code>++bix:ab</code></a>
1565−<a class="tooltip" href='/docs/reference/library/4j/#hif-ab' title="Parse phonetic pair"><code>++hif:ab</code></a>
1566−<a class="tooltip" href='/docs/reference/library/4j/#huf-ab' title="Parse two phonetic pairs"><code>++huf:ab</code></a>
1567−<a class="tooltip" href='/docs/reference/library/4j/#hyf-ab' title="Parse 8 phonetic bytes"><code>++hyf:ab</code></a>
1568−<a class="tooltip" href='/docs/reference/library/4j/#pev-ab' title="Parse <=5 in base 32"><code>++pev:ab</code></a>
1569−<a class="tooltip" href='/docs/reference/library/4j/#pew-ab' title="Parse <= 5 in base 64"><code>++pew:ab</code></a>
1570−<a class="tooltip" href='/docs/reference/library/4j/#piv-ab' title="Parse 5 digits in base 32"><code>++piv:ab</code></a>
1571−<a class="tooltip" href='/docs/reference/library/4j/#piw-ab' title="Parse 5 digits in base 64"><code>++piw:ab</code></a>
1572−<a class="tooltip" href='/docs/reference/library/4j/#qeb-ab' title="Parse <=4 binary digits"><code>++qeb:ab</code></a>
1573−<a class="tooltip" href='/docs/reference/library/4j/#qex-ab' title="Parse <=4 hexadecimal digits"><code>++qex:ab</code></a>
1574−<a class="tooltip" href='/docs/reference/library/4j/#qib-ab' title="Parse 4 binary digits"><code>++qib:ab</code></a>
1575−<a class="tooltip" href='/docs/reference/library/4j/#qix-ab' title="Parse 4 hexadecimal digits"><code>++qix:ab</code></a>
1576−<a class="tooltip" href='/docs/reference/library/4j/#seb-ab' title="Parse 1"><code>++seb:ab</code></a>
1577−<a class="tooltip" href='/docs/reference/library/4j/#sed-ab' title="Parse non-zero decimal digit"><code>++sed:ab</code></a>
1578−<a class="tooltip" href='/docs/reference/library/4j/#sev-ab' title="Parse non-zero base 32 digit"><code>++sev:ab</code></a>
1579−<a class="tooltip" href='/docs/reference/library/4j/#sew-ab' title="Parse non-zero base 64 digit"><code>++sew:ab</code></a>
1580−<a class="tooltip" href='/docs/reference/library/4j/#sex-ab' title="Parse nonzero hexadecimal digit"><code>++sex:ab</code></a>
1581−<a class="tooltip" href='/docs/reference/library/4j/#sib-ab' title="Parse binary digit"><code>++sib:ab</code></a>
1582−<a class="tooltip" href='/docs/reference/library/4j/#sid-ab' title="Parse decimal digit"><code>++sid:ab</code></a>
1583−<a class="tooltip" href='/docs/reference/library/4j/#siv-ab' title="Parse a base 32 digit"><code>++siv:ab</code></a>
1584−<a class="tooltip" href='/docs/reference/library/4j/#siw-ab' title="Parse a base 64 digit"><code>++siw:ab</code></a>
1585−<a class="tooltip" href='/docs/reference/library/4j/#six-ab' title="Parse a hexadecimal digit"><code>++six:ab</code></a>
1586−<a class="tooltip" href='/docs/reference/library/4j/#sov-ab' title="Parse base 32 letter"><code>++sov:ab</code></a>
1587−<a class="tooltip" href='/docs/reference/library/4j/#sow-ab' title="Parse base 64 letter/symbol"><code>++sow:ab</code></a>
1588−<a class="tooltip" href='/docs/reference/library/4j/#sox-ab' title="Parse hexadecimal letter"><code>++sox:ab</code></a>
1589−<a class="tooltip" href='/docs/reference/library/4j/#ted-ab' title="Parse decimal number with <= 3 digits"><code>++ted:ab</code></a>
1590−<a class="tooltip" href='/docs/reference/library/4j/#tid-ab' title="Parse 3 decimal digits"><code>++tid:ab</code></a>
1591−<a class="tooltip" href='/docs/reference/library/4j/#til-ab' title="Parse 3 lowercase letters"><code>++til:ab</code></a>
1592−<a class="tooltip" href='/docs/reference/library/4j/#tip-ab' title="Leading phonetic byte"><code>++tip:ab</code></a>
1593−<a class="tooltip" href='/docs/reference/library/4j/#tiq-ab' title="Trailing phonetic syllable"><code>++tiq:ab</code></a>
1594−<a class="tooltip" href='/docs/reference/library/4j/#urs-ab' title="Parse span characters"><code>++urs:ab</code></a>
1595−<a class="tooltip" href='/docs/reference/library/4j/#urt-ab' title="Parse non-_ span"><code>++urt:ab</code></a>
1596−<a class="tooltip" href='/docs/reference/library/4j/#voy-ab' title="Parse bas, soq, or bix"><code>++voy:ab</code></a>
1597−
1598−<a class="tooltip" href='/docs/reference/library/4j/#ag' title="Top-level atom parser engine"><code>++ag</code></a>
1599−<a class="tooltip" href='/docs/reference/library/4j/#ape-ag' title="Parse 0 or rule"><code>++ape:ag</code></a>
1600−<a class="tooltip" href='/docs/reference/library/4j/#bay-ag' title="Parses binary number"><code>++bay:ag</code></a>
1601−<a class="tooltip" href='/docs/reference/library/4j/#bip-ag' title="Parse IPv6"><code>++bip:ag</code></a>
1602−<a class="tooltip" href='/docs/reference/library/4j/#dem-ag' title="Parse decmal with dots"><code>++dem:ag</code></a>
1603−<a class="tooltip" href='/docs/reference/library/4j/#dim-ag' title="Parse decimal number"><code>++dim:ag</code></a>
1604−<a class="tooltip" href='/docs/reference/library/4j/#dum-ag' title="Parse decimal with leading zero"><code>++dum:ag</code></a>
1605−<a class="tooltip" href='/docs/reference/library/4j/#fed-ag' title="Parse @p"><code>++fed:ag</code></a>
1606−<a class="tooltip" href='/docs/reference/library/4j/#hex-ag' title="Parse hexadecimal number"><code>++hex:ag</code></a>
1607−<a class="tooltip" href='/docs/reference/library/4j/#lip-ag' title="Parse IPv4 address"><code>++lip:ag</code></a>
1608−<a class="tooltip" href='/docs/reference/library/4j/#viz-ag' title="Parse base 32 digit with dot separators"><code>++viz:ag</code></a>
1609−<a class="tooltip" href='/docs/reference/library/4j/#vum-ag' title="Parse base 32 string"><code>++vum:ag</code></a>
1610−<a class="tooltip" href='/docs/reference/library/4j/#wiz-ag' title="Parse base 64 number"><code>++wiz:ag</code></a>
1611−
1612−<a class="tooltip" href='/docs/reference/library/4j/#mu' title="Core used to scramble 16-bit atoms"><code>++mu</code></a>
1613−<a class="tooltip" href='/docs/reference/library/4j/#zag-mu' title="Add bottom into top"><code>++zag:mu</code></a>
1614−<a class="tooltip" href='/docs/reference/library/4j/#zig-mu' title="Subtract bottom from top"><code>++zig:mu</code></a>
1615−<a class="tooltip" href='/docs/reference/library/4j/#zug-mu' title="Concatenate into atom"><code>++zug:mu</code></a>
1616−
1617−<a class="tooltip" href='/docs/reference/library/4j/#ne' title="Digit rendering engine"><code>++ne</code></a>
1618−<a class="tooltip" href='/docs/reference/library/4j/#d-ne' title="Render decimal"><code>++d:ne</code></a>
1619−<a class="tooltip" href='/docs/reference/library/4j/#v-ne' title="Render base 32"><code>++v:ne</code></a>
1620−<a class="tooltip" href='/docs/reference/library/4j/#w-ne' title="Render base 64 digit"><code>++w:ne</code></a>
1621−<a class="tooltip" href='/docs/reference/library/4j/#x-ne' title="Render hexadecimal digit as atom of ASCII byte value"><code>++x:ne</code></a>
1622−
1623−### 4k: parsing (atom printing)
1624−
1625−<a class="tooltip" href='/docs/reference/library/4k/#co' title="Literal rendering engine"><code>++co</code></a>
1626−<a class="tooltip" href='/docs/reference/library/4k/#rear-co' title="Prepend and render atom as tape"><code>++rear:co</code></a>
1627−<a class="tooltip" href='/docs/reference/library/4k/#rend-co' title="Render coin lot as tape"><code>++rend:co</code></a>
1628−<a class="tooltip" href='/docs/reference/library/4k/#rent-co' title="Render coin lot as span"><code>++rent:co</code></a>
1629−
1630−### 4l: parsing (atom parsing)
1631−
1632−<a class="tooltip" href='/docs/reference/library/4l/#so' title="Coin parser engine"><code>++so</code></a>
1633−<a class="tooltip" href='/docs/reference/library/4l/#bisk-so' title="Parse aura-atom pair"><code>++bisk:so</code></a>
1634−<a class="tooltip" href='/docs/reference/library/4l/#crub-so' title="Parse @da, @dr, @p, @t"><code>++crub:so</code></a>
1635−<a class="tooltip" href='/docs/reference/library/4l/#nuck-so' title="Top-level coin parser"><code>++nuck:so</code></a>
1636−<a class="tooltip" href='/docs/reference/library/4l/#nusk-so' title="Parse coin literal with escapes"><code>++nusk:so</code></a>
1637−<a class="tooltip" href='/docs/reference/library/4l/#perd-so' title="Parses dime/tiple without standard prefixes"><code>++perd:so</code></a>
1638−<a class="tooltip" href='/docs/reference/library/4l/#royl-so' title="Parse dime float"><code>++royl:so</code></a>
1639−<a class="tooltip" href='/docs/reference/library/4l/#royl-cell-so' title="(Undocumented)"><code>++royl-cell:so</code></a>
1640−<a class="tooltip" href='/docs/reference/library/4l/#tash-so' title="Parse signed dime"><code>++tash:so</code></a>
1641−<a class="tooltip" href='/docs/reference/library/4l/#twid-so' title="Parse coins without ~ prefix"><code>++twid:so</code></a>
1642−<a class="tooltip" href='/docs/reference/library/4l/#zust-so' title="Parse prefixed dimes from IP, loobean, or floating point"><code>++zust:so</code></a>
1643−
1644−### 4m: parsing (formatting functions)
1645−
1646−<a class="tooltip" href='/docs/reference/library/4m/#scot' title="Render dime as cord"><code>++scot</code></a>
1647−<a class="tooltip" href='/docs/reference/library/4m/#scow' title="Render dime as tape"><code>++scow</code></a>
1648−<a class="tooltip" href='/docs/reference/library/4m/#slat' title="Curried slaw"><code>++slat</code></a>
1649−<a class="tooltip" href='/docs/reference/library/4m/#slav' title="Demand: parse cord with input aura"><code>++slav</code></a>
1650−<a class="tooltip" href='/docs/reference/library/4m/#slaw' title="Parse cord to input aura"><code>++slaw</code></a>
1651−<a class="tooltip" href='/docs/reference/library/4m/#slay' title="Parse cord to coin"><code>++slay</code></a>
1652−<a class="tooltip" href='/docs/reference/library/4m/#smyt' title="Render path as tank"><code>++smyt</code></a>
1653−<a class="tooltip" href='/docs/reference/library/4m/#spat' title="Render path as cord"><code>++spat</code></a>
1654−<a class="tooltip" href='/docs/reference/library/4m/#spud' title="Render path as tape"><code>++spud</code></a>
1655−<a class="tooltip" href='/docs/reference/library/4m/#stab' title="Parse cord to path"><code>++stab</code></a>
1656−
1657−### 4n: parsing (virtualization)
1658−
1659−<a class="tooltip" href='/docs/reference/library/4n/#mack' title="Nock subject to unit"><code>++mack</code></a>
1660−<a class="tooltip" href='/docs/reference/library/4n/#mink' title="Mock (virtual Nock) interpreter"><code>++mink</code></a>
1661−<a class="tooltip" href='/docs/reference/library/4n/#mock' title="Compute formula on subject with hint"><code>++mock</code></a>
1662−<a class="tooltip" href='/docs/reference/library/4n/#mong' title="Slam gate with sample"><code>++mong</code></a>
1663−<a class="tooltip" href='/docs/reference/library/4n/#mook' title="Intelligently render crash annotation"><code>++mook</code></a>
1664−<a class="tooltip" href='/docs/reference/library/4n/#mule' title="Typed virtual"><code>++mule</code></a>
1665−<a class="tooltip" href='/docs/reference/library/4n/#mute' title="Untyped virtual"><code>++mute</code></a>
1666−
1667−### 4o: parsing (molds)
1668−
1669−<a class="tooltip" href='/docs/reference/library/4o/#abel' title="Compiler alias"><code>++abel</code></a>
1670−<a class="tooltip" href='/docs/reference/library/4o/#aura' title="'Type' of atom"><code>++aura</code></a>
1671−<a class="tooltip" href='/docs/reference/library/4o/#axis' title="Nock axis"><code>++axis</code></a>
1672−<a class="tooltip" href='/docs/reference/library/4o/#base' title="Base type"><code>++base</code></a>
1673−<a class="tooltip" href='/docs/reference/library/4o/#bean' title="Boolean"><code>++bean</code></a>
1674−<a class="tooltip" href='/docs/reference/library/4o/#beer' title="Tape builder"><code>++beer</code></a>
1675−<a class="tooltip" href='/docs/reference/library/4o/#beet' title="XML interpolation cases"><code>++beet</code></a>
1676−<a class="tooltip" href='/docs/reference/library/4o/#chum' title="Jet hint information"><code>++chum</code></a>
1677−<a class="tooltip" href='/docs/reference/library/4o/#coil' title="Tuple of core information"><code>++coil</code></a>
1678−<a class="tooltip" href='/docs/reference/library/4o/#foot' title="Cases of arms by variance model"><code>++foot</code></a>
1679−<a class="tooltip" href='/docs/reference/library/4o/#limb' title="Reference into subject by name/axis"><code>++limb</code></a>
1680−<a class="tooltip" href='/docs/reference/library/4o/#line' title="(Undocumented)"><code>++line</code></a>
1681−<a class="tooltip" href='/docs/reference/library/4o/#metl' title="(Undocumented)"><code>++metl</code></a>
1682−<a class="tooltip" href='/docs/reference/library/4o/#nock' title="Virtual machine (see Nock)"><code>++nock</code></a>
1683−<a class="tooltip" href='/docs/reference/library/4o/#noun' title="(Undocumented)"><code>++noun</code></a>
1684−<a class="tooltip" href='/docs/reference/library/4o/#null' title="(Undocumented)"><code>++null</code></a>
1685−<a class="tooltip" href='/docs/reference/library/4o/#port' title="(Undocumented)"><code>++port</code></a>
1686−<a class="tooltip" href='/docs/reference/library/4o/#span' title="ASCII atom"><code>++span</code></a>
1687−<a class="tooltip" href='/docs/reference/library/4o/#tiki' title="(Undocumented)"><code>++tiki</code></a>
1688−<a class="tooltip" href='/docs/reference/library/4o/#toga' title="Tree of faces"><code>++toga</code></a>
1689−<a class="tooltip" href='/docs/reference/library/4o/#tone'><code>++tone</code></a>
1690−<a class="tooltip" href='/docs/reference/library/4o/#tuna' title="XML template tree"><code>++tuna</code></a>
1691−<a class="tooltip" href='/docs/reference/library/4o/#tusk' title="List of expressions"><code>++tusk</code></a>
1692−<a class="tooltip" href='/docs/reference/library/4o/#tyke' title="List of 'maybe' hoons"><code>++tyke</code></a>
1693−<a class="tooltip" href='/docs/reference/library/4o/#typo' title="Pointer for ++type"><code>++typo</code></a>
1694−<a class="tooltip" href='/docs/reference/library/4o/#tyre' title="List, term hoon"><code>++tyre</code></a>
1695−<a class="tooltip" href='/docs/reference/library/4o/#vase' title="Typed data"><code>++vase</code></a>
1696−<a class="tooltip" href='/docs/reference/library/4o/#vise' title="Convert during reboot"><code>++vise</code></a>
1697−<a class="tooltip" href='/docs/reference/library/4o/#wing' title="Address in subject"><code>++wing</code></a>
1698−
1699−### 5a: compiler utilities
1700−
1701−<a class="tooltip" href='/docs/reference/library/5a/'>_(To be documented)_</a>
1702−
1703−### 5b: macro expansion
1704−
1705−<a class="tooltip" href='/docs/reference/library/5b/'>_(To be documented)_</a>
1706−
1707−### 5c: compiler backend and prettyprinter
1708−
1709−<a class="tooltip" href='/docs/reference/library/5c/'>_(To be documented)_</a>
1710−
1711−### 5d: parser
1712−
1713−<a class="tooltip" href='/docs/reference/library/5d/'>_(To be documented)_</a>
1714−
1715−### 5e: caching compiler
1716−
1717−<a class="tooltip" href='/docs/reference/library/5e/'>_(To be documented)_</a>
1718−
1719−### 5f: molds and mold builders
1720−
1721−<a class="tooltip" href='/docs/reference/library/5f/#mane'><code>++mane</code></a>
1722−<a class="tooltip" href='/docs/reference/library/5f/#manx'><code>++manx</code></a>
1723−<a class="tooltip" href='/docs/reference/library/5f/#marl'><code>++marl</code></a>
1724−<a class="tooltip" href='/docs/reference/library/5f/#mars'><code>++mars</code></a>
1725−<a class="tooltip" href='/docs/reference/library/5f/#mart'><code>++mart</code></a>
1726−<a class="tooltip" href='/docs/reference/library/5f/#marx'><code>++marx</code></a>
1727−<a class="tooltip" href='/docs/reference/library/5f/#pass'><code>++pass</code></a>
1728−<a class="tooltip" href='/docs/reference/library/5f/#ring'><code>++ring</code></a>
1729−<a class="tooltip" href='/docs/reference/library/5f/#time'><code>++time</code></a>
1730−
1731−### 5g: profiling support
1732−
1733−<a class="tooltip" href='/docs/reference/library/5g/'>_(To be documented)_</a>
reference/vane-apis/_index.mddeleted−10
@@ -1,10 +0,0 @@
1−+++
2−title = "Vane APIs"
3−weight = 3
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−+++
7−
8−Reference documentation for the API connectors of vanes.
9−
10−### [Gall](@/docs/reference/vane-apis/gall.md)
reference/vane-apis/airlock.mddeleted−135
@@ -1,135 +0,0 @@
1−+++
2−title = "Airlock"
3−weight = 1
4−template = "doc.html"
5−+++
6−
7−Airlock is the term to describe the set of APIs for interacting with a running Urbit ship from outside of the Urbit network.
8−
9−## Urlock-py
10−
11−Urlock-py is a python library for using Airlock.
12−
13−It consists of a single class `Urlock`. Methods are below.
14−
15−`__init__(url, code)`
16−
17− Constructor
18−
19− `url` - url to the http interface of the running ship
20−
21− `code` - the `+code` of the ship, should never be published
22−
23−
24−`connect()`
25−
26− Connect to the running ship
27−
28−
29−`poke(ship, app, mark, j)`
30−
31− `ship` - ship to send the poke
32−
33− `app` - gall application to send the poke to
34−
35− `mark` - mark of data sent to the gall application
36−
37− `j` - json poke data
38−
39−
40−`ack(eventId)`
41−
42− Send an acknowledgment of receipt of a message so it's cleared from the ship's queue
43−
44− `eventId` - id of the event to acknowledge
45−
46−
47−`sse_pipe()`
48−
49− returns the sseclient object
50−
51−
52−`subscribe(ship, app, path)`
53−
54− `ship` - ship on which the gall application lives
55−
56− `app` - gall application to subscribe to
57−
58− `path` - path to subscribe on
59−
60−
61−Below is a simple script to send a message and subscribe to a chat channel. The specifics require an understanding of the `chat-store` and `chat-hook` interfaces.
62−
63−Even without experience with python this should be pretty readable.
64−
65−```
66−#!/usr/bin/python3
67−
68−import urlock
69−import baseconvert
70−import time
71−import random
72−import dumper
73−
74−zod = urlock.Urlock("http://localhost:8080", "lidlut-tabwed-pillex-ridrup")
75−r = zod.connect()
76−s = zod.subscribe("zod", "chat-store", "/mailbox/~/~zod/mc")
77−
78−pipe = zod.sse_pipe()
79−
80−s = baseconvert.base(random.getrandbits(128), 10, 32, string=True).lower()
81−uid = '0v' + '.'.join(s[i:i+5] for i in range(0, len(s), 5))[::-1]
82−
83−p = zod.poke("zod", "chat-hook", "json", {"message": {"path": "/~/~zod/mc",
84− "envelope": {"uid": uid,
85− "number": 1,
86− "author": "~zod",
87− "when": int(time.time() * 1000),
88− "letter": {"text": "hello world!"}}}})
89−
90−
91−for m in pipe.events():
92− dumper.dump(m)
93− dumper.dump(zod.ack(int(m.id)))
94−```
95−
96−After the imports, instantiating the Urlock class with the address of the running ship and the `+code` from the ship. This code should not be shared. The one used here is for fakezods.
97−
98−```
99−zod = urlock.Urlock("http://localhost:8080", "lidlut-tabwed-pillex-ridrup")
100−```
101−
102−Next we connect to the ship and set up a subscription to chat-store
103−
104−```
105−r = zod.connect()
106−s = zod.subscribe("zod", "chat-store", "/mailbox/~/~zod/mc")
107−```
108−
109−After this we get the SSE pipe that all responses will arrive on.
110−
111−```
112−pipe = zod.sse_pipe()
113−```
114−
115−Next comes some setup for specific implementation details of `chat-hook` and a `poke` is sent to create a new chat message.
116−
117−```
118−s = baseconvert.base(random.getrandbits(128), 10, 32, string=True).lower()
119−uid = '0v' + '.'.join(s[i:i+5] for i in range(0, len(s), 5))[::-1]
120−
121−p = zod.poke("zod", "chat-hook", "json", {"message": {"path": "/~/~zod/mc",
122− "envelope": {"uid": uid,
123− "number": 1,
124− "author": "~zod",
125− "when": int(time.time() * 1000),
126− "letter": {"text": "hello world!"}}}})
127−```
128−
129−Finally, the loop here is used to read messages from the sse pipe and send back an acknowledgment. This is important to clear the queue on the ship.
130−
131−```
132−for m in pipe.events():
133− dumper.dump(m)
134− dumper.dump(zod.ack(int(m.id)))
135−```
system-overview/_index.mdnew file+73
@@ -0,0 +1,73 @@
1++++
2+title = "System Overview"
3+weight = 200
4+sort_by = "weight"
5+template = "sections/docs/chapters.html"
6++++
7+
8+Urbit is a clean-slate software stack designed to implement an encrypted P2P
9+network of general-purpose personal servers. Each server on this network is a
10+deterministic computer called an 'urbit' that runs on a Unix-based virtual
11+machine.
12+
13+The Urbit stack is primarily comprised of:
14+
15+- [Arvo](@/docs/system-overview/arvo.md): the functional operating system of
16+ each urbit, written in Hoon.
17+- [Hoon](@/docs/system-overview/hoon.md): a strictly typed functional
18+ programming language whose standard library includes a Hoon-to-Nock compiler.
19+- [Nock](@/docs/system-overview/nock.md): a low-level combinator language whose
20+ formal specification fits readably on a t-shirt.
21+- [Vere](@/docs/system-overview/vere.md): a Nock interpreter and Unix-based
22+ virtual machine that mediates between each urbit and the Unix software layer.
23+- [Azimuth](@/docs/system-overview/azimuth.md): the Urbit identity layer, built
24+ on the Ethereum blockchain.
25+
26+## Anatomy of a personal server
27+
28+Your urbit is a deterministic computer in the sense that its state is a pure
29+function of its event history. Every event in this history is a
30+[transaction](https://en.wikipedia.org/wiki/Transaction_processing); your
31+urbit's state is effectively an [ACID database](https://en.wikipedia.org/wiki/ACID).
32+
33+Because each urbit is deterministic we can describe its role appropriately in
34+purely functional terms: it maps an input event and the old urbit state to a
35+list of output actions and the subsequent state. This is the Urbit transition
36+function.
37+
38+```
39+<input event, old state> -> <output actions, new state>
40+```
41+
42+For example, one input event could be a keystroke from the terminal, say
43+`[enter]` after having already typed `(add 2 2)`; and an output action could be
44+to print in the terminal window the resulting value of a computation performed
45+when the user hit `[enter]`, in this case `4`. The input event is stored in the
46+urbit's event history.
47+
48+Events always start from outside of your urbit, whether they're local to the
49+computer running the urbit (e.g., a keystroke in the terminal) or they originate
50+elsewhere (e.g., a packet received from another urbit). When an event is
51+processed, various parts of the urbit state can be modified before the resulting
52+list of output actions is returned.
53+
54+Can output actions from your urbit cause side-effects in the outside world?
55+The answer had better be "yes," because a personal server without side effects
56+isn't useful for much. In another sense the answer had better be "no," or else
57+there is a risk of losing functional purity; your urbit cannot _guarantee_ that
58+the side effects in question actually occur. What's the solution?
59+
60+Each urbit is
61+[sandboxed](https://en.wikipedia.org/wiki/Sandbox_%28computer_security%29) in a
62+virtual machine, Vere, which runs on Unix. Code running in your urbit cannot
63+make Unix system calls or otherwise directly affect the underlying platform.
64+Strictly speaking, internal urbit code can only change internal urbit state; it
65+has no way of sending events outside of its runtime environment. Functional
66+purity is preserved.
67+
68+In practical terms, however, you don't want your urbit to be an impotent
69+[brain in a vat](https://en.wikipedia.org/wiki/Brain_in_a_vat). That's why
70+Vere also serves as the intermediary between your urbit and Unix. Vere observes
71+the list of output events, and when external action is called for makes the
72+appropriate system calls itself. When external events relevant to your urbit
73+occur in the Unix layer, Vere encodes and delivers them as input events.
system-overview/arvo.mdnew file+33
@@ -0,0 +1,33 @@
1++++
2+title = "Arvo"
3+weight = 10
4+template = "doc.html"
5++++
6+
7+Arvo is a purely functional,
8+[non-preemptive](https://en.wikipedia.org/wiki/Cooperative_multitasking) OS,
9+written in Hoon, that serves as the event manager of your urbit. It can upgrade
10+itself from over the network without downtime. The Arvo kernel proper is quite
11+simple -- it's only about 600 lines of code, excluding its various modules.
12+
13+The Urbit transition function is implemented in Arvo. Upon being 'poked' by Vere
14+with the pair of `<input event, state>`, Arvo directs the event to the
15+appropriate OS module. The result of each Vere 'poke' is a pair of `<output
16+events, new state>`. Events are typed, and each has an explicit call-stack
17+structure indicating the event's source module in Arvo.
18+
19+For a more in-depth technical introduction, see [Arvo Overview](@/docs/arvo/overview.md).
20+
21+Arvo modules are also called 'vanes'. Arvo's vanes are:
22+
23+- [Ames](@/docs/arvo/ames/ames.md): defines and implements Urbit's encrypted P2P network protocol, as well
24+ as Urbit's identity protocol.
25+- [Behn](@/docs/arvo/behn/behn.md): manages timer events for other vanes.
26+- [Clay](@/docs/arvo/clay/clay.md): global, version-controlled, and referentially-transparent file system.
27+ Also includes our typed functional build system.
28+- [Dill](@/docs/arvo/dill/dill.md): terminal driver.
29+- [Eyre](@/docs/arvo/eyre/eyre.md): HTTP server.
30+- [Gall](@/docs/arvo/gall/gall.md): application sandbox and manager.
31+- [Iris](@/docs/arvo/iris/iris-api.md): HTTP client.
32+- [Jael](@/docs/arvo/jael/jael-api.md): Public and private key storage.
33+
system-overview/azimuth.mdnew file+34
@@ -0,0 +1,34 @@
1++++
2+title = "Azimuth"
3+weight = 50
4+template = "doc.html"
5++++
6+
7+
8+
9+Azimuth is a general-purpose public-key infrastructure (PKI) on the Ethereum
10+blockchain, used as a decentralized ledger for what are known as **Urbit
11+identities**, or simply **identities**. Having an identity is necessary to use
12+the Urbit network, which makes it important to have a neutral ledger to
13+determine who owns what.
14+
15+Azimuth is not, however, part of the Urbit stack. Azimuth is a parallel system
16+that can be used as a generalized identity system for other projects. Azimuth
17+"touches" the Urbit ecosystem when an Urbit identity is used to boot a virtual
18+computer on the Arvo network for the first time. When that happens, the identity
19+considered **linked** to Azimuth and the identity's full powers are available
20+for use. Once an identity is linked, it cannot be unlinked.
21+
22+A metaphor might make the relationship between these two systems to understand:
23+Azimuth is the bank vault that stores the deed to your house. The Urbit network
24+is the neighborhood that you live in.
25+
26+## Further Reading
27+
28+* [Azimuth](@/docs/azimuth/azimuth.md): An overview of the Ethereum-based public
29+ key infrastructure utilized by Urbit.
30+* [Advanced Azimuth Tools](@/docs/azimuth/advanced-azimuth-tools.md):
31+ Expert-level tooling for generating, signing, and sending Azimuth-related
32+ transactions from within Urbit itself.
33+
34+
system-overview/hoon.mdnew file+28
@@ -0,0 +1,28 @@
1++++
2+title = "Hoon"
3+weight = 20
4+template = "doc.html"
5++++
6+
7+Hoon is a strictly typed functional programming language that compiles itself
8+to Nock and is designed to support higher-order functional programming without
9+requiring knowledge of category theory or other advanced mathematics. Haskell
10+is fun but it isn't for everybody.
11+
12+Hoon aspires to a concrete, imperative feel. To discourage the creation of
13+write-only code, Hoon forbids user-level macros and uses ASCII digraphs instead
14+of keywords. The type system infers only forward and does not use unification,
15+but is not much weaker than Haskell's. The compiler and inference engine is
16+about 3000 lines of Hoon.
17+
18+## Further Reading
19+
20+* [Hoon Overview](@/docs/hoon/overview.md): Learn why we created a new language
21+ to build Urbit in.
22+* [Hoon School](@/docs/hoon/hoon-school/_index.md): A collection of tutorials
23+ designed to teach you the Hoon language.
24+* [Guides](@/docs/hoon/guides/_index.md): Guides to specific Hoon tasks,
25+including testing, command-line interface apps, and parsing.
26+* [Reference](@/docs/hoon/reference/_index.md): Reference material primarily
27+ intended for Hoon developers with some experience.
28+
system-overview/nock.mdnew file+34
@@ -0,0 +1,34 @@
1++++
2+title = "Nock"
3+weight = 30
4+template = "doc.html"
5++++
6+
7+
8+Nock is a low-level [homoiconic](https://en.wikipedia.org/wiki/Homoiconicity)
9+combinator language. It's so simple that its [specification](@/docs/nock/definition.md)
10+fits on a t-shirt. In some ways Nock resembles a nano-Lisp but its ambitions
11+are more narrow. Most Lisps are one-layer: a practical language is to be
12+created by extending a theoretically simple interpreter. The abstraction is
13+simple and the implementation is practical. Unfortunately it's far more difficult
14+to enforce both simplicity and practicality in an actual Lisp codebase. Hoon
15+and Nock are two layers: Hoon, the practical layer, compiles itself to Nock, the
16+simple layer. Your urbit runs in Vere, which includes a Nock interpreter, so it
17+can upgrade Hoon over the network without downtime.
18+
19+The Nock data model is quite simple. Every piece of data is a 'noun'. A [noun](/docs/glossary/noun/)
20+is an [atom](/docs/glossary/atom/) or a cell. An atom is any unsigned integer. A cell is an ordered
21+pair of nouns. Nouns are acyclic and expose no pointer equality test.
22+
23+## Further Reading
24+
25+* [Nock Definition](@/docs/nock/definition.md): The Nock specification.
26+* [An explanation of Nock](@/docs/nock/explanation.md): A comprehensive
27+ walkthrough of the Nock spec.
28+* [Nock by hand](@/docs/nock/example.md): Learn Nock by example.
29+* [Nock Implementations](@/docs/nock/implementations.md): The many ways that
30+ Nock has been implemented.
31+* [Nock for Everyday Coders](https://blog.timlucmiptev.space/part1.html): A
32+ comprehensive guide to Nock by community member `~timluc-miptev`.
33+
34+
system-overview/vere.mdnew file+45
@@ -0,0 +1,45 @@
1++++
2+title = "Vere"
3+weight = 40
4+template = "doc.html"
5++++
6+
7+
8+Vere is the Nock runtime environment and Urbit VM. It's written in C, runs on
9+Unix, and is the intermediate layer between your urbit and Unix. As noted
10+earlier, Unix system calls are made by Vere, not Arvo; Vere must also encode
11+and deliver relevant external events to Arvo. Vere is also responsible for
12+implementing jets and maintaining the persistent state of each urbit.
13+
14+In principle, Vere keeps a comprehensive log of every event from the time you
15+initially booted your urbit. What happens if the physical machine loses power
16+and your urbit's state is 'lost' from memory? When your urbit restarts it will
17+replay its entire event history and totally recover its latest state from
18+scratch.
19+
20+In practice, event logs become large and unwieldy over time. Periodically a
21+snapshot of the permanent state is taken and the logs are pruned. You're still
22+able to rebuild your state in case of power outage, down to the last keystroke.
23+
24+Vere is not essential to the Urbit stack; one can imagine using Urbit on a
25+hypervisor, or even bare metal. One member of the community is even working on
26+an independent implementation of Urbit using Graal/Truffle on the JVM.
27+
28+The Urbit stack (compiler, standard library, kernel, modules, and applications,
29+but excluding Vere) is about 30,000 lines of Hoon. Urbit is patent-free and MIT
30+licensed.
31+
32+## Further Reading
33+
34+* [C runtime system](@/docs/vere/runtime.md): The Urbit interpreter is built on
35+a Nock runtime system written in C, `u3`. This section is a relatively complete
36+description.
37+* [c3: C in Urbit](@/docs/vere/c.md): Under `u3` is the simple `c3` layer, which
38+is just how we write C in Urbit.
39+* [u3: Land of nouns](@/docs/vere/nouns.md): The division between `c3` and `u3`
40+is that you could theoretically imagine using `c3` as just a generic C
41+environment. Anything to do with nouns is in `u3`.
42+* [u3: API overview by prefix](@/docs/vere/api.md): A walkthrough of each of the
43+ `u3` modules.
44+* [How to write a jet](@/docs/vere/jetting.md): A jetting guide for new Urbit
45+ developers.
tutorials/_index.mddeleted−27
@@ -1,27 +0,0 @@
1−+++
2−title = "Tutorials"
3−weight = 2
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−aliases = ["docs/learn/"]
7−+++
8−
9−Tutorials and explanations for all the components of Urbit.
10−
11−## [Arvo](@/docs/tutorials/arvo/_index.md)
12−
13−Arvo is a clean-slate system software stack defined as a deterministic computer. An encrypted P2P network, %ames, runs on a functional operating system, Arvo, written in a strict, typed functional language, Hoon, which compiles itself to a combinator interpreter, Nock, whose spec gzips to 340 bytes.
14−
15−## [Hoon Tutorial](@/docs/tutorials/hoon/hoon-school/_index.md)
16−
17−Hoon is a high-level, statically typed, functional programming language, custom-designed for use with Urbit. For a functional language it has a surprisingly imperative style, and mastering it doesn't require knowing any advanced mathematics. The Hoon Tutorial is the best place to start if you want to learn Urbit.
18−
19−## [Nock](@/docs/tutorials/nock/_index.md)
20−
21−Nock is the low-level functional programming language that is interpreted by Vere. You don't need to know Nock to write Hoon, or even to work on most parts of Vere. But if you want to understand the foundations of Urbit and are mathematically-inclined, dive right in.
22−
23−## [Vere](@/docs/tutorials/vere/_index.md)
24−
25−The Nock runtime system, written in C.
26−
27−Keep reading if you're planning to work on the Urbit interpreter, you're a language implementation geek, or you don't really understand anything until you've seen the actual structs.
tutorials/arvo/clay.mddeleted−2749
@@ -1,2749 +0,0 @@
1−+++
2−title = "Clay"
3−weight = 4
4−template = "doc.html"
5−aliases = ["/docs/learn/arvo/clay/"]
6−+++
7−
8−
9−Our filesystem.
10−
11−`%clay` is version-controlled, referentially-transparent, and global.
12−While this filesystem is stored in `%clay`, it is mirrored to Unix for
13−convenience. Unix tells `%clay`s whenever a file changes in the Unix
14−copy of the filesystem so that the change may be applied. `%clay` tells
15−unix whenever an app or vane changes the filesystem so that the change
16−can be effected in Unix. Apps and vanes may use `%clay` to write to the
17−filesystem, query it, and subscribe to changes in it. Ford and gall use
18−`%clay` to serve up apps and web pages.
19−
20−`%clay` includes three components. First is the filesystem/version
21−control algorithms, which are mostly defined in `++ze` and `++zu` in
22−zuse. Second is the write, query, and subscription logic. Finally, there
23−is the logic for communicating requests to, and receiving requests from,
24−foreign ships.
25−
26−## Merge strategies
27−
28−*This section is up to date as of November 2020*
29−
30−Usage:
31−```
32−|merge %destination-desk ~source-ship %source-desk
33−|merge %destination-desk ~source-ship %source-desk, =gem %strategy
34−|merge %destination-desk ~source-ship %source-desk, =cas ud+5
35−```
36−
37−Clay supports various merge strategies. A "commit" is a snapshot of
38−the files with a list of parents plus a date. Most commits have
39−one parent; a "merge" commit is a commit with two parents. The
40−%home desk starts with an initial commit with no parents; commits
41−with several parents ("octopus merges") are possible but we don't
42−generate them right now.
43−
44−Unless otherwise specified, all of the following create a new commit
45−with the source and destination commits as parents.
46−
47−Several strategies need a "merge-base". They find it by identifying
48−the most recent common ancestor of the two desks. If none, fail
49−with `%merge-no-merge-base`; if there are two or more, pick one.
50−
51−`%init`: the only way to create a desk. Not a true merge, since it
52−simply assigns the source commit to the destination.
53−
54−`%fine`: if source or destination are in the ancestry of each other,
55−use the newer one; else abort. If the destination is ahead of the
56−source, succeed but do nothing. If the source is ahead of the
57−destination, assign the next revision number to the source commit.
58−Some call this "fast-forward".
59−
60−`%meet`: combine changes, failing if both sides changed the same file.
61−Specifically, take diff(merge-base,source) and
62−diff(merge-base,destination) and combine them as long as those diffs
63−touch different files.
64−
65−`%mate`: combine changes, failing if both sides changed the same part
66−of a file. Identical to `%meet`, except that some marks, like `%hoon`,
67−allow intelligent merge of changes to different parts of a file.
68−
69−`%meld`: combine changes; if both sides changed the same part of a
70−file, use the version of the file in the merge-base.
71−
72−`%only-this`: create a merge commit with exactly the contents of the
73−destination desk.
74−
75−`%only-that`: create a merge commit with exactly the contents of the
76−source commit.
77−
78−`%take-this`: create a merge commit with exactly the contents of the
79−destination desk except take any files from the source commit which
80−are not in the destination desk.
81−
82−`%take-that`: create a merge commit with exactly the contents of the
83−source commit except preserve any files from the destination desk
84−which are not in the source commit.
85−
86−`%meet-this`: merge as in `%meet`, except if both sides changed the same
87−file, use the version in the destination desk.
88−
89−`%meet-that`: merge as in `%meet`, except if both sides changed the same
90−file, use the version in the source commit.
91−
92−### Examples and notes:
93−
94−The most common merge strategy is %mate, which is a normal 3-way
95−merge which aborts on conflict.
96−
97−`%take-that` is useful to "force" an OTA. After running `%take-that`,
98−you're guaranteed to have exactly the files in the source commit plus
99−any files you separately added.
100−
101−We speak of merging into a destination *desk* from a source *commit*
102−because while you can only merge on top of a desk, you can merge from
103−historical commits. For example,
104−```
105−|merge %old our %home, =cas ud+5, =gem %init
106−```
107−will create a new desk called `%old` with the 5th commit in `%home`.
108−You can revert the contents of a desk to what they were yesterday
109−with
110−```
111−|merge %home our %home, =cas da+(sub now ~d1), =gem %only-that
112−```
113−
114−Note this is a normal `%only-that merge`, which means you're creating a
115−*new* commit with the old *contents*.
116−
117−`%meld` is rarely used on its own, however if you specify `%auto` or
118−omit the merge strategy, `%kiln` will run a `%meld` merge into a scratch
119−desk and then annotate the conflicts there.
120−
121−If you resolve merge conflicts manually, for example by mounting the
122−desks, copying the files in Unix and then running `|commit`, you
123−should usually run an `%only-this merge`. This will not change the
124−newly-fixed contents of your desk, but it will record that the merge
125−happened so that those conflicts don't reappear in later merges.
126−
127−If you get a `%merge-no-merge-base` error, this means you're trying to
128−merge two desks which have no common ancestors. You need to give
129−them a common ancestor by choosing a merge strategy which doesn't
130−need a merge-base, like `%only-this`, `%only-that`, `%take-this`, or
131−`%take-that`.
132−
133−`%take-this` could be useful to install 3rd party software, but you
134−couldn't get subsequent updates this way, since the files would
135−already exist in the destination desk. Something like "take only
136−the files which aren't in my OTA source or any other 3rd party app"
137−would be basically correct. This would require a parameter listing
138−the desks to not conflict with.
139−
140−`%meet-this` and `%meet-that` imply the existence of `%mate-this` and
141−`%mate-that`, but those don't exist yet.
142−
143−
144−*The remainder of this document is out of date as of November 2020, but certain parts are still
145−accurate. Please independently confirm information here before acting on it.*
146−
147−## Architecture
148−
149−Clay is the primary filesystem for the arvo operating system,
150−which is the [core](/docs/glossary/core/) of an urbit. The architecture of clay is
151−intrinsically connected with arvo, but we assume no knowledge of
152−either arvo or urbit. We will point out only those features of
153−arvo that are necessary for an understanding of clay, and we will
154−do so only when they arise.
155−
156−The first relevant feature of arvo is that it is a deterministic
157−system where input and output are defined as a series of events
158−and effects. The state of arvo is simply a function of its event
159−log. None of the effects from an event are emitted until the
160−event is entered in the log and persisted, either to disk or
161−another trusted source of persistence, such as a Kafka cluster.
162−Consequently, arvo is a single-level store: everything in its
163−state is persistent.
164−
165−In a more traditional OS, everything in RAM can be erased at any
166−time by power failure, and is always erased on reboot. Thus, a
167−primary purpose of a filesystem is to ensure files persist across
168−power failures and reboots. In arvo, both power failures and
169−reboots are special cases of suspending computation, which is
170−done safely since our event log is already persistent. Therefore,
171−clay is not needed in arvo for persistence. Why, then, do we have a
172−filesystem? There are two answers to this question.
173−
174−First, clay provides a filesystem tree, which is a convenient
175−user interface for some applications. Unix has the useful concept
176−of virtual filesystems, which are used for everything from direct
177−access to devices, to random number generators, to the /proc
178−tree. It is easy and intuitive to read from and write to a
179−filesystem tree.
180−
181−Second, clay has a distributed revision-control system baked into
182−it. Traditional filesystems are not revision controlled, so
183−userspace software -- such as git -- is written on top of them to
184−do so. clay natively provides the same functionality as modern
185−DVCSes, and more.
186−
187−clay has two other unique properties that we'll cover later on:
188−it supports typed data and is referentially transparent.
189−
190−### Revision Control
191−
192−Every urbit has one or more "desks", which are independently
193−revision-controlled branches. Each desk contains its own mark
194−definitions, apps, doc, and so forth.
195−
196−Traditionally, an urbit has at least a base and a home desk. The
197−base desk has all the system software from the distribution. the
198−home desk is a fork of base with all the stuff specific to the
199−user of the urbit.
200−
201−A desk is a series of numbered commits, the most recent of which
202−represents the current state of the desk. A commit is composed of
203−(1) an absolute time when it was created, (2) a list of zero or
204−more parents, and (3) a map from paths to data.
205−
206−Most commits have exactly one parent, but the initial commit on a
207−desk may have zero parents, and merge commits have more than one
208−parent.
209−
210−The non-meta data is stored in the map of paths to data. It's
211−worth noting that no constraints are put on this map, so, for
212−example, both /a/b and /a/b/c could have data. This is impossible
213−in a traditional Unix filesystem since it means that /a/b is both
214−a file and a directory. Conventionally, the final element in the
215−path is its mark -- much like a filename extension in Unix. Thus,
216−/doc/readme.md in Unix is stored as /doc/readme/md in urbit.
217−
218−The data is not stored directly in the map; rather, a hash of the
219−data is stored, and we maintain a master blob store. Thus, if the
220−same data is referred to in multiple commits (as, for example,
221−when a file doesn't change between commits), only the hash is
222−duplicated.
223−
224−In the master blob store, we either store the data directly, or
225−else we store a diff against another blob. The hash is dependent
226−only on the data within and not on whether or not it's stored
227−directly, so we may on occasion rearrange the contents of the
228−blob store for performance reasons.
229−
230−Recall that a desk is a series of numbered commits. Not every
231−commit in a desk must be numbered. For example, if the base desk
232−has had 50 commits since home was forked from it, then a merge
233−from base to home will only add a single revision number to home,
234−although the full commit history will be accessible by traversing
235−the parentage of the individual commits.
236−
237−We do guarantee that the first commit is numbered 1, commits are
238−numbered consecutively after that (i.e. there are no "holes"),
239−the topmost commit is always numbered, and every numbered commit
240−is an ancestor of every later numbered commit.
241−
242−There are three ways to refer to particular commits in the
243−revision history. Firstly, one can use the revision number.
244−Secondly, one can use any absolute time between the one numbered
245−commit and the next (inclusive of the first, exclusive of the
246−second). Thirdly, every desk has a map of labels to revision
247−numbers. These labels may be used to refer to specific commits.
248−
249−Additionally, clay is a global filesystem, so data on other urbit
250−is easily accessible the same way as data on our local urbit. In
251−general, the path to a particular revision of a desk is
252−/~urbit-name/desk-name/revision. Thus, to get /try/readme/md
253−from revision 5 of the home desk on ~sampel-sipnym, we refer to
254−/~sampel-sipnym/home/5/try/readme/md. Clay's namespace is thus
255−global and referentially transparent.
256−
257−XXX reactivity here?
258−
259−### A Typed Filesystem
260−
261−Since clay is a general filesystem for storing data of arbitrary
262−types, in order to revision control correctly it needs to be
263−aware of types all the way through. Traditional revision control
264−does an excellent job of handling source code, so for source code
265−we act very similar to traditional revision control. The
266−challenge is to handle other data similarly well.
267−
268−For example, modern VCSs generally support "binary files", which
269−are files for which the standard textual diffing, patching, and
270−merging algorithms are not helpful. A "diff" of two binary files
271−is just a pair of the files, "patching" this diff is just
272−replacing the old file with the new one, and "merging"
273−non-identical diffs is always a conflict, which can't even be
274−helpfully annotated. Without knowing anything about the structure
275−of a blob of data, this is the best we can do.
276−
277−Often, though, "binary" files have some internal structure, and
278−it is possible to create diff, patch, and merge algorithms that
279−take advantage of this structure. An image may be the result of a
280−base image with some set of operations applied. With algorithms
281−aware of this set of operations, not only can revision control
282−software save space by not having to save every revision of the
283−image individually, these transformations can be made on parallel
284−branches and merged at will.
285−
286−Suppose Alice is tasked with touching up a picture, improving the
287−color balance, adjusting the contrast, and so forth, while Bob
288−has the job of cropping the picture to fit where it's needed and
289−adding textual overlay. Without type-aware revision control,
290−these changes must be made serially, requiring Alice and Bob to
291−explicitly coordinate their efforts. With type-aware revision
292−control, these operations may be performed in parallel, and then
293−the two changesets can be merged programmatically.
294−
295−Of course, even some kinds of text files may be better served by
296−diff, patch, and merge algorithms aware of the structure of the
297−files. Consider a file containing a pretty-printed JSON object.
298−Small changes in the JSON object may result in rather significant
299−changes in how the object is pretty-printed (for example, by
300−addding an indentation level, splitting a single line into
301−multiple lines).
302−
303−A text file wrapped at 80 columns also reacts suboptimally with
304−unadorned Hunt-McIlroy diffs. A single word inserted in a
305−paragraph may push the final word or two of the line onto the
306−next line, and the entire rest of the paragraph may be flagged as
307−a change. Two diffs consisting of a single added word to
308−different sentences may be flagged as a conflict. In general,
309−prose should be diffed by sentence, not by line.
310−
311−As far as the author is aware, clay is the first generalized,
312−type-aware revision control system. We'll go into the workings
313−of this system in some detail.
314−
315−### Marks
316−
317−Central to a typed filesystem is the idea of types. In clay, we
318−call these "marks". A mark is a file that defines a type,
319−conversion routines to and from the mark, and diff, patch, and
320−merge routines.
321−
322−For example, a `%txt` mark may be a list of lines of text, and it
323−may include conversions to `%mime` to allow it to be serialized
324−and sent to a browswer or to the unix filesystem. It will also
325−include Hunt-McIlroy diff, patch, and merge algorithms.
326−
327−A `%json` mark would be defined as a json object in the code, and
328−it would have a parser to convert from `%txt` and a printer to
329−convert back to `%txt`. The diff, patch, and merge algorithms are
330−fairly straightforward for json, though they're very different
331−from the text ones.
332−
333−More formally, a mark is a core with three [arms](/docs/glossary/arm/), `++grab`,
334−`++grow`, and `++grad`. In `++grab` is a series of functions to
335−convert from other marks to the given mark. In `++grow` is a
336−series of functions to convert from the given mark to other
337−marks. In `++grad` is `++diff`, `++pact`, `++join`, and `++mash`.
338−
339−The types are as follows, in an informal pseudocode:
340−
341−```
342− ++ grab:
343− ++ mime: <mime> -> <mark-type>
344− ++ txt: <txt> -> <mark-type>
345− ...
346− ++ grow:
347− ++ mime: <mark-type> -> <mime>
348− ++ txt: <mark-type> -> <txt>
349− ...
350− ++ grad
351− ++ diff: (<mark-type>, <mark-type>) -> <diff-type>
352− ++ pact: (<mark-type>, <diff-type>) -> <mark-type>
353− ++ join: (<diff-type>, <diff-type>) -> <diff-type> or NULL
354− ++ mash: (<diff-type>, <diff-type>) -> <diff-type>
355−```
356−
357−These types are basically what you would expect. Not every mark
358−has each of these functions defined -- all of them are optional
359−in the general case.
360−
361−In general, for a particular mark, the `++grab` and `++grow` entries
362−(if they exist) should be inverses of each other.
363−
364−In `++grad`, `++diff` takes two instances of a mark and produces
365−a diff of them. `++pact` takes an instance of a mark and patches
366−it with the given diff. `++join` takes two diffs and attempts to
367−merge them into a single diff. If there are conflicts, it
368−produces null. `++mash` takes two diffs and forces a merge,
369−annotating any conflicts.
370−
371−In general, if `++diff` called with A and B produces diff D, then
372−`++pact` called with A and D should produce B. Also, if `++join`
373−of two diffs does not produce null, then `++mash` of the same
374−diffs should produce the same result.
375−
376−Alternately, instead of `++diff`, `++pact`, `++join`, and
377−`++mash`, a mark can provide the same functionality by defining
378−`++sted` to be the name of another mark to which we wish to
379−delegate the revision control responsibilities. Then, before
380−running any of those functions, clay will convert to the other
381−mark, and convert back afterward. For example, the `%hoon` mark
382−is revision-controlled in the same way as `%txt`, so its `++grad`
383−is simply `++sted %txt`. Of course, `++txt` must be defined in
384−`++grow` and `++grab` as well.
385−
386−Every file in clay has a mark, and that mark must have a
387−fully-functioning `++grad`. Marks are used for more than just
388−clay, and other marks don't need a `++grad`, but if a piece of
389−data is to be saved to clay, we must know how to revision-control
390−it.
391−
392−Additionally, if a file is to be synced out to unix, then it must
393−have conversion routines to and from the `%mime` mark.
394−
395−## Using clay
396−
397−### Reading and Subscribing
398−
399−When reading from Clay, there are three types of requests. A
400−`%sing` request asks for data at single revsion. A `%next`
401−request asks to be notified the next time there's a change to
402−given file. A `%many` request asks to be notified on every
403−change in a desk for a range of changes.
404−
405−For `%sing` and `%next`, there are generally three things to be
406−queried. A `%u` request simply checks for the existence of a
407−file at a path. A `%x` request gets the data in the file at a
408−path. A `%y` request gets a hash of the data in the file at the
409−path combined with all its children and their data. Thus, `%y`
410−of a node changes if it or any of its children change.
411−
412−A `%sing` request is fulfilled immediately if possible. If the
413−requested revision is in the future, or is on another ship for
414−which we don't have the result cached, we don't respond
415−immediately. If the requested revision is in the future, we wait
416−until the revision happens before we respond to the request. If
417−the request is for data on another ship, we pass on the request
418−to the other ship. In general, Clay subscriptions, like most
419−things in Urbit, aren't guaranteed to return immediately.
420−They'll return when they can, and they'll do so in a
421−referentially transparent manner.
422−
423−A `%next` request checks query at the given revision, and it
424−produces the result of the query the next time it changes, along
425−with the revsion number when it changes. Thus, a `%next` of a
426−`%u` is triggered when a file is added or deleted, a `%next` of a
427−`%x` is triggered when a file is added, deleted, or changed, and
428−a `%next` of a `%y` is triggered when a file or any of its
429−children is added, deleted, or changed.
430−
431−A `%many` request is triggered every time the given desk has a
432−new revision. Unlike a `%next`, a `%many` has both a start and
433−an end revsion, after which it stops returning. For `%next`, a
434−single change is reported, and if the caller wishes to hear of
435−the next change, it must resubscribe. For `%many`, every revsion
436−from the start to the end triggers a response. Since a `%many`
437−request doesn't ask for any particular data, there aren't `%u`,
438−`%x`, and `%y` versions for it.
439−
440−### Unix sync
441−
442−One of the primary functions of clay is as a convenient user
443−interface. While tools exist to use clay from within urbit, it's
444−often useful to be able to treat clay like any other filesystem
445−from the Unix perspective -- to "mount" it, as it were.
446−
447−From urbit, you can run `|mount /path/to/directory %mount-point`,
448−and this will mount the given clay directory to the mount-point
449−directory in Unix. Every file is converted to `%mime` before it's
450−written to Unix, and converted back when read from Unix. The
451−entire directory is watched (a la Dropbox), and every change is
452−committed once you run `|commit %mount-point`.
453−
454−### Merging
455−
456−Merging is a fundamental operation for a distributed revision
457−control system. At their root, clay's merges are similar to
458−git's, but with some additions to accomodate typed data. There
459−are seven different merge strategies.
460−
461−Throughout our discussion, we'll say that the merge is from
462−Alice's desk to Bob's. Recall that a commit is a date (for all
463−new commits this will be the current date), a list of parents,
464−and the data itself.
465−
466−A `%init` merge should be used iff it's the first commit to a
467−desk. The head of Alice's desk is used as the number 1 commit to
468−Bob's desk. Obviously, the ancestry remains intact through
469−traversing the parentage of the commit even though previous
470−commits are not numbered for Bob's desk.
471−
472−A `%this` merge means to keep what's in Bob's desk, but join the
473−ancestry. Thus, the new commit has the head of each desk as
474−parents, but the data is exactly what's in Bob's desk. For those
475−following along in git, this is the 'ours' merge strategy, not
476−the '--ours' option to the 'recursive' merge strategy. In other
477−words, even if Alice makes a change that does not conflict with
478−Bob, we throw it away. It's Bob's way or the highway.
479−
480−A `%that` merge means to take what's in Alice's desk, but join
481−the ancestry. This is the reverse of `%this`.
482−
483−A `%fine` merge is a "fast-forward" merge. This succeeds iff one
484−head is in the ancestry of the other. In this case, we use the
485−descendant as our new head.
486−
487−For `%meet`, `%mate`, and `%meld` merges, we first find the most
488−recent common ancestor to use as our merge base. If we have no
489−common ancestors, then we fail. If we have more than one most
490−recent common ancestor, then we have a criss-cross situation,
491−which should be handled delicately. At present, we delicately
492−throw up our hands and give up, but something akin to git's
493−'recursive' strategy should be implemented in the future.
494−
495−There's a functional inclusion ordering on `%fine`, `%meet`,
496−`%mate`, and `%meld` such that if an earlier strategy would have
497−succeeded, then every later strategy will produce the same
498−result. Put another way, every earlier strategy is the same as
499−every later strategy except with a restricted domain.
500−
501−A `%meet` merge only succeeds if the changes from the merge base
502−to Alice's head (hereafter, "Alice's changes") are in different
503−files than Bob's changes. In this case, the parents are both
504−Alice's and Bob's heads, and the data is the merge base plus
505−Alice's changed files plus Bob's changed files.
506−
507−A `%mate` merge attempts to merge changes to the same file when
508−both Alice and bob change it. If the merge is clean, we use it;
509−otherwise, we fail. A merge between different types of changes --
510−for example, deleting a file vs changing it -- is always a
511−conflict. If we succeed, the parents are both Alice's and Bob's
512−heads, and the data is the merge base plus Alice's changed files
513−plus Bob's changed files plus the merged files.
514−
515−A `%meld` merge will succeed even if there are conflicts. If
516−there are conflicts in a file, then we use the merge base's
517−version of that file, and we produce a set of files with
518−conflicts. The parents are both Alice's and Bob's heads, and the
519−data is the merge base plus Alice's changed files plus Bob's
520−changed files plus the successfully merged files plus the merge
521−base's version of the conflicting files.
522−
523−That's the extent of the merge options in clay proper. In
524−userspace there's a final option `%auto`, which is the most
525−common. `%auto` checks to see if Bob's desk exists, and if it
526−doesn't we use a `%init` merge. Otherwise, we progressively try
527−`%fine`, `%meet`, and `%mate` until one succeeds.
528−
529−If none succeed, we merge Bob's desk into a scratch desk. Then,
530−we merge Alice's desk into the scratch desk with the `%meld`
531−option to force the merge. For each file in the produced set of
532−conflicting files, we call the `++mash` function for the
533−appropriate mark, which annotates the conflicts if we know how.
534−
535−Finally, we display a message to the user informing them of the
536−scratch desk's existence, which files have annotated conflicts,
537−and which files have unannotated conflicts. When the user has
538−resolved the conflicts, they can merge the scratch desk back into
539−Bob's desk. This will be a `%fine` merge since Bob's head is in
540−the ancestry of the scratch desk.
541−
542−### Autosync
543−
544−Tracking and staying in sync with another desk is another
545−fundamental operation. We call this "autosync". This doesn't mean
546−simply mirroring a desk, since that wouldn't allow local changes.
547−We simply want to apply changes as they are made upstream, as
548−long as there are no conflicts with local changes.
549−
550−This is implemented by watching the other desk, and, when it has
551−changes, merging these changes into our desk with the usual merge
552−strategies.
553−
554−Note that it's quite reasonable for two desks to be autosynced to
555−each other. This results in any change on one desk being mirrored
556−to the other and vice versa.
557−
558−Additionally, it's fine to set up an autosync even if one desk,
559−the other desk, or both desks do not exist. The sync will be
560−activated when the upstream desk comes into existence and will
561−create the downstream desk if needed.
562−
563−## Commentary
564−
565−The first part of this section will be reference documentation for the data
566−types used by our filesystem. In fact, as a general guide, we recommend
567−reading and attempting to understand the data structures used in any
568−Hoon code before you try to read the code itself. Although complete
569−understanding of the data structures is impossible without seeing them
570−used in the code, an 80% understanding greatly clarifies the code. As
571−another general guide, when reading Hoon, it rarely pays off to
572−understand every line of code when it appears. Try to get the gist of
573−it, and then move on. The next time you come back to it, it'll likely
574−make a lot more sense.
575−
576−After a description of the data models, we'll give an overview of the
577−interface that vanes and applications can use to interact with the
578−filesystem.
579−
580−Finally, we'll dive into the code and the algorithms themselves. You
581−know, the fun part.
582−
583−### Data Models
584−
585−As you're reading through this section, remember you can always come
586−back to this when you run into these types later on. You're not going to
587−remember everything the first time through, but it is worth reading, or
588−at least skimming, this so that you get a rough idea of how our state is
589−organized.
590−
591−The types that are certainly worth reading are `++raft`, `++room`,
592−`++dome:clay`, `++ankh:clay`, `++rung:clay`, `++rang:clay`, `++blob:clay`, `++yaki:clay`, and `++nori:clay`
593−(possibly in that order). All in all, though, this section isn't too
594−long, so many readers may wish to quickly read through all of it. If you
595−get bored, though, just skip to the next section. You can always come
596−back when you need to.
597−
598−### `++raft`, formal state
599−
600−```hoon
601− ++ raft :: filesystem
602− $: fat=(map ship room) :: domestic
603− hoy=(map ship rung) :: foreign
604− ran=rang :: hashes
605− == ::
606−```
607−
608−This is the state of our vane. Anything that must be remembered between
609−calls to clay is stored in this state.
610−
611−`fat` is the set of domestic servers. This stores all the information
612−that is specfic to a particular ship on this pier. The keys to this map
613−are the ships on the current pier. all the information that is specific
614−to a particular foreign ship. The keys to this map are all the ships
615−whose filesystems we have attempted to access through clay.
616−
617−`ran` is the store of all commits and deltas, keyed by hash. The is
618−where all the "real" data we know is stored; the rest is "just
619−bookkeeping".
620−
621−#### `++room`, filesystem per domestic ship
622−
623−```hoon
624− ++ room :: fs per ship
625− $: hun=duct :: terminal duct
626− hez=(unit duct) :: sync duch
627− dos=(map desk dojo) :: native desk
628− == ::
629−```
630−
631−This is the representation of the filesystem of a ship on our pier.
632−
633−`hun` is the duct we use to send messages to dill to display
634−notifications of filesystem changes. Only `%note` gifts should be
635−produced along this duct. This is set by the `%init` kiss.
636−
637−`hez`, if present, is the duct we use to send sync messages to unix so
638−that they end up in the pier unix directory. Only `%ergo` gifts should
639−be producd along this duct. This is set by `%into` and `%invo` kisses.
640−
641−`dos` is a well-known operating system released in 1981. It is also the
642−set of desks on this ship, mapped to their data.
643−
644−#### `++desk`, filesystem branch
645−
646−```hoon
647− ++ desk ,@tas :: ship desk case spur
648−```
649−
650−This is the name of a branch of the filesystem. The default desks are
651−"arvo", "main", and "try". More may be created by simply referencing
652−them. Desks have independent histories and states, and they may be
653−merged into each other.
654−
655−### `++dojo`, domestic desk state
656−
657−```hoon
658− ++ dojo ,[p=cult q=dome] :: domestic desk state
659−```
660−
661−This is the all the data that is specific to a particular desk on a
662−domestic ship. `p` is the set of subscribers to this desk and `q` is the
663−data in the desk.
664−
665−#### `++cult`, subscriptions
666−
667−```hoon
668− ++ cult (map duct rave) :: subscriptions
669−```
670−
671−This is the set of subscriptions to a particular desk. The keys are the
672−ducts from where the subscriptions requests came. The results will be
673−produced along these ducts. The values are a description of the
674−requested information.
675−
676−#### `++rave:clay`, general subscription request
677−
678−```hoon
679− ++ rave :: general request
680− $% [& p=mood] :: single request
681− [| p=moat] :: change range
682− == ::
683−```
684−
685−This represents a subscription request for a desk. The request can be
686−for either a single item in the desk or else for a range of changes on
687−the desk.
688−
689−### `++rove`, stored general subscription request
690−
691−```hoon
692− ++ rove (each mood moot) :: stored request
693−```
694−
695−When we store a request, we store subscriptions with a little extra
696−information so that we can determine whether new versions actually
697−affect the path we're subscribed to.
698−
699−#### `++mood:clay`, single subscription request
700−
701−```hoon
702− ++ mood ,[p=care q=case r=path] :: request in desk
703−```
704−
705−This represents a request for the state of the desk at a particular
706−commit, specfied by `q`. `p` specifies what kind of information is
707−desired, and `r` specifies the path we are requesting.
708−
709−#### `++moat:clay`, range subscription request
710−
711−```hoon
712− ++ moat ,[p=case q=case r=path] :: change range
713−```
714−
715−This represents a request for all changes between `p` and `q` on path
716−`r`. You will be notified when a change is made to the node referenced
717−by the path or to any of its children.
718−
719−### `++moot`, stored range subscription request
720−
721−```hoon
722− ++ moot ,[p=case q=case r=path s=(map path lobe)] ::
723−```
724−
725−This is just a `++moat:clay` plus a map of paths to lobes. This map
726−represents the data at the node referenced by the path at case `p`, if
727−we've gotten to that case (else null). We only send a notification along
728−the subscription if the data at a new revision is different than it was.
729−
730−### `++care:clay`, clay submode
731−
732−```hoon
733− ++ care ?(%u %v %w %x %y %z) :: clay submode
734−```
735−
736−This specifies what type of information is requested in a subscription
737−or a scry.
738−
739−`%u` requests the `++rang:clay` at the current moment. Because this
740−information is not stored for any moment other than the present, we
741−crash if the `++case:clay` is not a `%da` for now.
742−
743−`%v` requests the `++dome:clay` at the specified commit.
744−
745−`%w` requests the revsion number of the desk.
746−
747−`%x` requests the file at a specified path at the specified commit. If
748−there is no node at that path or if the node has no contents (that is,
749−if `q:ankh` is null), then this produces null.
750−
751−`%y` requests a `++arch` of the specfied commit at the specified path.
752−
753−`%z` requests the `++ankh` of the specified commit at the specfied path.
754−
755−### `++arch`, shallow filesystem node
756−
757−```hoon
758− ++ arch ,[p=@uvI q=(unit ,@uvI) r=(map ,@ta ,~)] :: fundamental node
759−```
760−
761−This is analogous to `++ankh:clay` except that the we have neither our
762−contents nor the ankhs of our children. The other fields are exactly the
763−same, so `p` is a hash of the associated ankh, `u.q`, if it exists, is a
764−hash of the contents of this node, and the keys of `r` are the names of
765−our children. `r` is a map to null rather than a set so that the
766−ordering of the map will be equivalent to that of `r:ankh`, allowing
767−efficient conversion.
768−
769−#### `++case:clay`, specifying a commit
770−
771−```hoon
772− ++ case :: ship desk case spur
773− $% [%da p=@da] :: date
774− [%tas p=@tas] :: label
775− [%ud p=@ud] :: number
776− == ::
777−```
778−
779−A commit can be referred to in three ways: `%da` refers to the commit
780−that was at the head on date `p`, `%tas` refers to the commit labeled
781−`p`, and `%ud` refers to the commit numbered `p`. Note that since these
782−all can be reduced down to a `%ud`, only numbered commits may be
783−referenced with a `++case:clay`.
784−
785−#### `++dome:clay`, desk data
786−
787−```hoon
788− ++ dome :: project state
789− $: ang=agon :: pedigree
790− ank=ankh :: state
791− let=@ud :: top id
792− hit=(map ,@ud tako) :: changes by id
793− lab=(map ,@tas ,@ud) :: labels
794− == ::
795−```
796−
797−This is the data that is actually stored in a desk.
798−
799−`ang` is unused and should be removed.
800−
801−`ank` is the current state of the desk. Thus, it is the state of the
802−filesystem at revison `let`. The head of a desk is always a numbered
803−commit.
804−
805−`let` is the number of the most recently numbered commit. This is also
806−the total number of numbered commits.
807−
808−`hit` is a map of numerical ids to hashes of commits. These hashes are
809−mapped into their associated commits in `hut:rang:clay`. In general, the keys
810−of this map are exactly the numbers from 1 to `let`, with no gaps. Of
811−course, when there are no numbered commits, `let` is 0, so `hit` is
812−null. Additionally, each of the commits is an ancestor of every commit
813−numbered greater than this one. Thus, each is a descendant of every
814−commit numbered less than this one. Since it is true that the date in
815−each commit (`t:yaki`) is no earlier than that of each of its parents,
816−the numbered commits are totally ordered in the same way by both
817−pedigree and date. Of course, not every commit is numbered. If that
818−sounds too complicated to you, don't worry about it. It basically
819−behaves exactly as you would expect.
820−
821−`lab` is a map of textual labels to numbered commits. Note that labels
822−can only be applied to numbered commits. Labels must be unique across a
823−desk.
824−
825−#### `++ankh`, filesystem node
826−
827−```hoon
828− ++ ankh :: fs node (new)
829− $: p=cash :: recursive hash
830− q=(unit ,[p=cash q=*]) :: file
831− r=(map ,@ta ankh) :: folders
832− == ::
833−```
834−
835−This is a single node in the filesystem. This may be file or a directory
836−or both. In earth filesystems, a node is a file xor a directory. On
837−mars, we're inclusive, so a node is a file ior a directory.
838−
839−`p` is a recursive hash that depends on the contents of the this file or
840−directory and on any children.
841−
842−`q` is the contents of this file, if any. `p.q` is a hash of the
843−contents while `q.q` is the data itself.
844−
845−`r` is the set of children of this node. In the case of a pure file,
846−this is empty. The keys are the names of the children and the values
847−are, recursively, the nodes themselves.
848−
849−#### `++cash`, ankh hash
850−
851−```hoon
852− ++ cash ,@uvH :: ankh hash
853−```
854−
855−This is a 128-bit hash of an ankh. These are mostly stored within ankhs
856−themselves, and they are used to check for changes in possibly-deep
857−hierarchies.
858−
859−#### `++rung`, filesystem per neighbor ship
860−
861−```hoon
862− ++ rung $: rus=(map desk rede) :: neighbor desks
863− == ::
864−```
865−
866−This is the filesystem of a neighbor ship. The keys to this map are all
867−the desks we know about on their ship.
868−
869−#### `++rede`, desk state
870−
871−```hoon
872− ++ rede :: universal project
873− $: lim=@da :: complete to
874− qyx=cult :: subscribers
875− ref=(unit rind) :: outgoing requests
876− dom=dome :: revision state
877− == ::
878−```
879−
880−This is our knowledge of the state of a desk, either foreign or
881−domestic.
882−
883−`lim` is the date of the last full update. We only respond to requests
884−for stuff before this time.
885−
886−`qyx` is the list of subscribers to this desk. For domestic desks, this
887−is simply `p:dojo`, all subscribers to the desk, while in foreign desks
888−this is all the subscribers from our ship to the foreign desk.
889−
890−`ref` is the request manager for the desk. For domestic desks, this is
891−null since we handle requests ourselves.
892−
893−`dom` is the actual data in the desk.
894−
895−#### `++rind`, request manager
896−
897−```hoon
898− ++ rind :: request manager
899− $: nix=@ud :: request index
900− bom=(map ,@ud ,[p=duct q=rave]) :: outstanding
901− fod=(map duct ,@ud) :: current requests
902− haw=(map mood (unit)) :: simple cache
903− == ::
904−```
905−
906−This is the request manager for a foreign desk.
907−
908−`nix` is one more than the index of the most recent request. Thus, it is
909−the next available request number.
910−
911−`bom` is the set of outstanding requests. The keys of this map are some
912−subset of the numbers between 0 and one less than `nix`. The members of
913−the map are exactly those requests that have not yet been fully
914−satisfied.
915−
916−`fod` is the same set as `bom`, but from a different perspective. In
917−particular, the values of `fod` are the same as the values of `bom`, and
918−the `p` out of the values of `bom` are the same as the keys of `fod`.
919−Thus, we can map ducts to their associated request number and `++rave:clay`,
920−and we can map numbers to their associated duct and `++rave:clay`.
921−
922−`haw` is a map from simple requests to their values. This acts as a
923−cache for requests that have already been made. Thus, the second request
924−for a particular `++mood:clay` is nearly instantaneous.
925−
926−#### `++rang:clay`, data store
927−
928−```hoon
929− ++ rang $: hut=(map tako yaki) ::
930− lat=(map lobe blob) ::
931− == ::
932−```
933−
934−This is a set of data keyed by hash. Thus, this is where the "real" data
935−is stored, but it is only meaningful if we know the hash of what we're
936−looking for.
937−
938−`hut` is a map from hashes to commits. We often get the hashes from
939−`hit:dome:clay`, which keys them by logical id. Not every commit has an id.
940−
941−`lat` is a map from hashes to the actual data. We often get the hashes
942−from a `++yaki`, a commit, which references this map to get the data.
943−There is no `++blob:clay` in any `++yaki:clay`. They are only accessible through
944−this map.
945−
946−#### `++tako:clay`, commit reference
947−
948−```hoon
949− ++ tako ,@ :: yaki ref
950−```
951−
952−This is a hash of a `++yaki:clay`, a commit. These are most notably used as
953−the keys in `hut:rang:clay`, where they are associated with the actual
954−`++yaki:clay`, and as the values in `hit:dome:clay`, where sequential ids are
955−associated with these.
956−
957−#### `++yaki:clay`, commit
958−
959−```hoon
960− ++ yaki ,[p=(list tako) q=(map path lobe) r=tako t=@da] :: commit
961−```
962−
963−This is a single commit.
964−
965−`p` is a list of the hashes of the parents of this commit. In most
966−cases, this will be a single commit, but in a merge there may be more
967−parents. In theory, there may be an arbitrary number of parents, but in
968−practice merges have exactly two parents. This may change in the future.
969−For commit 1, there is no parent.
970−
971−`q` is a map of the paths on a desk to the data at that location. If you
972−understand what a `++lobe:clay` and a `++blob:clay` is, then the type signature
973−here tells the whole story.
974−
975−`r` is the hash associated with this commit.
976−
977−`t` is the date at which this commit was made.
978−
979−#### `++lobe:clay`, data reference
980−
981−```hoon
982− ++ lobe ,@ :: blob ref
983−```
984−
985−This is a hash of a `++blob:clay`. These are most notably used in `lat:rang:clay`,
986−where they are associated with the actual `++blob:clay`, and as the values in
987−`q:yaki:clay`, where paths are associated with their data in a commit.
988−
989−#### `++blob:clay`, data
990−
991−```hoon
992− ++ blob $% [%delta p=lobe q=lobe r=udon] :: delta on q
993− [%direct p=lobe q=* r=umph] ::
994− [%indirect p=lobe q=* r=udon s=lobe] ::
995− == ::
996−```
997−
998−This is a node of data. In every case, `p` is the hash of the blob.
999−
1000−`%delta` is the case where we define the data by a delta on other data.
1001−In practice, the other data is always the previous commit, but nothing
1002−depends on this. `q` is the hash of the parent blob, and `r` is the
1003−delta.
1004−
1005−`%direct` is the case where we simply have the data directly. `q` is the
1006−data itself, and `r` is any preprocessing instructions. These almost
1007−always come from the creation of a file.
1008−
1009−`%indirect` is both of the preceding cases at once. `q` is the direct
1010−data, `r` is the delta, and `s` is the parent blob. It should always be
1011−the case that applying `r` to `s` gives the same data as `q` directly
1012−(with the prepreprocessor instructions in `p.r`). This exists purely for
1013−performance reasons. This is unused, at the moment, but in general these
1014−should be created when there are a long line of changes so that we do
1015−not have to traverse the delta chain back to the creation of the file.
1016−
1017−#### `++udon`, abstract delta
1018−
1019−```hoon
1020− ++ udon :: abstract delta
1021− $: p=umph :: preprocessor
1022− $= q :: patch
1023− $% [%a p=* q=*] :: trivial replace
1024− [%b p=udal] :: atomic indel
1025− [%c p=(urge)] :: list indel
1026− [%d p=upas q=upas] :: tree edit
1027− == ::
1028− == ::
1029−```
1030−
1031−This is an abstract change to a file. This is a superset of what would
1032−normally be called diffs. Diffs usually refer to changes in lines of
1033−text while we have the ability to do more interesting deltas on
1034−arbitrary data structures.
1035−
1036−`p` is any preprocessor instructions.
1037−
1038−`%a` refers to the trival delta of a complete replace of old data with
1039−new data.
1040−
1041−`%b` refers to changes in an opaque atom on the block level. This has
1042−very limited usefulness, and is not used at the moment.
1043−
1044−`%c` refers to changes in a list of data. This is often lines of text,
1045−which is your classic diff. We, however, will work on any list of data.
1046−
1047−`%d` refers to changes in a tree of data. This is general enough to
1048−describe changes to any hoon [noun](/docs/glossary/noun/), but often more special-purpose delta
1049−should be created for different content types. This is not used at the
1050−moment, and may in fact be unimplemented.
1051−
1052−#### `++urge`, list change
1053−
1054−```hoon
1055− ++ urge |*(a=_,* (list (unce a))) :: list change
1056−```
1057−
1058−This is a parametrized type for list changes. For example, `(urge ,@t)`
1059−is a list change for lines of text.
1060−
1061−#### `++unce`, change part of a list.
1062−
1063−```hoon
1064− ++ unce |* a=_,* :: change part
1065− $% [%& p=@ud] :: skip[copy]
1066− [%| p=(list a) q=(list a)] :: p -> q[chunk]
1067− == ::
1068−```
1069−
1070−This is a single change in a list of elements of type `a`. For example,
1071−`(unce ,@t)` is a single change in a lines of text.
1072−
1073−`%&` means the next `p` lines are unchanged.
1074−
1075−`%|` means the lines `p` have changed to `q`.
1076−
1077−#### `++umph`, preprocessing information
1078−
1079−```hoon
1080− ++ umph :: change filter
1081− $| $? %a :: no filter
1082− %b :: jamfile
1083− %c :: LF text
1084− == ::
1085− $% [%d p=@ud] :: blocklist
1086− == ::
1087−```
1088−
1089−This space intentionally left undocumented. This stuff will change once
1090−we get a well-typed clay.
1091−
1092−#### `++upas`, tree change
1093−
1094−```hoon
1095− ++ upas :: tree change (%d)
1096− $& [p=upas q=upas] :: cell
1097− $% [%0 p=axis] :: copy old
1098− [%1 p=*] :: insert new
1099− [%2 p=axis q=udon] :: mutate!
1100− == ::
1101−```
1102−
1103−This space intentionally left undocumented. This stuff is not known to
1104−work, and will likely change when we get a well-typed clay. Also, this
1105−is not a complicated type; it is not difficult to work out the meaning.
1106−
1107−#### `++nori:clay`, repository action
1108−
1109−```hoon
1110− ++ nori :: repository action
1111− $% [& q=soba] :: delta
1112− [| p=@tas] :: label
1113− == ::
1114−```
1115−
1116−This describes a change that we are asking clay to make to the desk.
1117−There are two kinds of changes that may be made: we can modify files or
1118−we can apply a label to a commit.
1119−
1120−In the `|` case, we will simply label the current commit with the given
1121−label. In the `&` case, we will apply the given changes.
1122−
1123−#### `++soba:clay`, delta
1124−
1125−```hoon
1126− ++ soba ,[p=cart q=(list ,[p=path q=miso])] :: delta
1127−```
1128−
1129−This describes a set of changes to make to a desk. The `cart` is simply
1130−a pair of the old hash and the new hash of the desk. The list is a list
1131−of changes keyed by the file they're changing. Thus, the paths are paths
1132−to files to be changed while `miso` is a description of the change
1133−itself.
1134−
1135−#### `++miso:clay`, ankh delta
1136−
1137−```hoon
1138− ++ miso :: ankh delta
1139− $% [%del p=*] :: delete
1140− [%ins p=*] :: insert
1141− [%mut p=udon] :: mutate
1142− == ::
1143−```
1144−
1145−There are three kinds of changes that may be made to a node in a desk.
1146−We can insert a file, in which case `p` is the contents of the new file.
1147−We can delete a file, in which case `p` is the contents of the old file.
1148−Finally, we can mutate that file, in which case the `udon` describes the
1149−changes we are applying to the file.
1150−
1151−#### `++mizu:clay`, merged state
1152−
1153−```hoon
1154− ++ mizu ,[p=@u q=(map ,@ud tako) r=rang] :: new state
1155−```
1156−
1157−This is the input to the `%merg` kiss, which allows us to perform a
1158−merge. The `p` is the number of the new head commit. The `q` is a map
1159−from numbers to commit hashes. This is all the new numbered commits that
1160−are to be inserted. The keys to this should always be the numbers from
1161−`let.dom` plus one to `p`, inclusive. The `r` is the maps of all the new
1162−commits and data. Since these are merged into the current state, no old
1163−commits or data need be here.
1164−
1165−#### `++riff:clay`, request/desist
1166−
1167−```hoon
1168− ++ riff ,[p=desk q=(unit rave)] :: request/desist
1169−```
1170−
1171−This represents a request for data about a particular desk. If `q`
1172−contains a `rave`, then this opens a subscription to the desk for that
1173−data. If `q` is null, then this tells clay to cancel the subscription
1174−along this duct.
1175−
1176−#### `++riot:clay`, response
1177−
1178−```hoon
1179− ++ riot (unit rant) :: response/complete
1180−```
1181−
1182−A riot is a response to a subscription. If null, the subscription has
1183−been completed, and no more responses will be sent. Otherwise, the
1184−`rant` is the produced data.
1185−
1186−#### `++rant:clay`, response data
1187−
1188−```hoon
1189− ++ rant :: namespace binding
1190− $: p=[p=care q=case r=@tas] :: clade release book
1191− q=path :: spur
1192− r=* :: data
1193− == ::
1194−```
1195−
1196−This is the data at a particular node in the filesystem. `p.p` specifies
1197−the type of data that was requested (and is produced). `q.p` gives the
1198−specific version reported (since a range of versions may be requested in
1199−a subscription). `r.p` is the desk. `q` is the path to the filesystem
1200−node. `r` is the data itself (in the format specified by `p.p`).
1201−
1202−### `++nako`, subscription response data
1203−
1204−```hoon
1205− ++ nako $: gar=(map ,@ud tako) :: new ids
1206− let=@ud :: next id
1207− lar=(set yaki) :: new commits
1208− bar=(set blob) :: new content
1209− == ::
1210−```
1211−
1212−This is the data that is produced by a request for a range of revisions
1213−of a desk. This allows us to easily keep track of a remote repository --
1214−all the new information we need is contained in the `nako`.
1215−
1216−`gar` is a map of the revisions in the range to the hash of the commit
1217−at that revision. These hashes can be used with `hut:rang:clay` to find the
1218−commit itself.
1219−
1220−`let` is either the last revision number in the range or the most recent
1221−revision number, whichever is smaller.
1222−
1223−`lar` is the set of new commits, and `bar` is the set of new content.
1224−
1225−## Public Interface
1226−
1227−As with all vanes, there are exactly two ways to interact with clay.
1228−`%clay` exports a namespace accessible through `.^`, which is described
1229−above under `++care:clay`. The primary way of interacting with clay, though,
1230−is by sending kisses and receiving gifts.
1231−
1232−```hoon
1233− ++ gift :: out result <-$
1234− $% [%ergo p=@p q=@tas r=@ud] :: version update
1235− [%note p=@tD q=tank] :: debug message
1236− [%writ p=riot] :: response
1237− == ::
1238− ++ kiss :: in request ->$
1239− $% [%info p=@p q=@tas r=nori] :: internal edit
1240− [%ingo p=@p q=@tas r=nori] :: internal noun edit
1241− [%init p=@p] :: report install
1242− [%into p=@p q=@tas r=nori] :: external edit
1243− [%invo p=@p q=@tas r=nori] :: external noun edit
1244− [%merg p=@p q=@tas r=mizu] :: internal change
1245− [%wart p=sock q=@tas r=path s=*] :: network request
1246− [%warp p=sock q=riff] :: file request
1247− == ::
1248−```
1249−
1250−There are only a small number of possible kisses, so it behooves us to
1251−describe each in detail.
1252−
1253−```hoon
1254− $% [%info p=@p q=@tas r=nori] :: internal edit
1255−
1256− [%into p=@p q=@tas r=nori] :: external edit
1257−```
1258−
1259−These two kisses are nearly identical. At a high level, they apply
1260−changes to the filesystem. Whenever we add, remove, or edit a file, one
1261−of these cards is sent. The `p` is the ship whose filesystem we're
1262−trying to change, the `q` is the desk we're changing, and the `r` is the
1263−request change. For the format of the requested change, see the
1264−documentation for `++nori:clay` above.
1265−
1266−When a file is changed in the unix filesystem, vere will send a `%into`
1267−kiss. This tells clay that the duct over which the kiss was sent is the
1268−duct that unix is listening on for changes. From within Arvo, though, we
1269−should never send a `%into` kiss. The `%info` kiss is exactly identical
1270−except it does not reset the duct.
1271−
1272−```hoon
1273− [%ingo p=@p q=@tas r=nori] :: internal noun edit
1274−
1275− [%invo p=@p q=@tas r=nori] :: external noun edit
1276−```
1277−
1278−These kisses are currently identical to `%info` and `%into`, though this
1279−will not always be the case. The intent is for these kisses to allow
1280−typed changes to clay so that we may store typed data. This is currently
1281−unimplemented.
1282−
1283−```hoon
1284− [%init p=@p] :: report install
1285−```
1286−
1287−Init is called when a ship is started on our pier. This simply creates a
1288−default `room` to go into our `raft`. Essentially, this initializes the
1289−filesystem for a ship.
1290−
1291−```hoon
1292− [%merg p=@p q=@tas r=mizu] :: internal change
1293−```
1294−
1295−This is called to perform a merge. This is most visibly called by
1296−:update to update the filesystem of the current ship to that of its
1297−sein. The `p` and `q` are as in `%info`, and the `r` is the description
1298−of the merge. See `++mizu:clay` above.
1299−
1300−XX
1301−`XX [%wake ~] :: timer activate XX`
1302−XX\
1303−XX This card is sent by unix at the time specified by `++doze`. This
1304−time is XX usually the closest time specified in a subscription request.
1305−When `%wake` is XX called, we update our subscribers if there have been
1306−any changes.
1307−
1308−```hoon
1309− [%wart p=sock q=@tas r=path s=*] :: network request
1310−```
1311−
1312−This is a request that has come across the network for a particular
1313−file. When another ship asks for a file from us, that request comes to
1314−us in the form of a `%wart` kiss. This is handled by trivially turning
1315−it into a `%warp`.
1316−
1317−```hoon
1318− [%warp p=sock q=riff] :: file request
1319−```
1320−
1321−This is a request for information about a particular desk. This is, in
1322−its most general form, a subscription, though in many cases it is the
1323−trivial case of a subscription -- a read. See `++riff:clay` for the format of
1324−the request.
1325−
1326−## Lifecycle of a Local Read
1327−
1328−There are two real types of interaction with a filesystem: you can read,
1329−and you can write. We'll describe each process, detailing both the flow
1330−of control followed by the kernel and the algorithms involved. The
1331−simpler case is that of the read, so we'll begin with that.
1332−
1333−When a vane or an application wishes to read a file from the filesystem,
1334−it sends a `%warp` kiss, as described above. Of course, you may request
1335−a file on another ship and, being a global filesystem, clay will happily
1336−produce it for you. That code pathway will be described in another
1337−section; here, we will restrict ourselves to examining the case of a
1338−read from a ship on our own pier.
1339−
1340−The kiss can request either a single version of a file node or a range
1341−of versions of a desk. Here, we'll deal only with a request for a single
1342−version.
1343−
1344−As in all vanes, a kiss enters clay via a call to `++call`. Scanning
1345−through the arm, we quickly see where `%warp` is handled.
1346−
1347−```hoon
1348− ?: =(p.p.q.hic q.p.q.hic)
1349− =+ une=(un p.p.q.hic now ruf)
1350− =+ wex=(di:une p.q.q.hic)
1351− =+ ^= wao
1352− ?~ q.q.q.hic
1353− (ease:wex hen)
1354− (eave:wex hen u.q.q.q.hic)
1355− =+ ^= woo
1356− abet:wao
1357− [-.woo abet:(pish:une p.q.q.hic +.woo ran.wao)]
1358−```
1359−
1360−We're following the familar patern of producing a list of moves and an
1361−updated state. In this case, the state is `++raft`.
1362−
1363−We first check to see if the sending and receiving ships are the same.
1364−If they're not, then this is a request for data on another ship. We
1365−describe that process later. Here, we discuss only the case of a local
1366−read.
1367−
1368−At a high level, the call to `++un` sets up the core for the domestic
1369−ship that contains the files we're looking for. The call to `++di` sets
1370−up the core for the particular desk we're referring to.
1371−
1372−After this, we perform the actual request. If there is no rave in the
1373−riff, then that means we are cancelling a request, so we call
1374−`++ease:de`. Otherwise, we start a subscription with `++eave:de`. We
1375−call `++abet:de` to resolve our various types of output into actual
1376−moves. We produce the moves we found above and the `++un` core resolved
1377−with `++pish:un` (putting the modified desk in the room) and `++abet:un`
1378−(putting the modified room in the raft).
1379−
1380−Much of this is fairly straightforward, so we'll only describe `++ease`,
1381−`++eave`, and `++abet:de`. Feel free to look up the code to the other
1382−steps -- it should be easy to follow.
1383−
1384−Although it's called last, it's usually worth examining `++abet` first,
1385−since it defines in what ways we can cause side effects. Let's do that,
1386−and also a few of the lines at the beginning of `++de`.
1387−
1388−```hoon
1389− =| yel=(list ,[p=duct q=gift])
1390− =| byn=(list ,[p=duct q=riot])
1391− =| vag=(list ,[p=duct q=gift])
1392− =| say=(list ,[p=duct q=path r=ship s=[p=@ud q=riff]])
1393− =| tag=(list ,[p=duct q=path c=note])
1394− |%
1395− ++ abet
1396− ^- [(list move) rede]
1397− :_ red
1398− ;: weld
1399− %+ turn (flop yel)
1400− |=([a=duct b=gift] [hun %give b])
1401− ::
1402− %+ turn (flop byn)
1403− |=([a=duct b=riot] [a %give [%writ b]])
1404− ::
1405− %+ turn (flop vag)
1406− |=([a=duct b=gift] [a %give b])
1407− ::
1408− %+ turn (flop say)
1409− |= [a=duct b=path c=ship d=[p=@ud q=riff]]
1410− :- a
1411− [%pass b %a %want [who c] [%q %re p.q.d (scot %ud p.d) ~] q.d]
1412− ::
1413− %+ turn (flop tag)
1414− |=([a=duct b=path c=note] [a %pass b c])
1415− ==
1416−```
1417−
1418−This is very simple code. We see there are exactly five different kinds
1419−of side effects we can generate.
1420−
1421−In `yel` we put gifts that we wish to be sent along the `hun:room` duct
1422−to dill. See the documentation for `++room` above. This is how we
1423−display messages to the terminal.
1424−
1425−In `byn` we put riots that we wish returned to subscribers. Recall that
1426−a riot is a response to a subscription. These are returned to our
1427−subscribers in the form of a `%writ` gift.
1428−
1429−In `vag` we put gifts along with the ducts on which to send them. This
1430−allows us to produce arbitrary gifts, but in practice this is only used
1431−to produce `%ergo` gifts.
1432−
1433−In `say` we put messages we wish to pass to ames. These messages are
1434−used to request information from clay on other piers. We must provide
1435−not only the duct and the request (the riff), but also the return path,
1436−the other ship to talk to, and the sequence number of the request.
1437−
1438−In `tag` we put arbitrary notes we wish to pass to other vanes. For now,
1439−the only notes we pass here are `%wait` and `%rest` to the timer vane.
1440−
1441−Now that we know what kinds of side effects we may have, we can jump
1442−into the handling of requests.
1443−
1444−```hoon
1445− ++ ease :: release request
1446− |= hen=duct
1447− ^+ +>
1448− ?~ ref +>
1449− =+ rov=(~(got by qyx) hen)
1450− =. qyx (~(del by qyx) hen)
1451− (mabe rov (cury best hen))
1452− =. qyx (~(del by qyx) hen)
1453− |- ^+ +>+.$
1454− =+ nux=(~(get by fod.u.ref) hen)
1455− ?~ nux +>+.$
1456− %= +>+.$
1457− say [[hen [(scot %ud u.nux) ~] for [u.nux syd ~]] say]
1458− fod.u.ref (~(del by fod.u.ref) hen)
1459− bom.u.ref (~(del by bom.u.ref) u.nux)
1460− ==
1461−```
1462−
1463−This is called when we're cancelling a subscription. For domestic desks,
1464−`ref` is null, so we're going to cancel any timer we might have created.
1465−We first delete the duct from our map of requests, and then we call
1466−`++mabe` with `++best` to send a `%rest` kiss to the timer vane if we
1467−have started a timer. We'll describe `++best` and `++mabe` momentarily.
1468−
1469−Although we said we're not going to talk about foreign requests yet,
1470−it's easy to see that for foreign desks, we cancel any outstanding
1471−requests for this duct and send a message over ames to the other ship
1472−telling them to cancel the subscription.
1473−
1474−```hoon
1475− ++ best
1476− |= [hen=duct tym=@da]
1477− %_(+> tag :_(tag [hen /tyme %t %rest tym]))
1478−```
1479−
1480−This simply pushes a `%rest` note onto `tag`, from where it will be
1481−passed back to arvo to be handled. This cancels the timer at the given
1482−duct (with the given time).
1483−
1484−```hoon
1485− ++ mabe :: maybe fire function
1486− |* [rov=rove fun=$+(@da _+>.^$)]
1487− ^+ +>.$
1488− %- fall :_ +>.$
1489− %- bind :_ fun
1490− ^- (unit ,@da)
1491− ?- -.rov
1492− %&
1493− ?. ?=(%da -.q.p.rov) ~
1494− `p.q.p.rov
1495− %|
1496− =* mot p.rov
1497− %+ hunt
1498− ?. ?=(%da -.p.mot) ~
1499− ?.((lth now p.p.mot) ~ [~ p.p.mot])
1500− ?. ?=(%da -.q.mot) ~
1501− ?.((lth now p.q.mot) [~ now] [~ p.q.mot])
1502− ==
1503−```
1504−
1505−This decides whether the given request can only be satsified in the
1506−future. In that case, we call the given function with the time in the
1507−future when we expect to have an update to give to this request. This is
1508−called with `++best` to cancel timers and with `++bait` to start them.
1509−
1510−For single requests, we have a time if the request is for a particular
1511−time (which is assumed to be in the future). For ranges of requests, we
1512−check both the start and end cases to see if they are time cases. If so,
1513−we choose the earlier time.
1514−
1515−If any of those give us a time, then we call the given funciton with the
1516−smallest time.
1517−
1518−The more interesting case is, of course, when we're not cancelling a
1519−subscription but starting one.
1520−
1521−```hoon
1522− ++ eave :: subscribe
1523− |= [hen=duct rav=rave]
1524− ^+ +>
1525− ?- -.rav
1526− &
1527− ?: &(=(p.p.rav %u) !=(p.q.p.rav now))
1528− ~& [%clay-fail p.q.p.rav %now now]
1529− !!
1530− =+ ver=(aver p.rav)
1531− ?~ ver
1532− (duce hen rav)
1533− ?~ u.ver
1534− (blub hen)
1535− (blab hen p.rav u.u.ver)
1536−```
1537−
1538−There are two types of subscriptions -- either we're requesting a single
1539−file or we're requesting a range of versions of a desk. We'll dicuss the
1540−simpler case first.
1541−
1542−First, we check that we're not requesting the `rang` from any time other
1543−than the present. Since we don't store that information for any other
1544−time, we can't produce it in a referentially transparent manner for any
1545−time other than the present.
1546−
1547−Then, we try to read the requested `mood:clay` `p.rav`. If we can't access
1548−the request data right now, we call `++duce` to put the request in our
1549−queue to be satisfied when the information becomes available.
1550−
1551−This case occurs when we make a request for a case whose (1) date is
1552−after the current date, (2) number is after the current number, or (3)
1553−label is not yet used.
1554−
1555−```hoon
1556− ++ duce :: produce request
1557− |= [hen=duct rov=rove]
1558− ^+ +>
1559− =. qyx (~(put by qyx) hen rov)
1560− ?~ ref
1561− (mabe rov (cury bait hen))
1562− |- ^+ +>+.$ :: XX why?
1563− =+ rav=(reve rov)
1564− =+ ^= vaw ^- rave
1565− ?. ?=([%& %v *] rav) rav
1566− [%| [%ud let.dom] `case`q.p.rav r.p.rav]
1567− =+ inx=nix.u.ref
1568− %= +>+.$
1569− say [[hen [(scot %ud inx) ~] for [inx syd ~ vaw]] say]
1570− nix.u.ref +(nix.u.ref)
1571− bom.u.ref (~(put by bom.u.ref) inx [hen vaw])
1572− fod.u.ref (~(put by fod.u.ref) hen inx)
1573− ==
1574−```
1575−
1576−The code for `++duce` is nearly the exact inverse of `++ease`, which in
1577−the case of a domestic desk is very simple -- we simply put the duct and
1578−rave into `qyx` and possibly start a timer with `++mabe` and `++bait`.
1579−Recall that `ref` is null for domestic desks and that `++mabe` fires the
1580−given function with the time we need to be woken up at, if we need to be
1581−woken up at a particular time.
1582−
1583−```hoon
1584− ++ bait
1585− |= [hen=duct tym=@da]
1586− %_(+> tag :_(tag [hen /tyme %t %wait tym]))
1587−```
1588−
1589−This sets an alarm by sending a `%wait` card with the given time to the
1590−timer vane.
1591−
1592−Back in `++eave`, if `++aver` returned `[~ ~]`, then we cancel the
1593−subscription. This occurs when we make (1) a `%x` request for a file
1594−that does not exist, (2) a `%w` request with a case that is not a
1595−number, or (3) a `%w` request with a nonempty path. The `++blub` is
1596−exactly what you would expect it to be.
1597−
1598−```hoon
1599− ++ blub :: ship stop
1600− |= hen=duct
1601− %_(+> byn [[hen ~] byn])
1602−```
1603−
1604−We notify the duct that we're cancelling their subscription since it
1605−isn't satisfiable.
1606−
1607−Otherwise, we have received the desired information, so we send it on to
1608−the subscriber with `++blab`.
1609−
1610−```hoon
1611− ++ blab :: ship result
1612− |= [hen=duct mun=mood dat=*]
1613− ^+ +>
1614− +>(byn [[hen ~ [p.mun q.mun syd] r.mun dat] byn])
1615−```
1616−
1617−The most interesting arm called in `++eave` is, of course, `++aver`,
1618−where we actually try to read the data.
1619−
1620−```hoon
1621− ++ aver :: read
1622− |= mun=mood
1623− ^- (unit (unit ,*))
1624− ?: &(=(p.mun %u) !=(p.q.mun now)) :: prevent bad things
1625− ~& [%clay-fail p.q.mun %now now]
1626− !!
1627− =+ ezy=?~(ref ~ (~(get by haw.u.ref) mun))
1628− ?^ ezy ezy
1629− =+ nao=(~(case-to-aeon ze lim dom ran) q.mun)
1630− ?~(nao ~ [~ (~(read-at-aeon ze lim dom ran) u.nao mun)])
1631−```
1632−
1633−We check immediately that we're not requesting the `rang` for any time
1634−other than the present.
1635−
1636−If this is a foreign desk, then we check our cache for the specific
1637−request. If either this is a domestic desk or we don't have the request
1638−in our cache, then we have to actually go read the data from our dome.
1639−
1640−We need to do two things. First, we try to find the number of the commit
1641−specified by the given case, and then we try to get the data there.
1642−
1643−Here, we jump into `arvo/zuse.hoon`, which is where much of the
1644−algorithmic code is stored, as opposed to the clay interface, which is
1645−stored in `arvo/clay.hoon`. We examine `++case-to-aeon:ze`.
1646−
1647−```hoon
1648− ++ case-to-aeon :: case-to-aeon:ze
1649− |= lok=case :: act count through
1650− ^- (unit aeon)
1651− ?- -.lok
1652− %da
1653− ?: (gth p.lok lim) ~
1654− |- ^- (unit aeon)
1655− ?: =(0 let) [~ 0] :: avoid underflow
1656− ?: %+ gte p.lok
1657− =< t
1658− %- tako-to-yaki
1659− %- aeon-to-tako
1660− let
1661− [~ let]
1662− $(let (dec let))
1663− ::
1664− %tas (~(get by lab) p.lok)
1665− %ud ?:((gth p.lok let) ~ [~ p.lok])
1666− ==
1667−```
1668−
1669−We handle each type of `case:clay` differently. The latter two types are
1670−easy.
1671−
1672−If we're requesting a revision by label, then we simply look up the
1673−requested label in `lab` from the given dome. If it exists, that is our
1674−aeon; else we produce null, indicating the requested revision does not
1675−yet exist.
1676−
1677−If we're requesting a revision by number, we check if we've yet reached
1678−that number. If so, we produce the number; else we produce null.
1679−
1680−If we're requesting a revision by date, we check first if the date is in
1681−the future, returning null if so. Else we start from the most recent
1682−revision and scan backwards until we find the first revision committed
1683−before that date, and we produce that. If we requested a date before any
1684−revisions were committed, we produce `0`.
1685−
1686−The definitions of `++aeon-to-tako` and `++tako-to-yaki` are trivial.
1687−
1688−```hoon
1689− ++ aeon-to-tako ~(got by hit)
1690−
1691− ++ tako-to-yaki ~(got by hut) :: grab yaki
1692−```
1693−
1694−We simply look up the aeon or tako in their respective maps (`hit` and
1695−`hut`).
1696−
1697−Assuming we got a valid version number, `++aver` calls
1698−`++read-at-aeon:ze`, which reads the requested data at the given
1699−revision.
1700−
1701−```hoon
1702− ++ read-at-aeon :: read-at-aeon:ze
1703− |= [oan=aeon mun=mood] :: seek and read
1704− ^- (unit)
1705− ?: &(?=(%w p.mun) !?=(%ud -.q.mun)) :: NB only for speed
1706− ?^(r.mun ~ [~ oan])
1707− (read:(rewind oan) mun)
1708−```
1709−
1710−If we're requesting the revision number with a case other than by
1711−number, then we go ahead and just produce the number we were given.
1712−Otherwise, we call `++rewind` to rewind our state to the given revision,
1713−and then we call `++read` to get the requested information.
1714−
1715−```hoon
1716− ++ rewind :: rewind:ze
1717− |= oan=aeon :: rewind to aeon
1718− ^+ +>
1719− ?: =(let oan) +>
1720− ?: (gth oan let) !! :: don't have version
1721− +>(ank (checkout-ankh q:(tako-to-yaki (aeon-to-tako oan))), let oan)
1722−```
1723−
1724−If we're already at the requested version, we do nothing. If we're
1725−requesting a version later than our head, we are unable to comply.
1726−
1727−Otherwise, we get the hash of the commit at the number, and from that we
1728−get the commit itself (the yaki), which has the map of path to lobe that
1729−represents a version of the filesystem. We call `++checkout-ankh` to
1730−checkout the commit, and we replace `ank` in our context with the
1731−result.
1732−
1733−```hoon
1734− ++ checkout-ankh :: checkout-ankh:ze
1735− |= hat=(map path lobe) :: checkout commit
1736− ^- ankh
1737− %- cosh
1738− %+ roll (~(tap by hat) ~)
1739− |= [[pat=path bar=lobe] ank=ankh]
1740− ^- ankh
1741− %- cosh
1742− ?~ pat
1743− =+ zar=(lobe-to-noun bar)
1744− ank(q [~ (sham zar) zar])
1745− =+ nak=(~(get by r.ank) i.pat)
1746− %= ank
1747− r %+ ~(put by r.ank) i.pat
1748− $(pat t.pat, ank (fall nak _ankh))
1749− ==
1750−```
1751−
1752−Twice we call `++cosh`, which hashes a commit, updating `p` in an
1753−`ankh`. Let's jump into that algorithm before we describe
1754−`++checkout-ankh`.
1755−
1756−```hoon
1757− ++ cosh :: locally rehash
1758− |= ank=ankh :: NB v/unix.c
1759− ank(p rehash:(zu ank))
1760−```
1761−
1762−We simply replace `p` in the hash with the `cash` we get from a call to
1763−`++rehash:zu`.
1764−
1765−```hoon
1766− ++ zu !: :: filesystem
1767− |= ank=ankh :: filesystem state
1768− =| myz=(list ,[p=path q=miso]) :: changes in reverse
1769− =| ram=path :: reverse path into
1770− |%
1771− ++ rehash :: local rehash
1772− ^- cash
1773− %+ mix ?~(q.ank 0 p.u.q.ank)
1774− =+ axe=1
1775− |- ^- cash
1776− ?~ r.ank _@
1777− ;: mix
1778− (shaf %dash (mix axe (shaf %dush (mix p.n.r.ank p.q.n.r.ank))))
1779− $(r.ank l.r.ank, axe (peg axe 2))
1780− $(r.ank r.r.ank, axe (peg axe 3))
1781− ==
1782−```
1783−
1784−`++zu` is a core we set up with a particular filesystem node to traverse
1785−a checkout of the filesystem and access the actual data inside it. One
1786−of the things we can do with it is to create a recursive hash of the
1787−node.
1788−
1789−In `++rehash`, if this node is a file, then we xor the remainder of the
1790−hash with the hash of the contents of the file. The remainder of the
1791−hash is `0` if we have no children, else we descend into our children.
1792−Basically, we do a half SHA-256 of the xor of the axis of this child and
1793−the half SHA-256 of the xor of the name of the child and the hash of the
1794−child. This is done for each child and all the results are xored
1795−together.
1796−
1797−Now we return to our discussion of `++checkout-ankh`.
1798−
1799−We fold over every path in this version of the filesystem and create a
1800−great ankh out of them. First, we call `++lobe-to-noun` to get the raw
1801−data referred to be each lobe.
1802−
1803−```hoon
1804− ++ lobe-to-noun :: grab blob
1805− |= p=lobe :: ^- *
1806− %- blob-to-noun
1807− (lobe-to-blob p)
1808−```
1809−
1810−This converts a lobe into the raw data it refers to by first getting the
1811−blob with `++lobe-to-blob` and converting that into data with
1812−`++blob-to-noun`.
1813−
1814−```hoon
1815− ++ lobe-to-blob ~(got by lat) :: grab blob
1816−```
1817−
1818−This just grabs the blob that the lobe refers to.
1819−
1820−```hoon
1821− ++ blob-to-noun :: grab blob
1822− |= p=blob
1823− ?- -.p
1824− %delta (lump r.p (lobe-to-noun q.p))
1825− %direct q.p
1826− %indirect q.p
1827− ==
1828−```
1829−
1830−If we have either a direct or an indirect blob, then the data is stored
1831−right in the blob. Otherwise, we have to reconstruct it from the diffs.
1832−We do this by calling `++lump` on the diff in the blob with the data
1833−obtained by recursively calling the parent of this blob.
1834−
1835−```hoon
1836− ++ lump :: apply patch
1837− |= [don=udon src=*]
1838− ^- *
1839− ?+ p.don ~|(%unsupported !!)
1840− %a
1841− ?+ -.q.don ~|(%unsupported !!)
1842− %a q.q.don
1843− %c (lurk ((hard (list)) src) p.q.don)
1844− %d (lure src p.q.don)
1845− ==
1846− ::
1847− %c
1848− =+ dst=(lore ((hard ,@) src))
1849− %- roly
1850− ?+ -.q.don ~|(%unsupported !!)
1851− %a ((hard (list ,@t)) q.q.don)
1852− %c (lurk dst p.q.don)
1853− ==
1854− ==
1855−```
1856−
1857−This is defined in `arvo/hoon.hoon` for historical reasons which are
1858−likely no longer applicable. Since the `++umph` structure will likely
1859−change we convert clay to be a typed filesystem, we'll only give a
1860−high-level description of this process. If we have a `%a` udon, then
1861−we're performing a trivial replace, so we produce simply `q.q.don`. If
1862−we have a `%c` udon, then we're performing a list merge (as in, for
1863−example, lines of text). The merge is performed by `++lurk`.
1864−
1865−```hoon
1866− ++ lurk :: apply list patch
1867− |* [hel=(list) rug=(urge)]
1868− ^+ hel
1869− =+ war=`_hel`~
1870− |- ^+ hel
1871− ?~ rug (flop war)
1872− ?- -.i.rug
1873− &
1874− %= $
1875− rug t.rug
1876− hel (slag p.i.rug hel)
1877− war (weld (flop (scag p.i.rug hel)) war)
1878− ==
1879− ::
1880− |
1881− %= $
1882− rug t.rug
1883− hel =+ gur=(flop p.i.rug)
1884− |- ^+ hel
1885− ?~ gur hel
1886− ?>(&(?=(^ hel) =(i.gur i.hel)) $(hel t.hel, gur t.gur))
1887− war (weld q.i.rug war)
1888− ==
1889− ==
1890−```
1891−
1892−We accumulate our final result in `war`. If there's nothing more in our
1893−list of merge instructions (unces), we just reverse `war` and produce
1894−it. Otherwise, we process another unce. If the unce is of type `&`, then
1895−we have `p.i.rug` lines of no changes, so we just copy them over from
1896−`hel` to `war`. If the unice is of type `|`, then we verify that the
1897−source lines (in `hel`) are what we expect them to be (`p.i.rug`),
1898−crashing on failure. If they're good, then we append the new lines in
1899−`q.i.rug` onto `war`.
1900−
1901−And that's really it. List merges are pretty easy. Anyway, if you
1902−recall, we were discussing `++checkout-ankh`.
1903−
1904−```hoon
1905− ++ checkout-ankh :: checkout-ankh:ze
1906− |= hat=(map path lobe) :: checkout commit
1907− ^- ankh
1908− %- cosh
1909− %+ roll (~(tap by hat) ~)
1910− |= [[pat=path bar=lobe] ank=ankh]
1911− ^- ankh
1912− %- cosh
1913− ?~ pat
1914− =+ zar=(lobe-to-noun bar)
1915− ank(q [~ (sham zar) zar])
1916− =+ nak=(~(get by r.ank) i.pat)
1917− %= ank
1918− r %+ ~(put by r.ank) i.pat
1919− $(pat t.pat, ank (fall nak _ankh))
1920− ==
1921−```
1922−
1923−If the path is null, then we calculate `zar`, the raw data at the path
1924−`pat` in this version. We produce the given ankh with the correct data.
1925−
1926−Otherwise, we try to get the child we're looking at from our parent
1927−ankh. If it's already been created, this succeeds; otherwise, we simply
1928−create a default blank ankh. We place ourselves in our parent after
1929−recursively computing our children.
1930−
1931−This algorithm really isn't that complicated, but it may not be
1932−immediately obvious why it works. An example should clear everything up.
1933−
1934−Suppose `hat` is a map of the following information.
1935−
1936−```
1937− /greeting --> "customary upon meeting"
1938− /greeting/english --> "hello"
1939− /greeting/spanish --> "hola"
1940− /greeting/russian/short --> "привет"
1941− /greeting/russian/long --> "Здравствуйте"
1942− /farewell/russian --> "до свидания"
1943−```
1944−
1945−Furthermore, let's say that we process them in this order:
1946−
1947−```
1948− /greeting/english
1949− /greeting/russian/short
1950− /greeting/russian/long
1951− /greeting
1952− /greeting/spanish
1953− /farewell/russian
1954−```
1955−
1956−Then, the first path we process is `/greeting/english` . Since our path
1957−is not null, we try to get `nak`, but because our ankh is blank at this
1958−point it doesn't find anything. Thus, update our blank top-level ankh
1959−with a child `%greeting`. and recurse with the blank `nak` to create the
1960−ankh of the new child.
1961−
1962−In the recursion, we our path is `/english` and our ankh is again blank.
1963−We try to get the `english` child of our ankh, but this of course fails.
1964−Thus, we update our blank `/greeting` ankh with a child `english`
1965−produced by recursing.
1966−
1967−Now our path is null, so we call `++lobe-to-noun` to get the actual
1968−data, and we place it in the brand-new ankh.
1969−
1970−Next, we process `/greeting/russian/short`. Since our path is not null,
1971−we try to get the child named `%greeting`, which does exist since we
1972−created it earlier. We put modify this child by recursing on it. Our
1973−path is now `/russian/short`, so we look for a `%russian` child in our
1974−`/greeting` ankh. This doesn't exist, so we add it by recursing. Our
1975−path is now `/short`, so we look for a `%short` child in our
1976−`/greeting/russian` ankh. This doesn't exist, so we add it by recursing.
1977−Now our path is null, so we set the contents of this node to `"привет"`,
1978−and we're done processing this path.
1979−
1980−Next, we process `/greeting/russian/long`. This proceeds similarly to
1981−the previous except that now the ankh for `/greeting/russian` already
1982−exists, so we simply reuse it rather than creating a new one. Of course,
1983−we still must create a new `/greeting/russian/long` ankh.
1984−
1985−Next, we process `/greeting`. This ankh already exists, so after we've
1986−recursed once, our path is null, and our ankh is not blank -- it already
1987−has two children (and two grandchildren). We don't touch those, though,
1988−since a node may be both a file and a directory. We just add the
1989−contents of the file -- "customary upon meeting" -- to the existing
1990−ankh.
1991−
1992−Next, we process `/greeting/spanish`. Of course, the `/greeting` ankh
1993−already exists, but it doesn't have a `%spanish` child, so we create
1994−that, taking care not to disturb the contents of the `/greeting` file.
1995−We put "hola" into the ankh and call it good.
1996−
1997−Finally, we process `/farewell/russian`. Here, the `/farewell` ankh
1998−doesn't exist, so we create it. Clearly the newly-created ankh doesn't
1999−have any children, so we have to add a `%russian` child, and in this
2000−child we put our last content -- "до свидания".
2001−
2002−We hope it's fairly obvious that the order we process the paths doesn't
2003−affect the final ankh tree. The tree will be constructed in a very
2004−different order depending on what order the paths come in, but the
2005−resulting tree is independent of order.
2006−
2007−At any rate, we were talking about something important, weren't we? If
2008−you recall, that concludes our discussion of `++rewind`, which was
2009−called from `++read-at-aeon`. In summary, `++rewind` returns a context
2010−in which our current state is (very nearly) as it was when the specified
2011−version of the desk was the head. This allows `++read-at-aeon` to call
2012−`++read` to read the requested information.
2013−
2014−```hoon
2015− ++ read :: read:ze
2016− |= mun=mood :: read at point
2017− ^- (unit)
2018− ?: ?=(%v p.mun)
2019− [~ `dome`+<+<.read]
2020− ?: &(?=(%w p.mun) !?=(%ud -.q.mun))
2021− ?^(r.mun ~ [~ let])
2022− ?: ?=(%w p.mun)
2023− =+ ^= yak
2024− %- tako-to-yaki
2025− %- aeon-to-tako
2026− let
2027− ?^(r.mun ~ [~ [t.yak (forge-nori yak)]])
2028− ::?> ?=(^ hit) ?^(r.mun ~ [~ i.hit]) :: what do?? need [@da nori]
2029− (query(ank ank:(descend-path:(zu ank) r.mun)) p.mun)
2030−```
2031−
2032−If we're requesting the dome, then we just return that immediately.
2033−
2034−If we're requesting the revision number of the desk and we're not
2035−requesting it by number, then we just return the current number of this
2036−desk. Note of course that this was really already handled in
2037−`++read-at-aeon`.
2038−
2039−If we're requesting a `%w` with a specific revision number, then we do
2040−something or other with the commit there. It's kind of weird, and it
2041−doesn't seem to work, so we'll ignore this case.
2042−
2043−Otherwise, we descend into the ankh tree to the given path with
2044−`++descend-path:zu`, and then we handle specific request in `++query`.
2045−
2046−```hoon
2047− ++ descend-path :: descend recursively
2048− |= way=path
2049− ^+ +>
2050− ?~(way +> $(way t.way, +> (descend i.way)))
2051−```
2052−
2053−This is simple recursion down into the ankh tree. `++descend` descends
2054−one level, so this will eventually get us down to the path we want.
2055−
2056−```hoon
2057− ++ descend :: descend
2058− |= lol=@ta
2059− ^+ +>
2060− =+ you=(~(get by r.ank) lol)
2061− +>.$(ram [lol ram], ank ?~(you [*cash ~ ~] u.you))
2062−```
2063−
2064−`ram` is the path that we're at, so to descend one level we push the
2065−name of this level onto that path. We update the ankh with the correct
2066−one at that path if it exists; else we create a blank one.
2067−
2068−Once we've decscended to the correct level, we need to actually deal
2069−with the request.
2070−
2071−```hoon
2072− ++ query :: query:ze
2073− |= ren=?(%u %v %x %y %z) :: endpoint query
2074− ^- (unit ,*)
2075− ?- ren
2076− %u [~ `rang`+<+>.query]
2077− %v [~ `dome`+<+<.query]
2078− %x ?~(q.ank ~ [~ q.u.q.ank])
2079− %y [~ as-arch]
2080− %z [~ ank]
2081− ==
2082−```
2083−
2084−Now that everything's set up, it's really easy. If they're requesting
2085−the rang, dome, or ankh, we give it to them. If the contents of a file,
2086−we give it to them if it is in fact a file. If the `arch`, then we
2087−calculate it with `++as-arch`.
2088−
2089−```hoon
2090− ++ as-arch :: as-arch:ze
2091− ^- arch :: arch report
2092− :+ p.ank
2093− ?~(q.ank ~ [~ p.u.q.ank])
2094− |- ^- (map ,@ta ,~)
2095− ?~ r.ank ~
2096− [[p.n.r.ank ~] $(r.ank l.r.ank) $(r.ank r.r.ank)]
2097−```
2098−
2099−This very simply strips out all the "real" data and returns just our own
2100−hash, the hash of the file contents (if we're a file), and a map of the
2101−names of our immediate children.
2102−
2103−## Lifecycle of a Local Subscription
2104−
2105−A subscription to a range of revisions of a desk initially follows the
2106−same path that a single read does. In `++aver`, we checked the head of
2107−the given rave. If the head was `&`, then it was a single request, so we
2108−handled it above. If `|`, then we handle it with the following code.
2109−
2110−```hoon
2111− =+ nab=(~(case-to-aeon ze lim dom ran) p.p.rav)
2112− ?~ nab
2113− ?> =(~ (~(case-to-aeon ze lim dom ran) q.p.rav))
2114− (duce hen (rive rav))
2115− =+ huy=(~(case-to-aeon ze lim dom ran) q.p.rav)
2116− ?: &(?=(^ huy) |((lth u.huy u.nab) &(=(0 u.huy) =(0 u.nab))))
2117− (blub hen)
2118− =+ top=?~(huy let.dom u.huy)
2119− =+ sar=(~(lobes-at-path ze lim dom ran) u.nab r.p.rav)
2120− =+ ear=(~(lobes-at-path ze lim dom ran) top r.p.rav)
2121− =. +>.$
2122− ?: =(sar ear) +>.$
2123− =+ fud=(~(make-nako ze lim dom ran) u.nab top)
2124− (bleb hen u.nab fud)
2125− ?^ huy
2126− (blub hen)
2127− =+ ^= ptr ^- case
2128− [%ud +(let.dom)]
2129− (duce hen `rove`[%| ptr q.p.rav r.p.rav ear])
2130− ==
2131−```
2132−
2133−Recall that `++case-to-aeon:ze` produces the revision number that a case
2134−corresponds to, if it corresponds to any. If it doesn't yet correspond
2135−to a revision, then it produces null.
2136−
2137−Thus, we first check to see if we've even gotten to the beginning of the
2138−range of revisions requested. If not, then we assert that we haven't yet
2139−gotten to the end of the range either, because that would be really
2140−strange. If not, then we immediately call `++duce`, which, if you
2141−recall, for a local request, simply puts this duct and rove into our
2142−cult `qyx`, so that we know who to respond to when the revision does
2143−appear.
2144−
2145−If we've already gotten to the first revision, then we can produce some
2146−content immediately. If we've also gotten to the final revision, and
2147−that revision is earlier than the start revision, then it's a bad
2148−request and we call `++blub`, which tells the subscriber that his
2149−subscription will not be satisfied.
2150−
2151−Otherwise, we find the data at the given path at the beginning of the
2152−subscription and at the last available revision in the subscription. If
2153−they're the same, then we don't send a notification. Otherwise, we call
2154−`++gack`, which creates the `++nako` we need to produce. We call
2155−`++bleb` to actually produce the information.
2156−
2157−If we already have the last requested revision, then we also tell the
2158−subscriber with `++blub` that the subscription will receive no further
2159−updates.
2160−
2161−If there will be more revisions in the subscription, then we call
2162−`++duce`, adding the duct to our subscribers. We modify the rove to
2163−start at the next revision since we've already handled all the revisions
2164−up to the present.
2165−
2166−We glossed over the calls to `++lobes-at-path`, `++make-nako`, and
2167−`++bleb`, so we'll get back to those right now. `++bleb` is simple, so
2168−we'll start with that.
2169−
2170−```hoon
2171− ++ bleb :: ship sequence
2172− |= [hen=duct ins=@ud hip=nako]
2173− ^+ +>
2174− (blab hen [%w [%ud ins] ~] hip)
2175−```
2176−
2177−We're given a duct, the beginning revision number, and the nako that
2178−contains the updates since that revision. We use `++blab` to produce
2179−this result to the subscriber. The case is `%w` with a revision number
2180−of the beginning of the subscription, and the data is the nako itself.
2181−
2182−We call `++lobes-at-path:ze` to get the data at the particular path.
2183−
2184−```hoon
2185− ++ lobes-at-path :: lobes-at-path:ze
2186− |= [oan=aeon pax=path] :: data at path
2187− ^- (map path lobe)
2188− ?: =(0 oan) ~
2189− %- mo
2190− %+ skim
2191− %. ~
2192− %~ tap by
2193− =< q
2194− %- tako-to-yaki
2195− %- aeon-to-tako
2196− oan
2197− |= [p=path q=lobe]
2198− ?| ?=(~ pax)
2199− ?& !?=(~ p)
2200− =(-.pax -.p)
2201− $(p +.p, pax +.pax)
2202− == ==
2203−```
2204−
2205−At revision zero, the theoretical common revision between all
2206−repositories, there is no data, so we produce null.
2207−
2208−We get the list of paths (paired with their lobe) in the revision
2209−referred to by the given number and we keep only those paths which begin
2210−with `pax`. Converting to a map, we now have a map from the subpaths at
2211−the given path to the hash of their data. This is simple and efficient
2212−to calculate and compare to later revisions. This allows us to easily
2213−tell if a node or its children have changed.
2214−
2215−Finally, we will describe `++make-nako:ze`.
2216−
2217−```hoon
2218− ++ make-nako :: gack a through b
2219− |= [a=aeon b=aeon]
2220− ^- [(map aeon tako) aeon (set yaki) (set blob)]
2221− :_ :- b
2222− =- [(takos-to-yakis -<) (lobes-to-blobs ->)]
2223− %+ reachable-between-takos
2224− (~(get by hit) a) :: if a not found, a=0
2225− (aeon-to-tako b)
2226− ^- (map aeon tako)
2227− %- mo %+ skim (~(tap by hit) ~)
2228− |= [p=aeon *]
2229− &((gth p a) (lte p b))
2230−```
2231−
2232−We need to produce four things -- the numbers of the new commits, the
2233−number of the latest commit, the new commits themselves, and the new
2234−data itself.
2235−
2236−The first is fairly easy to produce. We simply go over our map of
2237−numbered commits and produce all those numbered greater than `a` and not
2238−greater than `b`.
2239−
2240−The second is even easier to produce -- `b` is clearly our most recent
2241−commit.
2242−
2243−The third and fourth are slightly more interesting, though not too
2244−terribly difficult. First, we call `++reachable-between-takos`.
2245−
2246−```hoon
2247− ++ reachable-between-takos
2248− |= [a=(unit tako) b=tako] :: pack a through b
2249− ^- [(set tako) (set lobe)]
2250− =+ ^= sar
2251− ?~ a ~
2252− (reachable-takos r:(tako-to-yaki u.a))
2253− =+ yak=`yaki`(tako-to-yaki b)
2254− %+ new-lobes-takos (new-lobes ~ sar) :: get lobes
2255− |- ^- (set tako) :: walk onto sar
2256− ?: (~(has in sar) r.yak)
2257− ~
2258− =+ ber=`(set tako)`(~(put in `(set tako)`~) `tako`r.yak)
2259− %- ~(uni in ber)
2260− ^- (set tako)
2261− %+ roll p.yak
2262− |= [yek=tako bar=(set tako)]
2263− ^- (set tako)
2264− ?: (~(has in bar) yek) :: save some time
2265− bar
2266− %- ~(uni in bar)
2267− ^$(yak (tako-to-yaki yek))
2268−```
2269−
2270−We take a possible starting commit and a definite ending commit, and we
2271−produce the set of commits and the set of data between them.
2272−
2273−We let `sar` be the set of commits reachable from `a`. If `a` is null,
2274−then obviously no commits are reachable. Otherwise, we call
2275−`++reachable-takos` to calculate this.
2276−
2277−```hoon
2278− ++ reachable-takos :: reachable
2279− |= p=tako :: XX slow
2280− ^- (set tako)
2281− =+ y=(tako-to-yaki p)
2282− =+ t=(~(put in _(set tako)) p)
2283− %+ roll p.y
2284− |= [q=tako s=_t]
2285− ?: (~(has in s) q) :: already done
2286− s :: hence skip
2287− (~(uni in s) ^$(p q)) :: otherwise traverse
2288−```
2289−
2290−We very simply produce the set of the given tako plus its parents,
2291−recursively.
2292−
2293−Back in `++reachable-between-takos`, we let `yak` be the yaki of `b`,
2294−the ending commit. With this, we create a set that is the union of `sar`
2295−and all takos reachable from `b`.
2296−
2297−We pass `sar` into `++new-lobes` to get all the lobes referenced by any
2298−tako referenced by `a`. The result is passed into `++new-lobes-takos` to
2299−do the same, but not recomputing those in already calculated last
2300−sentence. This produces the sets of takos and lobes we need.
2301−
2302−```hoon
2303− ++ new-lobes :: object hash set
2304− |= [b=(set lobe) a=(set tako)] :: that aren't in b
2305− ^- (set lobe)
2306− %+ roll (~(tap in a) ~)
2307− |= [tak=tako bar=(set lobe)]
2308− ^- (set lobe)
2309− =+ yak=(tako-to-yaki tak)
2310− %+ roll (~(tap by q.yak) ~)
2311− |= [[path lob=lobe] far=_bar]
2312− ^- (set lobe)
2313− ?~ (~(has in b) lob) :: don't need
2314− far
2315− =+ gar=(lobe-to-blob lob)
2316− ?- -.gar
2317− %direct (~(put in far) lob)
2318− %delta (~(put in $(lob q.gar)) lob)
2319− %indirect (~(put in $(lob s.gar)) lob)
2320− ==
2321−```
2322−
2323−Here, we're creating a set of lobes referenced in a commit in `a`. We
2324−start out with `b` as the initial set of lobes, so we don't need to
2325−recompute any of the lobes referenced in there.
2326−
2327−The algorithm is pretty simple, so we won't bore you with the details.
2328−We simply traverse every commit in `a`, looking at every blob referenced
2329−there, and, if it's not already in `b`, we add it to `b`. In the case of
2330−a direct blob, we're done. For a delta or an indirect blob, we
2331−recursively add every blob referenced within the blob.
2332−
2333−```hoon
2334− ++ new-lobes-takos :: garg & repack
2335− |= [b=(set lobe) a=(set tako)]
2336− ^- [(set tako) (set lobe)]
2337− [a (new-lobes b a)]
2338−```
2339−
2340−Here, we just update the set of lobes we're given with the commits we're
2341−given and produce both sets.
2342−
2343−This concludes our discussion of a local subscription.
2344−
2345−## Lifecycle of a Foreign Read or Subscription
2346−
2347−Foreign reads and subscriptions are handled in much the same way as
2348−local ones. The interface is the same -- a vane or app sends a `%warp`
2349−kiss with the request. The difference is simply that the `sock` refers
2350−to the foreign ship.
2351−
2352−Thus, we start in the same place -- in `++call`, handling `%warp`.
2353−However, since the two side of the `sock` are different, we follow a
2354−different path.
2355−
2356−```hoon
2357− =+ wex=(do now p.q.hic p.q.q.hic ruf)
2358− =+ ^= woo
2359− ?~ q.q.q.hic
2360− abet:(ease:wex hen)
2361− abet:(eave:wex hen u.q.q.q.hic)
2362− [-.woo (posh q.p.q.hic p.q.q.hic +.woo ruf)]
2363−```
2364−
2365−If we compare this to how the local case was handled, we see that it's
2366−not all that different. We use `++do` rather than `++un` and `++de` to
2367−set up the core for the foreign ship. This gives us a `++de` core, so we
2368−either cancel or begin the request by calling `++ease` or `++eave`,
2369−exactly as in the local case. In either case, we call `++abet:de` to
2370−resolve our various types of output into actual moves, as described in
2371−the local case. Finally, we call `++posh` to update our raft, putting
2372−the modified rung into the raft.
2373−
2374−We'll first trace through `++do`.
2375−
2376−```hoon
2377− ++ do
2378− |= [now=@da [who=ship him=ship] syd=@tas ruf=raft]
2379− =+ ^= rug ^- rung
2380− =+ rug=(~(get by hoy.ruf) him)
2381− ?^(rug u.rug *rung)
2382− =+ ^= red ^- rede
2383− =+ yit=(~(get by rus.rug) syd)
2384− ?^(yit u.yit `rede`[~2000.1.1 ~ [~ *rind] *dome])
2385− ((de now ~ ~) [who him] syd red ran.ruf)
2386−```
2387−
2388−If we already have a rung for this foreign ship, then we use that.
2389−Otherwise, we create a new blank one. If we already have a rede in this
2390−rung, then we use that, otherwise we create a blank one. An important
2391−point to note here is that we let `ref` in the rede be `[~ *rind]`.
2392−Recall, for domestic desks `ref` is null. We use this to distinguish
2393−between foreign and domestic desks in `++de`.
2394−
2395−With this information, we create a `++de` core as usual.
2396−
2397−Although we've already covered `++ease` and `++eave`, we'll go through
2398−them quickly again, highlighting the case of foreign request.
2399−
2400−```hoon
2401− ++ ease :: release request
2402− |= hen=duct
2403− ^+ +>
2404− ?~ ref +>
2405− =+ rov=(~(got by qyx) hen)
2406− =. qyx (~(del by qyx) hen)
2407− (mabe rov (cury best hen))
2408− =. qyx (~(del by qyx) hen)
2409− |- ^+ +>+.$
2410− =+ nux=(~(get by fod.u.ref) hen)
2411− ?~ nux +>+.$
2412− %= +>+.$
2413− say [[hen [(scot %ud u.nux) ~] for [u.nux syd ~]] say]
2414− fod.u.ref (~(del by fod.u.ref) hen)
2415− bom.u.ref (~(del by bom.u.ref) u.nux)
2416− ==
2417−```
2418−
2419−Here, we still remove the duct from our cult (we maintain a cult even
2420−for foreign desks), but we also need to tell the foreign desk to cancel
2421−our subscription. We do this by sending a request (by appending to
2422−`say`, which gets resolved in `++abet:de` to a `%want` kiss to ames) to
2423−the foreign ship to cancel the subscription. Since we don't anymore
2424−expect a response on this duct, we remove it from `fod` and `bom`, which
2425−are the maps between ducts, raves, and request sequence numbers.
2426−Basically, we remove every trace of the subscription from our request
2427−manager.
2428−
2429−In the case of `++eave`, where we're creating a new request, everything
2430−is exactly identical to the case of the local request except `++duce`.
2431−We said that `++duce` simply puts the request into our cult. This is
2432−true for a domestic request, but distinctly untrue for foreign requests.
2433−
2434−```hoon
2435− ++ duce :: produce request
2436− |= [hen=duct rov=rove]
2437− ^+ +>
2438− =. qyx (~(put by qyx) hen rov)
2439− ?~ ref +>.$
2440− |- ^+ +>+.$ :: XX why?
2441− =+ rav=(reve rov)
2442− =+ ^= vaw ^- rave
2443− ?. ?=([%& %v *] rav) rav
2444− [%| [%ud let.dom] `case`q.p.rav r.p.rav]
2445− =+ inx=nix.u.ref
2446− %= +>+.$
2447− say [[hen [(scot %ud inx) ~] for [inx syd ~ vaw]] say]
2448− nix.u.ref +(nix.u.ref)
2449− bom.u.ref (~(put by bom.u.ref) inx [hen vaw])
2450− fod.u.ref (~(put by fod.u.ref) hen inx)
2451− ==
2452−```
2453−
2454−If we have a request manager (i.e. this is a foreign desk), then we do
2455−the approximate inverse of `++ease`. We create a rave out of the given
2456−request and send it off to the foreign desk by putting it in `say`. Note
2457−that the rave is created to request the information starting at the next
2458−revision number. Since this is a new request, we put it into `fod` and
2459−`bom` to associate the request with its duct and its sequence number.
2460−Since we're using another sequence number, we must increment `nix`,
2461−which represents the next available sequence number.
2462−
2463−And that's really it for this side of the request. Requesting foreign
2464−information isn't that hard. Let's see what it looks like on the other
2465−side. When we get a request from another ship for information on our
2466−ship, that comes to us in the form of a `%wart` from ames.
2467−
2468−We handle a `%wart` in `++call`, right next to where we handle the
2469−`%warp` case.
2470−
2471−```hoon
2472− %wart
2473− ?> ?=(%re q.q.hic)
2474− =+ ryf=((hard riff) s.q.hic)
2475− :_ ..^$
2476− :~ :- hen
2477− :^ %pass [(scot %p p.p.q.hic) (scot %p q.p.q.hic) r.q.hic]
2478− %c
2479− [%warp [p.p.q.hic p.p.q.hic] ryf]
2480− ==
2481−```
2482−
2483−Every request we receive should be of type `riff`, so we coerce it into
2484−that type. We just convert this into a new `%warp` kiss that we pass to
2485−ourself. This gets handled like normal, as a local request. When the
2486−request produces a value, it does so like normal as a `%writ`, which is
2487−returned to `++take` along the path we just sent it on.
2488−
2489−```hoon
2490− %writ
2491− ?> ?=([@ @ *] tea)
2492− =+ our=(need (slaw %p i.tea))
2493− =+ him=(need (slaw %p i.t.tea))
2494− :_ ..^$
2495− :~ :- hen
2496− [%pass ~ %a [%want [our him] [%r %re %c t.t.tea] p.+.q.hin]]
2497− ==
2498−```
2499−
2500−Since we encoded the ship we need to respond to in the path, we can just
2501−pass our `%want` back to ames, so that we tell the requesting ship about
2502−the new data.
2503−
2504−This comes back to the original ship as a `%waft` from ames, which comes
2505−into `++take`, right next to where we handled `%writ`.
2506−
2507−```hoon
2508− %waft
2509− ?> ?=([@ @ ~] tea)
2510− =+ syd=(need (slaw %tas i.tea))
2511− =+ inx=(need (slaw %ud i.t.tea))
2512− =+ ^= zat
2513− =< wake
2514− (knit:(do now p.+.q.hin syd ruf) [inx ((hard riot) q.+.q.hin)])
2515− =^ mos ruf
2516− =+ zot=abet.zat
2517− [-.zot (posh q.p.+.q.hin syd +.zot ruf)]
2518− [mos ..^$(ran.ruf ran.zat)] :: merge in new obj
2519−```
2520−
2521−This gets the desk and sequence number from the path the request was
2522−sent over. This determines exactly which request is being responded to.
2523−We call `++knit:de` to apply the changes to our local desk, and we call
2524−`++wake` to update our subscribers. Then we call `++abet:de` and
2525−`++posh` as normal (like in `++eave`).
2526−
2527−We'll examine `++knit` and `++wake`, in that order.
2528−
2529−```hoon
2530− ++ knit :: external change
2531− |= [inx=@ud rot=riot]
2532− ^+ +>
2533− ?> ?=(^ ref)
2534− |- ^+ +>+.$
2535− =+ ruv=(~(get by bom.u.ref) inx)
2536− ?~ ruv +>+.$
2537− => ?. |(?=(~ rot) ?=(& -.q.u.ruv)) .
2538− %_ .
2539− bom.u.ref (~(del by bom.u.ref) inx)
2540− fod.u.ref (~(del by fod.u.ref) p.u.ruv)
2541− ==
2542− ?~ rot
2543− =+ rav=`rave`q.u.ruv
2544− %= +>+.$
2545− lim
2546− ?.(&(?=(| -.rav) ?=(%da -.q.p.rav)) lim `@da`p.q.p.rav)
2547− ::
2548− haw.u.ref
2549− ?. ?=(& -.rav) haw.u.ref
2550− (~(put by haw.u.ref) p.rav ~)
2551− ==
2552− ?< ?=(%v p.p.u.rot)
2553− =. haw.u.ref
2554− (~(put by haw.u.ref) [p.p.u.rot q.p.u.rot q.u.rot] ~ r.u.rot)
2555− ?. ?=(%w p.p.u.rot) +>+.$
2556− |- ^+ +>+.^$
2557− =+ nez=[%w [%ud let.dom] ~]
2558− =+ nex=(~(get by haw.u.ref) nez)
2559− ?~ nex +>+.^$
2560− ?~ u.nex +>+.^$ :: should never happen
2561− =. +>+.^$ =+ roo=(edis ((hard nako) u.u.nex))
2562− ?>(?=(^ ref.roo) roo)
2563− %= $
2564− haw.u.ref (~(del by haw.u.ref) nez)
2565− ==
2566−```
2567−
2568−This is kind of a long [gate](/docs/glossary/gate/), but don't worry, it's not bad at all.
2569−
2570−First, we assert that we're not a domestic desk. That wouldn't make any
2571−sense at all.
2572−
2573−Since we have the sequence number of the request, we can get the duct
2574−and rave from `bom` in our request manager. If we didn't actually
2575−request this data (or the request was canceled before we got it), then
2576−we do nothing.
2577−
2578−Else, we remove the request from `bom` and `fod` unless this was a
2579−subscription request and we didn't receive a null riot (which would
2580−indicate the last message on the subscription).
2581−
2582−Now, if we received a null riot, then if this was a subscription request
2583−by date, then we update `lim` in our request manager (representing the
2584−latest time at which we have complete information for this desk) to the
2585−date that was requested. If this was a single read request, then we put
2586−the result in our simple cache `haw` to make future requests faster.
2587−Then we're done.
2588−
2589−If we received actual data, then we put it into our cache `haw`. Unless
2590−it's a `%w` request, we're done.
2591−
2592−If it is a `%w` request, then we try to get the `%w` at our current head
2593−from the cache. In general, that should be the thing we just put in a
2594−moment ago, but that is not guaranteed. The most common case where this
2595−is different is when we receive desk updates out of order. At any rate,
2596−since we now have new information, we need to apply it to our local copy
2597−of the desk. We do so in `++edis`, and then we remove the stuff we just
2598−applied from the cache, since it's not really a true "single read", like
2599−what should really be in the cache.
2600−
2601−```hoon
2602− ++ edis :: apply subscription
2603− |= nak=nako
2604− ^+ +>
2605− %= +>
2606− hit.dom (~(uni by hit.dom) gar.nak)
2607− let.dom let.nak
2608− lat.ran %+ roll (~(tap in bar.nak) ~)
2609− =< .(yeb lat.ran)
2610− |= [sar=blob yeb=(map lobe blob)]
2611− =+ zax=(blob-to-lobe sar)
2612− %+ ~(put by yeb) zax sar
2613− hut.ran %+ roll (~(tap in lar.nak) ~)
2614− =< .(yeb hut.ran)
2615− |= [sar=yaki yeb=(map tako yaki)]
2616− %+ ~(put by yeb) r.sar sar
2617− ==
2618−```
2619−
2620−This shows, of course, exactly why nako is defined the way it is. To
2621−become completely up to date with the foreign desk, we need to merge
2622−`hit` with the foreign one so that we have all the revision numbers. We
2623−update `let` so that we know which revision is the head.
2624−
2625−We merge the new blobs in `lat`, keying them by their hash, which we get
2626−from a call to `++blob-to-lobe`. Recall that the hash is stored in the
2627−actual blob itself. We do the same thing to the new yakis, putting them
2628−in `hut`, keyed by their hash.
2629−
2630−Now, our local dome should be exactly the same as the foreign one.
2631−
2632−This concludes our discussion of `++knit`. Now the changes have been
2633−applied to our local copy of the desk, and we just need to update our
2634−subscribers. We do so in `++wake:de`.
2635−
2636−```hoon
2637− ++ wake :: update subscribers
2638− ^+ .
2639− =+ xiq=(~(tap by qyx) ~)
2640− =| xaq=(list ,[p=duct q=rove])
2641− |- ^+ ..wake
2642− ?~ xiq
2643− ..wake(qyx (~(gas by *cult) xaq))
2644− ?- -.q.i.xiq
2645− &
2646− =+ cas=?~(ref ~ (~(get by haw.u.ref) `mood`p.q.i.xiq))
2647− ?^ cas
2648− %= $
2649− xiq t.xiq
2650− ..wake ?~ u.cas (blub p.i.xiq)
2651− (blab p.i.xiq p.q.i.xiq u.u.cas)
2652− ==
2653− =+ nao=(~(case-to-aeon ze lim dom ran) q.p.q.i.xiq)
2654− ?~ nao $(xiq t.xiq, xaq [i.xiq xaq])
2655− $(xiq t.xiq, ..wake (balk p.i.xiq u.nao p.q.i.xiq))
2656− ::
2657− |
2658− =+ mot=`moot`p.q.i.xiq
2659− =+ nab=(~(case-to-aeon ze lim dom ran) p.mot)
2660− ?~ nab
2661− $(xiq t.xiq, xaq [i.xiq xaq])
2662− =+ huy=(~(case-to-aeon ze lim dom ran) q.mot)
2663− ?~ huy
2664− =+ ptr=[%ud +(let.dom)]
2665− %= $
2666− xiq t.xiq
2667− xaq [[p.i.xiq [%| ptr q.mot r.mot s.mot]] xaq]
2668− ..wake =+ ^= ear
2669− (~(lobes-at-path ze lim dom ran) let.dom r.p.q.i.xiq)
2670− ?: =(s.p.q.i.xiq ear) ..wake
2671− =+ fud=(~(make-nako ze lim dom ran) u.nab let.dom)
2672− (bleb p.i.xiq let.dom fud)
2673− ==
2674− %= $
2675− xiq t.xiq
2676− ..wake =- (blub:- p.i.xiq)
2677− =+ ^= ear
2678− (~(lobes-at-path ze lim dom ran) u.huy r.p.q.i.xiq)
2679− ?: =(s.p.q.i.xiq ear) (blub p.i.xiq)
2680− =+ fud=(~(make-nako ze lim dom ran) u.nab u.huy)
2681− (bleb p.i.xiq +(u.nab) fud)
2682− ==
2683− ==
2684− --
2685−```
2686−
2687−This is even longer than `++knit`, but it's pretty similar to `++eave`.
2688−We loop through each of our subscribers `xiq`, processing each in turn.
2689−When we're done, we just put the remaining subscribers back in our
2690−subscriber list.
2691−
2692−If the subscriber is a single read, then, if this is a foreign desk
2693−(note that `++wake` is called from other arms, and not only on foreign
2694−desks). Obviously, if we find an identical request there, then we can
2695−produce the result immediately. Referential transparency for the win. We
2696−produce the result with a call to `++blab`. If this is a foreign desk
2697−but the result is not in the cache, then we produce `++blub` (canceled
2698−subscription with no data) for reasons entirely opaque to me. Seriously,
2699−it seems like we should wait until we get an actual response to the
2700−request. If someone figures out why this is, let me know. At any rate,
2701−it seems to work.
2702−
2703−If this is a domestic desk, then we check to see if the case exists yet.
2704−If it doesn't, then we simply move on to the next subscriber, consing
2705−this one onto `xaq` so that we can check again the next time around. If
2706−it does exist, then we call `++balk` to fulfill the request and produce
2707−it.
2708−
2709−`++balk` is very simple, so we'll describe it here before we get to the
2710−subscription case.
2711−
2712−```hoon
2713− ++ balk :: read and send
2714− |= [hen=duct oan=@ud mun=mood]
2715− ^+ +>
2716− =+ vid=(~(read-at-aeon ze lim dom ran) oan mun)
2717− ?~ vid (blub hen) (blab hen mun u.vid)
2718−```
2719−
2720−We call `++read-at-aeon` on the given request and aeon. If you recall,
2721−this processes a `mood` at a particular aeon and produces the result, if
2722−there is one. If there is data at the requested location, then we
2723−produce it with `++blab`. Else, we call `++blub` to notify the
2724−subscriber that no data can ever come over this subscriptioin since it
2725−is now impossible for there to ever be data for the given request.
2726−Because referential transparency.
2727−
2728−At any rate, back to `++wake`. If the given rave is a subscription
2729−request, then we proceed similarly to how we do in `++eave`. We first
2730−try to get the aeon referred to by the starting case. If it doesn't
2731−exist yet, then we can't do anything interesting with this subscription,
2732−so we move on to the next one.
2733−
2734−Otherwise, we try to get the aeon referred to by the ending case. If it
2735−doesn't exist yet, then we produce all the information we can. We call
2736−`++lobes-at-path` at the given aeon and path to see if the requested
2737−path has actually changed. If it hasn't, then we don't produce anything;
2738−else, we produce the correct nako by calling `++bleb` on the result of
2739−`++make-nako`, as in `++eave`. At any rate, we move on to the next
2740−subscription, putting back into our cult the current subscription with a
2741−new start case of the next aeon after the present.
2742−
2743−If the aeon referred to by the ending case does exist, then we drop this
2744−subscriber from our cult and satisfy its request immediately. This is
2745−the same as before -- we check to see if the data at the path has
2746−actually changed, producing it if it has; else, we call `++blub` since
2747−no more data can be produced over this subscription.
2748−
2749−This concludes our discussion of foreign requests.
tutorials/arvo/ford.mddeleted−9
@@ -1,9 +0,0 @@
1−+++
2−title = "Ford Fusion"
3−weight = 7
4−template = "doc.html"
5−aliases = ["/docs/learn/arvo/ford/"]
6−+++
7−
8−> This document is out of date as of 2020.07.20. In the meantime, see the [blog
9−> post](https://urbit.org/blog/ford-fusion/) about Ford Fusion.
tutorials/azure-container-instances.mdnew file+120
@@ -0,0 +1,120 @@
1++++
2+title = "Deploying to an Azure Container Instance"
3+weight = 8
4+template = "doc.html"
5+aliases = ["docs/using/azure-container-instance"]
6++++
7+
8+Urbit can be deployed as a [Docker Image](https://hub.docker.com/r/tloncorp/urbit). Microsoft's [Azure](https://azure.com) hosting service allows docker containers to be deployed without necessitating the management of underlying VM instances.
9+
10+## Initialize your ship
11+
12+When deploying a ship in a container, it is best to boot your ship locally and then copy your pier to the cloud storage which will be volume-mounted. Container-hosting services generally do not provide console access to individual containers.
13+
14+In particular, you will want to run `+code` from your dojo locally before copying your pier to the cloud. Save the provided code, you will use it when signing into your ship's Landscape frontend or running API calls against it.
15+
16+## Warnings
17+
18+- We recommend deploying only moons or comets via this method, unless you are absolutely sure you know what you are doing. Mistakes in the deployment procedure can lead to data loss and/or require a breach.
19+- Landscape will be exposed via *insecure HTTP over the public internet*. Thus, this guide should only be used for experimentation or as a basis for creating more secure deployments, e.g. by deploying nginx with LetsEncrypt as a reverse proxy.
20+
21+## Install `azure-cli` and log in
22+
23+This guide assumes that you are running a recent version of a major Linux distribution.
24+Ensure that the [`azure-cli` package is installed](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) on your machine.
25+
26+Log in to your Azure subscription:
27+
28+```shell
29+az login
30+```
31+
32+This should open a browser window for you to log in to your Azure account and select your subscription.
33+If not, it will print a URL to visit in your browser and a code for you to enter at that URL.
34+Once you have successfully logged in in the browser, the `az login` command should complete in the terminal.
35+
36+## Create a resource group
37+
38+All Azure resources must be part of a resource group. By creating a resource group just for your ship deployment,
39+it will be easy to remove all resources when you are done experimenting or if you decide to migrate
40+your ship elsewhere.
41+
42+```shell
43+URBIT_AZ_RESOURCE_GROUP_NAME=sapmel-palnet-ritpub-sipsyl
44+URBIT_AZ_REGION=eastus # change to whichever Azure region seems best to you
45+az group create -n $URBIT_AZ_RESOURCE_GROUP_NAME -l $URBIT_AZ_REGION
46+```
47+
48+## Create a storage account and file share
49+
50+Azure storage resources share authentication credentials as part of storage accounts. Create a storage account
51+in the resource group we set up in the previous step:
52+
53+```shell
54+URBIT_AZ_STORAGE_ACCOUNT_NAME=sapmelpalnetritpubsipsyl
55+az storage account create \
56+ --resource-group $URBIT_AZ_RESOURCE_GROUP_NAME \
57+ --name $URBIT_AZ_STORAGE_ACCOUNT_NAME \
58+ --location $URBIT_AZ_REGION
59+```
60+
61+Create an Azure file share which will hold your ship's pier and be mounted to the container:
62+
63+```shell
64+URBIT_AZ_SHARE_NAME=sapmel-palnet-ritpub-sipysl
65+az storage share create \
66+ --name $URBIT_AZ_SHARE_NAME \
67+ --account-name $URBIT_AZ_STORAGE_ACCOUNT_NAME
68+```
69+
70+Get the storage key for the storage account and store it in a variable:
71+
72+```shell
73+URBIT_AZ_STORAGE_KEY=$(az storage account keys list --resource-group $URBIT_AZ_RESOURCE_GROUP_NAME --account-name $URBIT_AZ_STORAGE_ACCOUNT_NAME --query "[0].value" --output tsv)
74+```
75+
76+## Copy the urbit ship to the file share
77+
78+The Azure CLI has a convenient command for copying files to a file share:
79+
80+Assuming your pier (the directory containing the data for your ship) is in e.g. `sapmel-palnet-ritpub-sipsyl`:
81+
82+```shell
83+az storage file upload-batch \
84+ --source sapmel-palnet-ritpub-sipsyl \
85+ --destination $URBIT_AZ_SHARE_NAME \
86+ --account-name $URBIT_AZ_STORAGE_ACCOUNT_NAME \
87+ --destination-path sapmel-palnet-ritpub-sipsyl
88+```
89+
90+## Start an ACI container
91+Download the [`urbit-azure.jq`](urbit-azure.jq) JQ filter.
92+We will use this JQ filter to create the YAML description for our ACI deployment.
93+(Recall that YAML is a superset of JSON, so we can use JSON tooling to create valid YAML.)
94+
95+Pass the environment variables from before as arguments to the filter.
96+
97+```shell
98+jq -n -f urbit-azure.jq \
99+ --arg SHIPNAME sapmel-palnet-ritpub-sipsyl \
100+ --arg SHARENAME $URBIT_AZ_SHARE_NAME \
101+ --arg STORAGEACCOUNTNAME $URBIT_AZ_STORAGE_ACCOUNT_NAME \
102+ --arg STORAGEACCOUNTKEY $URBIT_AZ_STORAGE_KEY \
103+ > urbit-azure.yaml
104+```
105+
106+Create an azure container in your resource group using the spec:
107+
108+```shell
109+az container create -g $URBIT_AZ_RESOURCE_GROUP_NAME --file urbit-azure.yaml
110+```
111+
112+## Access your ship
113+
114+Once the `az container create` command finishes, the output will include a public DNS name.
115+Since the container maps your ship's HTTP interface on port 80, you can simply browse to this DNS name in a web browser and authenticate using the code you obtained earlier.
116+
117+**Remember, this is an *insecure* HTTP connection.**
118+
119+## Parting thoughts
120+Setting up an HTTPS proxy for Urbit is beyond the scope of this tutorial, but an easy and standard way to approach the problem would be to configure an [Azure Application Gateway](https://docs.microsoft.com/en-us/azure/application-gateway/) instance in front of your Azure Container Instance runing your Urbit ship, and configure the application gateway for SSL.
tutorials/concepts/_index.mddeleted−11
@@ -1,11 +0,0 @@
1−+++
2−title = "Concepts"
3−weight = 1
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−+++
7−
8−The documents in this section are high-level introductions to the Urbit project and components thereof.
9−
10−* [Technical Overview](technical-overview): An in-the-weeds explanation of the components of the Urbit stack.
11−* [Azimuth](azimuth): An overview of Azimuth, the Urbit identity layer.
tutorials/concepts/arch.mddeleted−21
@@ -1,21 +0,0 @@
1−+++
2−title = "Landscape Architecture"
3−weight = 4
4−template = "doc.html"
5−+++
6−
7−# Landscape Architecture
8−
9−Landscape is designed using a particular userspace architecture mode consisting of stores, hooks, and threads.
10−
11−## Stores
12−
13−Stores are the first of the two gall models to form this architecture. A store is intended to maintain all the state required for an application or set of applications. Stores are intended to be only accessible by the ship it's running on. A store may not send pokes, peeks, or watches. A store should be treated and thought of as a database. While this is not enforced, it is the convention. The primary example of a store is `graph-store` which can be found at `app/graph-store`
14−
15−## Hooks
16−
17−Hooks are the second gall application used in this architecture and are not always present. Hooks are used for inter-app communication. This allows a separation of access control concerns and a division between those things which are able to be done by a store itself and those done by another gall application. `graph-store` in particular has two hooks `graph-pull-hook` for outgoing requests, and `graph-push-hook` for incoming requests.
18−
19−## Thread
20−
21−Threads are used when you want to have a series of transactions on a store where the order of those transactions matters. No guarantees are made about the order in which individual requests to a gall applications are processed; threads were introduced to address this. Threads do not maintain their own state while inactive and are instead run only upon request. A good example is `ted/graph/create`
tutorials/concepts/technical-overview.mddeleted−172
@@ -1,172 +0,0 @@
1−+++
2−title = "Technical overview"
3−weight = 1
4−template = "doc.html"
5−aliases = ["/understanding-urbit/technical-overview"]
6−+++
7−
8−Urbit is a clean-slate software stack designed to implement an encrypted P2P
9−network of general-purpose personal servers. Each server on this network is a
10−deterministic computer called an 'urbit' that runs on a Unix-based virtual
11−machine.
12−
13−The current Urbit stack includes (among other things):
14−
15−- Arvo: the functional operating system of each urbit, written in Hoon.
16−- Azimuth: the Urbit identity layer, built on the Ethereum blockchain.
17−- Hoon: a strictly typed functional programming language whose standard library
18− includes a Hoon-to-Nock compiler.
19−- Nock: a low-level combinator language whose formal specification fits readably on a t-shirt.
20−- Vere: a Nock interpreter and Unix-based virtual machine that mediates between
21− each urbit and the Unix software layer.
22−
23−## Anatomy of a personal server
24−
25−Your urbit is a deterministic computer in the sense that its state is a pure
26−function of its event history. Every event in this history is a
27−[transaction](https://en.wikipedia.org/wiki/Transaction_processing); your
28−urbit's state is effectively an [ACID database](https://en.wikipedia.org/wiki/ACID).
29−
30−Because each urbit is deterministic we can describe its role appropriately in
31−purely functional terms: it maps an input event and the old urbit state to a
32−list of output actions and the subsequent state. This is the Urbit transition
33−function.
34−
35−```
36−<input event, old state> -> <output actions, new state>
37−```
38−
39−For example, one input event could be a keystroke from the terminal, say
40−`[enter]` after having already typed `(add 2 2)`; and an output action could be
41−to print in the terminal window the resulting value of a computation performed
42−when the user hit `[enter]`, in this case `4`. The input event is stored in the
43−urbit's event history.
44−
45−Events always start from outside of your urbit, whether they're local to the
46−computer running the urbit (e.g., a keystroke in the terminal) or they originate
47−elsewhere (e.g., a packet received from another urbit). When an event is
48−processed, various parts of the urbit state can be modified before the resulting
49−list of output actions is returned.
50−
51−Can output actions from your urbit cause side-effects in the outside world?
52−The answer had better be "yes," because a personal server without side effects
53−isn't useful for much. In another sense the answer had better be "no," or else
54−there is a risk of losing functional purity; your urbit cannot _guarantee_ that
55−the side effects in question actually occur. What's the solution?
56−
57−Each urbit is
58−[sandboxed](https://en.wikipedia.org/wiki/Sandbox_%28computer_security%29) in a
59−virtual machine, Vere, which runs on Unix. Code running in your urbit cannot
60−make Unix system calls or otherwise directly affect the underlying platform.
61−Strictly speaking, internal urbit code can only change internal urbit state; it
62−has no way of sending events outside of its runtime environment. Functional
63−purity is preserved.
64−
65−In practical terms, however, you don't want your urbit to be an impotent
66−[brain in a vat](https://en.wikipedia.org/wiki/Brain_in_a_vat). That's why
67−Vere also serves as the intermediary between your urbit and Unix. Vere observes
68−the list of output events, and when external action is called for makes the
69−appropriate system calls itself. When external events relevant to your urbit
70−occur in the Unix layer, Vere encodes and delivers them as input events.
71−
72−### Arvo
73−
74−Arvo is a purely functional, [non-preemptive](https://en.wikipedia.org/wiki/Cooperative_multitasking)
75−OS, written in Hoon, that serves as the event manager of your urbit.
76−It can upgrade itself from over the network without downtime. The Arvo kernel
77−proper is quite simple -- it's only about 600 lines of code, excluding its
78−various modules.
79−
80−The Urbit transition function is implemented in Arvo. Upon being 'poked' by
81−Vere with the pair of `<input event, state>`, Arvo directs the event to the
82−appropriate OS module. The result of each Vere 'poke' is a pair of
83−`<output events, new state>`. Events are typed, and each has an explicit
84−call-stack structure indicating the event's source module in Arvo.
85−
86−Arvo modules are also called 'vanes'. Arvo's vanes are:
87−
88−- Ames: defines and implements Urbit's encrypted P2P network protocol, as well
89− as Urbit's identity protocol.
90−- Behn: manages timer events for other vanes.
91−- Clay: global, version-controlled, and referentially-transparent file system.
92−- Dill: terminal driver.
93−- Eyre: HTTP web client and server.
94−- Ford: typed functional build system.
95−- Gall: application sandbox and manager.
96− - Dojo (app): Shell and Hoon REPL.
97− - Talk (app): Chat client.
98−
99−### Hoon
100−
101−Hoon is a strictly typed functional programming language that compiles itself
102−to Nock and is designed to support higher-order functional programming without
103−requiring knowledge of category theory or other advanced mathematics. Haskell
104−is fun but it isn't for everybody.
105−
106−Hoon aspires to a concrete, imperative feel. To discourage the creation of
107−write-only code, Hoon forbids user-level macros and uses ASCII digraphs instead
108−of keywords. The type system infers only forward and does not use unification,
109−but is not much weaker than Haskell's. The compiler and inference engine is
110−about 3000 lines of Hoon.
111−
112−### Nock
113−
114−Nock is a low-level [homoiconic](https://en.wikipedia.org/wiki/Homoiconicity)
115−combinator language. It's so simple that its [specification](@/docs/tutorials/nock/definition.md)
116−fits on a t-shirt. In some ways Nock resembles a nano-Lisp but its ambitions
117−are more narrow. Most Lisps are one-layer: a practical language is to be
118−created by extending a theoretically simple interpreter. The abstraction is
119−simple and the implementation is practical. Unfortunately it's far more difficult
120−to enforce both simplicity and practicality in an actual Lisp codebase. Hoon
121−and Nock are two layers: Hoon, the practical layer, compiles itself to Nock, the
122−simple layer. Your urbit runs in Vere, which includes a Nock interpreter, so it
123−can upgrade Hoon over the network without downtime.
124−
125−The Nock data model is quite simple. Every piece of data is a 'noun'. A [noun](/docs/glossary/noun/)
126−is an [atom](/docs/glossary/atom/) or a cell. An atom is any unsigned integer. A cell is an ordered
127−pair of nouns. Nouns are acyclic and expose no pointer equality test.
128−
129−### Vere
130−
131−Vere is the Nock runtime environment and Urbit VM. It's written in C, runs on
132−Unix, and is the intermediate layer between your urbit and Unix. As noted
133−earlier, Unix system calls are made by Vere, not Arvo; Vere must also encode
134−and deliver relevant external events to Arvo. Vere is also responsible for
135−implementing jets and maintaining the persistent state of each urbit.
136−
137−In principle, Vere keeps a comprehensive log of every event from the time you
138−initially booted your urbit. What happens if the physical machine loses power
139−and your urbit's state is 'lost' from memory? When your urbit restarts it will
140−replay its entire event history and totally recover its latest state from
141−scratch.
142−
143−In practice, event logs become large and unwieldy over time. Periodically a
144−snapshot of the permanent state is taken and the logs are pruned. You're still
145−able to rebuild your state in case of power outage, down to the last keystroke.
146−
147−Vere is not essential to the Urbit stack; one can imagine using Urbit on a
148−hypervisor, or even bare metal. One member of the community is even working on
149−an independent implementation of Urbit using Graal/Truffle on the JVM.
150−
151−The Urbit stack (compiler, standard library, kernel, modules, and applications,
152−but excluding Vere) is about 30,000 lines of Hoon. Urbit is patent-free and MIT
153−licensed.
154−
155−### Azimuth
156−
157−Azimuth is a general-purpose public-key infrastructure (PKI) on the Ethereum
158−blockchain, used as a decentralized ledger for what are known as **Urbit
159−identities**, or simply **identities**. Having an identity is necessary to use
160−the Urbit network, which makes it important to have a neutral ledger to
161−determine who owns what.
162−
163−Azimuth is not, however, part of the Urbit stack. Azimuth is a parallel system
164−that can be used as a generalized identity system for other projects. Azimuth
165−"touches" the Urbit ecosystem when an Urbit identity is used to boot a virtual
166−computer on the Arvo network for the first time. When that happens, the identity
167−considered **linked** to Azimuth and the identity's full powers are available
168−for use. Once an identity is linked, it cannot be unlinked.
169−
170−A metaphor might make the relationship between these two systems to understand:
171−Azimuth is the bank vault that stores the deed to your house. The Urbit network
172−is the neighborhood that you live in.
tutorials/creating-an-invite-pool.mddeleted−39
@@ -1,39 +0,0 @@
1−+++
2−title = "Creating an Invite Pool"
3−weight = 9
4−template = "doc.html"
5−+++
6−
7−If you're a star owner, you have the ability to create **invite pools**. These invite pools let you give your friends a piece of the network in the form of planets. This document will give you an explanation of how to create an invite pool and how to share it with your friends using our tool [Bridge](https://bridge.urbit.org).
8−
9−For more general tips on using your star, check out the [Star and Galaxy Operations page](https://urbit.org/using/operations/stars-and-galaxies/).
10−
11−## Anatomy of an Invite Pool
12−
13−An invite pool is a set of planet invites that can be distributed via email; each invite is worth one planet when redeemed. An invite pool can be as big as you'd like, providing that you have enough planets left to spawn. All invite pools must be created by a star, but they must be given to a planet. If you're interested in how this works technically, take a look at the [DelegatedSending.sol contract](https://github.com/urbit/azimuth/blob/master/contracts/DelegatedSending.sol).
14−
15−Keep in mind that all planets will have access to the invite pool until the invite pool is exhausted.
16−
17−For example: As `~marzod`, I spawn `~wicdev-wisryt` and give it an invite pool of 100 planets. `~wicdev-wisryt` can now send an invite to a friend at galen@tlon.io. When Galen claims his planet (`~ravmel-ropdyl`), `~ravmel-ropdyl` can now invite his friend — or 99 of them.
18−
19−## How to Invite Friends
20−
21−Giving your friends a piece of Urbit only takes a few minutes: send an invite pool to a planet, and then that planet can email an invite to a friend (or friends)
22−
23−1. Log into Bridge using your ownership address for your star.
24−
25−2. Get the name (like `~poldec-tonteg`) of the planet to whom you'd like to give invites, it can be one you control or a friend's.
26−
27−3. Click "Manage Invite Pools" to assign an invite pool to the planet. You may receive a notification that you need to assign your spawn proxy to the address of the Delegated Sending contract. This is so that the contract can send invites on your behalf when the recipient claims them.
28−
29−![](https://media.urbit.org/docs/invite-pool/browser-point.png)
30−
31−4. Enter the planet name and the number of invites you'd like to assign them.
32−
33−![](https://media.urbit.org/docs/invite-pool/browser-create-pool.png)
34−
35−5. If you control the planet that you gave the invite pool to, it should be accessible from the Bridge homepage. Click the Planet, then "Invite" to create invites for your friends.
36−
37−![](https://media.urbit.org/docs/invite-pool/browser-invite.png)
38−
39−Your friend will get an email shortly with your gift of an identity for life!
tutorials/guide-to-breaches.mddeleted−90
@@ -1,90 +0,0 @@
1−+++
2−title = "Guide to Breaches"
3−weight = 10
4−template = "doc.html"
5−+++
6−
7−An important concept on the [Ames](@/docs/tutorials/arvo/ames.md) network is that of continuity. Continuity refers to how ships remember the order of their own network messages and the network messages of others -- these messages are numbered, starting from zero. A _breach_ is when ships on the network agree to forget about this sequence and treat one or more ships like they are brand new.
8−
9−There are two kinds of breaches: **personal breaches** and **network breaches**.
10−
11−## Personal Breaches
12−
13−Ships on the Ames network sometimes need to reset their continuity. A personal breach is when an individual ship announces to the network: "I forgot who I am, let's start over from scratch." That is, it clears its own event log and sends an announcement to the network, asking all ships that have communicated with it to reset its networking information in their state. This makes it as though the ship was just started for the first time again, since everyone on the network has forgotten about it.
14−
15−Personal breaches often fix connectivity issues, but should only be used as a
16−last resort. Before performing a personal breach, look at alternative fixes in
17−the [Ship Troubleshooting](../ship-troubleshooting) guide. Also reach out for
18−help in the Help channel in the Urbit Community group
19−`~bitbet-bolbel/urbit-community`, or, failing that, in the
20−`#ship-starting-support` channel in our [Discord
21−server](https://discord.gg/n9xhMdz) to see if there is another option.
22−
23−There are two types of personal breaches - one where your Ethereum ownership address
24−remains the same, and one where you are switching to a new Ethereum ownership
25−address. We make the emphasis about the Ethereum _ownership_ address as
26−changing your [proxies](@/docs/glossary/proxies.md) does not require a breach.
27−
28−If you will be keeping the same Ethereum ownership address and would like to perform a
29−personal breach, follow the steps below.
30−
31−- Go to [bridge.urbit.org](https://bridge.urbit.org) and log into your identity.
32−- Click on `OS: Urbit OS Settings` at the bottom, then click `Reset Networking Keys`.
33−- Check the `Breach Continuity` box. Click `Reset Networking Keys`, and then click `Send Transaction` and wait for the progress bar to appear.
34−- Download your new keyfile following these instructions: [Generate your
35− keyfile](@/using/operations/using-bridge.md#generate-your-keyfile).
36−- Delete or archive your old [pier](@/docs/glossary/pier.md).
37−- Proceed to [boot your ship](@/using/install.md#boot-your-planet) with the new keyfile.
38−- Delete your keyfile after successfully booting.
39−- Rejoin your favorite chat channels and subscriptions.
40−
41−If you are switching to a new Ethereum ownership address you will have the
42−choice as to whether or not you want to breach. This is to cover the case when
43−you are transferring to another address you own. The process here is slightly different.
44−
45−- Go to [bridge.urbit.org](https://bridge.urbit.org) and log into your identity.
46−- Click on `ID: Identity and security settings` at the bottom, then click
47− `Transfer this point`.
48−- Enter the new Ethereum address you would like to transfer ownership to. Click
49− `Generate & Sign Transaction`, then click `Send Transaction` and wait for the
50− progress bar to complete.
51−- Logout of your current session in Bridge by clicking `Logout` at the top, and
52− then login to your new ownership address.
53−- From here, following the directions on how to [Accept your
54− transfer](@/using/operations/using-bridge.md#accept-your-transfer), [Set your
55− networking keys](@/using/operations/using-bridge.md#set-your-networking-keys),
56− and [Generate your
57− keyfile](@/using/operations/using-bridge.md#generate-your-keyfile). The option
58− whether or not to breach is in the Accept your Transfer step.
59−- Delete or archive your old [pier](@/docs/glossary/pier.md).
60−- Proceed to [boot your ship](@/using/install.md#boot-your-planet) with the new keyfile.
61−- Delete your keyfile after successfully booting.
62−- Rejoin your favorite chat channels and subscriptions.
63−
64−Performing a personal breach on your ship increments an integer value called
65−your ship's _life_ by one, which refers to your ship's [Azimuth](@/docs/tutorials/concepts/azimuth.md) _key
66−revision number_. This value is utilized by
67−Ames and Jael to ensure that you are
68−communicating with a ship created using its most recent set of keys. Your
69−ship's life is written at the end of the name of its keyfile, e.g.
70−`sampel-palnet-4.key`. Changing the Etherum address that holds the Urbit ID,
71−called _reticketing_, increments a number called the ship's _rift_ by one in
72−addition to incrementing your ship's life.
73−Rift refers to your ship's Azimuth _continuity number_.
74−
75−You can check your current life and rift number by running the
76−`+keys our` generator in Dojo. You can inspect another ship's life and rift can be checked by
77−running `+keys ~sampel-palnet`.
78−
79−
80−## Network Breaches
81−
82−A network breach is an event where all ships on the network are required to update to a new continuity era. Network breaches happen when an Arvo update is released that is too large to release over the air. The current continuity era is given by a value in Ames, our networking vane, that is incremented when a network breaches; only ships with the same such value are able to communicate with one another.
83−
84−If a network breach is happening, follow the steps below.
85−
86−- Delete your old Urbit binary.
87−- Delete or archive your old pier.
88−- Download the new Urbit binary by following the instructions in the [Install page](@/using/install.md).
89−- Create a new pier by booting your ship with your key, according to the instructions on the install page. (Note: You do _not_ need to use a new key to boot into a new continuity era.)
90−- Rejoin your favorite chat channels and subscriptions.
tutorials/hoon/_index.mddeleted−16
@@ -1,16 +0,0 @@
1−
2−+++
3−title = "Hoon"
4−weight = 1
5−sort_by = "weight"
6−template = "sections/docs/hoon.html"
7−aliases = ["/docs/byte/0/", "/docs/byte", "/docs/learn/hoon/hoon-tutorial/"]
8−+++
9−
10−This section contains material for learning Hoon. For newbies, we recommend
11−going through the [Hoon School](@/docs/tutorials/hoon/hoon-school/_index.md)
12−series, and consider enrolling in Hooniversity, a regularly held community-run
13−course which follows along the Hoon School curriculum and may be found at [Hooniversity](https://hooniversity.org/).
14−
15−The other tutorials found in this section are also valuable material for
16−learning Hoon, but are not a part of the linearly organized Hoon school path.
tutorials/hoon/hoon-school/_index.mddeleted−20
@@ -1,20 +0,0 @@
1−+++
2−title = "Hoon School"
3−weight = 1
4−sort_by = "weight"
5−template = "sections/docs/hoon.html"
6−aliases = ["/docs/byte/0/", "/docs/byte", "/docs/learn/hoon/hoon-tutorial/"]
7−+++
8−
9−This series is designed to teach you Hoon without assuming you have an extensive programming background. In fact, you should be able to follow much of it even if you have no programming experience at all, though of course experience helps. We strongly encourage you to try out all the examples of each lesson. These lessons are meant for the beginner but they aren't meant to be skimmed. Each lesson falls into one of two categories: **readings**, which are prose-heavy explanations of Hoon fundamentals, and **walkthroughs**, which are line-by-line explanations of example programs. Walkthroughs are found between readings, offering a practical implementation of the concepts taught in the reading before.
10−
11−Before you start, we recommend reading [Why Hoon?](https://urbit.org/blog/why-hoon/), a blog post by a Tlon engineer that justifies the existence and use of this peculiar language. This explainer gives useful context to all types of learners, but those new to programming will need to use Google frequently for the jargon.
12−
13−Chapter 1 introduces and explains the fundamental concepts you need in order to understand Hoon's semantics.
14−
15−Hoon is a "subject-oriented" programming language -- every expression of Hoon is evaluated relative to a **subject**. The subject is a piece of data that represents the environment, or the context, of an expression. After reading Chapter 1 you should understand what the subject is and how to refer to its various parts. In this chapter you'll also learn about **[cores](/docs/glossary/core/)**, which are an important data structure in Hoon. Once you get the hang of [cores](/docs/glossary/core/) you'll be able to write your own functions in Hoon.
16−
17−Chapter 2 covers the type system, and writing apps, and the workings of the Arvo kernel.
18−
19−You should also consider enrolling in Hooniversity, a regularly held community-run
20−course which follows along the Hoon School curriculum and may be found at [Hooniversity](https://hooniversity.org/).
tutorials/hoon/workbook/_index.mddeleted−17
@@ -1,17 +0,0 @@
1−+++
2−title = "Hoon Workbook"
3−weight = 150
4−sort_by = "weight"
5−template = "sections/docs/chapters.html"
6−aliase = ["docs/learn/hoon/workbook/"]
7−+++
8−The Workbook is the place to sharpen your Hoon skills. Each entry in the
9−Workbook is a code walkthrough followed by exercises.
10−
11−- The [Digits](@/docs/tutorials/hoon/workbook/digits.md) example demonstrates how to decompose a number into a list of its digits.
12−
13−- The [Magic 8-Ball](@/docs/tutorials/hoon/workbook/eightball.md) example emulates everyone's favorite decision-making machine.
14−
15−- The [Traffic-light](@/docs/tutorials/hoon/workbook/traffic-light.md) example demonstrates how to creates a state machine in Hoon.
16−
17−- The [Bomb-defusing](@/docs/tutorials/hoon/workbook/bomb.md) exercise shows how to program, well, a bomb-defusing scenario.
tutorials/hoon/workbook/bomb.mddeleted−140
@@ -1,140 +0,0 @@
1−+++
2−title = "Bomb Defusing"
3−weight = 7
4−template = "doc.html"
5−aliases = ["docs/learn/hoon/workbook/bomb"]
6−+++
7−In this exercise, we will build a generator that takes a list of wires to be cut
8−in order to defuse a bomb. The bomb is defused according to the following rules.
9−
10−There are 6 possible colors of wire: white, black, purple, red, green, and
11−orange.
12−
13−If you cut a white cable, you cannot cut white or black cable.
14−
15−If you cut a red cable, you must cut a green cable.
16−
17−If you cut a black cable, you cannot cut a white, green, or orange cable.
18−
19−If you cut an orange cable, you must cut a red or cable.
20−
21−If you cut a green cable, you must cut an orange or white cable.
22−
23−If you cut a purple cable, you cannot cut a purple, green, orange, or white
24−cable.
25−
26−If the list of cuts does not result in the bomb exploding, the output should be
27−a tape `bomb defused`. If any of the rules were broken, it should output the
28−tape `boom`.
29−
30−
31−```hoon
32−!:
33−:- %say
34−|= [* [cuts=(list tape) ~] ~]
35−:- %noun
36−=<
37−(defuse cuts)
38−|%
39−++ defuse
40− |= cuts=(list tape)
41− =| bad=(list tape)
42− |-
43− ?~ cuts
44− "bomb defused"
45− =/ cut i.cuts
46− ?~ bad
47− $(bad (~(got by rules) cut), cuts t.cuts)
48− ?~ (find [cut ~] bad)
49− $(bad (~(got by rules) cut), cuts t.cuts)
50− "boom"
51−++ rules
52− %- ~(gas by *(map tape (list tape)))
53− :~ :- "white"
54− :~ "white"
55− "black"
56− ==
57− :- "red"
58− :~ "white"
59− "red"
60− "black"
61− "orange"
62− "purple"
63− ==
64− :- "black"
65− :~ "white"
66− "green"
67− "orange"
68− ==
69− :- "orange"
70− :~ "white"
71− "orange"
72− "green"
73− "purple"
74− ==
75− :- "green"
76− :~ "red"
77− "black"
78− "green"
79− "purple"
80− ==
81− :- "purple"
82− :~ "purple"
83− "green"
84− "orange"
85− "white"
86− ==
87− ==
88−--
89−```
90−
91−The start of our generator is simple enough. The `!:` in the first line enables
92−a full stack trace in the event of an error. The following three lines create a
93−`%say` generator that takes a list of tape as an argument.
94−
95−We next use the `=<` rune to compose two hoons, inverted. Remember that it's
96−good Hoon style is to have the heaviest parts to the bottom -- that's what we're
97−doing here.
98−
99−We call `defuse` and pass it `cuts`, the list of tapes we were provided with
100−when the generator started.
101−
102−Next is the [core](/docs/glossary/core/) that has two [arms](/docs/glossary/arm/), `defuse` and `rules`. Let's look at `rules`
103−quickly.
104−
105−We can see that it is a `map` of `tape` to `list` of `tape`. For each of the
106−rules above we have specified when you cut a wire, which of the other wires you
107−cannot cut. This required some reformulating of the rules given to use at the
108−start, but it is much simpler to work with.
109−
110−```hoon
111−++ defuse
112− |= cuts=(list tape)
113− =| bad=(list tape)
114− |-
115− ?~ cuts
116− "bomb defused"
117− =/ cut i.cuts
118− ?~ bad
119− $(bad (~(got by rules) cut), cuts t.cuts)
120− ?~ (find [cut ~] bad)
121− $(bad (~(got by rules) cut), cuts t.cuts)
122− "boom"
123−```
124−
125−The `defuse` arm is the meat of our program. It is a `gate` that takes a `list`
126−of `tape`. We combine a defaulted `list` of `tape` with the face `bad` with the
127−subject.
128−
129−If `cuts` is empty, the bomb has been successfully defused.
130−
131−Otherwise, we give `i.cuts`, the first item in the list, a face called `cut`.
132−
133−If `bad` is empty, we recurse. This recursion sets `bad` to be the list of
134−wires we can not cut from the `rules` map and make `cuts` `t.cuts` or the tail
135−of `cuts`, removing the first element of the list.
136−
137−If `bad` is not empty, we want to search inside of it for the current `cut`. If
138−it's not listed, then we are safe to continue and recurse to process the rest of
139−the cuts. However, if it is found in the bad list, the user has failed and the
140−bomb explodes.
tutorials/hoon/workbook/digits.mddeleted−113
@@ -1,113 +0,0 @@
1−+++
2−title = "Digits"
3−weight = 4
4−template = "doc.html"
5−aliases = ["docs/learn/hoon/workbook/digits/"]
6−+++
7−Let's write a generator that takes a `@ud` (unsigned decimal) and returns a list
8−of its digits.
9−
10−```hoon
11−!:
12−:- %say
13−|= [* [n=@ud ~] ~]
14−:- %noun
15−=| lis=(list @ud)
16−|- ^+ lis
17−?: (lte n 0)
18− lis
19−%= $
20− n (div n 10)
21− lis (mod n 10)^lis
22−==
23−```
24−
25−We're creating a [`%say` generator](@/docs/tutorials/hoon/hoon-school/generators.md). That means we
26−need some "boilerplate" code in the format of `[%say [%noun "data"]]`:
27−
28−```hoon
29−:- %say
30−|= [* [n=@ud ~] ~]
31−:- %noun
32−```
33−
34−The head of this cell is the literal `%say`.
35−
36−In the tail is the [gate](/docs/glossary/gate/) and its sample: `|= [* [n=@ud ~] ~]`. This is
37−where we describe any arguments we are expecting to be passed in when the
38−generator is called. We are expecting data of type `@ud`. We give the data the
39−face `n` so that we can easily reference it later.
40−
41−Also in the tail is another `cell`, its head indicating to the `dojo` how to
42−print the value we are creating. In this case, we use the generic `%noun`.
43−
44−The tail of our second cell is the product of the rest of the program.
45−
46−```hoon
47−=| lis=(list @ud)
48−```
49−
50−We use the above code to construct a `list` of `@ud` by cutting up the `@ud` we
51−got passed and so we add a face onto that type. This list is empty until we
52−manipulate it further.
53−
54−```hoon
55−|- ^+ lis
56−?: (lte n 0)
57− lis
58−```
59−
60−`|-` creates a gate that functions as a recursion point.
61−
62−We are actually able to reuse `lis` for the type of output that we are going
63−to produce. A sibling of the `^-` rune, `^+` is distinct because it is for
64−casting _by example_. It takes type information from an _instance_ of that type.
65−It's useful when using a complicated type.
66−
67−```hoon
68−?: (lte n 0)
69− lis
70−```
71−
72−`?:` checks if the statement that follows is true or false. In our case, if it's
73−true that `n` is less than or equal to `0`, we simply return `lis`. Otherwise,
74−we branch to the following operations:
75−
76−```hoon
77−%= $
78− n (div n 10)
79− lis (mod n 10)^lis
80−==
81−```
82−
83−`%=` is the rune that takes a wing with any number changes, in the
84−form of a list. Our list has two elements that represent such changes, contained
85−in a `$` expression to perform recursion. This is the tall form of an equivalent
86−syntax that you may be more familiar with:
87−`$(n (div n 10), lis (mod n 10)^lis)`.
88−
89−The first change divides `n` by `10`, rounding down without a remainder, and
90−assigning that product as the new value for `n`.
91−
92−The second change prepends the remainder of `n` divided `10` to `lis` (`x^y` is
93−an alternative syntax for `[x y]`). `mod` performs the modulo operation.
94−
95−Together, these operations will pull each digit out of `n` and put it into a
96−`list`. That's because dividing `n` by 10 will knock off one decimal place from
97−the value, and `mod` will store the actual discarded digit. To visualize this
98−complementarity, let's run some operations in the dojo:
99−
100−```hoon
101−> (div 146 10)
102−14
103−
104−> (mod 146 10)
105−6
106−```
107−
108−* TODO What if we do this with vases? Can we accept a vase, map it to whatever
109−the correct value would be to extract each digit of the number in whatever base
110−we are interpreting it in?
111−
112−* TODO from Rob: we need a few exercises here. Maybe asking the reader to
113−make one that accepts a vase could be one?
tutorials/hoon/workbook/eightball.mddeleted−158
@@ -1,158 +0,0 @@
1−+++
2−title = "Magic 8-Ball"
3−weight = 5
4−template = "doc.html"
5−aliases = ["docs/learn/hoon/workbook/eightball"]
6−+++
7−In this lesson we'll write a generator that mimics the functionality of a
8−Magic 8-Ball, producing a randomized response with each run.
9−
10−Save the code below as `eightball.hoon` in your `/gen` directory.
11−
12−```hoon
13−!:
14−:- %say
15−|= [[* eny=@uv *] *]
16−:- %noun
17−^- tape
18−=/ answers=(list tape)
19− :~ "It is certain."
20− "It is decidedly so."
21− "Without a doubt."
22− "Yes - definitely."
23− "You may rely on it."
24− "As I see it, yes."
25− "Most likely."
26− "Outlook good."
27− "Yes."
28− "Signs point to yes."
29− "Reply hazy, try again"
30− "Ask again later."
31− "Better not tell you now."
32− "Cannot predict now."
33− "Concentrate and ask again."
34− "Don't count on it."
35− "My reply is no."
36− "My sources say no."
37− "Outlook not so good."
38− "Very doubtful."
39− ==
40−=/ rng ~(. og eny)
41−=/ val (rad:rng (lent answers))
42−(snag val answers)
43−```
44−
45−Let's go through our code in chunks so that we might more easily understand it.
46−
47−```hoon
48−!:
49−```
50−
51−We start with the `!:` rune to enable a full stack trace for any errors. This
52−is good practice whenever developing something in Hoon.
53−
54−
55−```hoon
56−:- %say
57−|= [[* eny=@uv *] *]
58−:- %noun
59−```
60−
61−To make our program produce a random result, we need entropy. To get entropy,
62−we need data from Arvo. To get data from Arvo, we use a generator of the
63−[`%say`](@/docs/tutorials/hoon/hoon-school/generators.md) variety. The above code chunk is
64−the template that is followed for all `%say` generators.
65−
66−`:- %say` creates a cell with `%say` as that cell's head to define
67−the generator's format.
68−
69−`|= [[* eny=@uv *] *]` is the tail of the cell, a [gate](/docs/glossary/gate/), and that gate's first
70−child, a sample. Because the only external data our program is interested in
71−using is entropy to seed our random-number generator, that's the only one we
72−will assign a face (`eny`). The `*` elements that you see represent any [noun](/docs/glossary/noun/). We
73−use these as fillers: because we don't wish to use the data that's passed to
74−those parts of the sample, we don't assign them faces.
75−
76−`:- %noun` creates another cell, itself residing in the tail of our first cell
77−via our gate expression. In all `%say` generators, the head of this second cell
78−is a `mark` that's used to tell Arvo what kind of data the generator is
79−producing. In this case, we are using the `%noun` `mark` to tell the system how
80−to print the generator's outputted value. The tail of this cell is that value
81−itself, produced by the rest of our program.
82−
83−```hoon
84−^- tape
85−```
86−
87−Above is a cast statement that requires the non-`mark` component of our cell to
88−be of the `tape` type. If it's not, the program doesn't compile.
89−
90−```hoon
91−=/ answers=(list tape)
92− :~ "It is certain."
93− "It is decidedly so."
94− "Without a doubt."
95− "Yes - definitely."
96− "You may rely on it."
97− "As I see it, yes."
98− "Most likely."
99− "Outlook good."
100− "Yes."
101− "Signs point to yes."
102− "Reply hazy, try again"
103− "Ask again later."
104− "Better not tell you now."
105− "Cannot predict now."
106− "Concentrate and ask again."
107− "Don't count on it."
108− "My reply is no."
109− "My sources say no."
110− "Outlook not so good."
111− "Very doubtful."
112− ==
113−```
114−
115−The code in the chunk above constructs the list of possible responses.
116−
117−`=/ answers=(list tape)` is used to put add data to the subject with a face,
118−so that we can easily use it later. The face is `answers`, and we designate that
119−its accompanying value will be a `list` of `tape`. The value itself is given
120−as a `list` in the lines that follow.
121−
122−`:~` is a rune that constructs a null-terminated list. Here we have used the
123−tall form for readability, as an alternative to the wide form of `~[1 2 3]` that
124−you may be more familiar with.
125−
126−Contained within the `:~` rune are the elements of the list. In our case, those
127−elements are the `tape`s that are selected as the 8-Ball's responses.
128−
129−`==` terminates our list. `:~` expressions are always closed in this way.
130−
131−```hoon
132−=/ rng ~(. og eny)
133−=/ val (rad:rng (lent answers))
134−```
135−
136−The code above is our random-number engine.
137−
138−`og` is the [core](/docs/glossary/core/) in the standard library that contains [arms](/docs/glossary/arm/) that perform
139−randomness-related operations. `=/ rng ~(. og eny)` passes `eny` to the
140−subject of `og`, and then stores the resulting core in a face called `rng`.
141−
142−`=/ val (rad:rng (lent answers))` uses `rad` arm. `rad` produces a random
143−number from `0` to `n-1`, where `n` the entropy-seeded `rng` core and pulls.
144−Is the upper bound that we give it. In this case, the upper bound is the number
145−of elements in `answers`, obtained by using the `lent` standard-library arm. We
146−store the random result in `val`.
147−
148−```hoon
149−(snag val answers)
150−```
151−
152−`snag` is a standard-library arm that that takes two arguments: an [atom](/docs/glossary/atom/) and
153−a `list`. It fetches the element in position `n` of the list, where `n` is the
154−value of the atom it was passed. By using the randomized `val` as that position
155−argument, we can pull a different response from `answers` every time the
156−generator is run.
157−
158−TODO (rob): Exercises here.
tutorials/hoon/workbook/traffic-light.mddeleted−155
@@ -1,155 +0,0 @@
1−+++
2−title = "Traffic Light"
3−weight = 6
4−template = "doc.html"
5−aliases = ["docs/learn/hoon/workbook/traffic-light/"]
6−+++
7−Let's create a state machine in Hoon that models the functionality of a traffic
8−light. Save the code below as `traffic.hoon` in your `/gen` directory.
9−
10−```hoon
11−:- %say
12−|= *
13−:- %noun
14−=+ |%
15− ++ state ?(%red %yellow %green)
16− --
17−=/ current-state=state %red
18−=+ ^= traffic-light
19− |%
20− ++ look current-state
21− ++ set
22− |= s=state
23− +>.$(current-state s)
24− --
25−=+ a=traffic-light
26−=+ b=traffic-light
27−=. a (set.a %yellow)
28−[current-state.a current-state.b]
29−```
30−
31−Let's look at the code piece-by-piece.
32−
33−```hoon
34−:- %say
35−|= *
36−:- %noun
37−```
38−
39−Here's the boilerplate code to designate our generator as being a
40−[`%say` generator](@/docs/tutorials/hoon/hoon-school/generators.md). We're using this variant because
41−it allows us to run the generator without any arguments. It's otherwise not
42−relevant to the functionality of our program.
43−
44−```hoon
45−=+ |%
46− ++ state ?(%red %yellow %green)
47− --
48−```
49−
50−`=+` adds a [noun](/docs/glossary/noun/) to the subject. In our case, the [noun](/docs/glossary/noun/) in question is the [core](/docs/glossary/core/)
51−that is opened with `|%` and closed with `--`. This core is used to store types,
52−and does that with the [arm](/docs/glossary/arm/) that it contains.
53−
54−`++ state` creates an arm called `state`, which will be used as the name of the
55−new type that is created in the code that follows, `?(%red %yellow %green)`.
56−That following code creates a new type from the union of its elements. In this
57−case, the state can be one of three values: `%red`, `%yellow`, or `%green`
58−corresponding to the three colors of a standard traffic light.
59−
60−Having new types in a separate core is a common idiom in Hoon programs that allows
61−the compiler to do [constant folding](https://en.wikipedia.org/wiki/Constant_folding),
62−which improves performance.
63−
64−```hoon
65−=/ current-state=state %red
66−```
67−
68−The line above creates a noun of type `state` - the type that we created with
69−the arm in previous code chunk - and gives it a default value. Because we are
70−putting this noun into the subject, it will be available for use in the
71−`traffic-light` core we are about to create.
72−
73−```hoon
74−=+ ^= traffic-light
75− |%
76− ++ look current-state
77− ++ set
78− |= s=state
79− +>.$(current-state s)
80− --
81−```
82−
83−`=+ ^= traffic-light` does two things. The `^=` rune assigns a face to that
84−noun so it's easier to reference. The `=+` rune adds a noun to the subject, in
85−this case the core that we just assigned a name and start to build on the next
86−line and assigned the name.
87−
88−With `|%`, we are finally at the meat of the program. This core that we just
89−named has two arms: `look`, which gives us the current state, defined later; and
90−`set`, which gives us a simple way to modify the value of `current-state`.
91−
92−The [gate](/docs/glossary/gate/) we are producing with `|=` may look a bit strange, so let's break it
93−down.
94−
95−`s=state` allows for an argument of type `state` and gives it a face `s`.
96−
97−We first produce a core with one arm named `$`. That `$` arm will produce a new
98−core with `current-state` changed to match the `s` provided when it was called.
99−How does this work?
100−
101−Remember that `.` is [wing syntax](@/docs/reference/hoon-expressions/limb/wing.md) that
102−applies the wing expression on the left of it to the noun to the right of it.
103−`$` is the arm of the core. Then by using the wing expression `+>`, which means
104−"return the tail of the tail", we traverse the subject to the core to latch onto
105−its parent core. where we defined the arms `look` and `set`. The `( )` then
106−lists changes to the core we would like to make as we produce a new one. You
107−will often see `+>.$` used in this way.
108−
109−```hoon
110−=+ a=traffic-light
111−=+ b=traffic-light
112−```
113−
114−Now we have the last parts of our program. Remember that `=+` allows us to add a
115−noun to the head of the subject. In this case, we are adding two nouns, one with
116−the face `a` and a second with the face `b`. These two nouns will be copies of
117−the `traffic-light` core, with all the bits we previously created.
118−
119−```hoon
120−=. a (set.a %yellow)
121−```
122−
123−`=.` changes a leg in the subject. We use the `set` arm on `a` to produce a gate
124−and give that the argument of `%yellow`. Remember that we are actually producing
125−a new core in the gate, so we have to then assign that back to the face `a`.
126−
127−```hoon
128−[current-state.a current-state.b]
129−```
130−
131−Here we simply are creating a new cell that has the `current-state` from `a` as
132−its head and the `current-state` from `b` as its tail.
133−
134−Let's run it in the Dojo to get our product:
135−
136−```
137−> +traffic
138−[%yellow %red]
139−```
140−
141−### Exercises
142−
143−1. Modify the generator to include a way to cycle the light without
144−explicitly having to select the next color. That is, if the light is currently
145−`%green` then the next color would be `%yellow`. If `%yellow` then the next
146−color should be `%red`.
147−
148−2. Using what you have learned about creating state machines in Hoon,
149−produce a state machine that can act as a vending-machine emulator. It should
150−keep track of the amount of items it has, as well as the amount of money that an
151−item costs. To keep it simple, assume this vending machine only has one item for
152−sale.
153−
154−3. Modify your vending machine from exercise 2 to support holding multiple items
155−with different prices.
tutorials/ship-troubleshooting.mddeleted−212
@@ -1,212 +0,0 @@
1−+++
2−title = "Ship Troubleshooting"
3−weight = 8
4−template = "doc.html"
5−aliases = ["docs/using/ship-troubleshooting/"]
6−+++
7−
8−Urbit is still in the development stage, so there's a chance that your ship won't start properly, or will stop working properly when you're running it. That's ok! This document is intended to help you in such an event.
9−
10−This page contains resolutions to many of the most commonly encountered issues.
11−If your issue is not covered here, please check out our [Troubleshooting Knowledgebase](https://github.com/urbit/support/wiki).
12−
13−## Table of Contents
14−
15−- [Best practices](#best-practices)
16−- [Operation issues](#operation-issues)
17−- [Connectivity issues](#connectivity-issues)
18−- [Booting issues](#booting-issues)
19−- [Crashing issues](#crashing-issues)
20−
21−## Best Practices {#best-practices}
22−
23−An ounce of prevention is worth a pound of cure, so let's first go over some best practices to keep your ship in working order.
24−
25−### Only boot with your keyfile once
26−
27−Once your ship is booted with your keyfile, you should never use that same keyfile again. If you do boot with the same keyfile twice, any other ship on the network that your ship has communicated with will not be able to talk to your ship.
28−
29−If you accidentally booted with the same keyfile twice, the only remedy is performing a [personal breach](#personal-breach), which is explained in the next section.
30−
31−### Do not delete your pier
32−
33−Urbit is stateful, meaning that it needs to hold onto all your data. If you delete your pier and start your ship again, you won't be able to talk to any ship you've talked to before. The only solution to this is performing a [personal breach](#personal-breach)
34−
35−### Keep track of the directory that you put your ship in
36−
37−When you first start your ship, you should make sure you put it a place where you can find it again and where it won't get accidentally deleted. Remember that you must perform `|mount %` in your ship's Dojo to make your ship visible as a directory in the Unix file system.
38−
39−### Keep up-to-date builds
40−
41−Check for latest Urbit version at https://github.com/urbit/urbit/releases. If you're behind, update using [this guide](@/using/install.md#updating).
42−
43−### `|hi` your star to see if you're connected
44−
45−Find out who your star is by running `(sein:title our now our)` in the Dojo. Then, run `|hi ~star`, where `~star` is the star's name, and if things are working properly, you should get the message `hi ~star successful`. It could also be helpful to use `|hi` to check connectivity with `~zod` or another planet that you're in a Chat channel with.
46−
47−### Turn your ship off and on again
48−
49−Use `ctrl-d` to gracefully exit your ship, and then start it again. This can solve many issues.
50−
51−### Use the `|knob` command to customize your error messages
52−
53−Error messages can be by overwhelming, so the `|knob` command is intended to remedy this. It's used to silence errors that aren't important.
54−
55−The command takes two arguments, and comes in the form of `|knob %error-tag %level`.
56−
57−`%error-tag` is the name of the error in question. It's usually printed at the top of the stack trace, such as in `crud: %hole event failed` -- `%hole` here is an example of an error tag.
58−
59−`%level` determines how much you will see of errors with your chosen `%error-tag`. There are three levels:
60−
61−- `%hush`: no output.
62−- `%soft`: one line of output, just containing the error tag.
63−- `%loud`: full output.
64−
65−So for example, to silence all Ames packet-related errors, try `|knob %hole %hush`.
66−
67−### Perform a personal breach. {#personal-breach}
68−
69−A personal breach is when a ship tells all the other ships that have communicated with it to treat it as though the ship was just started for the first time again, since everyone on the network has forgotten about it.
70−
71−Personal breaches often fix connectivity issues, but should only be used as a
72−last resort. To find out how to perform a personal breach, check out our [Guide
73−to Breaches](../guide-to-breaches). Before taking such a drastic measure, try
74−other methods in this guide. You can also ask for help on
75−in the Help channel in the Urbit Community group at `~bitbet-bolbel/urbit-community` or, failing that, in the `#ship-starting-support`
76−channel in our [Discord server](https://discord.gg/n9xhMdz).
77−
78−### Reset `+code`
79−
80−You login to Landscape using the camel-case phrase obtained from dojo by
81−entering `+code`. For security reasons you may wish to change this code
82−regularly. You may do so by entering `|code %reset` into dojo. Doing this
83−will prevent [Bridge](@/docs/glossary/bridge.md) from being to derive your code,
84−meaning you will only be able to check it from dojo in the future.
85−
86−## Operation Issues {#operation-issues}
87−
88−### My urbit is very slow
89−
90−Run `|wash-gall`. This clears caches in Gall, and may result in steep performance improvements.
91−
92−### My urbit is frozen
93−
94−Sometimes this happens if you're processing a very large event, or if you're in an infinite loop, or for a variety of other reasons.
95−
96−Before doing anything, try waiting for a minute: an event might finish processing. If it doesn't clear up, then use the Unix kill-command, `ctrl-z`, to end your ship's process. Then restart your ship.
97−
98−### When I try to type into the Dojo, it prints `dy-noprompt`
99−
100−This happens when your Dojo is waiting on a request, such as an HTTP request. You can fix it simply by typing `backspace` or (`delete` on Mac).
101−
102−### My ship doesn't recognize file changes that I make in my pier
103−
104−Since version `0.8.0`, changes no longer automatically sync between the Unix side (your pier) and your ship. To sync your file changes, you must run `|commit %desk` in your Dojo, where `%desk` is the desk you'd like to sync.
105−
106−## Connectivity Issues {#connectivity-issues}
107−
108−### I can't communicate with anyone
109−
110−You may have booted a ship with your keyfile twice in the same era. To fix this, you must perform a [personal breach](#personal-breach).
111−
112−### I don't have the latest OTA
113−
114−You can check what build your ship is on by entering `+trouble` into dojo and
115−reading the `%base` hash. If this does not match the latest hash published in
116−the `urbit-dev` mailing list, you are behind.
117−
118−Your sponsor may just be lagging behind, so sometimes this will resolve on its
119−own with patience. Otherwise, try the procedure outlined [here](https://github.com/urbit/support/wiki/Missing-OTA).
120−
121−### I keep getting an `ames` error stack-trace
122−
123−You may see a message like this one: `/~zod/home/~2019.7.22..18.55.46..83a3/sys/vane/ames:<[line column].[line column]>`. This is a clay path to a Hoon file, pointing to the line and column where an expression crashed. This kind of error might be accompanied by a `crud` message.
124−
125−This means that another ship is sending invalid packets to you. This could be because one of the ships has not updated the other ship's "life number", which is the number that starts at one and increments every time that ship performs a personal breach.
126−
127−This can happen if they have the wrong keys of yours, or if you have the wrong keys of theirs. You can figure out who has the wrong keys by running this scry command in your dojo: `.^(* %j /=life=/shipname)`, where shipname is the other ship's name. Save that information. Then, go to the [Azimuth contract on Etherscan](https://etherscan.io/address/0x223c067f8cf28ae173ee5cafea60ca44c335fecb#readContract), scroll down to `32. points`, and put in the hexadecimal representation of the other ship's `@p`. You can find the hexadecimal representation by running ...
128−
129−```
130−`@ux`~sampel-palnet
131−```
132−
133−... in the Dojo, where `~sampel-palnet` is the other ship's name. Then, compare it to the scry information that you saved. If that information matches up, it means that the other ship is the problem. If it **doesn't** match up, your ship has wrong information about the other ship. If you have such wrong information, you can fix this by running:
134−
135−```
136−:azimuth-tracker|listen ~ %app %azimuth-tracker
137−```
138−
139−The last line above syncs from an Ethereum node for _all_ ships on the network. If you only wanted to sync with certain ships, run:
140−
141−```
142−:azimuth-tracker|listen ~[~sampel-palnet ~zod ~marzod] %app %azimuth-tracker
143−```
144−
145−`~sampel-palnet ~zod ~marzod` are example ship-names; replace these with any number of desired ships-names.
146−
147−The above commands work if you have the wrong keys of other ships. If other ships have wrong keys of _yours_, you need to somehow ask them to to run such a command.
148−
149−### I can talk to some ships, but I can't talk to my sponsor and some other ships
150−
151−This is the result of deleting your pier and starting your ship again. To fix this, you must perform a [personal breach](#personal-breach).
152−
153−## Booting Issues {#booting-issues}
154−
155−### My ship booted for the first time, but it turned into a comet instead of my planet or star
156−
157−You may have used the wrong arguments when booting your ship for the first time. Delete this comet and try again.
158−
159−### My development ship ("fakezod") gets a `boot: malformed` failure
160−
161−This means that you gave your development ship an invalid `@p`. So, you will get this error if you write, for example, `urbit -F zodzod` instead of `urbit -F zod`.
162−
163−## Crashing Issues {#crashing-issues}
164−
165−### I got a `bail` error and my ship crashed
166−
167−Try bringing it back up; it will often start working just fine again.
168−
169−However, if you get a `bail` error again, you should perform a [personal breach](#personal-breach).
170−
171−#### Making a GitHub issue out of your `bail`
172−
173−You can get help with you problem by creating an issue at [github.com/urbit/urbit](https://github.com/urbit/urbit/issues). But to make a good issue, you need to include some information.
174−
175−When your urbit crashes with a `bail`, you'll probably get a core dump, which is a file that contains the program state of your urbit when it crashed. On Mac, core dumps can be found in `/cores`. On Linux, cores can often be found in `/var/crash`, or the home directory.
176−
177−Navigate to the folder containing your core dumps. Find the most recent core dump by looking at the dates after you run `ls -l`. Then `lldb -c <corename>`. Once that loads, you'll be at an `(lldb)` prompt; type `bt` at this prompt. This will create a stack trace that looks like this:
178−
179−```
180−(lldb) bt
181−* thread #1, stop reason = signal SIGSTOP
182− * frame #0: 0x000000010583d871 urbit`_box_free + 17
183− frame #1: 0x0000000105845ee6 urbit`u3j_boot + 182
184− frame #2: 0x000000010584d1f9 urbit`u3m_boot + 89
185− frame #3: 0x000000010583d15d urbit`main + 2765
186− frame #4: 0x00007fff75cb83d5 libdyld.dylib`start + 1
187−(lldb)
188−```
189−
190−Copy this stack trace and include it in your GitHub issue.
191−
192−### My ship crashed with a `bail: meme` error.
193−
194−This means that your ship ran out of memory.
195−
196−1. Make sure you are running the latest binary if you are not already on it.
197−
198−2. Restart your ship. If you don't crash again, everything may be fine.
199−
200−3. Try the procedure outlined [here](https://github.com/urbit/support/wiki/ship-exits-with-a-bail:-meme-error).
201−
202−4. If you **do** crash again, then you should perform a [personal breach](#personal-breach).
203−
204−### My ship crashed with a `bail: oops` error
205−
206−Restart your ship. These issues often just go away on their own. If this error repeats after restart two or more times, post the messages in an issue at [github.com/urbit/urbit](https://github.com/urbit/urbit/issues).
207−
208−This same error might also appear with a message like `Assertion '0'`.
209−
210−### My ship crashed with an `pier: work error` error
211−
212−This means that the Urbit worker process has shut down for one reason or another. Just restart your ship; this is not a notable or reportable error.
tutorials/urbit-azure.jqnew file+64
@@ -0,0 +1,64 @@
1+{
2+ "apiVersion": "2019-12-01",
3+ "location": "eastus",
4+ "name": $SHIPNAME,
5+ "properties": {
6+ "containers": [
7+ {
8+ "name": $SHIPNAME,
9+ "properties": {
10+ "environmentVariables": [],
11+ "image": "tloncorp/urbit:latest",
12+ "ports": [
13+ {
14+ "port": 80
15+ },
16+ {
17+ "port": 34343,
18+ "protocol": "UDP"
19+ }
20+ ],
21+ "resources": {
22+ "requests": {
23+ "cpu": 1,
24+ "memoryInGB": 1.5
25+ }
26+ },
27+ "volumeMounts": [
28+ {
29+ "mountPath": "/urbit",
30+ "name": "piervolume"
31+ }
32+ ]
33+ }
34+ }
35+ ],
36+ "osType": "Linux",
37+ "restartPolicy": "Always",
38+ "ipAddress": {
39+ "type": "Public",
40+ "ports": [
41+ {
42+ "port": 80
43+ },
44+ {
45+ "port": 34343,
46+ "protocol": "UDP"
47+ }
48+ ],
49+ "dnsNameLabel": $SHIPNAME
50+ },
51+ "volumes": [
52+ {
53+ "name": "piervolume",
54+ "azureFile": {
55+ "sharename": $SHARENAME,
56+ "storageAccountName": $STORAGEACCOUNTNAME,
57+ "storageAccountKey": $STORAGEACCOUNTKEY
58+ }
59+ }
60+ ]
61+ },
62+ "tags": {},
63+ "type": "Microsoft.ContainerInstance/containerGroups"
64+}
tutorials/vere/_index.md → vere/_index.mdrenamed+6−6
@@ -1,6 +1,6 @@
11+++
22title = "Vere"
3−weight = 4
3+weight = 600
44sort_by = "weight"
55template = "sections/docs/chapters.html"
66aliases = ["/docs/learn/vere/"]
@@ -11,26 +11,26 @@ Keep reading if you're planning to work on the Urbit interpreter, you're a
1111language implementation geek, or you don't really understand anything until
1212you've seen the actual structs.
1313
14−## [C runtime system](@/docs/tutorials/vere/runtime.md)
14+## [C runtime system](@/docs/vere/runtime.md)
1515
1616The Urbit interpreter is built on a Nock runtime system written
1717in C, `u3`. This section is a relatively complete description.
1818
19−## [c3: C in Urbit](@/docs/tutorials/vere/c.md)
19+## [c3: C in Urbit](@/docs/vere/c.md)
2020
2121Under `u3` is the simple `c3` layer, which is just how we write C
2222in Urbit.
2323
24−## [u3: Land of nouns](@/docs/tutorials/vere/nouns.md)
24+## [u3: Land of nouns](@/docs/vere/nouns.md)
2525
2626The division between `c3` and `u3` is that you could theoretically
2727imagine using `c3` as just a generic C environment. Anything to do
2828with nouns is in `u3`.
2929
30−## [u3: API overview by prefix](@/docs/tutorials/vere/api.md)
30+## [u3: API overview by prefix](@/docs/vere/api.md)
3131
3232A walkthrough of each of the `u3` modules.
3333
34−## [How to write a jet](@/docs/tutorials/vere/jetting.md)
34+## [How to write a jet](@/docs/vere/jetting.md)
3535
3636A jetting guide by for new Urbit developers.
tutorials/vere/api.md → vere/api.mdrenamed

The content is the same.

tutorials/vere/c.md → vere/c.mdrenamed

The content is the same.

tutorials/vere/jetting.md → vere/jetting.mdrenamed+2−2
@@ -505,7 +505,7 @@ A `u3_noun` will want to be further disassembled into atoms.
505505A `u3_atom` represents a simple number, but the implementation may or
506506may not be simple. If the value held in the atom is 31 bits or less,
507507it's stored directly in the atom. If the value is 32 bits the atom
508−holds a pointer into the loom where the actual value is stored. ( see [Nouns](@/docs/tutorials/vere/nouns.md) )
508+holds a pointer into the loom where the actual value is stored. ( see [Nouns](@/docs/vere/nouns.md) )
509509
510510You don't want to get bogged down in the details of this -- you just
511511want to get data out of your atoms.
@@ -627,7 +627,7 @@ This implies that, to create a list instead of a cell, you will need to append
627627 return(u3nt(a, b, u3_nul)); // for two atoms as a list
628628```
629629
630−Understanding the memory model, allocation, freeing, and ownership ('transfer' vs 'retain' semantics) is important. Some info is available at [Nouns](@/docs/tutorials/vere/nouns.md).
630+Understanding the memory model, allocation, freeing, and ownership ('transfer' vs 'retain' semantics) is important. Some info is available at [Nouns](@/docs/vere/nouns.md).
631631
632632## Compile the C code
633633
tutorials/vere/nouns.md → vere/nouns.mdrenamed

The content is the same.

tutorials/vere/runtime.md → vere/runtime.mdrenamed

The content is the same.