on master help sign in
Merge pull request #1540 from urbit/mp/markdoc

Markdown migration to Markdoc

commitd329c2e4db40b122f1f309d8f3361e7f1018bed2 authormatildepark <matilde.park@urbit.org> dateWed 8 Jun 2022, 17:32 (4 years ago) parent89cdb40d6cf240
176 files changed+9875−11974
.husky/.gitignore−1 .husky/pre-commit−4 components/BasicPage.js+2−4 components/Button.js+12 components/Callout.js+12 components/Footer.js+2−4 components/GrantProgramOverview.js+2−4 components/Markdown.js+268−88 components/PageWithIndex.js+4−5 components/Tab.js+14 components/Tabs.js+29 components/gateway/Description.js+4−5 components/schema/Heading.markdoc.js+37 components/schema/footnoteItem.markdoc.js+22 components/schema/footnoteRef.markdoc.js+14 components/schema/image.markdoc.js+16 components/schema/link.markdoc.js+33 components/schema/superscript.markdoc.js+14 content/blog/2020-to-2021.md−4 content/blog/20200929-state-of-urbit.md−4 content/blog/20201119-models-of-society.md−12 content/blog/2021-11-18-report-from-the-field.md+2−2 content/blog/2021-11-18-the-promise-and-paradox-of-decentralization.md+8−8 content/blog/aesthetic-culture-1.md−4 content/blog/after-machine-war.md−6 content/blog/common-objections-to-urbit.md+15−15 content/blog/creating-sigils.md+2−2 content/blog/eliza.md+1−5 content/blog/events-series.md−4 content/blog/first-contract.md+2−6 content/blog/first-steps-towards-urbit-org.md+1−3 content/blog/ford-fusion.md+1−5 content/blog/gifts-q3-2020.md+1−5 content/blog/hackathon-results.md+1−5 content/blog/hosting-the-future.md−4 content/blog/immunology-for-the-internet-age.md+97−500 content/blog/infrastructural.md+2−8 content/blog/interplanetary_commerce.md+2−6 content/blog/introducing-os1.md+7−9 content/blog/io-in-hoon.md+12−4 content/blog/iot.md+1−5 content/blog/layer-2-faq.md+3−3 content/blog/metaphase.md−4 content/blog/pki-maze.md+10−10 content/blog/platform-decay.md+1−3 content/blog/precepts-discussion.md+7−21 content/blog/precepts.md+7−21 content/blog/providers.md+1−5 content/blog/rollups.md+4−4 content/blog/security-audit.md−4 content/blog/simple-durable-yours.md+3−3 content/blog/the-missing-middle.md+1−5 content/blog/the-understanding-urbit-podcast.md+1−3 content/blog/tools-of-our-own.md+6−14 content/blog/urbit-for-normies.md+3−4 content/blog/urbit-is-for-communities.md+1−3 content/blog/value-of-address-space-pt1.md+4−4 content/blog/value-of-address-space-pt2.md+1−1 content/blog/value-of-address-space-pt3.md+1−3 content/blog/why-hoon.md+3−3 content/blog/your-last-computer.md+3−3 content/community/meetups.md+20−24 content/docs/arvo/ames/ames.md+3−7 content/docs/arvo/ames/cryptography.md+4−4 content/docs/arvo/clay/examples.md+4−3 content/docs/arvo/clay/scry.md+5−4 content/docs/arvo/eyre/guide.md+5−5 content/docs/arvo/eyre/scry.md+12−12 content/docs/arvo/overview.md+2−4 content/docs/arvo/reference/cryptography.md+6−6 content/docs/arvo/reference/filesystem.md+1−1 content/docs/arvo/tutorials/move-trace.md+13−11 content/docs/azimuth/azimuth-eth.md+4−5 content/docs/azimuth/azimuth.md+32−33 content/docs/azimuth/ecliptic.md+3−3 content/docs/azimuth/flow.md+14−14 content/docs/azimuth/l2/bytestring.md+8−8 content/docs/azimuth/l2/layer2.md+44−45 content/docs/azimuth/l2/roller-tutorial.md+21−61 content/docs/development/develop.md+3−3 content/docs/development/grants.md+4−4 content/docs/development/precepts.md+186−196 content/docs/glossary/moon.md−1 content/docs/hoon/guides/cli-tutorial.md+4−4 content/docs/hoon/guides/parsing.md+4−4 content/docs/hoon/guides/sail.md+253−164 content/docs/hoon/guides/strings.md+5−5 content/docs/hoon/hoon-school/doors.md+44−42 content/docs/hoon/hoon-school/generators.md+1−1 content/docs/hoon/overview.md+4−6 content/docs/hoon/reference/rune/bar.md+303−257 content/docs/hoon/reference/rune/buc.md+348−317 content/docs/hoon/reference/rune/cen.md+303−306 content/docs/hoon/reference/rune/col.md+176−181 content/docs/hoon/reference/rune/constants.md+1−1 content/docs/hoon/reference/rune/dot.md+132−131 content/docs/hoon/reference/rune/ket.md+250−234 content/docs/hoon/reference/rune/lus.md+91−55 content/docs/hoon/reference/rune/mic.md+208−181 content/docs/hoon/reference/rune/sig.md+303−283 content/docs/hoon/reference/rune/tis.md+364−352 content/docs/hoon/reference/rune/wut.md+379−374 content/docs/hoon/reference/rune/zap.md+246−236 content/docs/hoon/reference/stdlib/2b.md+7−3 content/docs/hoon/reference/stdlib/2e.md+1−1 content/docs/hoon/reference/stdlib/2i.md+6−5 content/docs/hoon/reference/stdlib/2n.md+1−1 content/docs/hoon/reference/stdlib/2p.md+2−2 content/docs/hoon/reference/stdlib/4g.md+8−8 content/docs/hoon/reference/stdlib/table-of-contents.md+1793−1793 content/docs/hoon/reference/zuse/table-of-contents.md+170−170 content/docs/system-overview/arvo.md+2−2 content/docs/userspace/dist/glob.md+1−1 content/docs/userspace/dist/guide.md+17−4 content/docs/userspace/full-stack/7-react-setup.md+1−1 content/docs/userspace/graph-store/data-structure-overview.md−9 content/docs/userspace/http-api-guide.md+15−15 content/docs/userspace/threads/basics/bind.md+5−5 content/docs/userspace/threads/basics/output.md+1−1 content/docs/userspace/threads/basics/summary.md+4−4 content/docs/vere/cryptography.md+2−2 content/events/2019-03-01-after-hours-ask-galen-anything.md+1−1 content/events/2020-04-03-urbit-os1-launch-party.md+4−4 content/events/2020-10-09-urbit-hosting-launch-event.md+9−5 content/faq.md+43−44 content/getting-started/cli.md+14−55 content/getting-started/desktop.md+26−66 content/getting-started/get-planet.md+18−34 content/getting-started/installing-applications.md+1−1 content/getting-started/server.md+14−57 content/grants/a-network-enabled-spatial-database-and-demonstration-app.md+5−8 content/grants/content-saver.md+1−1 content/groups/~ladtem-filmyr/urbit-ny-week.md+37−76 content/privacy.md+2−2 content/understanding-urbit/roadmap.md−10 content/understanding-urbit/urbit-id.md+2−2 content/updates/2020-07-27-update.md−2 content/using/id/hd-wallet.md+10−13 content/using/id/overview.md+50−187 content/using/id/using-bridge.md+1−1 content/using/os/basics.md+10−10 content/using/os/messaging.md+3−2 content/using/os/ship-troubleshooting.md+6−6 lib/lib.js−2 next.config.js+2−45 package-lock.json+1551−4641 package.json+6−11 pages/applications/[[...application]].js+6−3 pages/audits.js+2−2 pages/bitcoin-wallet.js+2−2 pages/blog/[slug].js+4−8 pages/coinmarketcap.js+2−2 pages/community/[[...slug]].js+5−9 pages/docs/[[...slug]].js+4−9 pages/events.js+1−8 pages/events/[slug].js+4−12 pages/faq.js+2−3 pages/getting-started/[[...slug]].js+3−6 pages/grants/[slug].js+4−12 pages/grants/apprenticeships.js+2−16 pages/grants/bounties.js+2−17 pages/grants/proposals.js+2−16 pages/groups/[[...group]].js+6−4 pages/ids/[id].js+6−3 pages/index.js−25 pages/media/[slug].js+3−8 pages/privacy.js+2−2 pages/terms-of-service.js+2−3 pages/understanding-urbit/[[...slug]].js+4−8 pages/updates.js−2 pages/updates/[slug].js+4−15 pages/using/[[...slug]].js+4−8 pages/voting-instructions.js+2−3 patches/@markdoc+markdoc+0.1.2.patch+1409 styles/globals.css+6−2 styles/markdown.css+17−3
.husky/.gitignoredeleted−1
@@ -1 +0,0 @@
1−_
.husky/pre-commitdeleted−4
@@ -1,4 +0,0 @@
1−#!/bin/sh
2−. "$(dirname "$0")/_/husky.sh"
3−
4−npx pretty-quick --staged
components/BasicPage.js+2−4
@@ -7,7 +7,7 @@ import Header from "./Header";
77import Footer from "./Footer";
88import SingleColumn from "./SingleColumn";
99import Section from "./Section";
10−import { decode } from "html-entities";
10+import Markdown from "./Markdown";
1111
1212export default function BasicPage({ post, markdown, search }) {
1313 const router = useRouter();
@@ -26,9 +26,7 @@ export default function BasicPage({ post, markdown, search }) {
2626 <h1>{post.title}</h1>
2727 </Section>
2828 <Section narrow className="markdown">
29− <article
30− dangerouslySetInnerHTML={{ __html: decode(markdown) }}
31− ></article>
29+ <Markdown content={JSON.parse(markdown)} />
3230 </Section>
3331 </SingleColumn>
3432 <Footer />
components/Button.jsnew file+12
@@ -0,0 +1,12 @@
1+import React from "react";
2+import Link from "next/link";
3+
4+const Button = ({ label, link, color }) => {
5+ return (
6+ <Link passHref href={link}>
7+ <a className={"button-lg max-w-fit " + color}>{label}</a>
8+ </Link>
9+ );
10+};
11+
12+export default Button;
components/Callout.jsnew file+12
@@ -0,0 +1,12 @@
1+import React from "react";
2+
3+const Callout = ({ title, children }) => {
4+ return (
5+ <div className="bg-wall-100 rounded-xl display p-7 flex flex-col space-y-4">
6+ {title && <h2>{title}</h2>}
7+ {children}
8+ </div>
9+ );
10+};
11+
12+export default Callout;
components/Footer.js+2−4
@@ -87,10 +87,8 @@ export default function Footer() {
8787 <Link href="https://github.com/urbit/urbit/issues" passHref>
8888 <a className="type-bold text-wall-500">Issue Tracker</a>
8989 </Link>
90− <Link href="/grants">
91− <a className="type-bold text-wall-500" passHref>
92− Urbit Grants
93− </a>
90+ <Link href="/grants" passHref>
91+ <a className="type-bold text-wall-500">Urbit Grants</a>
9492 </Link>
9593 </div>
9694
components/GrantProgramOverview.js+2−4
@@ -9,8 +9,8 @@ import Header from "./Header";
99import Footer from "./Footer";
1010import SingleColumn from "./SingleColumn";
1111import Section from "./Section";
12−import { decode } from "html-entities";
1312import { DateTime } from "luxon";
13+import Markdown from "./Markdown";
1414
1515export default function GrantProgramOverview({
1616 post,
@@ -46,9 +46,7 @@ export default function GrantProgramOverview({
4646 </Link>
4747 </Section>
4848 <Section narrow short className="markdown">
49− <article
50− dangerouslySetInnerHTML={{ __html: decode(markdown) }}
51− ></article>
49+ <Markdown content={JSON.parse(markdown)} />
5250 </Section>
5351 </SingleColumn>
5452 <Footer />
components/Markdown.js+268−88
@@ -1,94 +1,274 @@
1−import remark from "remark";
2−import gfm from "remark-gfm";
3−import slug from "remark-slug";
4−import heading from "remark-heading-id";
5−import remarkprism from "remark-prism";
6−import normalize from "mdurl/encode";
7−import merge from "deepmerge";
8−import github from "hast-util-sanitize/lib/github";
9−import remarkParse from "remark-parse";
10−import remarkRehype, { defaultHandlers, all } from "remark-rehype";
11−import rehypeStringify from "rehype-stringify";
12−import rehypeRaw from "rehype-raw";
13−
14−// img is wrapped in figure so that images can be extra wide in the blog posts
15−function img(h, node) {
16− var props = { src: normalize(node.url), alt: node.alt };
17− if (node.title !== null && node.title !== undefined) {
18− props.title = node.title;
19− }
20− return {
21− type: "element",
22− tagName: "figure",
23− properties: {},
24− children: [
25− {
26− type: "element",
27− tagName: "img",
28− properties: props,
29− },
30− ],
31− };
32−}
1+import React from "react";
2+import Markdoc, { Ast, Node, Tag, Raw } from "@markdoc/markdoc";
3+import { heading } from "./schema/Heading.markdoc";
4+import { footnoteRef } from "./schema/footnoteRef.markdoc";
5+import { footnoteItem } from "./schema/footnoteItem.markdoc";
6+import { link } from "./schema/link.markdoc";
7+import { image } from "./schema/image.markdoc";
8+import { sup } from "./schema/superscript.markdoc";
9+import Tabs from "../components/Tabs";
10+import Tab from "../components/Tab";
11+import Button from "../components/Button";
12+import Callout from "../components/Callout";
13+import Highlight, { defaultProps } from "prism-react-renderer";
14+import parse from "html-react-parser";
15+import Prism from "prism-react-renderer/prism";
16+(typeof global !== "undefined" ? global : window).Prism = Prism;
17+require("prismjs/components/prism-hoon");
3318
34−function a(h, node) {
35− const url = node.url;
36−
37− if (
38− url.includes("https://urbit.org") ||
39− url.startsWith("/") ||
40− url.startsWith("#")
41− ) {
42− return {
43− type: "element",
44− tagName: "a",
45− properties: {
46− href: url,
47− },
48− children: all(h, node),
49− };
50− } else {
51− return {
52− type: "element",
53− tagName: "a",
54− properties: {
55− target: "_blank",
56− rel: "noopener",
57− href: url,
58− },
59− children: all(h, node),
60− };
61− }
19+export function Fence({ children, language }) {
20+ return (
21+ <Highlight
22+ {...defaultProps}
23+ key={language}
24+ language={language}
25+ code={children}
26+ theme={undefined}
27+ >
28+ {({ className, style, tokens, getLineProps, getTokenProps }) => (
29+ <pre className={className} style={style}>
30+ {tokens.slice(0, -1).map((line, i) => (
31+ <div {...getLineProps({ line, key: i })}>
32+ {line.map((token, key) => (
33+ <span {...getTokenProps({ token, key })} />
34+ ))}
35+ </div>
36+ ))}
37+ </pre>
38+ )}
39+ </Highlight>
40+ );
6241}
6342
64−const handlers = defaultHandlers;
65−handlers.link = a;
66−handlers.image = img;
67−
68−const options = {
69− allowDangerousHtml: true,
70− handlers: handlers,
71− sanitize: merge(github, {
72− // remove user-content from github.json to remark-slug work as expected
73− clobberPrefix: "",
74− attributes: { "*": ["className"] },
75− }),
43+const fence = {
44+ render: "Fence",
45+ attributes: {
46+ language: {
47+ type: String,
48+ description:
49+ "The programming language of the code block. Place it after the backticks.",
50+ },
51+ },
52+};
53+
54+const tab = {
55+ render: "Tab",
56+ attributes: {
57+ label: {
58+ type: String,
59+ },
60+ },
61+};
62+
63+const tabs = {
64+ render: "Tabs",
65+ attributes: {},
66+ transform(node, config) {
67+ const labels = node
68+ .transformChildren(config)
69+ .filter((child) => child && child.name === "Tab")
70+ .map((tab) => (typeof tab === "object" ? tab.attributes.label : null));
71+
72+ return new Tag(this.render, { labels }, node.transformChildren(config));
73+ },
74+};
75+
76+const button = {
77+ render: "Button",
78+ attributes: {
79+ label: {
80+ type: String,
81+ },
82+ link: {
83+ type: String,
84+ },
85+ color: {
86+ type: String,
87+ },
88+ },
89+};
90+
91+const callout = {
92+ render: "Callout",
93+ attributes: {
94+ title: {
95+ type: String,
96+ },
97+ },
98+};
99+
100+const customFence = {
101+ render: "CustomFence",
102+ attributes: {},
103+};
104+
105+const html = {
106+ render: "RenderHtml",
107+ attributes: {
108+ content: {
109+ type: String,
110+ },
111+ },
112+ transform(node) {
113+ return node.attributes.content
114+ ? new Tag("RenderHtml", { content: node.attributes.content }, [
115+ node.inline,
116+ ])
117+ : null;
118+ },
119+};
120+
121+const RenderHtml = ({ content }) => {
122+ return parse(content);
76123};
77124
78−// Converts markdown strings into markdown HTML/React components
79−export default async function Markdown({ post }, disablePlugins) {
80− const result = await remark()
81− .use(remarkParse)
82− .use(remarkprism, {
83− plugins: !disablePlugins ? ["show-invisibles"] : [],
84− })
85− .use(gfm)
86− .use(slug)
87− .use(heading)
88− .use(remarkRehype, options)
89− .use(rehypeRaw)
90− .use(rehypeStringify)
91− .process(post.content);
92−
93− return result.toString();
125+const superscript = ({ children }) => <sup>{children}</sup>;
126+
127+const CustomFence = ({ children }) => <pre>{children}</pre>;
128+
129+export function MarkdownParse({ post }) {
130+ const tokeniser = new Markdoc.Tokenizer({ html: true, linkify: true });
131+ const tokens = tokeniser.tokenize(post.content);
132+ const ast = Markdoc.parse(tokens);
133+ const finalAst = footnoteParse(ast);
134+ return Markdoc.transform(finalAst, {
135+ nodes: {
136+ fence,
137+ heading,
138+ image,
139+ link,
140+ footnoteItem,
141+ footnoteRef,
142+ html,
143+ sup,
144+ },
145+ tags: {
146+ tabs,
147+ tab,
148+ button,
149+ callout,
150+ customFence,
151+ RenderHtml,
152+ superscript,
153+ },
154+ });
94155}
156+
157+export default function Markdown({ content }) {
158+ return Markdoc.renderers.react(content, React, {
159+ components: {
160+ Fence,
161+ Tabs,
162+ Tab,
163+ Button,
164+ Callout,
165+ CustomFence,
166+ RenderHtml,
167+ },
168+ });
169+}
170+
171+const footnoteParse = (partialAst) => {
172+ const endNotePattern = /\[\^(\d+)\]:\s/m;
173+ const inlineFnPattern = /\[\^(\d+)\](?!:)/gm;
174+
175+ function* getFootnoteItemNodes(nodes) {
176+ let results = [];
177+ let itemsProcessed = 0;
178+ for (const n of nodes) {
179+ itemsProcessed += 1;
180+ if (n.type !== "softbreak") results.push(n);
181+ if (n.type === "softbreak" || itemsProcessed === nodes.length) {
182+ yield results;
183+ results = [];
184+ }
185+ }
186+ }
187+
188+ function findFootnoteContainerNode(ast) {
189+ const generator = ast.walk();
190+ let container;
191+ let match = false;
192+ for (const node of generator) {
193+ if (
194+ node.attributes.content &&
195+ endNotePattern.test(node.attributes.content)
196+ ) {
197+ match = true;
198+ generator.return();
199+ }
200+ if (node.type === "inline") container = node;
201+ }
202+ return match ? container : undefined;
203+ }
204+
205+ function processFootnotes(ast) {
206+ // Get a refrence to the node containing endNotes; if not present, early return
207+ const fnContainerNode = findFootnoteContainerNode(ast);
208+ if (!fnContainerNode) return;
209+ // We have footnotes, so create a new list node which will contain the list of endNotes
210+ const fnList = new Ast.Node("list", {
211+ ordered: true,
212+ class: "footnotes",
213+ });
214+ // Get the children nodes for each footnote item
215+ const fnItems = getFootnoteItemNodes(fnContainerNode.children);
216+ for (const fn of fnItems) {
217+ const token = endNotePattern.exec(fn[0].attributes.content);
218+ if (token) {
219+ // Remove the markdown footnote syntax (e.g. [^1]) from the string
220+ fn[0].attributes.content = fn[0].attributes.content.replace(
221+ token[0],
222+ ""
223+ );
224+ // Create a new footnote item and append to the fnList
225+ const id = token[1];
226+ const fnItem = new Ast.Node(
227+ "footnoteItem",
228+ {
229+ id: `fn${id}`,
230+ href: `#fnref${id}`,
231+ },
232+ fn
233+ );
234+ fnList.push(fnItem);
235+ }
236+ }
237+ ast.children.pop(); // remove the last paragraph in the doc being replaced by the fnList
238+ ast.push(fnList);
239+ }
240+
241+ function processFootnoteRefs(ast) {
242+ let parent = ast;
243+ for (const node of ast.walk()) {
244+ if (node.attributes.content) {
245+ // Check if there's a footnote ref token
246+ const token = inlineFnPattern.exec(node.attributes.content);
247+ if (token) {
248+ // Break the string where the foonote ref is, assign first part of string to the current node content
249+ const [prevText, nextText] = node.attributes.content.split(token[0]);
250+ node.attributes.content = prevText;
251+
252+ // Create a footnote node and insert it in the tree
253+ const id = token[1];
254+ const fn = new Ast.Node("footnoteRef", {
255+ id: `fnref${id}`,
256+ href: `#fn${id}`,
257+ label: `${id}`,
258+ });
259+ parent.push(fn);
260+
261+ // Create a text node for the text which follows after the footnote and insert it in the tree
262+ const next = new Ast.Node("text", { content: nextText });
263+ parent.push(next);
264+ }
265+ }
266+ // If the node is of inline type, update parent
267+ if (node.type == "inline") parent = node;
268+ }
269+ }
270+
271+ processFootnoteRefs(partialAst);
272+ processFootnotes(partialAst);
273+ return partialAst;
274+};
components/PageWithIndex.js+4−5
@@ -7,7 +7,7 @@ import Header from "./Header";
77import Footer from "./Footer";
88import SingleColumn from "./SingleColumn";
99import Section from "./Section";
10−import { decode } from "html-entities";
10+import Markdown from "../components/Markdown";
1111import { TableOfContents } from "./TableOfContents";
1212
1313export default function PageWithIndex({ post, markdown, search }) {
@@ -28,10 +28,9 @@ export default function PageWithIndex({ post, markdown, search }) {
2828 </Section>
2929 <Section narrow>
3030 <div className="flex sidebar">
31− <article
32− className={"markdown pr-0 lg:pr-16"}
33− dangerouslySetInnerHTML={{ __html: decode(markdown) }}
34− ></article>
31+ <div className="markdown max-w-prose">
32+ <Markdown content={JSON.parse(markdown)} />
33+ </div>
3534 <TableOfContents />
3635 </div>
3736 </Section>
components/Tab.jsnew file+14
@@ -0,0 +1,14 @@
1+import React from "react";
2+import { TabContext } from "./Tabs";
3+
4+const Tab = ({ label, children }) => {
5+ const currentTab = React.useContext(TabContext);
6+
7+ if (label !== currentTab) {
8+ return null;
9+ }
10+
11+ return children;
12+};
13+
14+export default Tab;
components/Tabs.jsnew file+29
@@ -0,0 +1,29 @@
1+import React from "react";
2+
3+export const TabContext = React.createContext();
4+
5+const Tabs = ({ labels, children }) => {
6+ const [currentTab, setCurrentTab] = React.useState(labels[0]);
7+
8+ return (
9+ <TabContext.Provider value={currentTab}>
10+ <ul className="flex items-center display cursor-pointer space-x-4">
11+ {labels.map((label) => (
12+ <li
13+ className={
14+ "block bg-wall-100 tab rounded-xl " +
15+ (currentTab === label ? "font-semibold" : "")
16+ }
17+ key={label}
18+ onClick={() => setCurrentTab(label)}
19+ >
20+ {label}
21+ </li>
22+ ))}
23+ </ul>
24+ {children}
25+ </TabContext.Provider>
26+ );
27+};
28+
29+export default Tabs;
components/gateway/Description.js+4−5
@@ -1,4 +1,4 @@
1−import { decode } from "html-entities";
1+import Markdown from "../Markdown";
22
33const Description = ({ description, fallback, markdown }) => {
44 return (
@@ -6,10 +6,9 @@ const Description = ({ description, fallback, markdown }) => {
66 <div className="flex flex-col space-y-4">
77 <p className="font-bold text-wall-400">Description</p>
88 {markdown ? (
9− <div
10− className="flex flex-col space-y-4"
11− dangerouslySetInnerHTML={{ __html: decode(markdown) }}
12− />
9+ <div className="markdown">
10+ <Markdown content={JSON.parse(markdown)} />
11+ </div>
1312 ) : (
1413 <p>{description}</p>
1514 )}
components/schema/Heading.markdoc.jsnew file+37
@@ -0,0 +1,37 @@
1+import { Tag } from "@markdoc/markdoc";
2+
3+function generateID(children, attributes) {
4+ if (attributes.id && typeof attributes.id === "string") {
5+ return attributes.id;
6+ }
7+
8+ const bottomChildren = children
9+ .map((child) => (child.children ? child.children : child))
10+ .flat();
11+ return bottomChildren
12+ .filter((child) => typeof child === "string")
13+ .join(" ")
14+ .replace(/[?]/g, "")
15+ .replace(/\s+/g, "-")
16+ .toLowerCase();
17+}
18+
19+export const heading = {
20+ children: ["inline"],
21+ attributes: {
22+ id: { type: String },
23+ level: { type: Number, required: true, default: 1 },
24+ },
25+ transform(node, config) {
26+ const attributes = node.transformAttributes(config);
27+ const children = node.transformChildren(config);
28+
29+ const id = generateID(children, attributes);
30+
31+ return new Tag(
32+ `h${node.attributes["level"]}`,
33+ { ...attributes, id },
34+ children
35+ );
36+ },
37+};
components/schema/footnoteItem.markdoc.jsnew file+22
@@ -0,0 +1,22 @@
1+import { Ast, Config, Node, Tag } from "@markdoc/markdoc";
2+
3+export const footnoteItem = {
4+ attributes: {
5+ id: { type: String, render: true, required: true },
6+ href: { type: String, render: false, required: true },
7+ },
8+ transform(node, config) {
9+ node.attributes.class = `footnote-item`;
10+ const anchor = new Ast.Node(
11+ "link",
12+ { class: "footnote-anchor", href: node.attributes.href },
13+ [new Ast.Node("text", { content: "↩" })]
14+ );
15+ node.push(anchor);
16+ return new Tag(
17+ "li",
18+ node.transformAttributes(config),
19+ node.transformChildren(config)
20+ );
21+ },
22+};
components/schema/footnoteRef.markdoc.jsnew file+14
@@ -0,0 +1,14 @@
1+import { Config, Node, Tag } from "@markdoc/markdoc";
2+
3+export const footnoteRef = {
4+ attributes: {
5+ id: { type: String, render: true, required: true },
6+ href: { type: String, render: true, required: true },
7+ label: { type: String, render: false, required: true },
8+ },
9+ transform(node, config) {
10+ const attributes = node.transformAttributes(config);
11+ const link = new Tag("a", attributes, [`${node.attributes.label}`]);
12+ return new Tag(`sup`, { class: "footnote-ref" }, [link]);
13+ },
14+};
components/schema/image.markdoc.jsnew file+16
@@ -0,0 +1,16 @@
1+import { Tag } from "@markdoc/markdoc";
2+
3+export const image = {
4+ render: "span",
5+ attributes: {
6+ src: { type: String, required: true },
7+ alt: { type: String },
8+ title: { type: String },
9+ },
10+ transform(node, config) {
11+ const attributes = node.transformAttributes(config);
12+ const children = node.transformChildren(config);
13+ const imageTag = new Tag("img", attributes, children);
14+ return new Tag("span", { id: "figure" }, [imageTag]);
15+ },
16+};
components/schema/link.markdoc.jsnew file+33
@@ -0,0 +1,33 @@
1+import { Tag } from "@markdoc/markdoc";
2+
3+function checkIfExternal(attributes) {
4+ const href = attributes.href;
5+ if (
6+ href.includes("https://urbit.org") ||
7+ href.startsWith("/") ||
8+ href.startsWith("#") ||
9+ href.startsWith("?")
10+ ) {
11+ return "_self";
12+ } else {
13+ return "_blank";
14+ }
15+}
16+
17+export const link = {
18+ render: "a",
19+ children: ["strong", "em", "s", "code", "text", "tag"],
20+ attributes: {
21+ href: { type: String, required: true },
22+ title: { type: String },
23+ target: { type: String },
24+ },
25+ transform(node, config) {
26+ const attributes = node.transformAttributes(config);
27+ const children = node.transformChildren(config);
28+
29+ const target = checkIfExternal(attributes);
30+
31+ return new Tag(`a`, { ...attributes, target }, children);
32+ },
33+};
components/schema/superscript.markdoc.jsnew file+14
@@ -0,0 +1,14 @@
1+import { Tag } from "@markdoc/markdoc";
2+
3+export const sup = {
4+ render: "superscript",
5+ children: ["strong", "em", "s", "code", "text", "tag"],
6+ attributes: {},
7+ transform(node, config) {
8+ return new Tag(
9+ `sup`,
10+ node.transformAttributes(config),
11+ node.transformChildren(config)
12+ );
13+ },
14+};
content/blog/2020-to-2021.md−4
@@ -9,12 +9,8 @@ ship = "~wolref-podlex"
99image = "https://media.urbit.org/site/posts/essays/arch-sunrise-2.jpeg"
1010+++
1111
12−<br>
13−
1412![arch](https://media.urbit.org/site/posts/essays/arch-sunrise-2.jpeg)
1513
16−<br>
17−
1814In this post, which has been adapted from our most recent [newsletter](https://urbit.us11.list-manage.com/subscribe/post?u=972a03db9e0c6c25bb58de8c8&id=be143888d2), we'll take a moment to reflect on the events of the last year, and then turn our attention to the next one.
1915
2016## 2020
content/blog/20200929-state-of-urbit.md−4
@@ -9,12 +9,8 @@ ship = "~ravmel-ropdyl"
99image = "https://storage.googleapis.com/media.urbit.org/site/posts/essays/state-of-urbit-1.jpg"
1010+++
1111
12−<br>
13−
1412![Grassy Knoll](https://storage.googleapis.com/media.urbit.org/site/posts/essays/state-of-urbit-1.jpg)
1513
16−<br>
17−
1814When we announced OS 1, in April, we started to disappear into Urbit. Since then, we’ve been living on Urbit like we never have before. This has been our goal for years: to mature the system we’re building by becoming its first committed users. We knew that critical step toward Urbit’s maturity was being able to depend on it ourselves, but the system itself had to mature to the point that we could do that practically.
1915
2016We’ve done this in fits and starts. We’ve _tried_ and failed a few times over the years. We’ve always _used_ Urbit to some extent, but we’ve never _relied_ on it. These past six months have been different. I can’t tell whether it was out of sheer determination and commitment, or that the system was just genuinely ‘there’. Either way, both Tlon and the Urbit Community genuinely live on Urbit now.
content/blog/20201119-models-of-society.md−12
@@ -17,12 +17,8 @@ All people like to talk. Society is built by talking. In this&mdash;the year of
1717
1818## Modes of Messaging
1919
20−<br>
21−
2220![Ludovic Maclellan Mann examining the Cochno Stone](https://media.urbit.org/site/posts/essays/cochno-stone.png)
2321
24−<br>
25−
2622In general, technology serves humanity as a kind of appendage&mdash;instead of thinking new thoughts or acting on its own, it does what we command. Technology never creates new social structures&mdash;it merely makes existing ones easier, or it facilitates the creation of new ones. We use our tools to expand our capacities, and once we are capable of doing more, we can imagine new things to do. Inventing the wheel did not invent motorized transportation&mdash;but it did facilitate it and it was a necessary step, even an inspirational one. Similarly, the invention of writing made new forms of human interaction and new tools for organization possible.
2723
2824Consider the following conversational conventions, or modes of messaging: a letter; a dialogue; a book; a meeting; minutes of that meeting. These are each pieces of technology: finely constrained solutions to human problems. Now, we have digital forms of each of these which diverge variously from the original. A letter becomes an email. A dialogue becomes a chat room, or a series of blog posts, or a twitter spat. A book becomes a website or an ebook. Meetings in 2020 have virtually been replaced by their virtual counterparts. Minutes become recordings or transcripts.
@@ -44,12 +40,8 @@ Having an indistinct sense of place makes the form of conversation ambiguous and
4440
4541## People in Places
4642
47−<br>
48−
4943![Halle Saale Marktplatz](https://media.urbit.org/site/posts/essays/halle-saale-marktplatz.jpg)
5044
51−<br>
52−
5345As the internet grew to accommodate new conversation forms using the basic substrate of hypertext, web developers began to conceive of "digital spaces" through analogy&mdash;chat "rooms" and "forums,” or the "silo" and the "walled garden." Today, most of our conversation takes place in these walled gardens&mdash;privately-owned places which may be beautiful on the inside, but inaccessible from elsewhere. While some of these walled gardens are very large, our conversation is essentially confined to them. There is no roaming from one space to another while keeping one’s identity. We create new identities for new spaces both because we must and because we are afraid of repercussions on one platform for what we say on another. This is because we do not own our identity; we merely have a key&mdash;our password. The owners of the walled garden still own the artifacts of our tenure there, and can revoke our access to them at any time.
5446
5547The concept of identity and the concept of place are fundamentally linked. We imagine the prince who travels overseas where no one knows his name, or we imagine the old prospect of traveling to a new world to make a fortune. While those both exemplify a dramatic change in identity and place, we usually want to keep our identity consistent. We want to be recognized by friends whichever place we go, and we all strive toward having a good reputation, which is a consistent identity across places. This consistent identity also allows control of that reputation per place. A man is not judged in public by the words he says among friends. And there is no way to search what someone has said except by asking him. With our current system of identity providers (an absurd term, but a real one), we surrender our rights to selectively expose our thoughts, regardless of the place they have been uttered. A data breach or a weak password might lay bare our most private thoughts. We run the real risk of being confronted by an old conversation presented out of context or after we have learned better.
@@ -60,12 +52,8 @@ In theory, we would have a digital city with unique regions, public fora, and so
6052
6153## Urbis ec Bit
6254
63−<br>
64−
6555![View of Florence from San Miniato](https://media.urbit.org/site/posts/essays/view-of-florence.jpg)
6656
67−<br>
68−
6957Urbit does solve this underlying problem. At this point the explanation goes so far down the stack that you could spend years tracing it all, but the relevant part is this: Urbit is not an empire; it’s a territory. An empire is an entangling of land and rule: within the bounds of said empire, you agree to be bound by its laws and the penalties for transgression. The laws exist at the whim of a despot or cabal. Your standing as a Roman citizen buys you no favors in Persia. In contrast, a territory imposes only physical laws. For example, in the desert, you will die faster. The only way to change that is to alter the desert. Urbit imposes nothing but the digital equivalent of physical laws. You have an identity which can be said to be truly yours, and you have a piece of software that runs on whatever computer you choose and can do anything you want with the messages sent to your identity. There are no social protocols enforced, because no one can control what software you run on your computer. As long as you agree to communicate using the same basic substrate, you can communicate with anyone using Urbit. This is the digital equivalent of speaking the same language. Whether or not others will accept you into their coalitions is not the technology's concern.
7058
7159In the same way that the land provides clay and timber, Urbit also provides the tools and material for building places both public and private. These include the aforementioned consistent message substrate (content), as well as tools for organizing people/audiences, structure for referencing other content, and an identity system that is owned only by you while being verified by all. The places are being built&mdash;private rooms with just a few people, meeting halls, club houses, huge public spaces, and countless personal encounters, the contents of which are known to none but the participants.
content/blog/2021-11-18-report-from-the-field.md+2−2
@@ -26,7 +26,7 @@ I’ll try to abide by the Chatham rule in this post which is why no one is name
2626
2727New world energy -
2828
29−In the months leading up to Assembly we were totally focussed on using the event as a release date for a bunch of different lines of work. Coming out of that sprint, we didn’t really know what to expect. We wanted to make sure Urbit was ready for people to build on and that everything we were going to ship worked well. What we didn’t realize was just how emphatically people are <em>ready to build</em>.
29+In the months leading up to Assembly we were totally focussed on using the event as a release date for a bunch of different lines of work. Coming out of that sprint, we didn’t really know what to expect. We wanted to make sure Urbit was ready for people to build on and that everything we were going to ship worked well. What we didn’t realize was just how emphatically people are *ready to build*.
3030
3131When I got up on stage on Friday night to welcome everyone I was really impressed by the room itself. It was packed with people who looked excited and motivated. The room just looked amazing. There were so many different kinds of people staring back at me. Some who I recognized from the earliest days of the project, and lots I had never seen before. I’ve been at my share of Urbit events, but this was something totally different.
3232
@@ -34,7 +34,7 @@ We didn’t have much scheduled during Assembly. Most of the time was unstructur
3434
3535I spent the weekend of Assembly in almost constant conversation with people building Urbit hardware, experimenting with different kinds of Urbit software, and thinking about incredible things like a Nock chip. I talked to the lead architect of a CPU from the 90s, a former senior US government official, an editor of a well-known literary magazine, the inventor of a new display technology, musicians whose work I already admired, a fragrance designer, writers, and, of course, lots of engineers and designers from many different backgrounds. Data scientists, systems hackers, language nerds, someone running a successful currency. I watched these people get projects off the ground, start raising money, plan the future of Urbit hosting companies, and plan new features for Landscape. I saw a last-minute warehouse party come together that kept people talking well into the early hours of the morning.
3636
37−Where did these people come from? All over the place. They have this incredible <em>new world energy</em>. They understand immediately, intuitively that Urbit has the potential to be a foundation for the society they want to live in. I’ve never seen anything like it.
37+Where did these people come from? All over the place. They have this incredible *new world energy*. They understand immediately, intuitively that Urbit has the potential to be a foundation for the society they want to live in. I’ve never seen anything like it.
3838
3939This energy seems to have come from the very practical work we do day-to-day: building Urbit, refining it, making it easier to use. The crowd at Assembly was somehow brought together by Urbit itself. It’s insanely exciting. It makes working on Urbit feel even more like a form of definite optimism. The system builds the community and the community builds the system.
4040
content/blog/2021-11-18-the-promise-and-paradox-of-decentralization.md+8−8
@@ -12,19 +12,19 @@ image = "https://storage.googleapis.com/media.urbit.org/site/posts/essays/ux-cen
1212
1313Every so often, a platform will do something outrageous—changing its terms of use, kicking off API partners, restricting [the content category it was built on](https://www.theverge.com/2018/12/3/18123752/tumblr-adult-content-porn-ban-date-explicit-changes-why-safe-mode), banning Donald Trump, failing to ban Donald Trump, etc.—and we'll all realize we're utterly dependent on centralized entities that can make arbitrary and unaccountable decisions. Sure, you can build your own minimal Facebook or Twitter clone, if you really want, but can you build your own Cloudflare? How about your own payment network? If your company does something legal in your country but banned in America, and the US decides to sanction you, which leads to local banks cutting you off because they can't survive without access to the dollar, are you going to build your own reserve currency? Your own Taiwan Semiconductor Manufacturing Co. or ASML?
1414
15−There are, to varying extents, efforts to do all of the above. But what's worth considering is that <em>all of these bans happen through centralized actors running on decentralized systems</em>. The Internet was supposed to be a totally open set of protocols that anyone could interact with, and for a long time it was, and yet getting kicked off Facebook and Twitter means being exiled from public discourse. Banks are regulated, but every country can set up their own banking regulations, and different countries see the social role of banks very differently; for some countries they're a tool of economic planning, for others a way to help connect local companies to global markets, for others a source of money that can be channeled to politically favored groups. The chip industry was historically very open to new entrants; the transistor was developed at Bell Labs, and for political reasons AT&T licensed it to all comers at a low price.
15+There are, to varying extents, efforts to do all of the above. But what's worth considering is that *all of these bans happen through centralized actors running on decentralized systems*. The Internet was supposed to be a totally open set of protocols that anyone could interact with, and for a long time it was, and yet getting kicked off Facebook and Twitter means being exiled from public discourse. Banks are regulated, but every country can set up their own banking regulations, and different countries see the social role of banks very differently; for some countries they're a tool of economic planning, for others a way to help connect local companies to global markets, for others a source of money that can be channeled to politically favored groups. The chip industry was historically very open to new entrants; the transistor was developed at Bell Labs, and for political reasons AT&T licensed it to all comers at a low price.
1616
1717And yet all of these originally decentralized systems end up facing some degree of centralization.
1818
1919The promise of a decentralized system is that anyone can build anything they want, because no one owns it. There are three important features of this; two downsides and a caveat:
2020
21−- The first downside to "Anyone can build anything" is that "anyone" means <em>anyone</em>, and the people to whom decentralized systems are the most attractive are the ones who are banned from other systems, often for good reasons. Free speech absolutists want to be defending Aleksandr Solzhenitsyn or Eugene V. Debs or even Lenny Bruce, but if you want to get a sense for the typical piece of content enabled by a totally uncensored communications system, check your spam folder.
21+- The first downside to "Anyone can build anything" is that "anyone" means *anyone*, and the people to whom decentralized systems are the most attractive are the ones who are banned from other systems, often for good reasons. Free speech absolutists want to be defending Aleksandr Solzhenitsyn or Eugene V. Debs or even Lenny Bruce, but if you want to get a sense for the typical piece of content enabled by a totally uncensored communications system, check your spam folder.
2222
2323- The second downside is that a lack of ownership means that no one is responsible when things go wrong. Bitcoin doesn't have a way to censor your decision to move money from one address to another or even a protocol-level sense of whether you're buying Alpaca socks or a rocket launcher. (nb: You are almost certainly not buying a rocket launcher with Bitcoin; you are at best getting scammed, and at worst [getting in trouble](https://www.justice.gov/usao-cdca/pr/los-angeles-county-man-pleads-guilty-federal-charge-attempting-obtain-biological-toxin)). But this also means that the protocol can't tell when you meant to send your life savings to your cold wallet and sent it to the wrong address instead.
2424
25−- The caveat is that, to quote a [<em>Diff</em> piece from last year](https://www.thediff.co/p/amazon-a-new-kind-of-antitrust-risk#:~:text=does%20it%2C%20too.-,Technology-Governance%20Fit,-Pondering%20Durian%20has) ($), "[A]ny decentralized order requires a centralized substrate, and the more decentralized the approach is the more important it is that you can count on the underlying system." This applies to cryptocurrencies (you can trust the protocols) and to the Internet (ditto). It also applies, in an interesting way, to the increasingly decentralized world of free trade and free-flowing capital: money can only flow and deals can only be made if everyone has a consistent sense of property rights and contracts, and the definition of those concepts will typically be determined by whichever participant in a transaction has the more sophisticated financial and legal system. Globalization ends up being a bit like Henry Ford's pitch: you can use any economic paradigm you want, as long as it's the American one.1
25+- The caveat is that, to quote a [*Diff* piece from last year](https://www.thediff.co/p/amazon-a-new-kind-of-antitrust-risk#:~:text=does%20it%2C%20too.-,Technology-Governance%20Fit,-Pondering%20Durian%20has) ($), "[A]ny decentralized order requires a centralized substrate, and the more decentralized the approach is the more important it is that you can count on the underlying system." This applies to cryptocurrencies (you can trust the protocols) and to the Internet (ditto). It also applies, in an interesting way, to the increasingly decentralized world of free trade and free-flowing capital: money can only flow and deals can only be made if everyone has a consistent sense of property rights and contracts, and the definition of those concepts will typically be determined by whichever participant in a transaction has the more sophisticated financial and legal system. Globalization ends up being a bit like Henry Ford's pitch: you can use any economic paradigm you want, as long as it's the American one.1
2626
27−An open, decentralized system is <em>sparse</em>: there's room for anything, which means that most of the possibility space consists of nothing at all. This creates a natural demand for onramps—Coinbase for figuring out Bitcoin, portals for figuring out the Internet, TSM for turning chip designs into functioning products, and the like. These create a complicated dynamic: these onramps are built on an open system, but part of their function is to close off some of it. And the better they do that, the more value they can capture. Meanwhile, because they have a monopoly on what they've fenced off, their economics support providing a better user experience. Make a really helpful update to the Bitcoin wiki, and you can feel good about yourself and perhaps contribute to the price of Bitcoin in a highly indirect way; design and launch an improved onboarding process at Coinbase and your contribution is quantifiable, and affects your next cycle's equity grants.
27+An open, decentralized system is *sparse*: there's room for anything, which means that most of the possibility space consists of nothing at all. This creates a natural demand for onramps—Coinbase for figuring out Bitcoin, portals for figuring out the Internet, TSM for turning chip designs into functioning products, and the like. These create a complicated dynamic: these onramps are built on an open system, but part of their function is to close off some of it. And the better they do that, the more value they can capture. Meanwhile, because they have a monopoly on what they've fenced off, their economics support providing a better user experience. Make a really helpful update to the Bitcoin wiki, and you can feel good about yourself and perhaps contribute to the price of Bitcoin in a highly indirect way; design and launch an improved onboarding process at Coinbase and your contribution is quantifiable, and affects your next cycle's equity grants.
2828
2929This privatization proceeds in three different ways:
3030
@@ -32,9 +32,9 @@ This privatization proceeds in three different ways:
3232
3333- Twitter is another example, except that they basically created their own open mostly-open protocol and then slowly took control of it. Tweets were originally a simple format, with 140 characters of text and a bit more metadata (this made it compatible with SMS, which had a 160-character limit). For a while, Twitter looked like it would operate a novel protocol and let third parties decide what to put on it and what to read off it. And then the company started to realize that an open system was also one where it was trivial to filter out ads and recommendations. So the outside partners gradually got cut off.
3434
35−- Facebook—the product, not the company—is a third example. It essentially implemented a missing element to the protocol: <em>identity matters</em>. When the original protocols were being hammered out, identity was a problem taken care of by the fact that getting online required steep hurdles; if everyone involved is affiliated with a university that trusts them to use a PDP-10 responsibly, spam or abuse were not big concerns. (Not that early usage was [strictly professional](https://www.theguardian.com/science/2013/apr/19/online-high-net-drugs-deal).) With billions of people online, accessing relevant information can mean traversing a graph of people rather than links, so the identities of those people becomes important. To the user, if not to the network itself, a name and relationship is a far more important unique identifier than an IP address.
35+- Facebook—the product, not the company—is a third example. It essentially implemented a missing element to the protocol: *identity matters*. When the original protocols were being hammered out, identity was a problem taken care of by the fact that getting online required steep hurdles; if everyone involved is affiliated with a university that trusts them to use a PDP-10 responsibly, spam or abuse were not big concerns. (Not that early usage was [strictly professional](https://www.theguardian.com/science/2013/apr/19/online-high-net-drugs-deal).) With billions of people online, accessing relevant information can mean traversing a graph of people rather than links, so the identities of those people becomes important. To the user, if not to the network itself, a name and relationship is a far more important unique identifier than an IP address.
3636
37−This pattern raises a question: is centralization just a natural tendency of all networks? Are we destined to have a "decentralization sandwich," where there's a hard-to-change set of protocols, something open built on top of <em>that</em>, and a series of closed systems built on top of that, which are the only ones the average person interacts with?
37+This pattern raises a question: is centralization just a natural tendency of all networks? Are we destined to have a "decentralization sandwich," where there's a hard-to-change set of protocols, something open built on top of *that*, and a series of closed systems built on top of that, which are the only ones the average person interacts with?
3838
3939One of the interesting alternatives to this is [Urbit](https://urbit.org), which is trying to build a network in which identity exists from the start, and is neither free nor monopolized. One of Urbit's principles is that users own their data, and while they can use third-party services, they're sharing their data with services, not using a login to access information that lives on someone else's servers.
4040
@@ -50,6 +50,6 @@ One possibility for the successor to the current Internet is that it will end up
5050
5151Norms are not a perfect solution to these problems (if they were, we'd only know about issues like novel addictive behaviors, monopolies, and the homogenization of entertainment from history books). And technology can't fully solve social problems. But it can certainly have an effect on them—"you can't solve a social problem with technology" is a good guideline, but technologies mitigate them all the time. What's a streetlight if not a technological solution to the social problem that there are places where it's dangerous to be out when it's dark? What's asymmetric-key cryptography if not a technological solution to the social problem that it's hard to keep secrets? There's still a fundamental tension with open systems, where they get mature enough to be useful at which point the median user's priority is getting things done rather than adhering to the network's original design principles. But a design that recognizes this from the beginning, and a community that wants to make it happen, can stave off decline for a long time. And that's the positive story of technology: we're all fighting against entropy, which is a hard fight to win, but there are long and fascinating stalemates ahead.
5252
53−(Disclosure: I'm long decentralization by way of Bitcoin and Urbit. If you're on Urbit and would like to discuss <em>The Diff</em>, go to ~lableg-tadrex/the-diff.)
53+(Disclosure: I'm long decentralization by way of Bitcoin and Urbit. If you're on Urbit and would like to discuss *The Diff*, go to ~lableg-tadrex/the-diff.)
5454
55−<sup>1.</sup> There is naturally some resistance to this, both because of conflicts with different countries' norms and with other countries' natural desire to determine their own destiny. So it's a leaky abstraction, but it gets less leaky over time as economies get more integrated and thus more of the world has to standardize. The most direct example of this is the fact that [the dollar's share of global invoices is 4.7x the US's share of global imports](https://www.economist.com/schools-brief/2020/08/27/global-trades-dependence-on-dollars-lessens-its-benefits) ($, <em>Economist</em>). In the same way that English is most likely to be the shared second language of any two randomly-selected people who don't speak it as a first language, the dollar is most likely to be the second most useful currency to anyone in a country that doesn't use dollars.
55+1. There is naturally some resistance to this, both because of conflicts with different countries' norms and with other countries' natural desire to determine their own destiny. So it's a leaky abstraction, but it gets less leaky over time as economies get more integrated and thus more of the world has to standardize. The most direct example of this is the fact that [the dollar's share of global invoices is 4.7x the US's share of global imports](https://www.economist.com/schools-brief/2020/08/27/global-trades-dependence-on-dollars-lessens-its-benefits) ($, *Economist*). In the same way that English is most likely to be the shared second language of any two randomly-selected people who don't speak it as a first language, the dollar is most likely to be the second most useful currency to anyone in a country that doesn't use dollars.
content/blog/aesthetic-culture-1.md−4
@@ -10,12 +10,8 @@ ship = "~nartes-fasrum"
1010image = "https://media.urbit.org/site/posts/essays/help-the-environment.jpg"
1111+++
1212
13−<br>
14−
1513![A set of four sigils arranged & coloured to appear as various natural forms, above the ~sorwet sigil & the text "help the environment and help yourself"](https://media.urbit.org/site/posts/essays/help-the-environment.jpg)
1614
17−<br>
18−
1915_This post is the first in a series of digests centered on art produced within and about Urbit by a member of the community, ~nartes-fasrum. Monthly digests will be available within the Urbit Community group in Landscape, and will occasionally be compiled here on the blog to give you a sneak peek at some of what’s happening on the network. Enjoy! ~wolref-podlex_
2016
2117One of the most exciting things about Urbit is the aesthetic and design around it, developed partly by Tlon (through the design of Urbit itself) and partly by the community (by producing great Urbit art). As the community grows, it creates more art, and we have the opportunity to showcase some of the pieces we love. These works can draw curious new users in, and they give existing users ways to communicate their excitement to friends.
content/blog/after-machine-war.md−6
@@ -9,12 +9,8 @@ ship = "~bacbec-lormur"
99image = "https://storage.googleapis.com/media.urbit.org/site/posts/essays/berlin-wall.jpeg"
1010+++
1111
12−<br>
13−
1412![berlin-wall](https://storage.googleapis.com/media.urbit.org/site/posts/essays/berlin-wall.jpeg)
1513
16−<br>
17−
1814> The following fictional passage, from a book being written in an Urbit Group called “the Aleph,” sketches out a dismal future for the human race. As an item of speculative fiction, the piece is not what one might call original. Anyone could have come up with these ideas. In fact, several already have. The Matrix is an obvious antecedent. Vonnegut isn’t far behind either. And the treacly humanism lodged beneath the bitter humor resembles nothing so much as the work of that beau monde satirist, George Saunders.
1915>
2016> Really the only notable thing about it is that it was written on Urbit. And that, perhaps, has made all the difference.
@@ -25,8 +21,6 @@ image = "https://storage.googleapis.com/media.urbit.org/site/posts/essays/berlin
2521>
2622> Then as now, the unexpected is more likely to occur than most would believe. One thing is not only possible, but an established fact: A brand new digital infrastructure is slowly, quietly being built. While U.S. political parties haggle over $1,400 disbursements for citizens, the rules of global finance are being re-written in code. While pundits debate the merits of Dr. Seuss’s lesser known titles, a global shift away from traditional publishing is gaining steam. And while users and social apps themselves pop up and down like whack-a-mole, folks are putting down roots with permanent peer-to-peer digital identities. If you’re anything like an optimist, you’ll probably want to get on Urbit ASAP and put down your own.
2723
28−<br>
29−
3024The date is January 1, 2050. The place, New York City. The vibe...subdued. Back in 2020, you made a note to yourself to take stock of the world around you here at the half-century mark. And now the time has come. What do you find? The air quality is a bit worse, the bad parts of town are a bit more dilapidated, the Knicks are still terrible—all in all, from the outside at least, not much has changed from 30 years ago. Today you wake up groggy on your self-adjusting Smart Bed (Smart Bed Never Sleeps), you make yourself a steaming pot of coffee (locally sourced, delivered within the half-hour by a drone, now that you’ve got Titicaca Prime), you shower and get ready for work.
3125
3226But what was that dream you had last night? Only the faintest traces of it remain. A luminous rainbow, a mountain landscape, a sense of profound inner peace, mixed with euphoria, mixed with...an intense desire to go out and buy some Health Morsels cereal?
content/blog/common-objections-to-urbit.md+15−15
@@ -40,7 +40,7 @@ Here's our list right now:
4040_"We choose to go to the moon, not because it is easy, but because it is hard."_
4141— [John F. Kennedy](https://www.youtube.com/watch?v=g25G1M4EXrQ)
4242
43−## <a name="prime"></a>Urbit is not ready for prime time.
43+## Urbit is not ready for prime time. {% #prime %}
4444
4545_TLDR_: we agree.
4646
@@ -68,7 +68,7 @@ maintained or stabilized by a mad auteur. Our primary goal today
6868is expanding the number of people who understand Urbit, and we
6969expect these pioneers to participate in technical governance.
7070
71−## <a name="jets"></a>Nock jets are a total hoax.
71+## Nock jets are a total hoax. {% #jets %}
7272
7373_TLDR_: all of computing is a hoax. You can't compare a hoax
7474to nothing. You can only compare it to all the other hoaxes.
@@ -149,7 +149,7 @@ state. The way to resolve this conflict is for the current state
149149to win, and the event history to be discarded -- not abnormal
150150anyway. See the next question.
151151
152−## <a name="log"></a>Urbit needs an infinitely extending packet/event.
152+## Urbit needs an infinitely extending packet/event. {% #log %}
153153
154154_TLDR_: no, it doesn't. Urbit can prune the log.
155155
@@ -166,7 +166,7 @@ checkpoint. Our present implementation doesn't provide a way to
166166prune the event log. But that's just a missing feature. We have
167167one or two of those!
168168
169−## <a name="scam"></a>Urbit is a total scamcoin. It's 100% premined.
169+## Urbit is a total scamcoin. It's 100% premined. {% #scam %}
170170
171171_TLDR_: yeah. But at least it's not the DAO.
172172
@@ -241,7 +241,7 @@ seem to have unexpected centripetal qualities, producing
241241unanticipated concentrations of centralized hashpower. See the
242242next objection.
243243
244−## <a name="gov"></a>Urbit isn't even really decentralized! It has a government!
244+## Urbit isn't even really decentralized! It has a government! {% #gov %}
245245
246246_TLDR_: it's technically impossible for Urbit to be
247247decentralized at this stage of its life. Urbit is designed to
@@ -317,7 +317,7 @@ at best, and a hoax at worst. And of course, no one can DAO us
317317Among other things, we check it into GitHub. GitHub is not a
318318blockchain -- but still, good luck with that.
319319
320−## <a name="sand"></a>Sandstorm/IPFS/Ethereum is way ahead of Urbit.
320+## Sandstorm/IPFS/Ethereum is way ahead of Urbit. {% #sand %}
321321
322322In general, web3 (next distributed web) solutions don't compete
323323with each other. They support each other. Concretely, they are
@@ -362,7 +362,7 @@ expressive power; but identity is optimal for the UI of the
362362common case. We'd need to see the Powerbox, Sandstorm's UI, more
363363fully fleshed out to understand its UI approach better.
364364
365−## <a name="planet"></a>Urbit doesn't have enough planets for every human
365+## Urbit doesn't have enough planets for every human {% #planet %}
366366
367367A 32-bit planet is a tool, not a toy. Like a car, it's a device
368368for a responsible and independent adult. There aren't 4 billion
@@ -388,7 +388,7 @@ social network social.
388388There is always a tradeoff between free speech and free beer.
389389Urbit will always choose free speech.
390390
391−## <a name="pwned"></a>Cloud computing is inherently non-private.
391+## Cloud computing is inherently non-private. {% #pwned %}
392392
393393_TLDR_: a general-purpose cloud computer is much, much more
394394private than a special-purpose cloud computer. In general, a
@@ -430,7 +430,7 @@ course, since Urbit is formally specified, it's trivially
430430portable. In fact, one strategy against sovereign adversaries
431431may be continuous rotation between hosts, like an MX missile.
432432
433−## <a name="code"></a>Urbit will never be able to call any existing code.
433+## Urbit will never be able to call any existing code. {% #code %}
434434
435435_TLDR_: neither will Javascript. And dear Unix, the browser
436436does not miss interacting with your `$LD_LIBRARY_PATH` at all.
@@ -444,7 +444,7 @@ When in doubt, remember that Urbit is "the browser for the server
444444side." It plays by the same general rules. Isolation means
445445isolation.
446446
447−## <a name="weird"></a>There's no way Urbit will ever be adopted. It's too weird.
447+## There's no way Urbit will ever be adopted. It's too weird. {% #weird %}
448448
449449_TLDR_: Urbit adoption is designed to be driven by ordinary end
450450users. Urbit isn't ready for ordinary end users yet. We're
@@ -484,7 +484,7 @@ Urbit only gets adopted if it's useful as a personal server for
484484human beings -- most of whom won't be Hoon programmers, or
485485programmers at all.
486486
487−## <a name="program"></a>Hoon is too weird. No one will be able to program in it.
487+## Hoon is too weird. No one will be able to program in it. {% #program %}
488488
489489_TLDR_: Hoon is ridiculously simple. Our documentation and
490490tooling are just immature.
@@ -523,7 +523,7 @@ Yes, we know: Hoon remains quite hard to learn. Again, we have
523523no reason to think this problem isn't solvable. Public
524524enlightenment remains our main priority.
525525
526−## <a name="stuck"></a>Urbit programmers are stuck with Hoon.
526+## Urbit programmers are stuck with Hoon. {% #stuck %}
527527
528528_TLDR_: patience, grasshopper.
529529
@@ -534,7 +534,7 @@ write an interpreter for that language in Hoon. Second, jet that intepreter func
534534It is not clear that Javascript is _quite_ well-defined enough
535535for this treatment. But Lua probably is.
536536
537−## <a name="user"></a>Ordinary users will never be able to manage an Urbit server.
537+## Ordinary users will never be able to manage an Urbit server. {% #user %}
538538
539539_TLDR_: Urbit's technical simplicity has always been designed
540540to drive human usability. But the polish is the last thing that
@@ -581,7 +581,7 @@ a general-purpose computer. Computing isn't scary or dangerous.
581581Unix and the Internet are scary and dangerous. That's fine for
582582an industrial tool, but not a personal tool.
583583
584−## <a name="killer"></a>Urbit has no killer app.
584+## Urbit has no killer app. {% #killer %}
585585
586586_TLDR_: the killer app is personal API aggregation.
587587
@@ -646,7 +646,7 @@ Stateful, self-updating, generic API aggregators with FUSE
646646integration, also integrated with a reactive web server, are
647647rarer.
648648
649−## <a name="horse"></a> Urbit is sniffed at by Houyhnhyms.
649+## Urbit is sniffed at by Houyhnhyms. {% #horse %}
650650
651651It's difficult to categorize [this awesome
652652essay](http://ngnghm.github.io/blog/2016/06/11/chapter-10-houyhnhnms-vs-martians/)
content/blog/creating-sigils.md+2−2
@@ -21,7 +21,7 @@ From a design standpoint, some of this is accomplished simply by having a system
2121
2222While the names are great, they’re not quite enough, especially in a rich interface. Each Urbit ID really needed some form of visual representation, image, or crest. A digital identity needs to be something you can really attach to, both yours and those that belong to your friends.
2323
24−There are 2<sup>32</sup> or 4.2 billion unique Urbit IDs. Clearly there’s no way that we were going to do this by hand. And purely algorithmic solutions can often produce disappointing, undifferentiated output.
24+There are 2^32^ or 4.2 billion unique Urbit IDs. Clearly there’s no way that we were going to do this by hand. And purely algorithmic solutions can often produce disappointing, undifferentiated output.
2525
2626Regardless, we set out to tackle this problem. By the end of this process, every Urbit ID got its very own ‘sigil.’
2727
@@ -75,7 +75,7 @@ Ultimately, we didn’t specifically draw on any of these influences very consci
7575
7676> _“Lev’s sigil appeared, strobing, as Netherton was getting out of the cab in Henrietta Street. “Yes?” Netherton asked.”_
7777>
78−> <cite>— William Gibson, The Peripheral</cite>
78+> **— William Gibson, The Peripheral**
7979
8080Before we get to how we worked through the problem of actually designing these things, let’s talk about the problem of naming.
8181
content/blog/eliza.md+1−5
@@ -9,12 +9,8 @@ ship = "~pindet-timmut"
99image = "https://media.urbit.org/site/posts/essays/valleys.jpg"
1010+++
1111
12−<br>
13−
1412![valleys](https://media.urbit.org/site/posts/essays/valleys.jpg)
1513
16−<br>
17−
1814## The Storm before the Calm
1915
2016Building things, even Calm™ things, makes noise. George Nakashima’s wooden furniture evokes peace, but its construction still begins with a chainsaw. We mention this because we’re firing up our newest power tool.
@@ -27,7 +23,7 @@ Hang on. An AI? Harvesting my data? Spying on me? Flooding me with spam? This is
2723
2824> Replicants are like any other machine - they're either a benefit or a hazard. If they're a benefit, it's not my problem.
2925>
30−> <cite>Rick Deckard</cite>
26+> **Rick Deckard**
3127
3228Let's start with the benefits. Eliza is a simple chatbot. She was made to collect feedback on Landscape. She asks direct questions about peoples' usage of Urbit, records any responses, and reports them to her managers at Tlon. She'll also provide timely advice and information to ships kind enough to chat with her. She'll begin reaching out to ships via DM in the coming month. If you don't want to, just say no, and you'll never hear from her again.
3329
content/blog/events-series.md−4
@@ -10,12 +10,8 @@ ship = "~naplet-hildec"
1010image = "https://media.urbit.org/site/posts/essays/bau.jpg"
1111+++
1212
13−<br>
14−
1513![people gathered](https://media.urbit.org/site/posts/essays/bau.jpg)
1614
17−<br>
18−
1915_TL;DR: Urbit is launching a series of community events, the first of which is a developer call taking place on Thursday, November 5 at 9am PT. [Sign up here](https://www.meetup.com/urbit-sf/events/274279522/), and read on for all of the details._
2016
2117--
content/blog/first-contract.md+2−6
@@ -9,12 +9,8 @@ ship = "~datnut-pollen and ~palfun-foslup"
99image = "https://media.urbit.org/site/posts/essays/land3.jpg"
1010+++
1111
12−<br>
13−
1412![milestone](https://media.urbit.org/site/posts/essays/land3.jpg)
1513
16−<br>
17−
1814Recently, the [first upgrade](https://github.com/urbit/azimuth/pull/35) to the
1915[Azimuth](/docs/glossary/azimuth) smart contracts which make up Urbit ID was
2016put up to an [upgrade proposal vote](/docs/glossary/upgrade) by the
@@ -40,7 +36,7 @@ time, and how sponsorship works. Put another way, the data and database format
4036must remain the same, but the rules by which we interact with it may change
4137according to the governance rules we [detail below](#senate).
4238
43−## Changelist {#changelist}
39+## Changelist {% #changelist %}
4440
4541The Galactic Senate is voting on the following changes to Ecliptic:
4642
@@ -106,7 +102,7 @@ yourself), its configured proxies, networking keys and claims are cleared during
106102transfer. As such, Ecliptic will need to know about the address of the new
107103Claims contract.
108104
109−## Urbit Governance {#senate}
105+## Urbit Governance {% #senate %}
110106
111107![geology](https://media.urbit.org/site/posts/essays/b1.jpg)
112108
content/blog/first-steps-towards-urbit-org.md+1−3
@@ -9,9 +9,7 @@ ship = "~wolref-podlex"
99image = "https://media.urbit.org/site/posts/essays/first-steps.png"
1010+++
1111
12−<br>
13−
14−<img src="https://media.urbit.org/site/posts/essays/first-steps.png">
12+![](https://media.urbit.org/site/posts/essays/first-steps.png)
1513
1614## Summary
1715
content/blog/ford-fusion.md+1−5
@@ -9,11 +9,7 @@ ship = "~rovnys-ricfer"
99image = "https://media.urbit.org/site/posts/essays/ford-fusion.png"
1010+++
1111
12−<br>
13−
14−<img class="ba" src="https://media.urbit.org/site/posts/essays/ford-fusion.png">
15−
16−<br>
12+![](https://media.urbit.org/site/posts/essays/ford-fusion.png)
1713
1814## Overview and Rationale
1915
content/blog/gifts-q3-2020.md+1−5
@@ -13,11 +13,7 @@ ship = "~wolref-podlex"
1313image = "https://media.urbit.org/site/posts/essays/gifts.png"
1414+++
1515
16−<br>
17−
18−<img class="ba" src="https://media.urbit.org/site/posts/essays/gifts.png">
19−
20−<br>
16+![](https://media.urbit.org/site/posts/essays/gifts.png)
2117
2218Twice a year we distribute address space to those that have made valuable contributions to Urbit. Now called our _Gifts_ program, the gifting of address space has been part of Urbit long before we had a grants program.
2319
content/blog/hackathon-results.md+1−5
@@ -9,11 +9,7 @@ ship = "~lodleb-ritrul"
99image = "https://media.urbit.org/site/posts/essays/hackathon-results-wide.png"
1010+++
1111
12−<br>
13−
14−<img class="ba" src="https://media.urbit.org/site/posts/essays/hackathon-results.png">
15−
16−<br>
12+![](https://media.urbit.org/site/posts/essays/hackathon-results.png)
1713
1814Results of the Urbit Hackathon
1915
content/blog/hosting-the-future.md−4
@@ -9,12 +9,8 @@ ship = "~simfur-ritwed"
99image = "https://storage.googleapis.com/media.urbit.org/site/posts/essays/200930-hosting-by-tlon.jpg"
1010+++
1111
12−<br>
13−
1412![Ocean](https://storage.googleapis.com/media.urbit.org/site/posts/essays/200930-hosting-by-tlon.jpg)
1513
16−<br>
17−
1814Urbit users tend to be interesting, creative, and capable people; we’re genuinely impressed with the communities that have formed on the network, and with the quality of discourse there. But for the number of communities to continue to grow, getting on the network has to become dramatically easier. It’s not realistic to expect most people to configure their own Urbit OS node in the command line.
1915
2016At the moment, the biggest lever we have here is to help ordinary users get online, so they can participate in communities inside Urbit, and eventually form their own. This means hosting their Urbit nodes and showing them around the network when they first arrive. There are already several businesses overlapping with this space to varying degrees: [planet.market](https://planet.market/), [urth.systems](https://urth.systems/), and [geturbitid](https://www.geturbitid.com/). Now, Tlon is releasing its own hosting offering. For the uninitiated, “Hosting” just means that we run your urbit ship for you, making it easier for you to get onto the network. We’ve been testing our hosting service with friends and family for the past few months, and now we’re ready to bring it to the rest of the world.
content/blog/immunology-for-the-internet-age.md+97−500
@@ -8,514 +8,111 @@ ship = "~lagrev-nocfep"
88image = "https://live.staticflickr.com/4322/35891780782_4179f476f9_k.jpg"
99+++
1010
11−_A version of the following was presented by ~lagrev-nocfep at the [MTAConf 2022
12−conference on “The Decentralization of Power”](https://www.mtaconf.org/)._
11+_A version of the following was presented by ~lagrev-nocfep at the [MTAConf 2022 conference on “The Decentralization of Power”](https://www.mtaconf.org/)._
1312
1413**✿**
1514
16−IN THE BEGINNING, *God created the prokaryotes. And the
17−prokaryotes were without nucleus and organelle; and structural
18−simplicity was upon the face of the deep. And chemotaxis moved it upon
19−the face of the waters.*
20−
21−A single-celled organism possesses many advantages, notably simplicity
22−of form. Being largely indistinguishable, they have no differentiation
23−or specialization. Prokaryotes often form large colonies, such as the
24−cyanobacteria. Some prokaryotes discovered early on that it paid better
25−to consume resources that had already been processed into usable form by
26−another cell, rather than to process those resources oneself. Thus
27−predator and prey were born, and they have always exemplified divergent
28−competitive evolutionary strategies. The resulting arms race meant that
29−predators were continually adapting to better extract resources from
30−prey, while prey were evolving to evade, resist, fight, or poison
31−predators. Selection pressures applied at individual, species, and clade
32−levels, lead to speciation across deep time.
33−
34−More complex forms seemed better able to evade predators, and thus
35−simple symbiotic alliances between differentiated prokaryotes evolved
36−into the eukaryotes (yielding specialized features such as the nucleus
37−and mitochondria) and multicellular life forms. Simpler forms also
38−abounded, including the liminal virus. Viruses are forms of near-life so
39−simple that they simply exploit cells to reproduce. They are entirely
40−predatory or at best symbiotic with other life. Evasion of pathogenic
41−disease, or disequilibrated colonization by simpler forms of life, has
42−been a---if not the---primary driver towards increasing complexity in
43−multicellular life.[^1]
15+IN THE BEGINNING, _God created the prokaryotes. And the prokaryotes were without nucleus and organelle; and structural simplicity was upon the face of the deep. And chemotaxis moved it upon the face of the waters._
16+
17+A single-celled organism possesses many advantages, notably simplicity of form. Being largely indistinguishable, they have no differentiation or specialization. Prokaryotes often form large colonies, such as the cyanobacteria. Some prokaryotes discovered early on that it paid better to consume resources that had already been processed into usable form by another cell, rather than to process those resources oneself. Thus predator and prey were born, and they have always exemplified divergent competitive evolutionary strategies. The resulting arms race meant that predators were continually adapting to better extract resources from prey, while prey were evolving to evade, resist, fight, or poison predators. Selection pressures applied at individual, species, and clade levels, lead to speciation across deep time.
18+
19+More complex forms seemed better able to evade predators, and thus simple symbiotic alliances between differentiated prokaryotes evolved into the eukaryotes (yielding specialized features such as the nucleus and mitochondria) and multicellular life forms. Simpler forms also abounded, including the liminal virus. Viruses are forms of near-life so simple that they simply exploit cells to reproduce. They are entirely predatory or at best symbiotic with other life. Evasion of pathogenic disease, or disequilibrated colonization by simpler forms of life, has been a---if not the---primary driver towards increasing complexity in multicellular life.[^1]
4420
4521**✿**
4622
47−The Internet began in the late 1960s, born of scientific alliance
48−between the Cold War Department of Defense and the academic research
49−community.[^2] This community had a signal advantage over many
50−subsequent communities: it was dominated by strong norms of discourse
51−which shaped the professionalism of the community. This is not to
52−discount the significance of courtly intrigue, of course, which deftly
53−exploited tensions between competing systems.[^3] [^4] [^5]
54−Throughout this era, though, the Internet generally functioned as a
55−real-name high-trust environment---if not exactly of peers, at least of
56−colleagues.
57−
58−The Internet evolved as a coordination mechanism---literally a nervous
59−system incarnate in copper and silicon---particularly through the Usenet
60−days of the 1980s. In our days of heightened online tension and mediated
61−preference cascades, it is rather quaint to go back and look at what
62−qualified as email flame wars at the time (e.g. Torvalds/Tanenbaum). One
63−hallmark of the Usenet era, however, is a gradually eroding social
64−trust: spam was invented[^6] and Internet-based scams started to spin
65−up. Pseudonymity gained in popularity as a countermeasure to both of
66−these as well as restrictions on discourse. The revelation that
67−persistent digital records could cost someone's job[^7] further fueled a
68−cyberpunk-like obsession with identity control and hacking.
69−
70−Computer viruses could propagate for the first time: it never made much
71−sense to build a computer virus until systems were connected. Although
72−John von Neumann and others early explored the possibility of
73−mathematical or code structures which could self-replicate, it was not
74−until the Creeper virus in the 1970s that self-replicating code was
75−observed in the wild. And like a bacillus in an immune system-free host,
76−code-based computer viruses began to spread from the 1980s onwards.
77−
78−The crisis arrived in the form of the World Wide Web. Founded initially
79−on a belief in the democratization of information, the Web rapidly
80−became dominated by a handful of large corporations (henceforth
81−"megacorps"). User experience became the predominant driver of adoption,
82−leading to rapid preference cascades as new platforms became available.
83−Any child of the 90s or earlier can recite the lived litany: Ebay,
84−MySpace, Friendster. Initially these served as proofs-of-concept, then
85−became the only significant player (until the next killer app came
86−along). Search engines drove discovery, then focused attention
87−asymmetrically. The "walled garden" approach of AOL, then Apple and
88−Facebook, led to concentrations of users which tipped the balance from
89−single webpage hosts presenting their own idiosyncratic views to
90−corporate-approved genericity and ultimately censorship.[^8]
23+The Internet began in the late 1960s, born of scientific alliance between the Cold War Department of Defense and the academic research community.[^2] This community had a signal advantage over many subsequent communities: it was dominated by strong norms of discourse which shaped the professionalism of the community. This is not to discount the significance of courtly intrigue, of course, which deftly exploited tensions between competing systems.[^3].
24+
25+Throughout this era, though, the Internet generally functioned as a real-name high-trust environment---if not exactly of peers, at least of colleagues.
26+
27+The Internet evolved as a coordination mechanism---literally a nervous system incarnate in copper and silicon---particularly through the Usenet days of the 1980s. In our days of heightened online tension and mediated preference cascades, it is rather quaint to go back and look at what qualified as email flame wars at the time (e.g. Torvalds/Tanenbaum). One hallmark of the Usenet era, however, is a gradually eroding social trust: spam was invented[^6] and Internet-based scams started to spin up.
28+
29+Pseudonymity gained in popularity as a countermeasure to both of these as well as restrictions on discourse. The revelation that persistent digital records could cost someone's job further fueled a cyberpunk-like obsession with identity control and hacking.[^7]
30+
31+Computer viruses could propagate for the first time: it never made much sense to build a computer virus until systems were connected. Although John von Neumann and others early explored the possibility of mathematical or code structures which could self-replicate, it was not until the Creeper virus in the 1970s that self-replicating code was observed in the wild. And like a bacillus in an immune system-free host, code-based computer viruses began to spread from the 1980s onwards.
32+
33+The crisis arrived in the form of the World Wide Web. Founded initially on a belief in the democratization of information, the Web rapidly became dominated by a handful of large corporations (henceforth "megacorps"). User experience became the predominant driver of adoption, leading to rapid preference cascades as new platforms became available. Any child of the 90s or earlier can recite the lived litany: Ebay, MySpace, Friendster. Initially these served as proofs-of-concept, then became the only significant player (until the next killer app came along). Search engines drove discovery, then focused attention asymmetrically. The "walled garden" approach of AOL, then Apple and Facebook, led to concentrations of users which tipped the balance from single webpage hosts presenting their own idiosyncratic views to corporate-approved genericity and ultimately censorship.[^8]
9134
9235**✿**
9336
94−When was the first time you did something in the physical world because
95−of something you read or encountered online? For generations born after
96−the advent of the Web, they may not recall such a time when meatspace
97−existence wasn't driven by life online. As Internet data sources have
98−overwhelmed traditional media, publishing, and distribution services,
99−the resulting tsunami of information and informatization has swept into
100−every corner of lived human experience in technological societies. The
101−psychological (memetic) virus problem is much greater than actual code
102−viruses. The ongoing universal exposure to alien and internally
103−incoherent value systems has undergirded the well-documented crisis of
104−credibility (collapse of meaning) that all Western institutions are
105−experiencing today. The World Wide Web and its technological
106−predecessors acted as a cultural petri dish of clean agar, which grew
107−every spore and germ which fell upon it. We live in the midst of a
108−memetic epidemic because of the World Wide Web, and the dominant strain
109−is corporate, approved by a marketing department and run through a
110−search-engine optimization algorithm.
111−
112−The turn towards a low-trust then zero-trust environment was inevitable
113−if anything like an analogy with prokaryotic evolution holds true. The
114−megacorp platforms are in a way worse than a purely zero-trust
115−environment, because they don't advertise that the world is zero-trust.
116−Thereby they lure the unwary into transgressing arbitrary global norms
117−and courting the wrath of social media mobs and the concomitant loss of
118−access to their data held in "trust." To mix a metaphor, megacorps are
119−apex predators---at best, sheepdogs with a strong strain of wolfishness;
120−at worst, tar pits manned by various bad-faith actors. The pre-Web
121−cypherpunks were right: "Privacy is the power to selectively reveal
122−oneself to the world."[^9] If anything, they were too narrow; not only
123−their valued "open society" (polyvalent crypto-anarchy) but *any*
124−non-megacorp society at all requires true privacy.
125−
126−What cyberspace (and human culture writ broadly) needed was an immune
127−system---and in good Darwinian form, such an immune system has been
128−evolving before our eyes. An immune system formally consists of layers
129−with increasing specificity: first surface barriers, then the innate
130−immune system, and finally the adaptive immune system. The objective of
131−the immune system is to protect the organism: in this case, human
132−sociality and agency.
133−
134−First, what is human sociality? Human culture has been the means of
135−participating in the Great Discussion which ranges from the earliest
136−days of oral culture to the birth of literacy and libraries down to our
137−day. High culture and low culture have both articulated and preserved
138−valuable insights and forms of human flourishing. However, throughout
139−the 20^th^ century and particularly by the means of the consumer
140−revolution, our lives have been thoroughly colonized by capital and
141−commercial instruments. So-called "economies of scale" have disrupted
142−smallholders, artisans, and shopkeepers to the extent that these have
143−been virtually eradicated from the modern landscape in favor of the
144−plastic and polluting "dark Satanic mills." Although small-scale
145−"provident living" has supported gardening, canning, and home
146−production, none of this has survived across a large enough cultural
147−segment to matter macroscopically, and it has unfortunately been tarred
148−with the "prepper" brush that delegitimizes economic downsizing as
149−antisocial because anticapitalist. The siren call of cheap consumer
150−goods has ushered in a generational collapse in self-sufficiency and
151−resulted in the complete colonization of entertainment, food
152−consumption, and self-care by massive corporate brands. Not only have
153−physical goods entered a post-consumer phase, but only certain classes
154−of ideas, attitudes, political stances, regional accents, and
155−sensibilities enjoy the sanction of megacorp sociality. There is
156−essentially no native culture left, only that forged in the enterprise
157−brand management office.[^10]
158−
159−In an immune system, *surface barriers* are designed to make it hard for
160−exogenous agents to enter a cell or organism; in our analogy, the
161−primary surface barrier was the match of physical separation to
162−psychological separation. Surface barriers were rendered finally
163−obsolete by the launch of the World Wide Web and its subsequent
164−infiltration of every aspect of human culture. To the extent they exist
165−today, it is a matter of ignorance, self-discipline, or happy accident.
166−
167−The *innate immune system* responds non-specifically to pathogens. Any
168−immune system must have a way of deciding what is *me* and what is
169−*not-me*. Framed as an identity problem in a zero-trust environment,
170−users have evolved several ways to uniquely identify agents without
171−reference to legacy systems. Chief among these means is the blockchain,
172−introduced by Bitcoin for control and transaction of digital assets and
173−since much exploited beyond its design intent. Ethereum-based ERC tokens
174−represent tweaks of this identity concept, as do many other blockchain
175−platforms.
176−
177−Identity is still fluid and polysemous, but in certain key instances it
178−is indelibly demonstrable.[^11] The individual actor has the capability
179−to express itself with many public faces or none; one of these typically
180−enjoys government sanction and liability, but it is no more *real* than
181−the others, only more legible to regulation and taxation.[^12]
182−
183−Another aspect of the innate immune system is the public visibility of
184−code. Open source has developed an ethic of transparency on
185−epistemological grounds (i.e. you have a right to know what code you are
186−running) and practical grounds. (Linus's law: "given enough eyeballs,
187−all bugs are shallow."[^13])
188−
189−The *adaptive immune system* responds to specific pathogenic incursions.
190−Particular conditions arise, whether through social, regulatory,
191−military, or other requirements, which must be met with specialized
192−forms that are thereafter in evolutionary competition with the external
193−factor. For instance, one megacorp solution to what it perceives as a
194−threat, i.e. unsanctioned memes, is to attempt to mandate the ultimate
195−traceability of any image's provenance.[^14] The Internet immune system
196−thus evolves to further obfuscate legibility and enhance individual
197−control and self-determination by shifting to less-traceable
198−technologies such as the InterPlanetary File System (IPFS). The point is
199−not whether or not a salient technology such as deepfakes, 3D-printed
200−firearms, deviant scientific or political thought[^15], or even the
201−DRM-free sharing of copyrighted material can be contained[^16]; the
202−experience with export-grade cryptography[^17] has already shown that
203−regulatory attempts ultimately fail. The philosophical question is what
204−kind of world will evolve (a *fait accompli* driven by factors beyond
205−any individual or office) and the practical question is how any
206−particular group of actors can preserve their own agency, autonomy, and
207−ambit of action.
208−
209−The first decentralized autonomous organization, "The DAO" (Đ)
210−itself[^18], was created in 2016 as a way of distributing ownership and
211−stake in a joint venture capital fund. Đ was a new form of organization
212−in that it was essentially a mathematical entity, a set of smart
213−contracts on the blockchain to which anyone had access. Đ lived up at
214−least to "decentralized" and "autonomous." No money was held centrally,
215−with token-based authentication yielding the right to vote on projects.
216−Having set the criteria for membership and investment, Đ then operated
217−in truly democratic fashion until an exploit of imperfectly written
218−smart contract code led to theft, crisis, and the reorganization of the
219−Ethereum blockchain itself.
220−
221−While the heirs of Đ serve a role in the current Internet immune system,
222−the original was formed in response to exogenous regulatory concerns,
223−notably ongoing governmental insistence on restricting investment to the
224−already-wealthy. The U.S. Securities and Exchange Commission and other
225−agencies have in place arbitrary investor requirements which would make
226−little sense even if pegged to something like inflation or index rather
227−than the rapidly-devaluing petrodollar. Nominally put in place to
228−protect the naïve from getting scammed, these restrictions have had the
229−pernicious effect of pulling up the ladder behind the *actuel riche*.
230−
231−DAOs have rapidly evolved as a way of distributing ownership and stake
232−in a purely democratic way. (As an aside, the word "democracy" has been
233−much abused, but here I use it in a sense much like the Greek original:
234−the holders of an immutable and indelible token cast their secured votes
235−to govern their society.) DAOs represent a resurgence of the sovereign
236−city-state in new guise. Will this be enough to evade "imperial"
237−aggregates which dominate today's Web?
238−
239−Decentralized autonomous organizations, zero-knowledge cryptographic
240−proofs, cryptocurrencies, proof-of-identity systems, and their
241−as-yet-unborn kin represent the evolution of an immune system on top of
242−the Darwinian churn of the legacy Internet. The stakes are necessarily
243−high: possession is *de facto* ownership, the other end of the stick
244−from "not your keys, not your coins" (the old cryptocurrency chestnut).
245−The focus is currently on ownership of money, non-fungible tokens, and
246−similar assets, but broadly speaking such systems allow the
247−authenticated ownership of all data and assets one holds, from chat
248−messages to market shares to physical real estate. There may be good
249−reasons to retain the legacy system for some classes of physical or
250−legal artifacts, but at minimum these will be in competition with purely
251−autonomous constructs. (As an aside, I am of the philosophical opinion
252−that legal recognition should not be sought generally for new forms of
253−organization, as any legibility to legacy systems opens new attack
254−surfaces in an immunological sense.) "Code is law."[^19]
255−
256−A decentralized autonomous organization seems to be at least the first
257−two: having set the criteria for membership, the organization can act as
258−the (distributed[^20], possibly unknown in the zero-knowledge proof
259−sense) stakeholders direct. This form is still somewhat "yeasty" in that
260−like cyanobacteria it acts as an undifferentiated mass, and we should
261−expect further innovations in DAO-like entities.[^21] The most salient
262−epithet of a DAO is "decentralized"; one can imagine hierarchical,
263−concentric, or role-specialized DAOs as well as other taxonomically
264−related forms, just as one can imagine progressively less organized
265−instances in a chaos-happy Internet.
266−
267−Like the first mutant with a new gene, Đ itself failed. Many lessons can
268−be drawn from that failure, including the criticality of getting smart
269−contract code absolutely correct ("code is law"), and how to administer
270−a blockchain in the presence of massive fraud. And indeed, what has
271−happened to the blockchain world of decentralized finance? Millisecond
272−differentials in responsiveness lead to huge swings in profitability of
273−transactions. Frontrunner bots watch algorithmically for transactions
274−they can complete faster than the original source, thereby making money
275−on asymmetric knowledge.[^22] Zero-day exploits of code abound,
276−heralding a need for more thorough vetting and more expressive and
277−secure smart contract languages.
278−
279−Blockchains (and thus DAOs via Ethereum) operate as proof-of-work,
280−proof-of-stake, etc. This provides node operators with a way of
281−verifying consensus reality and thereby cementing a record of digital
282−transactions. Future innovations hold forth the possibility of secure
283−proof-of-identity blockchains (such as the Uqbar Layer 1 smart contract
284−blockchain on Urbit[^23]), wherein each node which can provide concrete
285−cryptographic evidence of its identity gets a vote on the consensus.
286−
287−We must consider modern systems to necessarily interact at the pinnacle
288−intensity of competence and competition: any differential advantage that
289−can be exploited to outcompete an adversary not only can be exploited
290−but *should* be. Illegibility, redundancy, and apposite complexity are
291−allies in the immune fight to maintain identity and ownership in the
292−modern Internet.[^24] Any system which does not have an operational
293−DAO-like layer is immuno­compromised. All tools for the individual and
294−collective need to be architected around a zero-trust adversarial world.
295−They also need to guard the embers of community and enable new growth.
296−
297−In a nutshell, the early Internet was a cocktail party. By the age of
298−Usenet and into the World Wide Web era, the Internet evolved into a
299−player-versus-player defect--defect equilibrium in which brigading,
300−spamming, and anonymity are rational adaptive behaviors. Indeed,
301−anonymity is barely a protection given the lengths to which governments
302−and megacorps go to prevent truly untraceable usage. This approach is
303−adaptive for agencies which have given up on any other model of reality,
304−fundamentally lacking a vision of humans as other than atomized
305−individual krill for the megacorp apex predators: consumers for the
306−consumers. The legacy megacorp Internet has become a crab bucket, always
307−drawing everything back into itself in a dysfunctional and frankly
308−satanic way.
309−
310−Communities built on decentralized Web3 platforms such as Mastodon,
311−Fediverse, and Urbit[^25] have stepped back from the purely PvP world of
312−the globally-namespaced social media Internet. These today have more of
313−a block party feel, wherein one can wander from house to house or room
314−to room and encounter some of the same faces in the same or new guise.
315−Conversations can drop and resume anew in very different locales with
316−largely the same composition. Marrying the underlying cryptographic
317−identity requirements of DAOs to communication tools and databases
318−yields a strong stable solution to the problem of retaining a foothold
319−of personal identity from which to coordinate one's multifaceted digital
320−life. IPFS, Sovrin Foundation, Tim Berners-Lee's Solid, and Urbit all
321−offer their take on this requirement. Even a Signal chat group running
322−its own server is a kind of token-free DAO.
323−
324−Since the Renaissance, essentially all theology has been humanist in
325−nature, concerning itself with how man should live to flourish in this
326−world and inherit in the next. Even secularized descendants enjoin an
327−ethos of ritual behaviors and practices. The social and cultural "stack"
328−(in software parlance) upon which we build provides for a variety, broad
329−or narrow, of human cultural forms. Lately, the variety of forms has
330−been diminishing both by cutting off older forms from the modern world
331−and by cultivating only certain state-legible apex predators[^26] and
332−their preferred ovine repast.
333−
334−Contra this monoculture, the *telos* of social computing is to recreate
335−the village green, not the penitentiary. Revisiting a thesis from above:
336−"All tools for the individual and collective need to be architected
337−around *using cryptographic proofs to create stable high-trust havens in
338−an otherwise* zero-trust adversarial world." The village is a stable,
339−long-term tribe well below Dunbar's limit which shares values and assets
340−in common, from which a member occasionally ventures out into the
341−broader social web but always has a home. Every village will grow its
342−own culture, perhaps even its own *cultus*, enabled by decentralized
343−technologies to protect their assets and precious peculiarities. The
344−World Wide Web has been an extinction-level event for many forms of
345−life, livelihood, and culture. For others, it has offered strange forms
346−of life support and even thriving. With a new immune system evolved and
347−now operational, human endeavor stands on the cusp of a Cambrian
348−explosion, unconstrainable by a rent-seeking boardroom-and-bureaucracy
349−world that never comprehended the light shining in its darkness.
350−
351−[^1]: Kaufman, Jim. (2010) ["Evolution and
352− immunity"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2913256/).
353− *Immunology 130*, iss. 4, pp. 459--462.
354−
355−[^2]: President Eisenhower's original coinage was likely "the
356− military-industrial-academic complex."
357−
358−[^3]: E.g., Richard Bellman of the RAND Corporation on the origin of
359− "dynamic programming," a mathematical discipline: in dealing with a
360− recalcitrant secretary of defense who hated the word "research,"
361− Bellman instead chose the word "dynamic" arbitrarily because "it's
362− impossible to use the word 'dynamic' in a pejorative sense. ...It
363− was something not even a Congressman could object to. So I used it
364− as an umbrella for my activities." (Bellman, Richard. (1984) [*Eye
365− of the
366− Hurricane*](https://books.google.ch/books?id=4FwGCwAAQBAJ&lpg=PA159&dq=#v=onepage&q=).)
367−
368−[^4]: The nuclear triad doctrine, joining the Air Force's Strategic Air
369− Command bombers, the Navy's nuclear submarines, and the Army's ICBMs
370− and other assorted nuclear warheads, was based less on strategic
371− considerations than on appeasing constituent departments of the
372− military. Strategists developed a formal justification decades later
373− in a magnificent demonstration of motivated reasoning. (Woolf, Amy.
374− (2016) "U.S. Strategic Nuclear Forces: Background, Developments, and
375− Issues". [CRS
376− 7-5700](https://digital.library.unt.edu/ark:/67531/metadc847627/m2/1/high_res_d/RL33640_2016Mar10.pdf).)
377−
378−[^5]: The Air Force early commissioned the RAND Corporation on contract
379− with Douglas Aircraft Company as the first "think tank"; RAND soon
380− upended the traditional role of passive reception of studies by
381− making its own recommendations and showing their analytical chops.
382− Other service branches followed suit, such as the U.S. Navy's Center
383− for Naval Analyses and the Battelle Memorial Institute for various
384− federal contracting agencies; compare also the role of the national
385− laboratory system, e.g. Los Alamos, Sandia, Livermore, etc. for the
386− Department of Energy and Department of Defense. (Rich, Michael.
387− (2003) "RAND: How Think Tanks Interact with the Military".
388− [RP-1050](https://www.rand.org/pubs/reprints/RP1050.html).)
389−
390−[^6]: "On January 18, 1994, the first large-scale deliberate USENET spam
391− occurred. A message with the subject "Global Alert for All: Jesus is
392− Coming Soon" was cross-posted to every available newsgroup."
393− ([Wikipedia, "History of email
394− spam"](https://en.wikipedia.org/wiki/History_of_email_spam))
395−
396−[^7]: The first instance which seems to have brough this to general
397− public awareness was the submission of Judge Robert Bork's video
398− rental history as evidence in his Supreme Court hearings before the
399− U.S. Senate. The resulting Video Privacy Protection Act was
400− delightfully naïve. Besides relying on "video rental" narrowly
401− construed, users have effectively no leverage against
402− unilaterally-imposed terms of service and end-user license
403− agreements. (See, e.g., [Electronic Privacy Information Center,
404− "Video Privacy Protection
405− Act"](https://archive.epic.org/privacy/vppa/).)
406−
407−[^8]: E.g. Tumblr and OnlyFans and adult content; Twitter and right-wing
408− content; Youtube and Facebook and unsanctioned medical content, etc.
409− Note that this is regardless of the viability of a given view or the
410− necessity of vigorous debate within a field, but focuses on the
411− palatibility of politics to the megacorp entity providing the
412− platform, even if the content drives platform usage.
413−
414−[^9]: Hughes, Eric. (1993) [*A Cypherpunk's
415− Manifesto*](https://nakamotoinstitute.org/cypherpunk-manifesto/).
416−
417−[^10]: The mass shift to remote work from March 2020 onwards due to the
418− COVID-19 pandemic has accelerated the trend of corporate
419− colonization of private spaces. At first, this was occasionally
420− humorous, as when a child ran into the background of a Zoom call, or
421− underwear or private materials were inadvertently left in view of
422− the remote audience. In the end, it demanded that individuals
423− reconfigure their homes to accommodate mass corporate preferences,
424− thus another invasion of private space by the megacorp panopticon.\
425− I note as well an invasive doctrine demanding "truth in
426− communication" under names like ["radical
427− transparency"](https://www.bridgewater.com/principles-and-culture)
428− and ["radical
429− candor"](https://third-bit.com/2018/11/24/afraid-of-change/) put
430− forward by partisans of power over against vulnerable employees,
431− clients, and customers, who may be disproportionately affected by a
432− megacorp demand for one-sided transparency.
433−
434−[^11]: Several have pointed to the failure of Craig S. Wright to
435− demonstrate cryptographically that he is Satoshi Nakamoto, the
436− pseudonymous inventor of Bitcoin. (C.f. Khaosan, Venzen. (2016)
437− ["Craig Wright is Not Satoshi Nakamoto---The Technical
438− Proof"](https://www.ccn.com/technical-proof-craig-wright-not-satoshi-nakamoto/).)
439−
440−[^12]: Davidson, Dale, and Rees-Mogg, William. (1999) *The Sovereign
441− Individual: Mastering the Transition to the Information Age*.
442−
443−[^13]: Raymond, Eric. (1999) [*The Cathedral and the
444− Bazaar*](http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html).
445−
446−[^14]: The [Coalition for Content Provenance and
447− Authenticity](https://c2pa.org/) "addresses the prevalence of
448− misleading information online through the development of technical
449− standards for certifying the source and history (or provenance) of
450− media content."
451−
452−[^15]: Cf. Walker, Shawn, et al. (2019) ["The disinformation landscape
453− and the lockdown of social
454− platforms."](https://www.tandfonline.com/doi/full/10.1080/1369118X.2019.1648536)
455− *Information, Communication & Society 22*, pp. 1531--43. Walker et
456− al. lament that "highly ephemeral mis/disinformation campaigns" are
457− not susceptible of study due to closed platform APIs. "Social media
458− platforms \[attempt\] to rekindle trust by appearing to reinforce
459− individual privacy within a newly secured user community, a set of
460− measures that also locked academic and non-profit researchers out
461− from studying social platforms while preserving corporate and
462− business access to social media users' data." They fail to address
463− the tension between community self-determination and academic
464− exploitation.
465−
466−[^16]: "If in fact you can't crack \[the encryption\] at all, government
467− can't get in, then everybody is walking around with a Swiss bank
468− account in their pocket -- right? So there has to be some concession
469− to the need to be able to get into that information somehow."
470− ([Barack Obama in March 2016 at
471− SXSW](https://www.businessinsider.com/obama-comments-on-encryption-at-sxsw-2016-3))
472−
473−[^17]: Heninger, Nadia. (2016) ["The Legacy of Export-Grade Cryptography
474− in the 21^st^
475− Century"](https://publish.illinois.edu/science-of-security-lablet/files/2016/08/10062016-Heninger-Slides.pdf).
476−
477−[^18]: Chohan, Usman. (2017) ["The Decentralized Autonomous Organization
478− and Governance
479− Issues"](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3082055).
480− Discussion Paper Series: *Notes on the 21^st^ Century*.
481−
482−[^19]: Lessig, Lawrence. (1999) *Code and Other Laws of Cyberspace*.
483−
484−[^20]: Hobart, Byrne \~lableg-tadrex. (Nov 17, 2021) ["The Promise and
485− Paradox of
486− Decentralization"](https://urbit.org/blog/2021-11-18-the-promise-and-paradox-of-decentralization).
487− *The Diff*.
488−
489−[^21]: See, e.g., the Governor Alpha smart contract protocols. Solari,
490− R. (2021) ["The case for Governor
491− Alpha".](https://medium.com/tally-blog/the-case-for-governor-alpha-15c1362d49eb)
492−
493−[^22]: Robinson, D. (2020) ["Ethereum is a dark
494− forest"](https://www.paradigm.xyz/2020/08/ethereum-is-a-dark-forest).
495− Paradigm blog.
496−
497−[^23]: [Uqbar Network](https://uqbar.network/); ["Introducing Uqbar
498− Network"](https://uqbarnetwork.substack.com/p/introducing-uqbar-network);
499− \~hocwyn-tipwex/uqbar-event-horizon (Urbit group)
500−
501−[^24]: This is not to deny the benefits of system-legibility, in
502− particular legal protections. As common law develops around DAOs, I
503− hope for similar affordances where they must interact with the
504− legacy legal system.
505−
506−[^25]: Originally this list included Discord, as there has been
507− substantial growth in stable goal-oriented communities thereon.
508− However, more recently the company [adopted a user
509− policy](https://discord.com/blog/addressing-harmful-off-platform-behavior)
510− which subjects use of their product to judgment calls about
511− "off-platform behavior"---a clear violation of a cypherpunk ethos
512− which Discord likely never espoused anyway.
513−
514−[^26]: E.g., Auerbach, David. (Mar 3, 2022) ["The metaverse will steal
515− your
516− identity"](https://unherd.com/2022/03/the-metaverse-will-steal-your-identity/).
517− *UnHerd*. Auerbach correctly recognizes and decries the looming
518− "monetisation of identity" which will allow any platform controller
519− to incentivize prosocial or antisocial behaviors at will.
37+When was the first time you did something in the physical world because of something you read or encountered online? For generations born after the advent of the Web, they may not recall such a time when meatspace existence wasn't driven by life online. As Internet data sources have overwhelmed traditional media, publishing, and distribution services, the resulting tsunami of information and informatization has swept into every corner of lived human experience in technological societies. The psychological (memetic) virus problem is much greater than actual code viruses. The ongoing universal exposure to alien and internally incoherent value systems has undergirded the well-documented crisis of credibility (collapse of meaning) that all Western institutions are experiencing today. The World Wide Web and its technological predecessors acted as a cultural petri dish of clean agar, which grew every spore and germ which fell upon it. We live in the midst of a memetic epidemic because of the World Wide Web, and the dominant strain is corporate, approved by a marketing department and run through a search-engine optimization algorithm.
38+
39+The turn towards a low-trust then zero-trust environment was inevitable if anything like an analogy with prokaryotic evolution holds true. The megacorp platforms are in a way worse than a purely zero-trust environment, because they don't advertise that the world is zero-trust. Thereby they lure the unwary into transgressing arbitrary global norms and courting the wrath of social media mobs and the concomitant loss of access to their data held in "trust." To mix a metaphor, megacorps are apex predators---at best, sheepdogs with a strong strain of wolfishness; at worst, tar pits manned by various bad-faith actors. The pre-Web cypherpunks were right: "Privacy is the power to selectively reveal oneself to the world."[^9]
40+
41+If anything, they were too narrow; not only their valued "open society" (polyvalent crypto-anarchy) but _any_ non-megacorp society at all requires true privacy.
42+
43+What cyberspace (and human culture writ broadly) needed was an immune system---and in good Darwinian form, such an immune system has been evolving before our eyes. An immune system formally consists of layers with increasing specificity: first surface barriers, then the innate immune system, and finally the adaptive immune system. The objective of the immune system is to protect the organism: in this case, human sociality and agency.
44+
45+First, what is human sociality? Human culture has been the means of participating in the Great Discussion which ranges from the earliest days of oral culture to the birth of literacy and libraries down to our day. High culture and low culture have both articulated and preserved valuable insights and forms of human flourishing. However, throughout the 20^th^ century and particularly by the means of the consumer revolution, our lives have been thoroughly colonized by capital and commercial instruments. So-called "economies of scale" have disrupted smallholders, artisans, and shopkeepers to the extent that these have been virtually eradicated from the modern landscape in favor of the plastic and polluting "dark Satanic mills." Although small-scale "provident living" has supported gardening, canning, and home production, none of this has survived across a large enough cultural segment to matter macroscopically, and it has unfortunately been tarred with the "prepper" brush that delegitimizes economic downsizing as antisocial because anticapitalist. The siren call of cheap consumer goods has ushered in a generational collapse in self-sufficiency and resulted in the complete colonization of entertainment, food consumption, and self-care by massive corporate brands. Not only have physical goods entered a post-consumer phase, but only certain classes of ideas, attitudes, political stances, regional accents, and sensibilities enjoy the sanction of megacorp sociality. There is essentially no native culture left, only that forged in the enterprise brand management office.[^10]
46+
47+In an immune system, _surface barriers_ are designed to make it hard for exogenous agents to enter a cell or organism; in our analogy, the primary surface barrier was the match of physical separation to psychological separation. Surface barriers were rendered finally obsolete by the launch of the World Wide Web and its subsequent infiltration of every aspect of human culture. To the extent they exist today, it is a matter of ignorance, self-discipline, or happy accident.
48+
49+The _innate immune system_ responds non-specifically to pathogens. Any immune system must have a way of deciding what is _me_ and what is _not-me_. Framed as an identity problem in a zero-trust environment, users have evolved several ways to uniquely identify agents without reference to legacy systems. Chief among these means is the blockchain, introduced by Bitcoin for control and transaction of digital assets and since much exploited beyond its design intent. Ethereum-based ERC tokens represent tweaks of this identity concept, as do many other blockchain platforms.
50+
51+Identity is still fluid and polysemous, but in certain key instances it is indelibly demonstrable.[^11]
52+
53+The individual actor has the capability to express itself with many public faces or none; one of these typically enjoys government sanction and liability, but it is no more _real_ than the others, only more legible to regulation and taxation.[^12]
54+
55+Another aspect of the innate immune system is the public visibility of code. Open source has developed an ethic of transparency on epistemological grounds (i.e. you have a right to know what code you are running) and practical grounds. (Linus's law: "given enough eyeballs, all bugs are shallow."[^13])
56+
57+The _adaptive immune system_ responds to specific pathogenic incursions. Particular conditions arise, whether through social, regulatory, military, or other requirements, which must be met with specialized forms that are thereafter in evolutionary competition with the external factor. For instance, one megacorp solution to what it perceives as a threat, i.e. unsanctioned memes, is to attempt to mandate the ultimate traceability of any image's provenance.[^14]
58+
59+The Internet immune system thus evolves to further obfuscate legibility and enhance individual control and self-determination by shifting to less-traceable technologies such as the InterPlanetary File System (IPFS). The point is not whether or not a salient technology such as deepfakes, 3D-printed firearms, deviant scientific or political thought, or even the DRM-free sharing of copyrighted material can be contained.
60+
61+The experience with export-grade cryptography has already shown that regulatory attempts ultimately fail.[^17]
62+
63+The philosophical question is what kind of world will evolve (a _fait accompli_ driven by factors beyond any individual or office) and the practical question is how any particular group of actors can preserve their own agency, autonomy, and ambit of action.
64+
65+The first decentralized autonomous organization, "The DAO" (Đ) itself[^18], was created in 2016 as a way of distributing ownership and stake in a joint venture capital fund. Đ was a new form of organization in that it was essentially a mathematical entity, a set of smart contracts on the blockchain to which anyone had access. Đ lived up at least to "decentralized" and "autonomous." No money was held centrally, with token-based authentication yielding the right to vote on projects. Having set the criteria for membership and investment, Đ then operated in truly democratic fashion until an exploit of imperfectly written smart contract code led to theft, crisis, and the reorganization of the Ethereum blockchain itself.
66+
67+While the heirs of Đ serve a role in the current Internet immune system, the original was formed in response to exogenous regulatory concerns, notably ongoing governmental insistence on restricting investment to the already-wealthy. The U.S. Securities and Exchange Commission and other agencies have in place arbitrary investor requirements which would make little sense even if pegged to something like inflation or index rather than the rapidly-devaluing petrodollar. Nominally put in place to protect the naïve from getting scammed, these restrictions have had the pernicious effect of pulling up the ladder behind the _actuel riche_.
68+
69+DAOs have rapidly evolved as a way of distributing ownership and stake in a purely democratic way. (As an aside, the word "democracy" has been much abused, but here I use it in a sense much like the Greek original: the holders of an immutable and indelible token cast their secured votes to govern their society.) DAOs represent a resurgence of the sovereign city-state in new guise. Will this be enough to evade "imperial" aggregates which dominate today's Web?
70+
71+Decentralized autonomous organizations, zero-knowledge cryptographic proofs, cryptocurrencies, proof-of-identity systems, and their as-yet-unborn kin represent the evolution of an immune system on top of the Darwinian churn of the legacy Internet. The stakes are necessarily high: possession is _de facto_ ownership, the other end of the stick from "not your keys, not your coins" (the old cryptocurrency chestnut). The focus is currently on ownership of money, non-fungible tokens, and similar assets, but broadly speaking such systems allow the authenticated ownership of all data and assets one holds, from chat messages to market shares to physical real estate. There may be good reasons to retain the legacy system for some classes of physical or legal artifacts, but at minimum these will be in competition with purely autonomous constructs. (As an aside, I am of the philosophical opinion that legal recognition should not be sought generally for new forms of organization, as any legibility to legacy systems opens new attack surfaces in an immunological sense.) "Code is law."[^19]
72+
73+A decentralized autonomous organization seems to be at least the first two. Having set the criteria for membership, the organization can act as the (distributed, possibly unknown in the zero-knowledge proof sense) stakeholders direct.
74+
75+This form is still somewhat "yeasty" in that like cyanobacteria it acts as an undifferentiated mass. We should expect further innovations in DAO-like entities.[^21] The most salient epithet of a DAO is "decentralized"; one can imagine hierarchical, concentric, or role-specialized DAOs as well as other taxonomically related forms, just as one can imagine progressively less organized instances in a chaos-happy Internet.
76+
77+Like the first mutant with a new gene, Đ itself failed. Many lessons can be drawn from that failure, including the criticality of getting smart contract code absolutely correct ("code is law"), and how to administer a blockchain in the presence of massive fraud. And indeed, what has happened to the blockchain world of decentralized finance? Millisecond differentials in responsiveness lead to huge swings in profitability of transactions. Frontrunner bots watch algorithmically for transactions they can complete faster than the original source, thereby making money on asymmetric knowledge.[^22] Zero-day exploits of code abound, heralding a need for more thorough vetting and more expressive and secure smart contract languages.
78+
79+Blockchains (and thus DAOs via Ethereum) operate as proof-of-work, proof-of-stake, etc. This provides node operators with a way of verifying consensus reality and thereby cementing a record of digital transactions. Future innovations hold forth the possibility of secure proof-of-identity blockchains (such as the Uqbar Layer 1 smart contract blockchain on Urbit[^23]), wherein each node which can provide concrete cryptographic evidence of its identity gets a vote on the consensus.
80+
81+We must consider modern systems to necessarily interact at the pinnacle intensity of competence and competition: any differential advantage that can be exploited to outcompete an adversary not only can be exploited but _should_ be. Illegibility, redundancy, and apposite complexity are allies in the immune fight to maintain identity and ownership in the modern Internet.[^24] Any system which does not have an operational DAO-like layer is immuno­compromised. All tools for the individual and collective need to be architected around a zero-trust adversarial world. They also need to guard the embers of community and enable new growth.
82+
83+In a nutshell, the early Internet was a cocktail party. By the age of Usenet and into the World Wide Web era, the Internet evolved into a player-versus-player defect--defect equilibrium in which brigading, spamming, and anonymity are rational adaptive behaviors. Indeed, anonymity is barely a protection given the lengths to which governments and megacorps go to prevent truly untraceable usage. This approach is adaptive for agencies which have given up on any other model of reality, fundamentally lacking a vision of humans as other than atomized individual krill for the megacorp apex predators: consumers for the consumers. The legacy megacorp Internet has become a crab bucket, always drawing everything back into itself in a dysfunctional and frankly satanic way.
84+
85+Communities built on decentralized Web3 platforms such as Mastodon, Fediverse, and Urbit[^25] have stepped back from the purely PvP world of the globally-namespaced social media Internet. These today have more of a block party feel, wherein one can wander from house to house or room to room and encounter some of the same faces in the same or new guise. Conversations can drop and resume anew in very different locales with largely the same composition. Marrying the underlying cryptographic identity requirements of DAOs to communication tools and databases yields a strong stable solution to the problem of retaining a foothold of personal identity from which to coordinate one's multifaceted digital life. IPFS, Sovrin Foundation, Tim Berners-Lee's Solid, and Urbit all offer their take on this requirement. Even a Signal chat group running its own server is a kind of token-free DAO.
86+
87+Since the Renaissance, essentially all theology has been humanist in nature, concerning itself with how man should live to flourish in this world and inherit in the next. Even secularized descendants enjoin an ethos of ritual behaviors and practices. The social and cultural "stack" (in software parlance) upon which we build provides for a variety, broad or narrow, of human cultural forms. Lately, the variety of forms has been diminishing both by cutting off older forms from the modern world and by cultivating only certain state-legible apex predators[^26] and their preferred ovine repast.
88+
89+Contra this monoculture, the _telos_ of social computing is to recreate the village green, not the penitentiary. Revisiting a thesis from above: "All tools for the individual and collective need to be architected around _using cryptographic proofs to create stable high-trust havens in an otherwise_ zero-trust adversarial world." The village is a stable, long-term tribe well below Dunbar's limit which shares values and assets in common, from which a member occasionally ventures out into the broader social web but always has a home. Every village will grow its own culture, perhaps even its own _cultus_, enabled by decentralized technologies to protect their assets and precious peculiarities. The World Wide Web has been an extinction-level event for many forms of life, livelihood, and culture. For others, it has offered strange forms of life support and even thriving. With a new immune system evolved and now operational, human endeavor stands on the cusp of a Cambrian explosion, unconstrainable by a rent-seeking boardroom-and-bureaucracy world that never comprehended the light shining in its darkness.
52090
52191_The header image is [Volvox sp. microscopic algae](https://www.flickr.com/photos/picksfromoutthere/35891780782/in/photolist-WFCKYA-XPdGLq-2k9Cew6-ViCgrB-23QUBQR-21rF362-CCSE2n-23AwZ7m-CbKedu-gznqa-2dHUv3k-EE8eoq-gznq9-i5zqqk-WYSwcf-XWVgQk-WabAAG-gLjRj-gDcLp-4VvECm-259cDCS-i5zqRk-25cV246-i5yNvM-gupiMJ-PXLbhr-LUACZ7-ihvxSH-ihvvVg-ihwjbF-ihvxDX-i5yQDd-ihzQwK-fWwpxb-rarKrm-8LWTQf-qVar5j-ihzAPA-JNrgyK-ihzBrC-ca6Ex9-2kCTSrj-ihz67k-qfJsYd-248ePDL-ihztbm-ihzuyS-LQYZQq-2kCTRxL-ihvWPA) by Picturepest on Flickr._
92+
93+[^1]: Kaufman, Jim. (2010) ["Evolution and immunity"](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2913256/). _Immunology 130_, iss. 4, pp. 459--462.
94+[^2]: President Eisenhower's original coinage was likely "the military-industrial-academic complex."
95+[^3]: E.g., Richard Bellman of the RAND Corporation on the origin of "dynamic programming," a mathematical discipline: in dealing with a recalcitrant secretary of defense who hated the word "research," Bellman instead chose the word "dynamic" arbitrarily because "it's impossible to use the word 'dynamic' in a pejorative sense. ...It was something not even a Congressman could object to. So I used it as an umbrella for my activities." (Bellman, Richard. (1984) [_Eye of the Hurricane_](https://books.google.ch/books?id=4FwGCwAAQBAJ&lpg=PA159&dq=#v=onepage&q=).)
96+[^4]: The nuclear triad doctrine, joining the Air Force's Strategic Air Command bombers, the Navy's nuclear submarines, and the Army's ICBMs and other assorted nuclear warheads, was based less on strategic considerations than on appeasing constituent departments of the military. Strategists developed a formal justification decades later in a magnificent demonstration of motivated reasoning. (Woolf, Amy. (2016) "U.S. Strategic Nuclear Forces: Background, Developments, and Issues". [CRS 7-5700](https://digital.library.unt.edu/ark:/67531/metadc847627/m2/1/high_res_d/RL33640_2016Mar10.pdf).)
97+[^5]: The Air Force early commissioned the RAND Corporation on contract with Douglas Aircraft Company as the first "think tank"; RAND soon upended the traditional role of passive reception of studies by making its own recommendations and showing their analytical chops. Other service branches followed suit, such as the U.S. Navy's Center for Naval Analyses and the Battelle Memorial Institute for various federal contracting agencies; compare also the role of the national laboratory system, e.g. Los Alamos, Sandia, Livermore, etc. for the Department of Energy and Department of Defense. (Rich, Michael. (2003) "RAND: How Think Tanks Interact with the Military". [RP-1050](https://www.rand.org/pubs/reprints/RP1050.html).)
98+[^6]: "On January 18, 1994, the first large-scale deliberate USENET spam occurred. A message with the subject "Global Alert for All: Jesus is Coming Soon" was cross-posted to every available newsgroup." ([Wikipedia, "History of email spam"](https://en.wikipedia.org/wiki/History_of_email_spam))
99+[^7]: The first instance which seems to have brough this to general public awareness was the submission of Judge Robert Bork's video rental history as evidence in his Supreme Court hearings before the U.S. Senate. The resulting Video Privacy Protection Act was delightfully naïve. Besides relying on "video rental" narrowly construed, users have effectively no leverage against unilaterally-imposed terms of service and end-user license agreements. (See, e.g., [Electronic Privacy Information Center, "Video Privacy Protection Act"](https://archive.epic.org/privacy/vppa/).)
100+[^8]: E.g. Tumblr and OnlyFans and adult content; Twitter and right-wing content; Youtube and Facebook and unsanctioned medical content, etc. Note that this is regardless of the viability of a given view or the necessity of vigorous debate within a field, but focuses on the palatibility of politics to the megacorp entity providing the platform, even if the content drives platform usage.
101+[^9]: Hughes, Eric. (1993) [_A Cypherpunk's Manifesto_](https://nakamotoinstitute.org/cypherpunk-manifesto/).
102+[^10]: The mass shift to remote work from March 2020 onwards due to the COVID-19 pandemic has accelerated the trend of corporate colonization of private spaces. At first, this was occasionally humorous, as when a child ran into the background of a Zoom call, or underwear or private materials were inadvertently left in view of the remote audience. In the end, it demanded that individuals reconfigure their homes to accommodate mass corporate preferences, thus another invasion of private space by the megacorp panopticon. I note as well an invasive doctrine demanding "truth in communication" under names like ["radical transparency"](https://www.bridgewater.com/principles-and-culture) and ["radical candor"](https://third-bit.com/2018/11/24/afraid-of-change/) put forward by partisans of power over against vulnerable employees, clients, and customers, who may be disproportionately affected by a megacorp demand for one-sided transparency.
103+[^11]: Several have pointed to the failure of Craig S. Wright to demonstrate cryptographically that he is Satoshi Nakamoto, the pseudonymous inventor of Bitcoin. (C.f. Khaosan, Venzen. (2016) ["Craig Wright is Not Satoshi Nakamoto---The Technical Proof"](https://www.ccn.com/technical-proof-craig-wright-not-satoshi-nakamoto/).)
104+[^12]: Davidson, Dale, and Rees-Mogg, William. (1999) _The Sovereign Individual: Mastering the Transition to the Information Age_.
105+[^13]: Raymond, Eric. (1999) [_The Cathedral and the Bazaar_](http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s04.html).
106+[^14]: The [Coalition for Content Provenance and Authenticity](https://c2pa.org/) "addresses the prevalence of misleading information online through the development of technical standards for certifying the source and history (or provenance) of media content."
107+[^15]: Cf. Walker, Shawn, et al. (2019) ["The disinformation landscape and the lockdown of social platforms."](https://www.tandfonline.com/doi/full/10.1080/1369118X.2019.1648536) _Information, Communication & Society 22_, pp. 1531--43. Walker et al. lament that "highly ephemeral mis/disinformation campaigns" are not susceptible of study due to closed platform APIs. "Social media platforms \[attempt\] to rekindle trust by appearing to reinforce individual privacy within a newly secured user community, a set of measures that also locked academic and non-profit researchers out from studying social platforms while preserving corporate and business access to social media users' data." They fail to address the tension between community self-determination and academic exploitation.
108+[^16]: "If in fact you can't crack \[the encryption\] at all, government can't get in, then everybody is walking around with a Swiss bank account in their pocket -- right? So there has to be some concession to the need to be able to get into that information somehow." ([Barack Obama in March 2016 at SXSW](https://www.businessinsider.com/obama-comments-on-encryption-at-sxsw-2016-3))
109+[^17]: Heninger, Nadia. (2016) ["The Legacy of Export-Grade Cryptography in the 21^st^ Century"](https://publish.illinois.edu/science-of-security-lablet/files/2016/08/10062016-Heninger-Slides.pdf).
110+[^18]: Chohan, Usman. (2017) ["The Decentralized Autonomous Organization and Governance Issues"](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3082055). Discussion Paper Series: _Notes on the 21^st^ Century_.
111+[^19]: Lessig, Lawrence. (1999) _Code and Other Laws of Cyberspace_.
112+[^20]: Hobart, Byrne `~lableg-tadrex`. (Nov 17, 2021) ["The Promise and Paradox of Decentralization"](https://urbit.org/blog/2021-11-18-the-promise-and-paradox-of-decentralization). _The Diff_.
113+[^21]: See, e.g., the Governor Alpha smart contract protocols. Solari, R. (2021) ["The case for Governor Alpha".](https://medium.com/tally-blog/the-case-for-governor-alpha-15c1362d49eb)
114+[^22]: Robinson, D. (2020) ["Ethereum is a dark forest"](https://www.paradigm.xyz/2020/08/ethereum-is-a-dark-forest). Paradigm blog.
115+[^23]: [Uqbar Network](https://uqbar.network/); ["Introducing Uqbar Network"](https://uqbarnetwork.substack.com/p/introducing-uqbar-network); \~hocwyn-tipwex/uqbar-event-horizon (Urbit group)
116+[^24]: This is not to deny the benefits of system-legibility, in particular legal protections. As common law develops around DAOs, I hope for similar affordances where they must interact with the legacy legal system.
117+[^25]: Originally this list included Discord, as there has been substantial growth in stable goal-oriented communities thereon. However, more recently the company [adopted a user policy](https://discord.com/blog/addressing-harmful-off-platform-behavior) which subjects use of their product to judgment calls about "off-platform behavior"---a clear violation of a cypherpunk ethos which Discord likely never espoused anyway.
118+[^26]: E.g., Auerbach, David. (Mar 3, 2022) ["The metaverse will steal your identity"](https://unherd.com/2022/03/the-metaverse-will-steal-your-identity/). _UnHerd_. Auerbach correctly recognizes and decries the looming "monetisation of identity" which will allow any platform controller to incentivize prosocial or antisocial behaviors at will.
content/blog/infrastructural.md+2−8
@@ -9,9 +9,7 @@ ship = "~fabled-faster"
99image = "https://media.urbit.org/site/posts/essays/infrastructural-2.jpg"
1010+++
1111
12−<br>
13−
14−<img class="ba" src="https://media.urbit.org/site/posts/essays/infrastructural-1.jpg">
12+![](https://media.urbit.org/site/posts/essays/infrastructural-1.jpg)
1513
1614## Seasons
1715
@@ -53,11 +51,7 @@ We deeply hope that Urbit can form a support structure for you and your communit
5351
5452These self-evident statements underlie the core problems we sought to address in designing a userspace for OS 1: How do we design an _actually_ personal digital infrastructure? What does infrastructure look like when shared with immediate friends? With a cooperative organization? How can we impress upon Urbit's earliest adopters that once they've obtained an Urbit ID, their computer is at that moment _literally_ entirely theirs?
5553
56−<br>
57−
58−<br>
59−
60−<img class="ba" src="https://media.urbit.org/site/posts/essays/infrastructural-2.jpg">
54+![](https://media.urbit.org/site/posts/essays/infrastructural-2.jpg)
6155
6256## Expressing Infrastructure
6357
content/blog/interplanetary_commerce.md+2−6
@@ -9,12 +9,8 @@ ship = "~pindet-timmut"
99image = "https://media.urbit.org/site/posts/essays/ocean.jpeg"
1010+++
1111
12−<br>
13−
1412![ocean](https://media.urbit.org/site/posts/essays/ocean.jpeg)
1513
16−<br>
17−
1814## Paying
1915
2016A year ago, we started [integrating](https://urbit.org/blog/urbit-and-bitcoin/) Bitcoin into Urbit to be an OS-level primitive for money. Our initial objective: build a payments wallet, equally sovereign and ergonomic. The first public version, releasing this month, will have a broad set of capabilities including ship-to-ship payments, hardware wallet support, and full node integration. We’ll be unveiling this wallet on [April 27th](https://www.meetup.com/urbit-sf/events/276741426/). Do join us.
@@ -25,7 +21,7 @@ Things only accelerate from here. Our next objective, to integrate Lightning Net
2521
2622> And there is all the difference in the world between paying and being paid. The act of paying is perhaps the most uncomfortable infliction that the two orchard thieves entailed upon us. But being paid,—what will compare with it?
2723>
28−> <cite>Herman Melville</cite>
24+> **Herman Melville**
2925
3026However, a good wallet is only half the equation for a holistic P2P commercial experience. Interfaces for selling goods and services is the other half. While we don’t part with our Bitcoin [easily](https://nakamotoinstitute.org/mempool/everyones-a-scammer/), two initial markets appear logical and attractive: content and Urbit-native services.
3127
@@ -37,4 +33,4 @@ The Urbit Foundation is soliciting contributors to this project through Urbit Gr
3733
3834## An Ocean
3935
40−After honing our commercial tools on these use-cases, we’ll sail into a blue ocean. On the horizon: beautiful products, deployable at scale, built with the robust primitives of Urbit OS. Extensibility is Urbit’s promise to middle-men: every Web2.0 service they use to scalp us will find its P2P analog on Urbit. We invite developers and entrepreneurs of all stripes to join in the feeding frenzy. Ideas are constantly nucleating in <a href="web+urbitgraph://group/~pindet-timmut/urbitcoin-cash">Urbitcoiners</a> and <a href="web+urbitgraph://group/~bitbet-bolbel/urbit-community/graph/~darrux-landes/business-building-on-urbit">Urbit Community</a>.
36+After honing our commercial tools on these use-cases, we’ll sail into a blue ocean. On the horizon: beautiful products, deployable at scale, built with the robust primitives of Urbit OS. Extensibility is Urbit’s promise to middle-men: every Web2.0 service they use to scalp us will find its P2P analog on Urbit. We invite developers and entrepreneurs of all stripes to join in the feeding frenzy. Ideas are constantly nucleating in [Urbitcoiners](web+urbitgraph://group/~pindet-timmut/urbitcoin-cash) and [Urbit Community](web+urbitgraph://group/~bitbet-bolbel/urbit-community/graph/~darrux-landes/business-building-on-urbit).
content/blog/introducing-os1.md+7−9
@@ -9,8 +9,6 @@ ship = "~ravmel-ropdyl"
99image = "https://media.urbit.org/site/posts/essays/intro-os1-landscape.png"
1010+++
1111
12−<br>
13−
1412<video class="ba w-100" autoplay loop src="https://media.urbit.org/site/posts/essays/intro-os1.mov"></video>
1513
1614## Introducing OS 1
@@ -39,7 +37,7 @@ Let’s walk through the features of OS 1 one by one to see what it’s like.
3937
4038### Groups
4139
42−<img class="ba" src="https://media.urbit.org/site/posts/essays/intro-os1-groups.png">
40+![](https://media.urbit.org/site/posts/essays/intro-os1-groups.png)
4341
4442The group is the main building block in OS 1. A group is simply a list of people that share a set of chat, links, and publish channels. A group is sort of like a super powerful group chat.
4543
@@ -51,7 +49,7 @@ Let’s walk through each module and talk about what they can do.
5149
5250### Chat
5351
54−<img class="ba" src="https://media.urbit.org/site/posts/essays/intro-os1-chat.png">
52+![](https://media.urbit.org/site/posts/essays/intro-os1-chat.png)
5553
5654Chat is chat: a sequential list of messages meant for synchronous communication. There are already a million ways to chat — but Urbit chat differs in a few important ways.
5755
@@ -69,7 +67,7 @@ Anyway, not everything can happen in a chat. Let’s keep moving.
6967
7068### Links
7169
72−<img class="ba" src="https://media.urbit.org/site/posts/essays/intro-os1-links.png">
70+![](https://media.urbit.org/site/posts/essays/intro-os1-links.png)
7371
7472Links is a bit like Hacker News or Reddit. It’s just a collection of links with comments. There’s no upvoting or sorting. We decided that with a small group it’s more about collecting references than deciding what’s most exciting — but permutations of Links could be a great area for contributors to experiment with.
7573
@@ -79,7 +77,7 @@ We originally imagined links as evolving into more of a general-purpose ‘colle
7977
8078### Publishing
8179
82−<img class="ba" src="https://media.urbit.org/site/posts/essays/intro-os1-publish1.png">
80+![](https://media.urbit.org/site/posts/essays/intro-os1-publish1.png)
8381
8482Publishing is somewhere between a blog and a note-taking system. A Publish notebook is a list of markdown files with optional comments. A private Publish notebook is like a journal, a group notebook can be like a forum (with comments on) or a collaborative blog.
8583
@@ -89,7 +87,7 @@ Publish, like all our other modules, is an interface to a generalized protocol f
8987
9088### Modules
9189
92−<img class="ba" src="https://media.urbit.org/site/posts/essays/intro-os1-home.png">
90+![](https://media.urbit.org/site/posts/essays/intro-os1-home.png)
9391
9492You’ll find a few other things on the home screen: a clock, the weather, and a simple command-line that we call the Dojo. These are system-wide utilities that aren’t group-specific.
9593
@@ -97,7 +95,7 @@ The clock and weather tiles are simple indications of the state of the outside w
9795
9896### Dojo
9997
100−<img class="ba" src="https://media.urbit.org/site/posts/essays/intro-os1-dojo.png">
98+![](https://media.urbit.org/site/posts/essays/intro-os1-dojo.png)
10199
102100The Dojo gives you a quick way to see that, under the hood, Urbit OS is a powerful general-purpose system. The system hasn’t evolved to the point that our libraries, frameworks, and modules are polished to our standards. Since it’s still early, we can’t claim that it’s easy to develop on top of this platform. But we want it to become much easier.
103101
@@ -133,7 +131,7 @@ As we expand the affordances of the system and add modules over the course of OS
133131
134132### Becoming a homesteader
135133
136−<img class="ba" src="https://media.urbit.org/site/posts/essays/intro-os1-landscape.png">
134+![](https://media.urbit.org/site/posts/essays/intro-os1-landscape.png)
137135
138136As a distributed team trying to stay connected, we like using OS 1 from day to day. We’d really like to hand-onboard a small group of like-minded groups of people who want to experiment with living on the fringe of the digital world. Toward this end, we started the community grants program.
139137
content/blog/io-in-hoon.md+12−4
@@ -9,12 +9,8 @@ ship = "~wicdev-wisryt"
99image = "https://media.urbit.org/site/posts/essays/zion-canyon-1.jpg"
1010+++
1111
12−<br>
13−
1412![canyon](https://media.urbit.org/site/posts/essays/zion-canyon-1.jpg)
1513
16−<br>
17−
1814Let's talk about IO in Urbit. I won't say much about how events and effects are processed by the runtime; it suffices to note that the runtime is a normal Unix program which (1) listens for various events, (2) passes them to Arvo (Urbit OS), and (3) processes the effects produced by Arvo. Instead, I’ll focus on how IO works from the perspective of Hoon programs, like Arvo or apps running on Arvo. But first, let's review IO paradigms in other languages.
1915
2016All examples are in a made-up language, since it's useful to understand this information even before you're comfortable in Hoon. If you're learning Hoon and want a challenge, try translating them!
@@ -158,6 +154,7 @@ However, Arvo is a single-level store — all of its state is permanent. This is
158154
159155Further, Arvo and the vanes rarely perform long sequences of IO. Generally, they do one thing and emit some effects, similar to the HTTP server example above. Sometimes they "pass through" a request. For example, the Eyre vane passes HTTP requests to userspace agents or threads. In this case, there is a sequence of IO, which in monadic code would be:
160156
157+```
161158 loop()
162159
163160 where:
@@ -168,6 +165,7 @@ Further, Arvo and the vanes rarely perform long sequences of IO. Generally, they
168165 response <- callAgent(agent, request)
169166 _ <- sendResponse(request, response)
170167 loop()
168+```
171169
172170This is clear code to read, but it leaves open the question of how to respond during the callAgent() function. If another request comes in, can we handle it in parallel? If we need to upgrade ourselves before the agent responds, can we make sure to properly handle the response?
173171
@@ -175,6 +173,7 @@ The naive solution in monadic code is to say that you can only handle one reques
175173
176174In a state machine, the naive solution is:
177175
176+```
178177 state :: (map request agent)
179178 main(state, event) {
180179 switch event {
@@ -185,6 +184,7 @@ In a state machine, the naive solution is:
185184 [del(state, request), HTTPRespond request response]
186185 }
187186 }
187+```
188188
189189Upgrading this is trivial, since the state (map of requests to outstanding calls to agents) is explicit. It also trivially handles concurrent requests.
190190
@@ -200,6 +200,7 @@ However, userspace sometimes needs to perform long sequences of IO. Let's look a
200200
201201Monadic:
202202
203+```
203204 topStories <- fetch(topStoriesUrl)
204205 loop(topStories)
205206
@@ -219,9 +220,11 @@ Monadic:
219220 bail
220221 else:
221222 retryLoop(n-1, story)
223+```
222224
223225State machine:
224226
227+```
225228 state :: Initial
226229 | FetchingTop
227230 | FetchingStory comments stories retries
@@ -253,6 +256,7 @@ State machine:
253256 }
254257 }
255258 }
259+```
256260
257261With practice, the state machine version of this can be written correctly. However, (1) it's verbose, (2) the control flow jumps all over the place, and (3) in practice it's challenging to get exactly right. This is still a small example, and it gets much worse as the length and complexity of the IO sequence grows.
258262
@@ -280,12 +284,15 @@ We're in a bit of a bind, though: Jael has to be a state machine. The solution i
280284
281285This thread has a definite purpose: given the most recent block number we already know about, fetch all the PKI transactions since then. The function signature is:
282286
287+```
283288 syncEthereum oldBlockNumber -> IO [newBlockNumber, newTxs]
289+```
284290
285291Jael runs this thread every five minutes and, if it succeeds, then we update our block number and PKI state. If the thread fails, gets stuck, or we need to upgrade it, we just kill the old thread and start a new one. Again, a few extra HTTP requests don’t matter.
286292
287293From Jael's perspective, it looks something like:
288294
295+```
289296 state :: State block txs outstandingThread
290297 main(state,event) {
291298 switch event {
@@ -304,6 +311,7 @@ From Jael's perspective, it looks something like:
304311 [State newBlockNumber append(txs,newTxs) Null, Null]
305312 }
306313 }
314+```
307315
308316In other words, from Jael's perspective, it's just a single IO event that encapsulates arbitrarily complex IO in the thread. A single IO event is easy enough, and we can maintain all our permanency and robustness guarantees, because we know the thread will have one of three results: success, failure, or it hangs. If we set a timeout, hang becomes failure, so there's only two possible results: success or failure. If we handle both of those correctly, we've handled all the possible IO errors that could have occurred.
309317
content/blog/iot.md+1−5
@@ -9,12 +9,8 @@ ship = "~datnut-pollen"
99image = "https://media.urbit.org/site/posts/essays/phobos.jpeg"
1010+++
1111
12−<br>
13−
1412![phobos](https://media.urbit.org/site/posts/essays/phobos.jpeg)
1513
16−<br>
17−
1814Each of the ~4B 32-or-fewer-bit or [Azimuth](/docs/glossary/azimuth)
1915identities, namely [planets](/docs/glossary/planet),
2016[stars](/docs/glossary/star), and [galaxies](/docs/glossary/galaxy), may
@@ -302,7 +298,7 @@ So let us focus on the additional meritorious aspects of Urbit (or more
302298generally, solid state interpreter networks) that make it not merely a band-aid
303299to the broken IoT system but a permanent and sound replacement.
304300
305−#### Solid state interpreter networks {#ssi}
301+#### Solid state interpreter networks {% #ssi %}
306302
307303![cubesats](https://media.urbit.org/site/posts/essays/cubesats.jpg)
308304
content/blog/layer-2-faq.md+3−3
@@ -45,7 +45,7 @@ you **do not** need ETH to boot Urbit. That Urbit ID is now yours, forever.
4545Unsure whether you have been invited to claim a L2 or L1 planet? The quickest
4646way to identify a L2 planet is if you used the below flow to claim.
4747
48−<img src="/images/planet-l2-claim.gif" style="max-height: 400px; width: auto; margin: 0 auto;"/>
48+![](/images/planet-l2-claim.gif)
4949
5050For those with L1 planets, you can avoid future transaction fees by migrating
5151your L1 planet to L2. Read the migration instructions
@@ -92,12 +92,12 @@ Bridge.
9292
9393There are a number of ways to host a planet in the cloud. Your options:
9494
95−- DIY:<br>
95+- DIY:
9696 The most cost-effective method is [setting it up
9797 yourself](https://urbit.org/using/running/hosting), though this route requires
9898 some system administration, and troubleshooting if any issues arise.
9999
100−- Via a Hosting Provider:<br>
100+- Via a Hosting Provider:
101101 The more “headache-free” option is paying for a
102102 hosting provider to take care of all these processes for you, plus support. The
103103 following service providers offer hosting (some include a free planet):
content/blog/metaphase.md−4
@@ -9,12 +9,8 @@ ship = "~haddef-sigwen"
99image = "https://media.urbit.org/site/posts/essays/metaphase.jpg"
1010+++
1111
12−<br>
13−
1412![mitosis](https://media.urbit.org/site/posts/essays/metaphase.jpg)
1513
16−<br>
17−
1814_Previous versions of this essay specified the stream deploy date as December 11, 2020; then December 18, 2020. This has been amended to the actual date of release, with our sincere apologies. For new readers, you can opt into the dev stream by running:_
1915
2016```
content/blog/pki-maze.md+10−10
@@ -27,7 +27,7 @@ This is our first stop in the idea maze. We call this sort of name a "comet". A
2727
2828However, Urbit is yours and it's forever. You shouldn't have to change your name every time you change your keys. So, we go back and take the other choice: you must be able to change your keys.
2929
30−To change keys, you must sign a message with the old keys revoking them and supplying the new ones[^0]. The question is what happens if the old keys also sign a second set of new keys. This could happen if an attacker obtained your old keys after the fact. This is important because one of the reasons to be able to change your keys is to invalidate the old ones so that they have no power.
30+To change keys, you must sign a message with the old keys revoking them and supplying the new ones[^1]. The question is what happens if the old keys also sign a second set of new keys. This could happen if an attacker obtained your old keys after the fact. This is important because one of the reasons to be able to change your keys is to invalidate the old ones so that they have no power.
3131
3232We have two options again: the PKI may be globally consistent or not. To be globally consistent means that if you believe a name is bound to a set of keys, then nobody on the network will disagree.
3333
@@ -37,13 +37,13 @@ For a globally consistent PKI that allows you to revoke keys, you need to be abl
3737
3838However, the problem of proving one message was sent before any later ones inverts the problem. You can solve this with newspapers by placing the message in the text of the newspaper. However, while reading a newspaper requires no central party, writing one does. For a long time, this sort of message was always handled by a central party. SSL revocations are managed by a few central parties. When you buy property, it's not sufficient to have the previous owner sign the title — this must be entered into a central land registry. Otherwise, the owner may sell their property to multiple people and there would be no way to determine who is the new owner. With the land registry, all you need to do is ask the registry which sale happened first, and that's the one that counts.
3939
40−However, Urbit is yours and it's forever. Trusting central registries jeopardizes both. The keen reader will notice that the problem of determining which key rotation happened first is exactly the double-spend problem that Satoshi solved with his proof of work algorithm for Bitcoin. His first block famously includes a newspaper headline to prove he didn't mine the block before that date. In a beautiful duality, his own algorithm proves that he didn't mine it after that date.[^1]
40+However, Urbit is yours and it's forever. Trusting central registries jeopardizes both. The keen reader will notice that the problem of determining which key rotation happened first is exactly the double-spend problem that Satoshi solved with his proof of work algorithm for Bitcoin. His first block famously includes a newspaper headline to prove he didn't mine the block before that date. In a beautiful duality, his own algorithm proves that he didn't mine it after that date.[^2]
4141
4242Some argue that blockchain is only good for money. This is myopic and is generally based on the experience that its most valuable application so far has been money. However, blockchain is a cryptographic primitive to do what was previously impossible: prove that one message was signed before another without a central party. Blockchain was discovered by someone trying to create digital money, and he needed that primitive, but that doesn't mean that's all it's good for.
4343
44−Thus, we store our PKI data on a blockchain for our second kind of name: planets. A planet is a 32-bit address which has key information stored on the blockchain.[^2] The owner of a planet may broadcast new PKI data by adding it to the blockchain. Any later messages by the old keys will be rejected, and everyone on the network will listen to the blockchain for key data. Thus, we have global consistency, permanence, and self sovereignty. We know of no other solution that can provide these properties.
44+Thus, we store our PKI data on a blockchain for our second kind of name: planets. A planet is a 32-bit address which has key information stored on the blockchain.[^3] The owner of a planet may broadcast new PKI data by adding it to the blockchain. Any later messages by the old keys will be rejected, and everyone on the network will listen to the blockchain for key data. Thus, we have global consistency, permanence, and self sovereignty. We know of no other solution that can provide these properties.
4545
46−However, while small individually, the aggregate PKI data for all nodes on the network may become very large. This is not an issue for comets because nobody needs to store comet keys except for those which they're talking with, and even those can be garbage-collected and re-requested and verified. For planets, there is a canonical set of keys, and somebody must store that. There are about 2<sup>32</sup>, or 4 billion planets. If the PKI data is about 100 bytes for each planet, this is about 400 GB of data. This may be more than most users wish to store, but it's small enough that it would be very cheap for someone to host this data for many users[^3].
46+However, while small individually, the aggregate PKI data for all nodes on the network may become very large. This is not an issue for comets because nobody needs to store comet keys except for those which they're talking with, and even those can be garbage-collected and re-requested and verified. For planets, there is a canonical set of keys, and somebody must store that. There are about 2^32^, or 4 billion planets. If the PKI data is about 100 bytes for each planet, this is about 400 GB of data. This may be more than most users wish to store, but it's small enough that it would be very cheap for someone to host this data for many users[^4].
4747
4848This information is currently stored directly on the Ethereum 1.0 blockchain, but as is well understood in blockchain circles this approach will not scale beyond a certain point. Many chains are pursing designs that allow the users of the smart contracts to store locally the data associated with the contracts they care about and only commit hashes to the chain. We expect there to be several viable options for this by the time our scaling needs exceed what's provided by Ethereum 1.0. This will free us from the cost of hosting the PKI data on all Ethereum nodes, but the data must still be stored somewhere. Any service that could handle such a large amount of data would inherently centralize the network.
4949
@@ -61,10 +61,10 @@ To create a sane network, we require global consistency for all our names. There
6161
6262- Moons are permanent, not self sovereign, and plentiful.
6363
64−Fancifully, comets are wayward celestial bodies that are great for testing and miscellaneous low-value things that won't last for long. Planets are where you can build a home and shape it into anything you want it to be. People can always find your planet; it's not going anywhere. Moons are useful for special purposes, like storage, heavy industry, and anything else you might want to do off-planet.[^4]
64+Fancifully, comets are wayward celestial bodies that are great for testing and miscellaneous low-value things that won't last for long. Planets are where you can build a home and shape it into anything you want it to be. People can always find your planet; it's not going anywhere. Moons are useful for special purposes, like storage, heavy industry, and anything else you might want to do off-planet.[^5]
6565
66−[^0]: Or the equivalent with a hierarchical key structure. In practice, you want to have a master key which signs a junior key for everyday use. You use the master key to rotate the junior key.
67−[^1]: More strictly: it proves that he didn't mine it after the other blocks currently on the Bitcoin blockchain. It only gives an ordering within the chain, not a literal timestamp.
68−[^2]: In addition to planets, there are stars and galaxies. From a PKI perspective they're treated exactly like planets, but on the network they provide infrastructure services like routing.
69−[^3]: In practice, this will likely be an included service by your sponsoring star. It could be a separate service, but it will be very cheap because it's a commodity and the "cost of production" is very cheap. At any rate, it should never rise above the capital cost of a 400GB hard drive.
70−[^4]: To extend the metaphor, stars are a neighborhood to live in -- they're easier for other planets to see, so when they want to send you a message they look for your star first. If they don't even know where your star is, they can certainly find your star's galaxy, and that will be enough to locate the star. Of course, if your star is not providing satisfactory service, you can take your planet and move to another star.
66+[^1]: Or the equivalent with a hierarchical key structure. In practice, you want to have a master key which signs a junior key for everyday use. You use the master key to rotate the junior key.
67+[^2]: More strictly: it proves that he didn't mine it after the other blocks currently on the Bitcoin blockchain. It only gives an ordering within the chain, not a literal timestamp.
68+[^3]: In addition to planets, there are stars and galaxies. From a PKI perspective they're treated exactly like planets, but on the network they provide infrastructure services like routing.
69+[^4]: In practice, this will likely be an included service by your sponsoring star. It could be a separate service, but it will be very cheap because it's a commodity and the "cost of production" is very cheap. At any rate, it should never rise above the capital cost of a 400GB hard drive.
70+[^5]: To extend the metaphor, stars are a neighborhood to live in -- they're easier for other planets to see, so when they want to send you a message they look for your star first. If they don't even know where your star is, they can certainly find your star's galaxy, and that will be enough to locate the star. Of course, if your star is not providing satisfactory service, you can take your planet and move to another star.
content/blog/platform-decay.md+1−3
@@ -9,9 +9,7 @@ ship = "~simfur-ritwed"
99image = "https://media.urbit.org/site/posts/essays/platform-decay-preview.png"
1010+++
1111
12−<br>
13−
14−<img class="ba" src="https://media.urbit.org/site/posts/essays/platform-decay.png">
12+![](https://media.urbit.org/site/posts/essays/platform-decay.png)
1513
1614## Platform decay, decentralized marketplaces, and Urbit
1715
content/blog/precepts-discussion.md+7−21
@@ -9,9 +9,7 @@ ship = "~wicdev-wisryt"
99image = "https://media.urbit.org/site/posts/essays/discuss-01.jpg"
1010+++
1111
12−<br>
13−
14−<img class="ba" src="https://media.urbit.org/site/posts/essays/discuss-01.jpg">
12+![](https://media.urbit.org/site/posts/essays/discuss-01.jpg)
1513
1614The precepts aren’t arguments. We will discuss and justify them here. We don't expect to convince you this is exactly the right set of precepts, but we hope to convince you that this is a coherent set of precepts that might lead to something very interesting.
1715
@@ -36,9 +34,7 @@ We will address these in the same categories presented above:
3634- F: Real Software. Not all software matters. Any software which
3735 wouldn't exist on Mars isn't real.
3836
39−<br>
40−
41−<img class="ba" src="https://media.urbit.org/site/posts/essays/discuss-02.jpg">
37+![](https://media.urbit.org/site/posts/essays/discuss-02.jpg)
4238
4339### A: General Design
4440
@@ -355,9 +351,7 @@ An example of the second is "security through obscurity is ineffective". Securit
355351
356352However, it's important for whoever's coming up with the cliches to understand the specifics of how they're untruthful. Some of these very precepts may fall under the category of "literally untrue but more useful than the truth".
357353
358−<br>
359−
360−<img class="ba" src="https://media.urbit.org/site/posts/essays/discuss-03.jpg">
354+![](https://media.urbit.org/site/posts/essays/discuss-03.jpg)
361355
362356## B: Specific Design
363357
@@ -415,9 +409,7 @@ Memory access restrictions are blunt tools. Blunt tools are nice in simple syste
415409
416410Better to define rules in a more powerful language. This allows you to follow A6 and A8. It also lets you use all the correctness tools, like type systems, that you've developed for the rest of your code.
417411
418−<br>
419−
420−<img class="ba" src="https://media.urbit.org/site/posts/essays/discuss-04.jpg">
412+![](https://media.urbit.org/site/posts/essays/discuss-04.jpg)
421413
422414### C: Attitude
423415
@@ -468,9 +460,7 @@ of your own mind.
468460This is also one of the best ways to build stuff correctly. Very often, you will be tempted to cut a corner, and someone will point out that it should be done correctly. You should consider why you immediately rejected it. Was it because you were afraid of the relevant piece of code? If so, you should learn more about that code to determine if it's actually a good idea. Did you reject it because you felt it would distract you from working on what you thought was more important?
469461Consider carefully whether this particular piece of technical debt is worth taking on. It's worth 60 seconds of thinking about how you could solve it correctly right now — often it would be quite easy to do correctly and you'd be paying interest on the incorrectness for a long time.
470462
471−<br>
472−
473−<img class="ba" src="https://media.urbit.org/site/posts/essays/discuss-05.jpg">
463+![](https://media.urbit.org/site/posts/essays/discuss-05.jpg)
474464
475465### D: Theory
476466
@@ -511,9 +501,7 @@ objective properties and your subjective judgment of the quality of the system.
511501
512502However, that explanatory power is indeed powerful, and the exploratory suggestions are often able to break you out of a rut (attractor basin). Respect the tension.
513503
514−<img class="ba" src="https://media.urbit.org/site/posts/essays/discuss-06.jpg">
515−
516−<br>
504+![](https://media.urbit.org/site/posts/essays/discuss-06.jpg)
517505
518506### E: Text Style
519507
@@ -615,9 +603,7 @@ We're really good at memorizing sets of things, like runes. We're also good at i
615603
616604So don't be afraid to use new names for new concepts. If concepts are siblings, they needn't necessarily have a direct connection in their name, but if they're hierarchical, then something should suggest that. This can be syntactic or semantic.
617605
618−<br>
619−
620−<img class="ba" src="https://media.urbit.org/site/posts/essays/discuss-07.jpg">
606+![](https://media.urbit.org/site/posts/essays/discuss-07.jpg)
621607
622608### F: Real Software
623609
content/blog/precepts.md+7−21
@@ -9,9 +9,7 @@ ship = "~wicdev-wisryt"
99image = "https://media.urbit.org/site/posts/essays/pre-01.jpg"
1010+++
1111
12−<br>
13−
14−<img class="ba" src="https://media.urbit.org/site/posts/essays/pre-01.jpg">
12+![](https://media.urbit.org/site/posts/essays/pre-01.jpg)
1513
1614Urbit 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.
1715
@@ -19,9 +17,7 @@ Some of these are commonly held among many software projects, and some are not.
1917
2018We’ll start with a brief description of many principles, then we’ll go into a long-form justification.
2119
22−<br>
23−
24−<img class="ba" src="https://media.urbit.org/site/posts/essays/pre-02.jpg">
20+![](https://media.urbit.org/site/posts/essays/pre-02.jpg)
2521
2622### A: General Design
2723
@@ -138,9 +134,7 @@ We’ll start with a brief description of many principles, then we’ll go into
13813423. Some cliches are repeated because they are true; others must be
139135 repeated because they are not.
140136
141−<br>
142−
143−<img class="ba" src="https://media.urbit.org/site/posts/essays/pre-03.jpg">
137+![](https://media.urbit.org/site/posts/essays/pre-03.jpg)
144138
145139### B: Specific Design
146140
@@ -170,9 +164,7 @@ We’ll start with a brief description of many principles, then we’ll go into
170164 A compiler can use type safety as an effective tool to enforce
171165 some classes of security guarantees.
172166
173−<br>
174−
175−<img class="ba" src="https://media.urbit.org/site/posts/essays/pre-04.jpg">
167+![](https://media.urbit.org/site/posts/essays/pre-04.jpg)
176168
177169### C: Attitude
178170
@@ -203,9 +195,7 @@ We’ll start with a brief description of many principles, then we’ll go into
203195 responding take a full 60 seconds to envision how you would implement
204196 it and what the effects would be.
205197
206−<br>
207−
208−<img class="ba" src="https://media.urbit.org/site/posts/essays/pre-05.jpg">
198+![](https://media.urbit.org/site/posts/essays/pre-05.jpg)
209199
210200### D: Theory
211201
@@ -250,9 +240,7 @@ We’ll start with a brief description of many principles, then we’ll go into
250240 use theory to fix the bad, add the missing, and remove the
251241 unnecessary. Repeat.
252242
253−<br>
254−
255−<img class="ba" src="https://media.urbit.org/site/posts/essays/pre-06.jpg">
243+![](https://media.urbit.org/site/posts/essays/pre-06.jpg)
256244
257245### E: Text Style
258246
@@ -285,9 +273,7 @@ We’ll start with a brief description of many principles, then we’ll go into
285273
2862748. Abbreviations aren't worth it.
287275
288−<br>
289−
290−<img class="ba" src="https://media.urbit.org/site/posts/essays/pre-07.jpg">
276+![](https://media.urbit.org/site/posts/essays/pre-07.jpg)
291277
292278### F: Real Software
293279
content/blog/providers.md+1−5
@@ -9,11 +9,7 @@ ship = "~ravmel-ropdyl"
99image = "https://storage.googleapis.com/media.urbit.org/site/posts/essays/providers.png"
1010+++
1111
12−<br>
13−
14−<img class="ba" src="https://storage.googleapis.com/media.urbit.org/site/posts/essays/providers.png">
15−
16−<br>
12+![](https://storage.googleapis.com/media.urbit.org/site/posts/essays/providers.png)
1713
1814We look forward to a future where your Urbit is an always-on, always-available service. You should be able to pick up any device and conjure up your whole digital life immediately.
1915
content/blog/rollups.md+4−4
@@ -121,7 +121,7 @@ And that's it! If you'd like to know how things will be changing for
121121[stars](#stars), what goes into [setting up a roller](#rollers), and additional
122122[technical details](#technical), read on.
123123
124−### Changes to stars {#stars}
124+### Changes to stars {% #stars %}
125125
126126Both planets and stars will be able to move to layer 2.
127127[Galaxies](/docs/glossary/galaxy) must remain on layer 1 for technical
@@ -148,7 +148,7 @@ moving ownership to layer 2, this will be a one-way journey for now. Planets
148148spawned before moving the spawn proxy to layer 2 will remain on layer 1, but
149149from then on, all planets spawned by that star will live on layer 2. Finally, stars in this second mode may transition to the first mode, but not vice versa.
150150
151−### Creating a roller {#rollers}
151+### Creating a roller {% #rollers %}
152152
153153![gasprices](https://media.urbit.org/site/posts/essays/gasprices.jpeg)
154154
@@ -182,7 +182,7 @@ making a couple minor alterations:
182182- Galaxies and their proxies cannot be deposited to layer 2.
183183 Some other minor details are yet to be worked out, but again, nothing will change for those who wish to remain on layer 1.
184184
185−### Technical details {#technical}
185+### Technical details {% #technical %}
186186
187187What's really going on behind the scenes here? Briefly, only the data of the Urbit ID transactions will be posted on-chain, while computation and state storage will now happen on your ship.
188188
@@ -203,7 +203,7 @@ blockchain, rather than the EVM.
203203Since [Urbit OS](/docs/glossary/arvo) is deterministic, and Hoon has some nice formal
204204properties, it turns out to be a great language for writing smart contracts. Thus we are effectively swapping the Ethereum smart contract with a “Hoon smart contract” run locally on your ship.
205205
206−#### Further Resources {#resources}
206+#### Further Resources {% #resources %}
207207
208208We want to keep this post brief and non-technical, so that's all we'll say about
209209it for now. To find out more, you have a few directions to go on. We held a
content/blog/security-audit.md−4
@@ -9,12 +9,8 @@ ship = "~rovnys-ricfer + ~poldec-tonteg"
99image = "https://storage.googleapis.com/media.urbit.org/site/posts/essays/20201218-audit.png"
1010+++
1111
12−<br>
13−
1412![audit](https://storage.googleapis.com/media.urbit.org/site/posts/essays/20201218-audit.png)
1513
16−<br>
17−
1814The security firm Leviathan has now finished their initial audit of the security of Urbit's Ames network protocol. In addition to their review of Ames, we also asked them to identify any other issues in order to help guide further development.
1915
2016I'm pleased to report they confirmed the cryptographic soundness of the protocol, namely that "a ship must have possession of their own valid Urbit key in order to authenticate as that ship and to send valid Ames messages. Additionally, no other ship except the two communicating may be able to decrypt or modify messages during transport."
content/blog/simple-durable-yours.md+3−3
@@ -9,13 +9,13 @@ We live in a world dense with digital services. We see the world through them, w
99
1010But computers are a mess.
1111
12−<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/simple-durable-yours/simple-durable-yours-notifications.svg">
12+![](https://media.urbit.org/site/understanding-urbit/simple-durable-yours/simple-durable-yours-notifications.svg)
1313
1414We spend all our time switching between services, juggling logins and different interfaces. And once we’re logged in, the services we use harvest our data, spy on us, and often shut down with little warning.
1515
1616If computers are going to be a part of our lives for generations to come, we need a sound foundation for them. We need a _system_, not a grab bag of apps and services. Urbit is that system.
1717
18−<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/simple-durable-yours/simple-durable-yours-rock%402x.png">
18+![](https://media.urbit.org/site/understanding-urbit/simple-durable-yours/simple-durable-yours-rock%402x.png)
1919
2020We built Urbit from scratch to be a system that’s simple, durable, and yours. Everything that computing today is not — but should be.
2121
@@ -39,7 +39,7 @@ Your Urbit is designed to be durable: both to store your data across generations
3939
4040Finally, your Urbit belongs to you in every possible way. You own it with a private key, control it completely, and can inspect its source code. We want your Urbit to be your digital home. A home you don’t own is just a hotel room.
4141
42−<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/simple-durable-yours/simple-durable-yours-evolution.svg">
42+![](https://media.urbit.org/site/understanding-urbit/simple-durable-yours/simple-durable-yours-evolution.svg)
4343
4444Urbit began as a sketch, driven from a basic intuition that a better platform could be built. Today, Urbit is two components: Urbit ID, an identity system that’s already live on Ethereum; and Urbit OS, a decentralized network and OS stack that’s young but working well.
4545
content/blog/the-missing-middle.md+1−5
@@ -9,11 +9,7 @@ ship = "~simfur-ritwed"
99image = "https://media.urbit.org/site/posts/essays/missing-middle.png"
1010+++
1111
12−<br>
13−
14−<img class="ba" src="https://media.urbit.org/site/posts/essays/missing-middle.png">
15−
16−<br>
12+![](https://media.urbit.org/site/posts/essays/missing-middle.png)
1713
1814The promise of social technology is that we can discover more friends; _specifically, people more similar to us_ than we previously had access to. The means by which we do so, the methods of collaboration, the quality of connected experiences; these factors matter, but they are marginal considerations compared to the basic offering of an expanded choice of connections.
1915
content/blog/the-understanding-urbit-podcast.md+1−3
@@ -9,9 +9,7 @@ ship = "~satsyt-sogleb"
99image = "https://media.urbit.org/site/posts/essays/uu-podcast.png"
1010+++
1111
12−<br>
13−
14−<img class="ba" src="https://media.urbit.org/site/posts/essays/uu-podcast.png">
12+![](https://media.urbit.org/site/posts/essays/uu-podcast.png)
1513
1614At the end of January, the team at Tlon invited me to spend some time at their San Francisco office and to create a podcast series about Urbit. The idea was to produce an interview-based series about the project told in the words of those working on it. In this modest goal, I think we were very successful. Beyond a transactional description, however, we captured a range of perspectives of the flaws in our current computing landscape and visions for how Urbit will alter it.
1715
content/blog/tools-of-our-own.md+6−14
@@ -9,15 +9,11 @@ ship = "~haddef-sigwen"
99image = "https://media.urbit.org/site/posts/essays/tools-of-our-own-1.png"
1010+++
1111
12−<br>
13−
14−<img class="ba" src="https://media.urbit.org/site/posts/essays/tools-of-our-own-1.png">
15−
16−<br>
12+![](https://media.urbit.org/site/posts/essays/tools-of-our-own-1.png)
1713
1814> People need only not to obtain things, they need above all the freedom to make things among which they can live, or give shape to them according to their own tastes, and to put them to use in caring for and about others.
1915>
20−> <cite>Ivan Illich, <em>Tools for Conviviality</em></cite>
16+> **Ivan Illich, *Tools for Conviviality***
2117
2218One of the recent ways we've come to describe the mission of the Urbit project is to give communities [the power to shape, or evolve, their digital environments](https://urbit.org/blog/urbit-is-for-communities/). Of course, like many of our definitions, it requires some background to really contextualize the claim. When I describe this particular statement to people, they often ask, "What does that _mean_, though? What is a digital environment, and why would I need Urbit to do it?"
2319
@@ -27,15 +23,13 @@ The [Rube Goldberg machine](https://en.wikipedia.org/wiki/Rube_Goldberg_machine)
2723
2824And it's nobody's distinct fault that the experience of aligning all these disparate services into a workflow is a skill in itself. It's a collective restriction that comes from the systems beneath.
2925
30−<br>
31−
32−<img class="ba" src="https://media.urbit.org/site/posts/essays/tools-of-our-own-2.png">
26+![](https://media.urbit.org/site/posts/essays/tools-of-our-own-2.png)
3327
3428### Systems as masters
3529
3630> If you don't understand a system you're using, you don't control it. If nobody understands the system, the system is in control.
3731>
38−> <cite>Philip Monk, <a href="https://urbit.org/blog/precepts/">Precepts</a></cite>
32+> **Philip Monk, [Precepts](https://urbit.org/blog/precepts/)**
3933
4034If you asked any of the creators of the social tools we use today what their mission was, it would seem neutral, a public good. To "bring the world closer," to "make a more open and connected world," to "easily see what's happening in the world." Ignore the fact that the net effects of their products are far more mixed than their mission suggests: for many users, the tools themselves come second to the power the tools have in capturing their social graph.
4135
@@ -53,15 +47,13 @@ And for productivity tools—for the personal activities we do every day—the s
5347
5448This is why hybrid products are born _and_ why massive enterprises are shifting toward subscription models for office software. With the [clearnet](<https://en.wikipedia.org/wiki/Clearnet_(networking)>), using our own computers for everyday tasks that extend outside themselves is not easy. It's way easier to sign into an enterprise's server farm for your persistent data storage and manipulation. In 2020, the prefab parts for the exoskeleton only come in "left arm, right leg" pairs, or you can just give up and plug straight into SkyNet.
5549
56−<br>
57−
58−<img class="ba" src="https://media.urbit.org/site/posts/essays/tools-of-our-own-3.png">
50+![](https://media.urbit.org/site/posts/essays/tools-of-our-own-3.png)
5951
6052### The collective body
6153
6254> “Autonomy” means that we make the **worlds that we are** grow.
6355>
64−> <cite>Tiqqun, <em>The Cybernetic Hypothesis</em>
56+> **Tiqqun, *The Cybernetic Hypothesis*
6557
6658So why does this matter for us? Me and you and everyone we know? We put up with the cost all the time. But the limitations of our tools—on the vulnerable side of a power dynamic that, unbeknownst to everyone involved, functions as a catalyzed and increasingly accelerated system bringing out the worst in all of us—range from the everyday annoyances to a pervasive alienation, an information malaise.
6759
content/blog/urbit-for-normies.md+3−4
@@ -51,7 +51,7 @@ By “intermediary” I’m talking about all those centralized servers that we
5151
5252Urbit will fundamentally change that — more about the privacy implications later.
5353
54−<img class="ba" src="https://media.urbit.org/site/posts/essays/normies-1.png">
54+![](https://media.urbit.org/site/posts/essays/normies-1.png)
5555
5656## What it looks like
5757
@@ -95,7 +95,7 @@ I’ll try to explain the most important of these without straying too deep into
9595
96964. **An incentive for good behavior**
9797
98− On the Urbit network, identities are finite, and they accrue reputation. Compare that to the current internet where identity is infinite (anyone can create as many email addresses or social media profiles as they want, essentially for free) and so spam, scams, and DoS attacks (“denial-of-service”: when many disposable identities ‘attack’ a server at the same time) are rampant. On the Urbit network, there are just over 4 billion total IDs (2<sup>32</sup> to be exact). Scarcity creates value. That scarcity, combined with reputation accrual, means there's an incentive for good behavior.
98+ On the Urbit network, identities are finite, and they accrue reputation. Compare that to the current internet where identity is infinite (anyone can create as many email addresses or social media profiles as they want, essentially for free) and so spam, scams, and DoS attacks (“denial-of-service”: when many disposable identities ‘attack’ a server at the same time) are rampant. On the Urbit network, there are just over 4 billion total IDs (2^32^ to be exact). Scarcity creates value. That scarcity, combined with reputation accrual, means there's an incentive for good behavior.
9999
100100 You might think 4 billion IDs sounds like too few given how many humans we have on the planet. I won’t go into the technical details here, but if we ever get to the point where that’s a problem (which would be a great problem to have), we’ve outlined several solutions that allow everyone alive to get on the network. We don’t intend to lock anyone out.
101101
@@ -121,9 +121,8 @@ I’ll try to explain the most important of these without straying too deep into
121121
122122 What all this adds up to is that the Urbit network is immensely more resource efficient, secure, easier to customize, and smaller in size than any other computing system in the world. If you care about data security, privacy, durability, or even just elegance, Urbit has the best design going.
123123
124− <br></br>
125124
126−<img class="ba" src="https://media.urbit.org/site/posts/essays/normies-2.png">
125+![](https://media.urbit.org/site/posts/essays/normies-2.png)
127126
128127## How it compares
129128
content/blog/urbit-is-for-communities.md+1−3
@@ -9,9 +9,7 @@ ship = "~ravmel-ropdyl"
99image = "https://media.urbit.org/site/posts/essays/urbit-is-for-communities.jpg"
1010+++
1111
12−<br>
13−
14−<img class="ba" src="https://media.urbit.org/site/posts/essays/urbit-is-for-communities.jpg">
12+![](https://media.urbit.org/site/posts/essays/urbit-is-for-communities.jpg)
1513
1614## Generated, not fabricated
1715
content/blog/value-of-address-space-pt1.md+4−4
@@ -47,15 +47,15 @@ We’ve often said that Urbit IDs have value because they’re useful and scarce
4747
4848The network of IDs is structured as a sponsorship tree consisting of 256 galaxies, ~65,000 stars, ~4B planets.
4949
50−Galaxies are the root nodes on the network. They each have a vote on upgrades to the rules that govern the network, they provide packet-routing and peer-discovery services, and they spawn stars. Each galaxy has 256 (2<sup>8</sup>) stars to spawn.
50+Galaxies are the root nodes on the network. They each have a vote on upgrades to the rules that govern the network, they provide packet-routing and peer-discovery services, and they spawn stars. Each galaxy has 256 (2^8^) stars to spawn.
5151
52−Stars similarly provide packet-routing and peer-discovery services, and spawn planets. Each unbooted star contains ~65,000 planets (2<sup>16</sup>).
52+Stars similarly provide packet-routing and peer-discovery services, and spawn planets. Each unbooted star contains ~65,000 planets (2^16^).
5353
54−Planets are the individual IDs that most people use on the network. There are a total of ~4B (2<sup>32</sup>) planets all combined. Planets can also each spawn ~4B ‘moons,’ which are Urbit IDs intended to be used for IoT and other devices. Moons are permanently locked to their planets for security and to protect the network from sybil attacks.
54+Planets are the individual IDs that most people use on the network. There are a total of ~4B (2^32^) planets all combined. Planets can also each spawn ~4B ‘moons,’ which are Urbit IDs intended to be used for IoT and other devices. Moons are permanently locked to their planets for security and to protect the network from sybil attacks.
5555
5656Stars and planets can leave their sponsors (i.e. the star or galaxy currently providing peer discovery and packet routing) if they wish, and sponsors can choose to stop servicing any given star or planet. This is intended to prevent lock-in and to encourage good behavior from both parties. This mutual accountability is important in a network of finite identities that accrue reputation.
5757
58−Essentially Urbit ID is 2<sup>32</sup> individual names that are bundled into blocks that are larger and larger in size. You might think of a planet like an individual house, a star like a town or a city, and a galaxy like a county or a state.
58+Essentially Urbit ID is 2^32^ individual names that are bundled into blocks that are larger and larger in size. You might think of a planet like an individual house, a star like a town or a city, and a galaxy like a county or a state.
5959
6060The Urbit ID registry and its rules are built on a set of smart contracts called [Azimuth](https://github.com/urbit/azimuth). These contracts are registered on the Ethereum blockchain. Galaxies can upgrade the mechanics of Azimuth by majority vote.
6161
content/blog/value-of-address-space-pt2.md+1−1
@@ -31,7 +31,7 @@ There are 65,280 total stars on the network. In turn, each star is initialized w
3131
3232One would expect that in an efficient market the relative pricing of stars on one hand, and planets on the other hand would eventually align (so to speak). This may come to pass as the Urbit community increases education about Urbit, and as additional planet sellers and hosting providers enter the space.
3333
34−Finally, there are 4,294,901,760 (or ~2<sup>32</sup>) planets on the network. Planets currently trade largely in a range of $10 to $15. We expect planet prices to fluctuate from provider to provider as described in the previous post, based on the quality of services various providers offer. That said, it's worth noting that the cost to configure addresses for distribution is fairly static and this may act as something of a lower bound.
34+Finally, there are 4,294,901,760 (or ~2^32^) planets on the network. Planets currently trade largely in a range of $10 to $15. We expect planet prices to fluctuate from provider to provider as described in the previous post, based on the quality of services various providers offer. That said, it's worth noting that the cost to configure addresses for distribution is fairly static and this may act as something of a lower bound.
3535
3636That said, we also anticipate that planet prices will be abstracted away from most purchasers, and will be included in bundled annual packages of hosting and data routing services. For this reason, infrastructure service providers (i.e. hosting providers) will likely be the best positioned parties to capture value from planet distribution.
3737
content/blog/value-of-address-space-pt3.md+1−3
@@ -9,8 +9,6 @@ ship = "~patnes-rigtyn + ~ravmel-ropdyl"
99image = "https://media.urbit.org/site/posts/essays/value-of-address-space-pt3.jpg"
1010+++
1111
12−<br>
13−
1412![](https://media.urbit.org/site/posts/essays/value-of-address-space-pt3.jpg)
1513
1614_This is the third in a series of three posts on Urbit address space. See also [part 1](https://urbit.org/blog/value-of-address-space-pt1/) and [part 2](https://urbit.org/blog/value-of-address-space-pt2/)._
@@ -33,7 +31,7 @@ In this post, we don’t expand that framework, but rather explore two elements
3331
3432## Lockups and spawning limits
3533
36−One way to think about galaxies, stars, and planets is that they’re different-sized buckets of Urbit IDs. A star contains 2<sup>16</sup> (~65K) planets, a galaxy contains 2<sup>8</sup> (256) stars and, in turn, 2<sup>24</sup> planets (16,777,216). Beyond this nesting pattern, there are three further considerations to note: booted versus unbooted addresses, locked versus unlocked addresses, and planet spawning limits.
34+One way to think about galaxies, stars, and planets is that they’re different-sized buckets of Urbit IDs. A star contains 2^16^ (~65K) planets, a galaxy contains 2^8^ (256) stars and, in turn, 2^24^ planets (16,777,216). Beyond this nesting pattern, there are three further considerations to note: booted versus unbooted addresses, locked versus unlocked addresses, and planet spawning limits.
3735
3836Booted and Unbooted Addresses –
3937
content/blog/why-hoon.md+3−3
@@ -125,7 +125,7 @@ Hoon and Nock have several unusual properties:
125125 converted to each other. Lisp dialects are also homoiconic, but Hoon
126126 and Nock are arguably even more so, since things like closures and the
127127 environment are just Nock trees. We even have a statically typed
128− metacircular interpreter called <code>+mule</code>. We run userspace code
128+ metacircular interpreter called `+mule`. We run userspace code
129129 metacircularly with negligible performance overhead because of Urbit's
130130 jet system. In Lisp, "eval is evil" is a common saying, but in Urbit,
131131 eval is a first-class feature.
@@ -145,7 +145,7 @@ Hoon and Nock have several unusual properties:
145145 the runtime has a matching jet, it will use that instead of the Nock
146146 implementation. Nock isn't as slow as you might think, especially
147147 considering it's a minimal, dynamic, axiomatic language.
148− <br/><br/>
148+
149149 This arrangement has the deeper implication that all code written in
150150 Nock is best considered as a specification for a program, which can be
151151 executed directly but might never run at all due to being jetted.
@@ -199,7 +199,7 @@ Hoon and Nock have several unusual properties:
199199 lot of the system manipulates types. In particular, the `!>` rune, when
200200 applied to a piece of data, uses compile-time type reflection to
201201 produce something called a "vase": a pair of type and data, similar to
202− a <code>Data.Dynamic</code> in Haskell, or a limited form of a dependent pair.
202+ a `Data.Dynamic` in Haskell, or a limited form of a dependent pair.
203203 Since the Arvo kernel does a lot of dynamic compilation, it uses vases
204204 to implement something akin to a dynamically typed language using
205205 Hoon. This allows for type-safe dynamic program loading, program
content/blog/your-last-computer.md+3−3
@@ -11,13 +11,13 @@ This whole ‘simple, durable, yours’ thing may sound good, but what does it a
1111
1212First, let’s talk about what it should feel like in the future.
1313
14−<img class="mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/your-last-computer/your-last-computer-waves%402x.png">
14+![](https://media.urbit.org/site/understanding-urbit/your-last-computer/your-last-computer-waves%402x.png)
1515
1616Imagine that you can log in from anywhere with one simple, memorable name and password. And when you do, an entire OS appears for you. Inside is your whole digital life. Every conversation you’ve ever had, all your biometric data — every step and heartbeat. Your personal mesh of devices: your doors, your car, your irrigation. All of your communities, every message you’ve shared with friends and family. Every connection you’ve made and every archival piece of data, in one place. Secure and private, forever.
1717
1818You own and control this OS completely. Your system doesn’t live on someone else’s server, so there’s no risk of leaking it in a mass data breach or losing it when a service shuts down. Your Urbit is a sealed, secure, and durable system.
1919
20−<img class="ba mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/your-last-computer/your-last-computer-is-rock%402x.png">
20+![](https://media.urbit.org/site/understanding-urbit/your-last-computer/your-last-computer-is-rock%402x.png)
2121
2222We’re on our way to this future, building it step by step, but we’re not there yet. The Urbit of today is much more stripped down.
2323
@@ -31,6 +31,6 @@ It’s a simple system for intentional digital communities. A first step away fr
3131
3232We think that a new system like this, even in a simple form, will be a relief from the chaos of the current web. Think of it as a “back to the land” computing movement. If we’re ever going to build new digital cities, they’ll have to start as a few colonies on the frontier.
3333
34−<img class="mv5 w-100" src="https://media.urbit.org/site/understanding-urbit/your-last-computer/your-last-computer-ocean%402x.png">
34+![](https://media.urbit.org/site/understanding-urbit/your-last-computer/your-last-computer-ocean%402x.png)
3535
3636Your Urbit is a simpler computer, a quieter computer, a more private computer. We want it to feel predictable, safe, and reliable — things only a complete, sealed system can do. This, we hope, can get us a world where technology keeps us connected, but doesn’t dominate our lives.
content/community/meetups.md+20−24
@@ -9,10 +9,7 @@ hideprevious = "true"
99hide_next_title = "true"
1010+++
1111
12−<picture>
13−<source src="https://media.urbit.org/site/meetup1.jpg">
14−<img class="mt4" src="https://media.urbit.org/site/meetup1.jpg"/>
15−</picture>
12+![](https://media.urbit.org/site/meetup1.jpg)
1613
1714Turns out that getting Urbit fans together in one room is pretty fun. Here's an incomplete list of community-led Urbit IRL groups. These events are generally informal and very approachable – feel free to dive in.
1815
@@ -20,32 +17,31 @@ Interested in hosting an Urbit event of your own? Follow our [guide to meetup be
2017
2118### Asia
2219
23−Location | Contact information
24−:------------ | :-------------
25−Moscow, RU | [Timepad](https://urbitmoscow.timepad.ru/events/)
20+| Location | Contact information |
21+| :--------- | :------------------------------------------------ |
22+| Moscow, RU | [Timepad](https://urbitmoscow.timepad.ru/events/) |
2623
2724### Europe
2825
29−Location | Contact information
30−:------------ | :-------------
31−Copenhagen, DK | [Twitter](https://twitter.com/UrbitCPH), [Meetup.com](https://www.meetup.com/Urbit-Copenhagen/)
26+| Location | Contact information |
27+| :------------- | :---------------------------------------------------------------------------------------------- |
28+| Copenhagen, DK | [Twitter](https://twitter.com/UrbitCPH), [Meetup.com](https://www.meetup.com/Urbit-Copenhagen/) |
3229
3330### North America
3431
35−Location | Contact information
36−:------------ | :-------------
37−Phoenix, AZ | [Twitter](https://twitter.com/UrbitPHX), [Meetup.com](https://www.meetup.com/urbit-phx/)
38−San Francisco, CA | [Meetup.com](https://www.meetup.com/urbit-sf/)
39−New York, NY | [Meetup.com](https://www.meetup.com/Urbit-New-York/)
40−Toronto, ON | [Twitter](https://twitter.com/UrbitToronto), [Meetup.com](https://www.meetup.com/Urbit-Toronto/)
41−Eugene, OR | [Twitter](https://twitter.com/EugeneUrbit)
42−Austin, TX | [Meetup.com](https://www.meetup.com/Urbit-Austin/)
43−Denton, TX | [Twitter](https://twitter.com/UrbitDFW)
44−Seattle, WA | [Meetup.com](https://www.meetup.com/urbit-seattle/)
45−
32+| Location | Contact information |
33+| :---------------- | :----------------------------------------------------------------------------------------------- |
34+| Phoenix, AZ | [Twitter](https://twitter.com/UrbitPHX), [Meetup.com](https://www.meetup.com/urbit-phx/) |
35+| San Francisco, CA | [Meetup.com](https://www.meetup.com/urbit-sf/) |
36+| New York, NY | [Meetup.com](https://www.meetup.com/Urbit-New-York/) |
37+| Toronto, ON | [Twitter](https://twitter.com/UrbitToronto), [Meetup.com](https://www.meetup.com/Urbit-Toronto/) |
38+| Eugene, OR | [Twitter](https://twitter.com/EugeneUrbit) |
39+| Austin, TX | [Meetup.com](https://www.meetup.com/Urbit-Austin/) |
40+| Denton, TX | [Twitter](https://twitter.com/UrbitDFW) |
41+| Seattle, WA | [Meetup.com](https://www.meetup.com/urbit-seattle/) |
4642
4743### Oceania
4844
49−Location | Contact information
50−:------------ | :-------------
51−Sydney, AU | [Meetup.com](https://www.meetup.com/Urbit-Sydney)
45+| Location | Contact information |
46+| :--------- | :------------------------------------------------ |
47+| Sydney, AU | [Meetup.com](https://www.meetup.com/Urbit-Sydney) |
content/docs/arvo/ames/ames.md+3−7
@@ -221,7 +221,7 @@ Thus a message-level ack must be received before the next message on the flow
221221can begin. The full story is more complicated than this; see the section on
222222[flows](#flows).
223223
224−#### Nacks {#nacks}
224+#### Nacks {% #nacks %}
225225
226226A nack indicates a negative acknowledgement to a `%plea`, meaning that the
227227requested action was not performed.
@@ -363,9 +363,7 @@ discovery, analagous to the role that galaxies currently play for stars and plan
363363
364364The following diagram summarizes the packet creation and forwarding process.
365365
366−<div style="text-align:center">
367−<img src="https://media.urbit.org/docs/arvo/datagram-updated-2021-06-09.png">
368−</div>
366+![](https://media.urbit.org/docs/arvo/datagram-updated-2021-06-09.png)
369367
370368We elaborate on the above diagram.
371369
@@ -448,9 +446,7 @@ This division is summarized in the following diagram, describing how
448446`~bacbel-tagfeb` requests a subscription to the `recipes` notebook of
449447`~worwel-sipnum` in the Publish app.
450448
451−<div style="text-align:center">
452−<img src="https://media.urbit.org/docs/arvo/packet.png">
453−</div>
449+![](https://media.urbit.org/docs/arvo/packet.png)
454450
455451Ames, as a part of Arvo, handles `+jam`ming, packetizing, encryption, and
456452forming Ames packets. Once it is ready to send an Ames packet, it `%give`s to
content/docs/arvo/ames/cryptography.md+4−4
@@ -23,7 +23,7 @@ core into which one of the cryptosuites in `zuse` may be implemented. Some, but
2323not all, of the calls to cryptography-related tasks (encryption, signing,
2424decrypting, and authenticating) are peformed utilizing the `+acru` core.
2525
26−## Packet encryption and authentication {#packets}
26+## Packet encryption and authentication {% #packets %}
2727
2828Each Urbit ship possesses two networking keypairs: one for encryption, and one
2929for authentication. We often refer to these two keypairs as though they were a
@@ -40,7 +40,7 @@ message fragment is signed using the authentication key. It is encrypted using
4040[`+en:crub:crypto`](/docs/arvo/reference/cryptography#en) found in
4141`sys/zuse.hoon`, which utilizes the 256-bit AES-SIV algorithm.
4242
43−## Diffie-Hellman key exchange {#key-exchange}
43+## Diffie-Hellman key exchange {% #key-exchange %}
4444
4545For each foreign ship a given ship has communicated with, `$ames-state` contains a
4646[$peer-state](/docs/arvo/ames/data-types#peer-state), inside which the [$symmetric-key](/docs/arvo/ames/data-types#symmetric-key) (an atom which nests under
@@ -54,7 +54,7 @@ in a two-way conversation computes the shared symmetric key for that
5454conversation by computing the product of their own private key and the public
5555key of the other party.
5656
57−## Comet self-attestation {#comets}
57+## Comet self-attestation {% #comets %}
5858
5959Recall that the `@p` of a comet is the hash of their 128-bit public key cast as
6060a `@p`. Since the public key of a comet is not stored on Azimuth, a comet proves
@@ -74,7 +74,7 @@ be an attestation packet is why comets are unable to initiate communication with
7474one another, and also why comets must be the first to initiate communication
7575with a non-comet. This is a technical limitation with a planned workaround.
7676
77−## `+acru:ames` {#crypto-core}
77+## `+acru:ames` {% #crypto-core %}
7878
7979The `+crypto-core` in `$ames-state` is an `+acru:ames` core, a
8080[lead](/docs/hoon/reference/advanced#dry-polymorphism-and-core-nesting-rules)
content/docs/arvo/clay/examples.md+4−3
@@ -517,10 +517,11 @@ First, using the `send-task-take-gift.hoon` thread, let's try creating a new `de
517517
518518Now if we scry for our `desk`s we'll see `%foo` is there:
519519
520−```
520+{% customFence %}
521+
521522> .^((set desk) %cd /===)
522−{%bitcoin %base %landscape %webterm %garden %foo}
523−```
523+> &#x7B;&#x25;bitcoin %base %landscape %webterm %garden %foo}
524+> {% /customFence %}
524525
525526Next, we'll create a merge conflict and try a couple of things. Mount `%foo` with `|mount /=foo=`, then add a `foo.txt` to both `desk`s but with different text in each and `|commit` them.
526527
content/docs/arvo/clay/scry.md+5−4
@@ -49,10 +49,11 @@ A scry with a `care` of `%d` will return a `(set desk)` of the `desk`s that exis
4949
5050Example:
5151
52−```
53−> .^((set desk) %cd /===)
54−{%bitcoin %base %landscape %webterm %garden}
55−```
52+{% customFence %}
53+
54+\> .^((set desk) %cd /===)
55+&#x7B;&#x25;bitcoin %base %landscape %webterm %garden}
56+{% /customFence %}
5657
5758## %e - Static mark core.
5859
content/docs/arvo/eyre/guide.md+5−5
@@ -204,7 +204,7 @@ Server: urbit/vere-1.5
204204set-cookie: urbauth-~zod=0v1.1pseu.tq7hs.hps2t.ltaf1.tmqjm; Path=/; Max-Age=604800
205205content-type: text/html
206206
207−&lt;html>&lt;head>&lt;title>404 Not Found&lt;/title>&lt;/head>&lt;body>&lt;h1>Not Found&lt;/h1>&lt;p>There was an error while handling the request for /foo/bar/baz.json.&lt;/p>&lt;code>no scry result&lt;/code>&lt;/body>&lt;/html>
207+<html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>There was an error while handling the request for /foo/bar/baz.json.</p><code>no scry result</code></body></html>
208208```
209209
210210## Advanced
@@ -254,7 +254,7 @@ Note that this example does a lot of things manually for demonstrative purposes.
254254 ~& [mark req]
255255 ?+ method.request.q.req
256256 =/ data=octs
257− (as-octs:mimes:html '&lt;h1>405 Method Not Allowed&lt;/h1>')
257+ (as-octs:mimes:html '<h1>405 Method Not Allowed</h1>')
258258 =/ content-length=@t
259259 (crip ((d-co:co 1) p.data))
260260 =/ =response-header:http
@@ -272,7 +272,7 @@ Note that this example does a lot of things manually for demonstrative purposes.
272272 ::
273273 %'GET'
274274 =/ data=octs
275− (as-octs:mimes:html '&lt;h1>Hello, World!&lt;/h1>')
275+ (as-octs:mimes:html '<h1>Hello, World!</h1>')
276276 =/ content-length=@t
277277 (crip ((d-co:co 1) p.data))
278278 =/ =response-header:http
@@ -374,7 +374,7 @@ Content-Type: text/html
374374Content-Length: 22
375375transfer-encoding: chunked
376376
377−&lt;h1>Hello, World!&lt;/h1>%
377+<h1>Hello, World!</h1>%
378378```
379379
380380...which has succeed! This is because the `+on-poke` arm tests for http GET requests and responds with `Hello, World!` when it sees one:
@@ -382,7 +382,7 @@ transfer-encoding: chunked
382382```hoon
383383 %'GET'
384384=/ data=octs
385− (as-octs:mimes:html '&lt;h1>Hello, World!&lt;/h1>')
385+ (as-octs:mimes:html '<h1>Hello, World!</h1>')
386386=/ content-length=@t
387387 (crip ((d-co:co 1) p.data))
388388=/ =response-header:http
content/docs/arvo/eyre/scry.md+12−12
@@ -14,7 +14,7 @@ All examples are run from the dojo.
1414
1515An `x` scry with a `path` of `/cors` will return Eyre's CORS origin registry. The type returned is a [cors-registry](/docs/arvo/eyre/data-types#cors-registry) which contains the `set`s of approved, rejected and requested origins.
1616
17−### Example
17+### Example {% #example-1 %}
1818
1919```
2020> .^(cors-registry:eyre %ex /=//=/cors)
@@ -28,7 +28,7 @@ An `x` scry with a `path` of `/cors` will return Eyre's CORS origin registry. Th
2828
2929An `x` scry with a `path` of `/cors/requests` will return the `set` of pending origin requests. These are origins that were in an `Origin: ...` HTTP header but weren't in the existing approved or rejected sets. The type returned is a `(set origin:eyre)`.
3030
31−### Example
31+### Example {% #example-2 %}
3232
3333```
3434> .^(requests=(set origin:eyre) %ex /=//=/cors/requests)
@@ -39,7 +39,7 @@ requests={~~http~3a.~2f.~2f.baz~.example}
3939
4040An `x` scry with a `path` of `/cors/approved` will return the `set` of approved CORS origins. The type returned is a `(set origin:eyre)`.
4141
42−### Example
42+### Example {% #example-3 %}
4343
4444```
4545> .^(approved=(set origin:eyre) %ex /=//=/cors/approved)
@@ -52,7 +52,7 @@ An `x` scry whose `path` is `/cors/approved/{ORIGIN}` tests whether the given or
5252
5353The origin URL is a `@t`, but since `@t` may not be valid in a path, it must be encoded in a `@ta` using `+scot` like `(scot %t 'foo')` rather than just `'foo'`.
5454
55−### Examples
55+### Examples {% #examples-1 %}
5656
5757```
5858> .^(? %ex /=//=/cors/approved/(scot %t 'http://foo.example'))
@@ -68,7 +68,7 @@ The origin URL is a `@t`, but since `@t` may not be valid in a path, it must be
6868
6969An `x` scry with a `path` of `/cors/rejected` will return the `set` of rejected CORS origins. The type returned is a `(set origin:eyre)`.
7070
71−### Example
71+### Example {% #example-4 %}
7272
7373```
7474> .^(rejected=(set origin:eyre) %ex /=//=/cors/rejected)
@@ -81,7 +81,7 @@ An `x` scry whose `path` is `/cors/rejected/{ORIGIN}` tests whether the given or
8181
8282The origin URL must be a cord-encoded `@t` rather than just the plain `@t`, so you'll have to do something like `(scot %t 'foo')` rather than just `'foo'`.
8383
84−### Examples
84+### Examples {% #examples-2 %}
8585
8686```
8787> .^(? %ex /=//=/cors/rejected/(scot %t 'http://bar.example'))
@@ -99,7 +99,7 @@ An `x` scry whose `path` is `/authenticated/cookie/{COOKIE}` tests whether the g
9999
100100The cookie must be the full cookie including the `urbauth-{SHIP}=` part. The cookie must be a cord-encoded `@t` rather than just a plain `@t`, so you'll have to do something like `(scot %t 'foo')` rather than just `'foo'`.
101101
102−### Examples
102+### Examples {% #examples-3 %}
103103
104104```
105105> .^(? %ex /=//=/authenticated/cookie/(scot %t 'urbauth-~zod=0vvndn8.bfsjj.j3614.k40ha.8fomi'))
@@ -115,7 +115,7 @@ The cookie must be the full cookie including the `urbauth-{SHIP}=` part. The coo
115115
116116A scry with `bindings` in place of the `desk` in the `beak` will return Eyre's URL path bindings. The type returned is a `(list [binding:eyre duct action:eyre])` (see the [$binding](/docs/arvo/eyre/data-types#binding) & [$action](/docs/arvo/eyre/data-types#action) sections of the Data Types document for details).
117117
118−### Example
118+### Example {% #example-5 %}
119119
120120```
121121> .^((list [binding:eyre duct action:eyre]) %e /=bindings=)
@@ -136,7 +136,7 @@ A scry with `bindings` in place of the `desk` in the `beak` will return Eyre's U
136136
137137A scry with `bindings` in place of the `desk` in the `beak` will return all open HTTP connections that aren't fully complete. The type returned is a `(map duct outstanding-connection:eyre)` (see the [$outstanding-connection](/docs/arvo/eyre/data-types#outstanding-connection) section of the Data Types document for details).
138138
139−### Example
139+### Example {% #example-6 %}
140140
141141```
142142> .^((map duct outstanding-connection:eyre) %e /=connections=)
@@ -147,7 +147,7 @@ A scry with `bindings` in place of the `desk` in the `beak` will return all open
147147
148148A scry with `authentication-state` in place of the `desk` in the `beak` will return authentication details of all current sessions. The type returned is a [$authentication-state](/docs/arvo/eyre/data-types#authentication-state). The `p` field is the cookie sans the `urbauth-{SHIP}=` part.
149149
150−### Example
150+### Example {% #example-7 %}
151151
152152```
153153> .^(authentication-state:eyre %e /=authentication-state=)
@@ -162,7 +162,7 @@ A scry with `authentication-state` in place of the `desk` in the `beak` will ret
162162
163163A scry with `channel-state` in place of the `desk` in the `beak` will return details of the state of each channel. The type returned is a [channel-state](/docs/arvo/eyre/data-types#channel-state).
164164
165−### Example
165+### Example {% #example-8 %}
166166
167167```
168168> .^(channel-state:eyre %e /=channel-state=)
@@ -187,7 +187,7 @@ A scry with `channel-state` in place of the `desk` in the `beak` will return det
187187
188188A scry with `host` in place of the `desk` in the `beak` will return host details of the ship. The type returned is a `hart:eyre`.
189189
190−### Example
190+### Example {% #example-9 %}
191191
192192```
193193> .^(hart:eyre %e /=host=)
content/docs/arvo/overview.md+2−4
@@ -45,7 +45,7 @@ Arvo is designed to avoid the usual state of complex event networks: event spagh
4545
4646Unlike any other popular operating system, it is possible for a single human to understand every aspect of Arvo due to its compact size. The entire Urbit stack is around 30,000 lines of code, while the Arvo kernel is only about 1,000 lines of code. We strive for a small codebase because the difficulty in administering a system is roughly proportional to the size of its code base.
4747
48−## An operating function {#operating-function}
48+## An operating function {% #operating-function %}
4949
5050Arvo is the world's first _purely functional_ operating system, and as such it may reasonably be called an _operating function_. The importance of understanding this design choice and its relevance to the overarching goal cannot be understated. If you knew only a single thing about Arvo, let it be this.
5151
@@ -383,9 +383,7 @@ activates the vane it will have this context as its subject.
383383This cycle of `%pass`ing a `note` to `%pass`ing a `task` to `%give`ing a `gift`
384384to `%give`ing a `%sign` is summarized in the following diagram:
385385
386−<div style="text-align:center">
387−<img class="mv5 w-150" src="https://media.urbit.org/docs/arvo/cycle.png">
388−</div>
386+![](https://media.urbit.org/docs/arvo/cycle.png)
389387
390388Note that `%pass`ing a `note` doesn't _always_ result in a return - this diagram
391389just
content/docs/arvo/reference/cryptography.md+6−6
@@ -20,7 +20,7 @@ library reference.
2020[`+ed:crypto`](#ed), [`+aes:crypto`](#aes), and [`+crub:crypto`](#crub), with
2121the latter being the only one which is implemented as an [`+acru:ames`](/docs/arvo/ames/cryptography#crypto-core)-shaped core.
2222
23−## `+crub:crypto` {#crub}
23+## `+crub:crypto` {% #crub %}
2424
2525`+crub:crypto` implements an
2626[`+acru:ames`](/docs/arvo/ames/cryptography#crypto-core) core that implements
@@ -59,7 +59,7 @@ signed message using `+en:siva:aes` with the symmetric key, and then `+jam`s it.
5959
6060Crashes if `sek` is null.
6161
62−### `+sign:as` {#sign-as}
62+### `+sign:as` {% #sign-as %}
6363
6464```hoon
6565 ++ sign ::
@@ -122,7 +122,7 @@ Returns null in case of failure.
122122
123123Same as `+dy`, but crashes in case of failure.
124124
125−### `+en` {#en}
125+### `+en` {% #en %}
126126
127127```hoon
128128 ++ en :: encrypt
@@ -148,7 +148,7 @@ Returns the concatenation of `sgn.pub` and `cry.pub`.
148148
149149Returns the concatenation of `sgn.u.sek` and `cry.u.sek`.
150150
151−### `+pit:nu` {#nu}
151+### `+pit:nu` {% #nu %}
152152
153153```hoon
154154 ++ pit :: create keypair
@@ -187,7 +187,7 @@ if `+sec:ex` is not a `+crub` secret key.
187187Takes in a `pass` from a `+pub:ex:crub` and generates a new `+crub` core with
188188`pub` taken from `+pub:ex` and null `sek`.
189189
190−## `+ed:crypto` {#ed}
190+## `+ed:crypto` {% #ed %}
191191
192192This core contains cryptographic primitives and helper functions for elliptic
193193curve cryptography with [Curve25519](https://en.wikipedia.org/wiki/Curve25519).
@@ -206,7 +206,7 @@ rather than running in Nock natively. See the [Vere
206206documentation](/docs/vere/cryptography#ed) for more information about the
207207library utilized by jets.
208208
209−## `+aes:crypto` {#aes}
209+## `+aes:crypto` {% #aes %}
210210
211211This core contains cryptographic primitives and helper functions for
212212[AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) symmetric key
content/docs/arvo/reference/filesystem.md+1−1
@@ -41,7 +41,7 @@ is not perfectly adhered to - sometimes you may find structure definitions in
4141 run a particular test `+test-bar` in `/tests/foo.hoon` in dojo, enter `-test %/tests/foo/test-bar ~`. If a file is specified, every test in that file will
4242 run. If a folder is specified, every test in that folder will run.
4343
44−## `/sys` {#sys}
44+## `/sys` {% #sys %}
4545
4646`/sys` contains four files: `hoon.hoon`, `arvo.hoon`, `lull.hoon`, and
4747`zuse.hoon`. These are the files used to construct kernelspace. Only the `%base`
content/docs/arvo/tutorials/move-trace.md+13−11
@@ -44,7 +44,9 @@ followed by Enter. Your terminal should pretty print a series of `move`s that lo
4444["|||||||||||" %give %b %doze [i=//behn/0v1p.sn2s7 t=~]]
4545> -time ~s1
4646```
47+
4748followed by a pause of one second, then
49+
4850```
4951["" %unix p=%wake //behn ~2020.1.14..19.01.26..755d]
5052["|" %give %b %doze [i=//behn/0v1p.sn2s7 t=~]]
@@ -56,6 +58,7 @@ followed by a pause of one second, then
5658["||" %give %g [%unto %kick] [i=/g/use/dojo/~zod/out/~zod/spider/drum/wool t=~[/d //term/1]]]
5759~s1..0007
5860```
61+
5962This gives us a move trace that is a list of `move`s and some
6063associated metadata. Some of the `move`s are a bit of a distraction from what's
6164going on overall such as acknowledgements that a `poke` was received
@@ -71,7 +74,6 @@ terminal. Any `move`s besides `%pass` in the first segment of the move trace is
7174secondary process utilized for book-keeping, spawning processes, interpreting
7275commands, etc. All of this will be explained in detail below.
7376
74−
7577It is important to note that this move trace should be thought of
7678as being from the "point of view" of the kernel - each line represents the
7779kernel taking in a message from one source and passing it along to its
@@ -89,15 +91,12 @@ the move trace), and a particular focus on what code is being activated in the
8991first few lines that should equip you well enough to unravel the rest of the
9092move trace in as much detail as you desire.
9193
92−
9394### The call
9495
9596Let's put the first part of the move trace into a diagram to make following
9697along a little easier.
9798
98−<div style="text-align:center">
99−<img src="https://media.urbit.org/docs/arvo/move-trace-with-key.png">
100−</div>
99+![](https://media.urbit.org/docs/arvo/move-trace-with-key.png)
101100
102101Here, each arrow represents the passing of some information, with most of it
103102being from vane to vane. Here, when Vane A has an arrow to a card and then an
@@ -111,9 +110,11 @@ This simple action ends up involving four vanes - Dill, Gall, Behn, and Ford -
111110as well as four applications - hood, spider, dojo, and time.
112111
113112Now let's go through each line one by one.
113+
114114```
115115["" %unix p=%belt //term/1 ~2020.1.14..19.01.25..7556]
116116```
117+
117118This tells us that Unix has sent a `%belt` `card`, which corresponds to
118119terminal input (the Enter keystroke) at time `~2020.1.14..19.01.25..7556`
119120
@@ -123,6 +124,7 @@ Here is the line of code in `arvo.hoon`, found in the [section
123124```hoon
124125 ~? !lac ["" %unix -.q.ovo p.ovo now]
125126```
127+
126128First we note that this line is executed only if the laconic bit is set to true,
127129as we did when we input `|verb`. Here, `ovo` is the input `ovum`. Knowing that an `ovum` is a `[p=wire q=curd]`,
128130we can then say that this is a `%unix` `move` tagged with `%belt` whose cause is a `wire` given by `//term/1`,
@@ -155,7 +157,6 @@ instructions to `%poke` hood, which is a Gall app
155157primarily used for interfacing with Dill. Here, `+deal` is an arm for
156158`%pass`ing a `card` to Gall to ask it to create a `%deal` `task`:
157159
158−
159160```hoon
160161 ++ deal :: pass to %gall
161162 |= [=wire =deal:gall]
@@ -163,9 +164,11 @@ primarily used for interfacing with Dill. Here, `+deal` is an arm for
163164```
164165
165166Next in our move trace we have this:
167+
166168```
167169["|" %pass [%d %g] [[%deal [~zod ~zod] %hood %poke] /] [i=//term/1 t=~]]
168170```
171+
169172Here, Dill `%pass`es a `task` `card` saying to `%poke` Gall's hood app (with the
170173Enter keystroke).
171174
@@ -204,7 +207,7 @@ concerning the laconic bit (following `!lac`) we can mostly determine what is be
204207From the initial input event, Arvo has generated a `card` that it is now
205208`%pass`ing from Dill (represented by `%d`) to Gall (represented by `%g`). The
206209`card` is a `%deal` `task`, asking Gall to `%poke` hood using data that has
207−originated from the terminal `//term/1`, namely that the Enter key was pressed. The line `:- (runt [s.gum '|'] "")`
210+originated from the terminal `//term/1`, namely that the Enter key was pressed. The line `:- (runt [s.gum '|'] "")`
208211displays the causal chain length metadatum mentioned above. Lastly, `[~zod ~zod]` tells us that
209212`~zod` is both the sending and receiving ship.
210213
@@ -215,8 +218,7 @@ that cannot be directly read from the move trace in [brackets]. Onto the next li
215218["||" %pass [%g %g] [[%deal [~zod ~zod] %dojo %poke] /use/hood/~zod/out/~zod/dojo/drum/phat/~zod/dojo] [i=/d t=~[//term/1]]]
216219```
217220
218−Here is another `%pass` `move`, this time from Gall to iself as denoted by `[%g
219−%g]`. Gall's hood has received the `%deal` `card` from Dill, and in response it is
221+Here is another `%pass` `move`, this time from Gall to iself as denoted by `[%g %g]`. Gall's hood has received the `%deal` `card` from Dill, and in response it is
220222`%poke`ing dojo with the information [that Enter was pressed].
221223
222224```
@@ -229,6 +231,7 @@ the terminal prompt].
229231```
230232["||||" %give %g [%unto %fact] [i=/d t=~[//term/1]]]
231233```
234+
232235Gall's hood `%give`s a `gift` with a `%fact` to Dill [saying to replace the current terminal line with `~zod:dojo>`]
233236
234237Next is the `move` that is not actually printed in the move trace mentioned
@@ -316,7 +319,7 @@ passed, leading to a chain of `%give` `move`s that ultimately prints
316319Let's throw the move trace into a table:
317320
318321| length | move | vane(s) | card | duct |
319−|--------|---------|---------|-----------------|------------------------------------------------------------------------------------------------------------------|
322+| ------ | ------- | ------- | --------------- | ---------------------------------------------------------------------------------------------------------------- |
320323| 0 | `%unix` | | `%wake` | `//behn` |
321324| 1 | `%give` | `%b` | `%doze` | `//behn/0v1p.sn2s7` |
322325| 1 | `%give` | `%b` | `%wake` | `/g/use/spider/~zod/thread/~.dojo_0v6.210tt.1sme1.ev3qm.qgv2e.a754u/wait/~2020.1.14..19.01.26..7556 /d //term/1` |
@@ -375,4 +378,3 @@ Dill `%give`s a `%blit` (terminal output) event to Unix [saying to print a new l
375378```
376379
377380Gall's spider also closes the subscription from dojo [since the thread has completed].
378−
content/docs/azimuth/azimuth-eth.md+4−5
@@ -12,7 +12,7 @@ for the contract containing the business logic for this ledger. `Azimuth.eth`
1212cannot be modified directly by [galaxy vote](/docs/glossary/upgrade) - they are
1313only eligible to modify the Ecliptic.
1414
15−## Global state {#global}
15+## Global state {% #global %}
1616
1717The global state of `Azimuth.eth` is given by the following.
1818
@@ -42,7 +42,7 @@ tokens](https://eips.ethereum.org/EIPS/eip-721) and are indexed by a number
4242between `0` and `2^32-1`, e.g. a `uint32`. There are two data structures
4343associated to a given `uint32`: a `Point` and a `Deed`.
4444
45−## `Point`s {#points}
45+## `Point`s {% #points %}
4646
4747A `Point` contains data about networking keys and sponsorship status, arranged
4848in the following `struct`:
@@ -101,7 +101,7 @@ in the following `struct`:
101101 }
102102```
103103
104−## `Deed`s {#deeds}
104+## `Deed`s {% #deeds %}
105105
106106A `Deed` says which Ethereum address owns a given `Point` as well as several
107107[proxies](/docs/using/id/proxies) for that `Point`.
@@ -134,7 +134,7 @@ struct Deed
134134 }
135135```
136136
137−## Other state {#other}
137+## Other state {% #other %}
138138
139139Finally, each Ethereum address may set for itself a number of `operators`, as
140140defined and required by the [ERC-721
@@ -155,4 +155,3 @@ All data in this ledger is stored and processed locally on your ship by the
1551552](/docs/azimuth/l2/layer2) data. Because state transitions resulting from layer 2
156156transactions are not included in this ledger, in general the local store will
157157differ from what is kept in `Azimuth.eth`.
158−
content/docs/azimuth/azimuth.md+32−33
@@ -50,37 +50,37 @@ that stores the deed to your house.
5050
5151Azimuth consists of the following smart contracts:
5252
53− - [Azimuth.eth](https://etherscan.io/address/azimuth.eth)
54− `0x223c067f8cf28ae173ee5cafea60ca44c335fecb`: contains all on-chain state for
55− Azimuth. Most notably, ownership and public keys. Can't be modified directly,
56− you must use the Ecliptic.
57− - [Ecliptic.eth](https://etherscan.io/address/ecliptic.eth):
58− `0x9ef27de616154FF8B38893C59522b69c7Ba8A81c ` is used as an interface for
59− interacting with your points on-chain. Allows you to configure keys, transfer
60− ownership, etc.
61− - [Polls](https://etherscan.io/address/0x7fecab617c868bb5996d99d95200d2fa708218e4):
62− `0x7fecab617c868bb5996d99d95200d2fa708218e4` registers votes by the Galactic
63− Senate on proposals. These can be either static documents or Ecliptic
64− upgrades.
65− - [Linear Star
66− Release](https://etherscan.io/address/0x86cd9cd0992f04231751e3761de45cecea5d1801):
67− facilitates the release of blocks of stars to their owners over a period of
68− time.
69− - [Conditional Star
70− Release](https://etherscan.io/address/0x8c241098c3d3498fe1261421633fd57986d74aea):
71− `0x8c241098c3d3498fe1261421633fd57986d74aea` facilitates the release of
72− blocks of stars to their owners based on milestones.
73− - [Claims](https://etherscan.io/address/0xe7e7f69b34d7d9bd8d61fb22c33b22708947971a):
74− `0xe7e7f69b34d7d9bd8d61fb22c33b22708947971a` allows point owners to make
75− claims about (for example) their identity, and associate that with their
76− point.
77− - [Censures](https://etherscan.io/address/0x325f68d32bdee6ed86e7235ff2480e2a433d6189):
78− `0x325f68d32bdee6ed86e7235ff2480e2a433d6189` simple reputation management,
79− allowing galaxies and stars to flag points for negative reputation.
80− - [Delegated
81− Sending](https://etherscan.io/address/0xf6b461fe1ad4bd2ce25b23fe0aff2ac19b3dfa76):
82− enables network-effect like distributing of planets.
83−
53+- [Azimuth.eth](https://etherscan.io/address/azimuth.eth)
54+ `0x223c067f8cf28ae173ee5cafea60ca44c335fecb`: contains all on-chain state for
55+ Azimuth. Most notably, ownership and public keys. Can't be modified directly,
56+ you must use the Ecliptic.
57+- [Ecliptic.eth](https://etherscan.io/address/ecliptic.eth):
58+ `0x9ef27de616154FF8B38893C59522b69c7Ba8A81c ` is used as an interface for
59+ interacting with your points on-chain. Allows you to configure keys, transfer
60+ ownership, etc.
61+- [Polls](https://etherscan.io/address/0x7fecab617c868bb5996d99d95200d2fa708218e4):
62+ `0x7fecab617c868bb5996d99d95200d2fa708218e4` registers votes by the Galactic
63+ Senate on proposals. These can be either static documents or Ecliptic
64+ upgrades.
65+- [Linear Star
66+ Release](https://etherscan.io/address/0x86cd9cd0992f04231751e3761de45cecea5d1801):
67+ facilitates the release of blocks of stars to their owners over a period of
68+ time.
69+- [Conditional Star
70+ Release](https://etherscan.io/address/0x8c241098c3d3498fe1261421633fd57986d74aea):
71+ `0x8c241098c3d3498fe1261421633fd57986d74aea` facilitates the release of
72+ blocks of stars to their owners based on milestones.
73+- [Claims](https://etherscan.io/address/0xe7e7f69b34d7d9bd8d61fb22c33b22708947971a):
74+ `0xe7e7f69b34d7d9bd8d61fb22c33b22708947971a` allows point owners to make
75+ claims about (for example) their identity, and associate that with their
76+ point.
77+- [Censures](https://etherscan.io/address/0x325f68d32bdee6ed86e7235ff2480e2a433d6189):
78+ `0x325f68d32bdee6ed86e7235ff2480e2a433d6189` simple reputation management,
79+ allowing galaxies and stars to flag points for negative reputation.
80+- [Delegated
81+ Sending](https://etherscan.io/address/0xf6b461fe1ad4bd2ce25b23fe0aff2ac19b3dfa76):
82+ enables network-effect like distributing of planets.
83+
8484Walkthroughs of some of the smart contracts are linked to [below](#other).
8585
8686## Naive rollups
@@ -103,7 +103,7 @@ A casual overview of the naive rollups system can be found on the
103103[blog](/blog/rollups). Developers are encouraged to read our Layer 2
104104documentation, starting with the [Layer 2 Overview](/docs/azimuth/l2/layer2).
105105
106−## Other resources {#other}
106+## Other resources {% #other %}
107107
108108### [Urbit HD Wallet](/docs/azimuth/hd-wallet)
109109
@@ -135,4 +135,3 @@ transactions from within Urbit itself.
135135An explanation of how Azimuth indexes networking keys revisions and breaches to
136136keep track of the most recent set of networking keys necessary to communicate
137137with a ship.
138−
content/docs/azimuth/ecliptic.md+3−3
@@ -40,7 +40,7 @@ have a corresponding [layer 2 action](/docs/azimuth/l2/l2-actions), and/or can b
4040performed using [Bridge](/using/id/using-bridge). We note these facts where
4141applicable.
4242
43−## Write functions {#write}
43+## Write functions {% #write %}
4444
4545Here we briefly describe each function in `Ecliptic.eth` which allows one to write
4646data to Ethereum. These can be called using
@@ -194,7 +194,7 @@ section for more detail. The detach action available in Bridge is a layer 2
194194action, so a layer 1 detach must be done
195195[manually](https://etherscan.io/address/ecliptic.eth#writeContract).
196196
197−### Proxy management {#proxies}
197+### Proxy management {% #proxies %}
198198
199199These functions are used to manage the various
200200[proxies](/docs/using/id/proxies). All of these actions may be performed from Bridge.
@@ -383,7 +383,7 @@ this function has no valid arguments.
383383Sets 3 DNS domains by which galaxy IP addresses may be looked up as part of the
384384bootstrap process to get on the network. Currently, all three domains are `urbit.org`.
385385
386−## Read functions {#read}
386+## Read functions {% #read %}
387387
388388Here we briefly describe each function in the Ecliptic which allows one to read
389389data from the contract. These can be called using
content/docs/azimuth/flow.md+14−14
@@ -27,17 +27,18 @@ following sections outline what each component is responsible for and how it
2727communicates with the others.
2828
2929The Gall agents involved with Azimuth are summarized as follows:
30− - [`%azimuth`](#azimuth) - obtains and holds PKI state.
31− - [`%azimuth-rpc`](#azimuth-rpc) - JSON RPC-API for `%azimuth`.
32− - [`%eth-watcher`](#eth-watcher) - Ethereum event log collector.
33− - [`%roller`](#roller) - submits batches of L2 transactions to Ethereum.
34− - [`%roller-rpc`](#roller-rpc) - JSON RPC-API for `%roller`.
35−
30+
31+- [`%azimuth`](#azimuth) - obtains and holds PKI state.
32+- [`%azimuth-rpc`](#azimuth-rpc) - JSON RPC-API for `%azimuth`.
33+- [`%eth-watcher`](#eth-watcher) - Ethereum event log collector.
34+- [`%roller`](#roller) - submits batches of L2 transactions to Ethereum.
35+- [`%roller-rpc`](#roller-rpc) - JSON RPC-API for `%roller`.
36+
3637The transaction processing library is [`/lib/naive.hoon`](#naive).
37−
38+
3839### Gall agents
3940
40−#### `%azimuth` {#azimuth}
41+#### `%azimuth` {% #azimuth %}
4142
4243`%azimuth`, located at `/app/azimuth.hoon`, is a Gall agent and thread handler
4344responsible for finding Azimuth transactions gathered by `%eth-watcher`,
@@ -79,12 +80,12 @@ Scries can be inferred from the `+on-peek` arm:
7980 ==
8081```
8182
82−#### `%azimuth-rpc` {#azimuth-rpc}
83+#### `%azimuth-rpc` {% #azimuth-rpc %}
8384
8485`%azimuth-rpc`, located at `app/azimuth-rpc.hoon`, is a JSON RPC-API for getting
8586`point` and `dns` data from the Azimuth PKI state kept by `%azimuth`.
8687
87−#### `%eth-watcher` {#eth-watcher}
88+#### `%eth-watcher` {% #eth-watcher %}
8889
8990`%eth-watcher`, located at `/app/eth-watcher.hoon`, is responsible for listening
9091to an Ethereum node and collecting event logs from it. It is general-purpose and
@@ -94,11 +95,11 @@ not particular to Azimuth. It sends collected transactions to `+on-agent` in
9495
9596[![Eth-watcher](https://media.urbit.org/docs/layer2/roller-agents.png)](https://media.urbit.org/docs/layer2/roller-agents.png)
9697
97−#### `%roller` {#roller}
98+#### `%roller` {% #roller %}
9899
99100`%roller`, stored at `/app/roller.hoon`, is a Gall agent responsible for
100101collecting and submitting batches of layer 2 transactions to the Ethereum
101−blockchain. Among other things, it keeps
102+blockchain. Among other things, it keeps
102103track of a list of pending transactions to be sent, transactions it has sent
103104that are awaiting confirmation, history of transactions sent organized by
104105Ethereum address, and when the next batch of transactions will be sent. See also
@@ -152,7 +153,7 @@ does not keep any state - its only purpose is to act as an intermediary between
152153Bridge and `%roller`. See [here](/docs/azimuth/l2/layer2-api) for more
153154information on the JSON RPC-API.
154155
155−### `naive.hoon` {#naive}
156+### `naive.hoon` {% #naive %}
156157
157158`/lib/naive.hoon` consists of a gate whose sample is a `verifier`, `chain-id=@ud`,
158159`state`, and `input`, which outputs a cell of `[effects state]`. This is the
@@ -229,4 +230,3 @@ standard](https://eips.ethereum.org/EIPS/eip-721).
229230
230231`dns` is a list of DNS entries by which galaxy IP addresses may be looked up. At
231232present, this is always `~['urbit.org' 'urbit.org' 'urbit.org']`.
232−
content/docs/azimuth/l2/bytestring.md+8−8
@@ -24,12 +24,11 @@ We describe the byte format of a `batch` and its components in the following.
2424All atoms described here are read by the parser as little-endian - i.e. it reads
2525the last digit first and proceeds backwards.
2626
27−For the purposes of concatenation, all atoms are encoded using `octs=(pair @ud
28−@)`, which is a way to represent atoms with a fixed width in order to account
27+For the purposes of concatenation, all atoms are encoded using `octs=(pair @ud @)`, which is a way to represent atoms with a fixed width in order to account
2928for leading zeroes. Here `@ud` will be the length of the atom in bytes, while
3029the `@` is actual atom.
3130
32−### Batches {#batch}
31+### Batches {% #batch %}
3332
3433A `batch` is an atom that is the concatenation of several raw transactions,
3534which are themselves atoms. `naive.hoon` starts reading the `batch` from the end
@@ -57,7 +56,7 @@ nonce, chain ID, and header to a given action and uses that to verify the
5756corresponding signature, rather than just the action itself. This reduces the
5857number of bytes in the batch, making transactions cheaper.
5958
60−### Actions {#actions}
59+### Actions {% #actions %}
6160
6261The byte format of an action as they appear in a `batch` is as
6362follows. They are parsed by the `+parse-tx` arm in `naive.hoon`.
@@ -71,6 +70,7 @@ remainder: arguments
7170```
7271
7372The `proxy` is an atom between `0` and `4`, which corresponds as follows:
73+
7474```
7575%0 %own
7676%1 %spawn
@@ -78,6 +78,7 @@ The `proxy` is an atom between `0` and `4`, which corresponds as follows:
7878%3 %vote
7979%4 %transfer
8080```
81+
8182Note that `%vote` proxies are not supported by layer 2.
8283
8384The ship is its `@p` encoded as an `@`. As we are working with fixed width
@@ -131,7 +132,7 @@ As before, the length of the ship argument is always 4 bytes.
131132#### `%escape`, `%cancel-escape`, `%adopt`, `%reject`, `%detach`
132133
133134Each of these actions have the same argument - a single ship. Again, the length
134−of the ship argument is always 4 bytes.
135+of the ship argument is always 4 bytes.
135136
136137```
1371384 bytes: ship
@@ -147,7 +148,7 @@ Each of these actions have the same argument - an Ethereum address:
1471481 bit: padding
148149```
149150
150−### Unsigned transactions {#unsigned}
151+### Unsigned transactions {% #unsigned %}
151152
152153An unsigned transaction is an atom consisting of the concatentation of an Ethereum signed
153154message header, an Urbit ID header, a chain ID, a nonce, and an action. This has the following format:
@@ -186,7 +187,7 @@ additional data listed above. When a ship determines whether or not a given
186187layer 2 action is valid, it adds the additional data to the action to form an
187188unsigned transaction and verifies the signature against that.
188189
189−### Signatures {#signatures}
190+### Signatures {% #signatures %}
190191
191192The signature is a 65-byte ECDSA signature as described in
192193[EIP-191](https://eips.ethereum.org/EIPS/eip-191) and is compatible with
@@ -198,4 +199,3 @@ an [unsigned transaction](#unsigned).
198199Because of the format of signatures, it may have leading zeroes resulting in a
19920064-byte signature, and so it is important to use `octs` to ensure that it is
200201interpreted as being 65 bytes.
201−
content/docs/azimuth/l2/layer2.md+44−45
@@ -42,37 +42,37 @@ We briefly review how "Layer 1", i.e. the [Azimuth](/docs/glossary/azimuth) smar
4242contract suite, functions. An update to the Azimuth PKI data stored on your urbit
4343occurs with four steps:
4444
45− 1. A transaction is posted to the Ethereum blockchain.
46− 2. The [Ethereum Virtual Machine](https://ethereum.org/en/developers/docs/evm/)
45+1. A transaction is posted to the Ethereum blockchain.
46+2. The [Ethereum Virtual Machine](https://ethereum.org/en/developers/docs/evm/)
4747 calculates the resulting state transition and checks its validity, then
4848 updates the state if it is a valid transition.
49− 3. Your urbit downloads the new state from an Ethereum node.
50− 4. Your urbit makes the final decision on whether the new state is valid.
49+3. Your urbit downloads the new state from an Ethereum node.
50+4. Your urbit makes the final decision on whether the new state is valid.
5151
5252By default, step four always succeeds. It has always been possible in theory for
5353your urbit to dispute what it read on Ethereum, but there has never been any
5454reason to do so.
5555
56−### Layer 2 {#layer-2}
56+### Layer 2 {% #layer-2 %}
5757
5858Layer 1 still functions identically today as it did before naive rollups. Naive
5959rollups work via the following process.
6060
61− 1. A batch of one or more transactions is posted to the Ethereum blockchain by
61+1. A batch of one or more transactions is posted to the Ethereum blockchain by
6262 an urbit node called a roller or aggregator.
63− 2. Your urbit downloads the transactions from an Ethereum node.
64− 3. Your urbit computes the resulting state transitions from the transactions
63+2. Your urbit downloads the transactions from an Ethereum node.
64+3. Your urbit computes the resulting state transitions from the transactions
6565 and checks them for validity.
66− 4. Your urbit updates its locally stored Azimuth state using state transitions
66+4. Your urbit updates its locally stored Azimuth state using state transitions
6767 from the batch that have been deemed valid.
68−
69− In comparison with Layer 1, the EVM no longer checks the validity or computes
70− the state transitions for any given transaction. It is now being used solely as
71− a database of submitted transactions, and the business logic of computing what
72− these transactions mean has been offloaded to your urbit. Thus we think of
73− `naive.hoon` as being the first "Hoon smart contract". You could also consider
68+
69+In comparison with Layer 1, the EVM no longer checks the validity or computes
70+the state transitions for any given transaction. It is now being used solely as
71+a database of submitted transactions, and the business logic of computing what
72+these transactions mean has been offloaded to your urbit. Thus we think of
73+`naive.hoon` as being the first "Hoon smart contract". You could also consider
7474steps 3 and 4 of the Layer 2 process as being a fattening of the trivial step 4
75− of the layer 1 process.
75+of the layer 1 process.
7676
7777Here we briefly elaborate on the layer 2 steps, but see below for more technical
7878detail.
@@ -96,17 +96,17 @@ the Gall agent `/app/azimuth.hoon` accordingly.
9696There are several dimensions by which naive rollups saves on gas over layer 1.
9797They are:
9898
99− 1. Gas is not spent on instructing the EVM to compute state transitions and
99+1. Gas is not spent on instructing the EVM to compute state transitions and
100100 confirm validity.
101− 2. Layer 2 Azimuth state is not stored on Ethereum, so the only data storage
101+2. Layer 2 Azimuth state is not stored on Ethereum, so the only data storage
102102 gas costs is for the transactions themselves.
103− 3. Layer 2 transactions are written in a highly compressed form. E.g., instead
103+3. Layer 2 transactions are written in a highly compressed form. E.g., instead
104104 of calling the spawn action by name, it is simply referred to as action `%1`.
105− 4. By collecting multiple layer 2 transactions and submitting them as a single
105+4. By collecting multiple layer 2 transactions and submitting them as a single
106106 "batch transaction", additional gas savings are achieved by not needing to
107107 duplicate information such as which smart contract the transactions are
108108 intended for.
109−
109+
110110Put together, these create a reduction in gas costs of at least 65x when adding
111111a transaction to a sufficiently large batch (approximately 30 or more
112112transactions). A single transaction submitted as a batch is approximately 5x
@@ -132,7 +132,7 @@ For a complete list of what layer 2 actions each ship rank, layer, and proxy can
132132perform, see [Layer 2 Actions](/docs/azimuth/l2/l2-actions). For an explicit
133133description of the byte format of Layer 2 Ethereum transaction, see [Bytestring format](/docs/azimuth/l2/bytestring).
134134
135−### Sponsorship {#sponsorship}
135+### Sponsorship {% #sponsorship %}
136136
137137Due to the possibility of sponsors and sponsees existing on different layers,
138138the precise logic of how sponsorship works is complex. However, under common
@@ -160,37 +160,37 @@ transitions](#sponsorship-state-transitions) section below, we give a table that
160160shows how the sponsor and escape status of a ship changes according to which
161161actions are taken.
162162
163−### Smart contracts {#smart-contracts}
163+### Smart contracts {% #smart-contracts %}
164164
165165Smart contracts are unable to own layer 2 ships, and thus cannot sign layer 2
166166transactions. This creates a hard requirement that layer 1 ships be allowed to
167167perform a layer 1 detach operation on a layer 2 ships.
168168
169−## Azimuth state {#state}
169+## Azimuth state {% #state %}
170170
171171The introduction of layer 2 presents additional complication in understanding
172172Azimuth state. In order to be precise we define the following terminology:
173173
174− - _Layer 1 Azimuth state_ refers to the state of Azimuth as reflected on the
175− Ethereum blockchain. This excludes all layer 2 transactions. Depositing to
176− layer 2 is considered a layer 1 action, so the layer 1 Azimuth state is aware
177− of which ships are on layer 2, but is blind to everything that happens to
178− them afterward.
179− - _Layer 2 Azimuth state_ refers to the state of Azimuth as stored in
180− `/app/azimuth.hoon` on your ship. The state here takes into account
181− transactions that occur on both layers. No distinction between the
182− layers is made in the state here - e.g. a ship only has one sponsor in Layer 2
183− Azimuth state, not a layer 1 sponsor and a layer 2 sponsor. This is the state
184− actually in use by Urbit. Layer 1 Azimuth state is now only an input for
185− generating Layer 2 Azimuth state, so any time a ship needs to check e.g. the
186− public key of a ship (regardless of which layer it is on), it will check the
187− Layer 2 Azimuth state, not the Layer 1 Azimuth state.
188− - _Layer-2-Only Azimuth state_ refers to the state of Azimuth as reflected
189− solely by layer 2 transactions. This state is not explicitly stored anywhere,
190− but is computed as part of the process to create the Layer 2 Azimuth state.
191− We do not make any further references to this state, but it is important to
192− keep in mind conceptually.
193−
174+- _Layer 1 Azimuth state_ refers to the state of Azimuth as reflected on the
175+ Ethereum blockchain. This excludes all layer 2 transactions. Depositing to
176+ layer 2 is considered a layer 1 action, so the layer 1 Azimuth state is aware
177+ of which ships are on layer 2, but is blind to everything that happens to
178+ them afterward.
179+- _Layer 2 Azimuth state_ refers to the state of Azimuth as stored in
180+ `/app/azimuth.hoon` on your ship. The state here takes into account
181+ transactions that occur on both layers. No distinction between the
182+ layers is made in the state here - e.g. a ship only has one sponsor in Layer 2
183+ Azimuth state, not a layer 1 sponsor and a layer 2 sponsor. This is the state
184+ actually in use by Urbit. Layer 1 Azimuth state is now only an input for
185+ generating Layer 2 Azimuth state, so any time a ship needs to check e.g. the
186+ public key of a ship (regardless of which layer it is on), it will check the
187+ Layer 2 Azimuth state, not the Layer 1 Azimuth state.
188+- _Layer-2-Only Azimuth state_ refers to the state of Azimuth as reflected
189+ solely by layer 2 transactions. This state is not explicitly stored anywhere,
190+ but is computed as part of the process to create the Layer 2 Azimuth state.
191+ We do not make any further references to this state, but it is important to
192+ keep in mind conceptually.
193+
194194Layer 1 Azimuth state is computed by the Ethereum Virtual Machine. Layer 2
195195Azimuth state is computed by taking in the Layer 1 Azimuth state and modifying
196196it according to layer 2 transactions using `/lib/naive.hoon`. When we are being
@@ -401,4 +401,3 @@ submitted to is taking too long for your liking, and you want to try again with
401401another. If both rollers end up submitting the transaction, only the first one
402402will succeed, as the second one will be ignored by `naive.hoon` for having the
403403wrong nonce.
404−
content/docs/azimuth/l2/roller-tutorial.md+21−61
@@ -28,11 +28,13 @@ the roller that performs these actions, and "front-end" refers to the optional
2828web GUI most users will use to interact with your roller (probably Bridge).
2929
3030There are three main steps involved with setting up a roller:
31− - ensuring that the data in `%azimuth` is up to date,
32− - starting and configuring `%roller`,
33− - aiming your front-end at the roller
31+
32+- ensuring that the data in `%azimuth` is up to date,
33+- starting and configuring `%roller`,
34+- aiming your front-end at the roller
3435
3536### 1. Make sure `%azimuth` state is up to date
37+
3638If you are using an ordinary live ship on the network as the roller, you should
3739already have the latest `%azimuth` state and this step should not be necessary
3840and you may move to step 2.
@@ -51,7 +53,8 @@ found under the Setting page for the node on infura.io listed under `ENDPOINTS`.
5153If you do not perform this step, you'll later see an error "roller not ready"
5254when the first roller batch is about to be submitted.
5355
54−### 2. Starting and configuring `%roller` {#step2}
56+### 2. Starting and configuring `%roller` {% #step2 %}
57+
5558This step must be performed whether you're using a fakezod or a live ship.
5659
5760First we need to start `%roller` and `%roller-rpc` (the agent used to send
@@ -60,8 +63,7 @@ instead will be accepting transactions to batch entirely from within Urbit,
6063`%roller-rpc` is not necessary. We assume you will be using Bridge as a
6164front-end.
6265
63−To start the agents, enter the following command in dojo: `|rein %base [&
64−%roller] [& %roller-rpc]`. You should see the following response:
66+To start the agents, enter the following command in dojo: `|rein %base [& %roller] [& %roller-rpc]`. You should see the following response:
6567
6668```
6769gall: installing %roller-rpc
@@ -90,8 +92,8 @@ available but do not participate in propagating transactions). Enter
9092`:roller|endpoint 'https://MAINNET_INFURA_URL' %mainnet` into dojo.
9193
9294Next we set the private key for the Ethereum wallet from which batches built by
93−`%roller` will be submitted. We *strongly emphasize* that this step has serious
94−security implications. *`%roller` will be able to spend ETH in this wallet.*
95+`%roller` will be submitted. We _strongly emphasize_ that this step has serious
96+security implications. _`%roller` will be able to spend ETH in this wallet._
9597This is mandatory, of course, as the primary function of `%roller` is to submit
9698batches of transactions to Ethereum, which requires ETH. If you downloaded
9799`%roller` from someone other than Tlon and have not personally audited their
@@ -157,56 +159,14 @@ set up at `https://myroller.sampel-pal.net`.
157159rate at which transactions are submitted and manually submitting batches. These
158160can be modified using the following generators:
159161
160−<table>
161− <thead><tr><th>Dojo Command</th><th>Description</th><th>Argument</th></tr></thead>
162−<tbody>
163− <tr>
164− <td><code>:roller|commit</code></td>
165− <td>Submits a new L2 batch with all pending transactions.</td>
166− <td>None.</td>
167− </tr>
168− <tr>
169− <td><code>:roller|config</code></td>
170− <td>General configuration command.</td>
171− <td><code>$config</code> (see <code>/sur/dice.hoon</code>)</td>
172− </tr>
173− <tr>
174− <td><code>:roller|endpoint</code></td>
175− <td>Set the Infura endpoint.</td>
176− <td><code>[@t ?(%mainnet %ropsten %local)]</code></td>
177− </tr>
178− <tr>
179− <td><code>:roller|frequency</code></td>
180− <td>Sets the frequency at which batches are submitted.</td>
181− <td><code>@dr</code></td>
182− </tr>
183− <tr>
184− <td><code>:roller|local</code></td>
185− <td>Configures <code>%roller</code> to listen to a local Ethereum node at port 8545.</td>
186− <td>None.</td>
187− </tr>
188− <tr>
189− <td><code>:roller|quota</code></td>
190− <td>Modified the number of txs a ship is allowed to send per unit time.</td>
191− <td><code>@ud</code></td>
192− </tr>
193− <tr>
194− <td><code>:roller|ropsten</code></td>
195− <td>Configure %roller to listen to a preset Ropsten Infura node.</td>
196− <td>None.</td>
197− </tr>
198− <tr>
199− <td><code>:roller|setkey</code></td>
200− <td>Load a private key into the roller and retrieves its L1 nonce.</td>
201− <td><code>@t</code></td>
202− </tr>
203− <tr>
204− <td><code>:roller|slice</code></td>
205− <td>Modified the unit of time for each ship's quota.</td>
206− <td><code>@dr</code></td>
207− </tr>
208−</tbody>
209−</table>
210−
211−
212−
162+| Dojo Command | Description | Argument |
163+| -------------------- | --------------------------------------------------------------------- | ---------------------------------- |
164+| `:roller\|commit` | Submits a new L2 batch with all pending transactions. | None. |
165+| `:roller\|config` | General configuration command. | `$config` (see `/sur/dice.hoon`) |
166+| `:roller\|endpoint` | Set the Infura endpoint. | `[@t ?(%mainnet %ropsten %local)]` |
167+| `:roller\|frequency` | Sets the frequency at which batches are submitted. | `@dr` |
168+| `:roller\|local` | Configures `%roller` to listen to a local Ethereum node at port 8545. | None. |
169+| `:roller\|quota` | Modified the number of txs a ship is allowed to send per unit time. | `@ud` |
170+| `:roller\|ropsten` | Configure `%roller` to listen to a preset Ropsten Infura node. | None. |
171+| `:roller\|setkey` | Load a private key into the roller and retrieves its L1 nonce. | `@t` |
172+| `:roller\|slice` | Modified the unit of time for each ship's quota. | `@dr` |
content/docs/development/develop.md+3−3
@@ -25,7 +25,7 @@ Below we'll go into more detail about each of these options and do our best to
2525point you towards a number of additional helpful resources that can be found
2626throughout the docs.
2727
28−### Build Clients {#clients}
28+### Build Clients {% #clients %}
2929
3030Urbit ships with [Landscape](/docs/glossary/landscape), which can be thought
3131of as its flagship client. Landscape can be broken into two different technical
@@ -55,7 +55,7 @@ Alternatively, command-line interface (CLI) applications can be built using a
5555library called `shoe`, which you can learn more about
5656[here](/docs/hoon/guides/cli-tutorial). This does require Hoon knowledge.
5757
58−### Develop Agents {#agents}
58+### Develop Agents {% #agents %}
5959
6060Gall agents can be best thought of as individual services with a
6161statically-typed interface and built-in database. They're written in
@@ -70,7 +70,7 @@ If you want to learn how to build gall agents, your best bet is to first [learn
7070the Hoon programming language](/docs/hoon/hoon-school/), and then follow that
7171up with the [Gall guide](/docs/userspace/gall-guide/intro).
7272
73−### Contribute to Urbit Core {#core}
73+### Contribute to Urbit Core {% #core %}
7474
7575Working on the core means improving the Urbit project itself, working with the
7676existing community of Urbit developers. The kernel is much more stable, but
content/docs/development/grants.md+4−4
@@ -16,7 +16,7 @@ If you're curious about grants, join the conversation in Landscape at
1616`~wolref-podlex/foundation` or book some time to [talk with
1717us](https://calendly.com/wolref/30min).
1818
19−### Bounties {#bounties}
19+### Bounties {% #bounties %}
2020
2121[Bounties](https://grants.urbit.org/bounties) are specific, tightly-scoped
2222pieces of work that we at the Urbit Foundation think are of high value to the
@@ -26,7 +26,7 @@ relate to marketing, community-building or technical writing.
2626Bounties are usually competitive&mdash;worker requests should provide plenty of
2727information about why the requester is right candidate for the job.
2828
29−### Proposals {#proposals}
29+### Proposals {% #proposals %}
3030
3131Where Bounties are put forward by the Foundation,
3232[Proposals](https://grants.urbit.org/proposals) come from the community. These
@@ -54,7 +54,7 @@ obvious that a lot of thought has gone into the idea.
5454If you've got an idea and want some help turning it into a proposal, book some
5555time with us [here](https://calendly.com/wolref/30min).
5656
57−### Scholarships {#scholarships}
57+### Scholarships {% #scholarships %}
5858
5959Scholarships are the newest addition to the grants program that pairs
6060contributors with core Urbit developers to tackle infrastructure projects. These
@@ -71,7 +71,7 @@ New scholarships are posted within the Foundation group in Landscape
7171(`~wolref-podlex/foundation`), and you can sign up for the waitlist using [this
7272form](https://airtable.com/shr6Xmo55h8dZ0O46).
7373
74−### Gifts {#gifts}
74+### Gifts {% #gifts %}
7575
7676Not every contribution is made with a plan or according to a specification.
7777Sometimes people just fix issues, help newcomers, or promote the project because
content/docs/development/precepts.md+186−196
@@ -4,333 +4,323 @@ weight = 40
44template = "doc.html"
55+++
66
7−<br>
7+![](https://media.urbit.org/site/posts/essays/pre-01.jpg)
88
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.
9+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.
1210
1311Some 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.
1412
1513We’ll start with a brief description of many principles, then we’ll go into a long-form justification.
1614
17−
18−
1915### A: General Design
2016
21−1) Data is better than code.
17+1. Data is better than code.
2218
23− Store data in your state, send data over the wire, dispatch based
24− on data.
19+ Store data in your state, send data over the wire, dispatch based
20+ on data.
2521
26−2) Everything should be CQRS.
22+2. Everything should be CQRS.
2723
28−3) (Almost) Everything should be pubsub.
24+3. (Almost) Everything should be pubsub.
2925
30−4) A subscriber shouldn't affect a publisher.
26+4. A subscriber shouldn't affect a publisher.
3127
32−5) Communication between nodes should be communication between
28+5. Communication between nodes should be communication between
3329 independent actors.
3430
35− Each message should do one complete thing, and there shouldn't
36− need to be a sequence of coupled messages.
31+ Each message should do one complete thing, and there shouldn't
32+ need to be a sequence of coupled messages.
3733
38−6) Represent your data as closely as possible to the essential structure
34+6. Represent your data as closely as possible to the essential structure
3935 of the problem.
4036
41−7) A client's representation of data should be as close as possible to
37+7. A client's representation of data should be as close as possible to
4238 that of the server.
4339
44− This blurs the distinction between client and server. It allows
45− offline-mode, reduces communication to syncing, and decentralizes.
40+ This blurs the distinction between client and server. It allows
41+ offline-mode, reduces communication to syncing, and decentralizes.
4642
47−8) When mating different paradigms, build one cleanly on top of the
43+8. When mating different paradigms, build one cleanly on top of the
4844 other.
4945
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.
46+ Never try to make them work on some of the same primitives. Never
47+ abuse one to make the other work. For example, ducts in
48+ themselves are very general - if you want to do pubsub, that can
49+ easily be built on top of ducts, but don't pretend that pubsub is
50+ a _part_ of the duct system.
5551
56−9) Never misuse an abstraction.
52+9. Never misuse an abstraction.
5753
58− An abstraction provides a certain set of tools; use them and only
59− them.
54+ An abstraction provides a certain set of tools; use them and only
55+ them.
6056
61−10) Correctness is more important than performance.
57+10. Correctness is more important than performance.
6258
63−11) Be simple and uncompromising in defining what's correct; go crazy
59+11. Be simple and uncompromising in defining what's correct; go crazy
6460 with optimizations.
6561
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
62+ Nock is a great example of this. It contains the character of the
63+ virtual machine, but its asymptotics are bad. Add jets to fix the
64+ asymptotics.
65+
66+ Another example is the ACID nature of Arvo. Arvo is a pure
67+ function f(logs) of its event log, so formally Arvo is just a
68+ function run against an event log. A naive implementation has
69+ very bad asymptotics; processing each new event is O(n) in the
70+ number of historical events. Choose the function g(state,log)
71+ such that f(logs ++ log) = g(f(logs),log). Then, as long as you
72+ keep the state in memory, processing each new event is constant in
73+ the number of previous events. This still requires O(n) restart
74+ from disk, but you can also periodically (and non-blockingly)
75+ write a checkpoint of the state to disk, so that restart from disk
76+ is only linear in the number of events since the last checkpoint.
77+
78+12. Correctness is more important than optimality.
79+
80+13. If you don't completely understand your code and the semantics of
8581 all the code it depends on, your code is wrong.
8682
87−14) Deterministic beats heuristic.
83+14. Deterministic beats heuristic.
8884
89− Heuristics are evil and should only be used where determinism is
90− infeasible, such as in cache reclamation.
85+ Heuristics are evil and should only be used where determinism is
86+ infeasible, such as in cache reclamation.
9187
92−15) Stateless is better than stateful.
88+15. Stateless is better than stateful.
9389
94−16) Explicit state is better than implicit state.
90+16. Explicit state is better than implicit state.
9591
96−17) Referential transparency is honesty and stability.
92+17. Referential transparency is honesty and stability.
9793
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.
94+ Lack of referential transparency and other forms of
95+ disingenuousness are some of the world's big problems. Only
96+ deviate from referential transparency if absolutely necessary.
10197
102−18) Responsibilities should be clearly separated.
98+18. Responsibilities should be clearly separated.
10399
104− This applies from kernel modules through network citizens.
100+ This applies from kernel modules through network citizens.
105101
106−19) Dualities must be faced head-on and analyzed differently at
102+19. Dualities must be faced head-on and analyzed differently at
107103 different layers.
108104
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.
105+ Statically typed vs. dynamically typed, imperative vs. functional,
106+ code vs. data, and effectful vs. pure can all be a matter of
107+ perspective, and all relevant perspectives must have coherent
108+ answers.
113109
114−20) One hundred lines of simplicity is better than twenty lines of
110+20. One hundred lines of simplicity is better than twenty lines of
115111 complexity.
116112
117− It's not enough for an abstraction to reduce code duplication; it
118− must actually make the code simpler.
113+ It's not enough for an abstraction to reduce code duplication; it
114+ must actually make the code simpler.
119115
120−21) Prefer mechanical simplicity to mathematical simplicity.
116+21. Prefer mechanical simplicity to mathematical simplicity.
121117
122− Often mechanical simplicity and mathematical simplicity go
123− together.
118+ Often mechanical simplicity and mathematical simplicity go
119+ together.
124120
125−22) The Law of Leaky Abstractions is a lie; abstract airtightly.
121+22. The Law of Leaky Abstractions is a lie; abstract airtightly.
126122
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.
123+ If your abstractions are leaking, it's not due to some law of the
124+ universe; you just suck at abstracting. Usually, you didn't
125+ specify the abstraction narrowly enough.
130126
131−23) Some cliches are repeated because they are true; others must be
127+23. Some cliches are repeated because they are true; others must be
132128 repeated because they are not.
133129
134−<br>
130+![](https://media.urbit.org/site/posts/essays/pre-03.jpg)
135131
136−<img class="ba" src="https://media.urbit.org/site/posts/essays/pre-03.jpg">
132+### B: Specific Design {% #specific %}
137133
138−### B: Specific Design {#specific}
134+1. Always ack a dupe; never ack an ack.
139135
140−1) Always ack a dupe; never ack an ack.
136+ It's okay to ack a nack as long as you never nack a nack.
141137
142− It's okay to ack a nack as long as you never nack a nack.
138+2. Never construct or deconstruct a duct.
143139
144−2) Never construct or deconstruct a duct.
140+3. Route on wire before sign, never sign before wire.
145141
146−3) Route on wire before sign, never sign before wire.
142+4. Only go from statically typed to dynamically typed if you must.
147143
148−4) Only go from statically typed to dynamically typed if you must.
144+ Once you go into a dynamically typed world, it's hard to go back.
145+ Statically typed is better than dynamically typed, so if something
146+ can be made static, it should be.
149147
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.
148+ Each timeless data structure is a brick in the foundation of
149+ digital civilization.
156150
157−5) Anything with business logic speaks one paradigm; anything that
151+5. Anything with business logic speaks one paradigm; anything that
158152 translates paradigms has no business logic.
159153
160−6) Functionally enforced semantic rules are better security primitives
154+6. Functionally enforced semantic rules are better security primitives
161155 than memory access restrictions.
162156
163− A compiler can use type safety as an effective tool to enforce
164− some classes of security guarantees.
165−
157+ A compiler can use type safety as an effective tool to enforce
158+ some classes of security guarantees.
166159
167160### C: Attitude
168161
169−1) Code courageously.
162+1. Code courageously.
170163
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.
164+ If you avoid changing a section of code for fear of awakening the
165+ demons therein, you are living in fear. If you stay in the
166+ comfortable confines of the small section of the code you wrote or
167+ know well, you will never write legendary code. All code was
168+ written by humans and can be mastered by humans.
176169
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.
170+ It's natural to feel fear of code; however, you must act as though
171+ you are able to master and change any part of it. To code
172+ courageously is to walk into any abyss, bring light, and make it
173+ right.
181174
182−2) No time for lazy people.
175+2. No time for lazy people.
183176
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.
177+ If there's clearly a right way to do something and a wrong way, do
178+ it the right way. Coding requires incredible discipline. Always
179+ follow conventions, and fire anyone who won't. Anything that can
180+ be solved by discipline is not a real problem.
188181
189− > "To him who knows to do good and does not do it, to him it is
190− sin."
182+ > "To him who knows to do good and does not do it, to him it is
183+ > sin."
191184
192−3) When a smart person makes an obviously stupid suggestion, before
185+3. When a smart person makes an obviously stupid suggestion, before
193186 responding take a full 60 seconds to envision how you would implement
194187 it and what the effects would be.
195188
196−
197189### D: Theory
198190
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.
191+1. Academia is a succubus.
205192
206−2) Never fear math.
193+ Academia has a really high ratio of smart people to useful
194+ products. Academia has many genuinely smart and interesting
195+ ideas, but always remember that pursuing them whole-heartedly will
196+ never result in a useful product.
207197
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.
198+2. Never fear math.
215199
216−3) Not being qualified to solve a problem is no reason not to solve it.
200+ Academia is inefficient, but it's also correct. Those people
201+ wasted a lot of time finding the right answer, but now that
202+ they've done it, you must exploit it. If you don't know the
203+ theory, learn it. No excuse for being "bad at math". Most who
204+ are "bad at math" are simply lazy or fearful. Be strong and of
205+ good courage. If you're truly so bad at math that you cannot
206+ learn it, you should not design systems.
217207
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."
208+3. Not being qualified to solve a problem is no reason not to solve it.
221209
222−4) The best way to get the right answer is to try it the wrong way.
210+ If you don't know how to do it, do it anyway. "We are too young
211+ to realize that certain things are impossible. So, we will do
212+ them anyway."
223213
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.
214+4. The best way to get the right answer is to try it the wrong way.
227215
228−5) Practice tells you that things are good or bad; theory tells you why.
216+ You cannot design a good system without spending most of your time
217+ in contact with the problem. The bad parts about systems are
218+ rarely obvious in theory, but often in practice.
229219
230− Never use theory to design a good system from scratch; only
231− practice can tell whether the system is good.
220+5. Practice tells you that things are good or bad; theory tells you why.
232221
233−6) Everyone must regularly alternate between theory and practice.
222+ Never use theory to design a good system from scratch; only
223+ practice can tell whether the system is good.
234224
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.
225+6. Everyone must regularly alternate between theory and practice.
239226
227+ There is an eternal wheel of system design. Given a system, use
228+ practice to discover what is bad, missing, or unnecessary. Then,
229+ use theory to fix the bad, add the missing, and remove the
230+ unnecessary. Repeat.
240231
241232### E: Text Style
242233
243−1) No code should extend beyond 80 characters, most within 55.
234+1. No code should extend beyond 80 characters, most within 55.
244235
245−2) Tabs aren't real.
236+2. Tabs aren't real.
246237
247−3) A text file is a series of lines, each ending with a newline
238+3. A text file is a series of lines, each ending with a newline
248239 character.
249240
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.
241+ Corollary: all non-empty text files end with a newline (often
242+ hidden by editors). An empty text file does not end with a
243+ newline.
255244
256−5) Don't name anything you don't have to.
245+4. One block comment is better than interleaved comments on every line.
257246
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`.
247+5. Don't name anything you don't have to.
262248
263− A more recent convention that follows the same principle is to
264− give the variable the same name as its type.
249+ This includes conventional names for variables of particular
250+ types. For example, the conventional name for a variable of type
251+ `path` is `pax`. You should have a good reason for using any
252+ other name for a `path`.
265253
266−6) If it's the same thing, give it the same name.
254+ A more recent convention that follows the same principle is to
255+ give the variable the same name as its type.
267256
268−7) Humans are good at memorizing.
257+6. If it's the same thing, give it the same name.
269258
270−8) Abbreviations aren't worth it.
259+7. Humans are good at memorizing.
271260
261+8. Abbreviations aren't worth it.
272262
273263### F: Real Software
274264
275−1) If it's not deterministic, it isn't real.
265+1. If it's not deterministic, it isn't real.
276266
277−2) If it's centralized, it isn't real.
267+2. If it's centralized, it isn't real.
278268
279−3) If it's owned by someone else, it isn't yours.
269+3. If it's owned by someone else, it isn't yours.
280270
281−4) If it's managed by someone else and you can't change who that is, it
271+4. If it's managed by someone else and you can't change who that is, it
282272 isn't yours.
283273
284−5) If it's not yours, it isn't permanent.
274+5. If it's not yours, it isn't permanent.
285275
286−6) If it's not permanent, it isn't real.
276+6. If it's not permanent, it isn't real.
287277
288−7) The way it is isn't always the way it ought to be.
278+7. The way it is isn't always the way it ought to be.
289279
290− If you can make it the way it ought to be, do so.
280+ If you can make it the way it ought to be, do so.
291281
292−8) The way it ought to be isn't always the way it is.
282+8. The way it ought to be isn't always the way it is.
293283
294− Some things can't be made more elegant.
284+ Some things can't be made more elegant.
295285
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.
286+ For every ailment under the sun
287+ There is a remedy, or there is none;
288+ If there be one, try to find it;
289+ If there be none, never mind it.
300290
301−9) Timeless software is good software.
291+9. Timeless software is good software.
302292
303−10) System modules should be designed to be frozen permanently;
293+10. System modules should be designed to be frozen permanently;
304294 conversely, Urbit consists of that system software which admits of a
305295 Kelvin version.
306296
307−11) The two procedures for achieving timelessness are distillation and
297+11. The two procedures for achieving timelessness are distillation and
308298 generalization.
309299
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.
300+ Every temporary or contingent feature in a system module should
301+ eventually either be removed (distillation) or relaxed into
302+ timelessness (generalization). For an example of the result of
303+ both procedures, consider the abstraction of the core in Nock and
304+ Hoon.
315305
316−12) Standardization is better than perfection.
306+12. Standardization is better than perfection.
317307
318− Kelvin versioning stops when we run out of versions, not when
319− every defect has been rectified.
308+ Kelvin versioning stops when we run out of versions, not when
309+ every defect has been rectified.
320310
321−13) That which cannot be Kelvin-versioned should update fluidly and
311+13. That which cannot be Kelvin-versioned should update fluidly and
322312 automatically.
323313
324− All incompatible upgrades should provide permanent and automatic
325− upgrade paths. This is principled permanent backward
326− compatibility.
314+ All incompatible upgrades should provide permanent and automatic
315+ upgrade paths. This is principled permanent backward
316+ compatibility.
327317
328−14) Humans are interactive and temporal; technology is permanent and
318+14. Humans are interactive and temporal; technology is permanent and
329319 exhaustive.
330320
331−15) Communities are autonomous.
321+15. Communities are autonomous.
332322
333−16) Sovereignty necessitates understanding.
323+16. Sovereignty necessitates understanding.
334324
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.
325+ If you don't understand a system you're using, you don't control
326+ it. If nobody understands the system, the system is in control.
content/docs/glossary/moon.md−1
@@ -18,7 +18,6 @@ Moons may be utilized for many purposes, including but not limited to:
1818 - testing software
1919 - bots
2020
21−
2221Looking towards the future, we expect moons to also be utilized as identities
2322for devices, such as such as phones, desktops, smart TVs, and digital thermostats
2423
content/docs/hoon/guides/cli-tutorial.md+4−4
@@ -27,7 +27,7 @@ lesson](/docs/hoon/hoon-school/generators#ask) on `sole` and `%ask`
2727generators, which only covers the bare minimum necessary to write generators
2828that take user input.
2929
30−## The `shoe` library {#the-shoe-library}
30+## The `shoe` library {% #the-shoe-library %}
3131
3232Here we describe how sessions are identified, the specialized `card`s that Gall agents
3333with the `shoe` library are able to utilize, and the different cores of `/lib/shoe.hoon` and their purpose.
@@ -146,7 +146,7 @@ This is a function for wrapping a `shoe` core, which has too many
146146arms to be a valid Gall agent core. This turns it into a standard Gall agent core by
147147integrating the additional arms into the standard ones.
148148
149−## The `sole` library {#the-sole-library}
149+## The `sole` library {% #the-sole-library %}
150150
151151`shoe` apps may create specialized `card`s of the `[%shoe (list @ta) shoe-effect]` shape, where `shoe-effect` currently just wrap `sole-effect`s, i.e. instructions for displaying text and producing other effects in the console.
152152
@@ -165,7 +165,7 @@ be structured as
165165[%mor [%txt "This is some text."] [%bel ~] ~]
166166```
167167
168−## `%shoe` app walkthrough {#shoe-app-walkthrough}
168+## `%shoe` app walkthrough {% #shoe-app-walkthrough %}
169169
170170Here we explore the capabilities of the `%shoe` example app and then go through
171171the code, explaining what each line does.
@@ -273,7 +273,7 @@ a type or list of types that contain data needed to execute the command. See
273273the shape `[%shoe sole-ids=(list @ta) effect=shoe-effect]`. A `%shoe` `card` is
274274sent to all `sole`s listed in `sole-ids`, imaking them run the `sole-effect`
275275specified by `effect` (i.e. printing some text). Here we can
276−reference `card:shoe` because of `/+ shoe` at the beginning of the app.
276+reference `card:shoe` because of `/+ shoe` at the beginning of the app.
277277
278278```hoon
279279=| state-0
content/docs/hoon/guides/parsing.md+4−4
@@ -11,7 +11,7 @@ how it is implemented in Hoon.
1111
1212**Note:** For JSON printing/parsing and encoding/decoding, see the [JSON Guide](/docs/hoon/guides/json-guide).
1313
14−## What is parsing? {#what-is-parsing}
14+## What is parsing? {% #what-is-parsing %}
1515
1616A program which takes a raw sequence of characters as an input and produces a data
1717structure as an output is known as a _parser_. The data structure produced
@@ -352,7 +352,7 @@ surrounded on both sides by text that matches a pair of `rule`s, which is discar
352352ASCII glyphs have counterparts of this sort, documented
353353[here](/docs/hoon/reference/stdlib/4h).
354354
355−### [`+star`](/docs/hoon/reference/stdlib/4f/#star) {#star}
355+### [`+star`](/docs/hoon/reference/stdlib/4f/#star) {% #star %}
356356
357357`+star` is used to apply a `rule` repeatedly. Recall that `+just` only parses
358358the first character in the input `tape.`
@@ -396,7 +396,6 @@ it returns the following letter `b` as the result.
396396[p=[p=1 q=2] q=[~ u=[p='b' q=[p=[p=1 q=2] q="bc"]]]]
397397```
398398
399−
400399## Parser combinators
401400
402401Building complex parsers from simpler parsers is accomplished in Hoon with the
@@ -453,7 +452,7 @@ syntax error
453452['a' 'b' 'a']
454453```
455454
456−### [`;~`](/docs/hoon/reference/rune/mic/#-micsig) {#micsig}
455+### [`;~`](/docs/hoon/reference/rune/mic/#-micsig) {% #micsig %}
457456
458457Understanding the rune `;~` is essential to building parsers with Hoon. Let's
459458take this opportunity to think about it carefully.
@@ -524,6 +523,7 @@ Naively attempting to write a recursive `rule`, i.e. like
524523```
525524
526525results in an error:
526+
527527```
528528-find.,.+6
529529-find.,.+6
content/docs/hoon/guides/sail.md+253−164
@@ -18,40 +18,48 @@ This document will walk through the basics of Sail and its syntax.
1818
1919It’s easy to see how Sail can directly translate to HTML:
2020
21−<table><thead><tr><th>Sail</th><th>HTML</th></tr></thead>
22−<tbody><tr><td><pre class="language-hoon">
23−;html
24− ;head
25− ;title: My page
26− ;meta(charset "utf-8");
27− ==
28− ;body
29− ;h1: Welcome!
30− ;p
31− ; Hello, world!
32− ; Welcome to my page.
33− ; Here is an image:
34− ;br;
35− ;img@"/foo.png";
21+{% table %}
22+
23+- Sail
24+- HTML
25+
26+---
27+
28+- ```
29+ ;html
30+ ;head
31+ ;title: My page
32+ ;meta(charset "utf-8");
33+ ==
34+ ;body
35+ ;h1: Welcome!
36+ ;p
37+ ; Hello, world!
38+ ; Welcome to my page.
39+ ; Here is an image:
40+ ;br;
41+ ;img@"/foo.png";
42+ ==
3643 ==
3744 ==
38−==
39−</pre></td><td><pre>
40−&#x26;&#x6C;&#x74;&#x3B;html>
41− &#x26;&#x6C;&#x74;&#x3B;head>
42− &#x26;&#x6C;&#x74;&#x3B;title>My page&#x26;&#x6C;&#x74;&#x3B;/title>
43− &#x26;&#x6C;&#x74;&#x3B;meta charset="utf-8" />
44− &#x26;&#x6C;&#x74;&#x3B;/head>
45− &#x26;&#x6C;&#x74;&#x3B;body>
46− &#x26;&#x6C;&#x74;&#x3B;h1>Welcome!&#x26;&#x6C;&#x74;&#x3B;/h1>
47− &#x26;&#x6C;&#x74;&#x3B;p>Hello, world! Welcome to my
48− page. Here is an image:
49− &#x26;&#x6C;&#x74;&#x3B;br />
50− &#x26;&#x6C;&#x74;&#x3B;img src="/foo.png" />
51− &#x26;&#x6C;&#x74;&#x3B;/p>
52− &#x26;&#x6C;&#x74;&#x3B;/body>
53−&#x26;&#x6C;&#x74;&#x3B;/html>
54−</pre></td></tr></tbody></table>
45+ ```
46+- ```
47+ <html>
48+ <head>
49+ <title>My page</title>
50+ <meta charset="utf-8" />
51+ </head>
52+ <body>
53+ <h1>Welcome!</h1>
54+ <p>Hello, world! Welcome to my
55+ page. Here is an image:
56+ <br />
57+ <img src="/foo.png" />
58+ </p>
59+ </body>
60+ </html>
61+ ```
62+{% /table %}
5563
5664## Tags and Closing
5765
@@ -63,17 +71,17 @@ close expressions; Sail inherits this convenience.
6371### Empty
6472
6573Empty tags are closed with a `;` following the tag. For example, `;div;` will be
66−rendered as `&lt;div>&lt;/div>`. Non-container tags `;br;` and `;img@"some-url";` in
67−particular will be rendered as a single tag like `&lt;br />` and `&lt;img src="some-url" />`.
74+rendered as `<div></div>`. Non-container tags `;br;` and `;img@"some-url";` in
75+particular will be rendered as a single tag like `<br />` and `<img src="some-url" />`.
6876
6977### Filled
7078
7179Filled tags are closed via line-break. To fill text inside, add `:` after the
7280tag name, then insert your plain text following a space. Example:
7381
74−| Sail | HTML |
75−| ---------------- | -------------------------- |
76−| `;h1: The title` | `&lt;h1>The title&lt;/h1>` |
82+| Sail | HTML |
83+| ---------------- | -------------------- |
84+| `;h1: The title` | `<h1>The title</h1>` |
7785
7886### Nested
7987
@@ -81,41 +89,57 @@ To nest tags, simply create a new line. Nested tags need to be closed with `==`,
8189because they expect a list of sub-tags.
8290
8391If we nest lines of plain text with no tag, the text will be wrapped in a
84−`&lt;p>` tag. Additionally, any text with atom auras or `++arm:syntax` in such
85−plain text lines will be wrapped in `&lt;code>` tags.
92+`<p>` tag. Additionally, any text with atom auras or `++arm:syntax` in such
93+plain text lines will be wrapped in `<code>` tags.
8694
8795Example:
8896
89−<table><thead><tr><th>Sail</th><th>HTML</th></tr></thead><tbody><tr><td>
90−<pre class="language-hoon">
91−;body
92− ;h1: Blog title
93− This is some good content.
94−==
95−</pre></td><td><pre>
96−&#x26;&#x6C;&#x74;&#x3B;body>
97− &#x26;&#x6C;&#x74;&#x3B;h1>Blog title&#x26;&#x6C;&#x74;&#x3B;/h1>
98− &#x26;&#x6C;&#x74;&#x3B;p>This is some good content.&#x26;&#x6C;&#x74;&#x3B;/p>
99−&#x26;&#x6C;&#x74;&#x3B;/body>
100−</pre></td></tr></tbody></table>
97+{% table %}
98+
99+- Sail
100+- HTML
101+
102+---
103+
104+- ```
105+ ;body
106+ ;h1: Blog title
107+ This is some good content.
108+ ==
109+ ```
110+- ```
111+ <body>
112+ <h1>Blog title</h1>
113+ <p>This is some good content.</p>
114+ </body>
115+ ```
116+{% /table %}
101117
102118If we want to write a string with no tag at all, then we can prepend
103119those untagged lines with `;` and then a space:
104120
105−<table><thead><tr><th>Sail</th><th>HTML</th></tr></thead><tbody><tr><td>
106−<pre class="language-hoon">
107−;body
108− ;h1: Welcome!
109− ; Hello, world!
110− ; We’re on the web.
111−==
112−</pre></td><td><pre>
113−&#x26;&#x6C;&#x74;&#x3B;body>
114− &#x26;&#x6C;&#x74;&#x3B;h1>Welcome!&#x26;&#x6C;&#x74;&#x3B;/h1>
115− Hello, world!
116− We’re on the web.
117−&#x26;&#x6C;&#x74;&#x3B;/body>
118−</pre></td></tr></tbody></table>
121+{% table %}
122+
123+- Sail
124+- HTML
125+
126+---
127+
128+- ```
129+ ;body
130+ ;h1: Welcome!
131+ ; Hello, world!
132+ ; We’re on the web.
133+ ==
134+ ```
135+- ```
136+ <body>
137+ <h1>Welcome!</h1>
138+ Hello, world!
139+ We’re on the web.
140+ </body>
141+ ```
142+{% /table %}
119143
120144## Attributes
121145
@@ -129,78 +153,103 @@ shown below.
129153
130154### Generic
131155
132−<table><thead><tr><th>Form</th><th>Example</th></tr></thead><tbody>
133−<tr><td>Wide</td><td><pre class="language-hoon">
134−;div(title "a tooltip", style "color:red")
135− ;h1: Foo
136− foo bar baz
137−==
138−</pre></td></tr>
139−<tr><td>Tall</td><td><pre class="language-hoon">
140−;div
141− =title "a tooltip"
142− =style "color:red"
143− ;h1: Foo
144− foo bar baz
145−==
146−</pre></td></tr>
147−<tr><td>HTML</td><td><pre>
148−&#x26;&#x6C;&#x74;&#x3B;div title="a tooltip" style="color:red">
149− &#x26;&#x6C;&#x74;&#x3B;h1>Foo&#x26;&#x6C;&#x74;&#x3B;/h1>
150− &#x26;&#x6C;&#x74;&#x3B;p>foo bar baz &#x26;&#x6C;&#x74;&#x3B;/p>
151−&#x26;&#x6C;&#x74;&#x3B;/div>
152−</pre></td></tr></tbody></table>
156+{% table %}
157+
158+- Form
159+- Example
160+
161+---
162+
163+- Wide
164+- ```
165+ ;div(title "a tooltip", style "color:red")
166+ ;h1: Foo
167+ foo bar baz
168+ ==
169+ ```
170+
171+---
172+
173+- Tall
174+- ```
175+ ;div
176+ =title "a tooltip"
177+ =style "color:red"
178+ ;h1: Foo
179+ foo bar baz
180+ ==
181+ ```
182+
183+---
184+
185+- HTML
186+- ```
187+ <div title="a tooltip" style="color:red">
188+ <h1>Foo</h1>
189+ <p>foo bar baz </p>
190+ </div>
191+ ```
192+{% /table %}
153193
154194### IDs
155195
156196Add `#` after tag name to add an ID:
157197
158−| Sail | HTML |
159−| ------------------- | ----------------------------------- |
160−| `;nav#header: Menu` | `&lt;nav id="header">Menu&lt;/nav>` |
198+| Sail | HTML |
199+| ------------------- | ----------------------------- |
200+| `;nav#header: Menu` | `<nav id="header">Menu</nav>` |
161201
162202### Classes
163203
164204Add `.` after tag name to add a class:
165205
166−| Sail | HTML |
167−| ---------------------- | ---------------------------------------- |
168−| `;h1.text-blue: Title` | `&lt;h1 class="text-blue">Title&lt;/h1>` |
206+| Sail | HTML |
207+| ---------------------- | ---------------------------------- |
208+| `;h1.text-blue: Title` | `<h1 class="text-blue">Title</h1>` |
169209
170210For class values containing spaces, you can add additional `.`s like so:
171211
172−| Sail | HTML |
173−| ------------------- | --------------------------------------- |
174−| `;div.foo.bar.baz;` | `&lt;div class="foo bar baz">&lt;/div>` |
212+| Sail | HTML |
213+| ------------------- | --------------------------------- |
214+| `;div.foo.bar.baz;` | `<div class="foo bar baz"></div>` |
175215
176216Otherwise, if your class value does not conform to the allowed `@tas`
177217characters, you must use the generic attribute syntax:
178218
179−| Sail | HTML |
180−| ------------------------ | ----------------------------------- |
181−| `;div(class "!!! !!!");` | `&lt;div class="!!! !!!">&lt;/div>` |
219+| Sail | HTML |
220+| ------------------------ | ----------------------------- |
221+| `;div(class "!!! !!!");` | `<div class="!!! !!!"></div>` |
182222
183223### Images
184224
185225Add `@` after the tag name to link your source:
186226
187−| Sail | HTML |
188−| --------------------- | ----------------------------- |
189−| `;img@"example.png";` | `&lt;img src="example.png"/>` |
227+| Sail | HTML |
228+| --------------------- | -------------------------- |
229+| `;img@"example.png";` | `<img src="example.png"/>` |
190230
191231To add attributes to the image, like size specifications, add the desired
192232attribute after the `"` of the image name and before the final `;` of the `img`
193−tag like ;img@"example.png"(width "100%");`.
233+tag like `;img@"example.png"(width "100%");`.
194234
195235### Links
196236
197237Add `/` after tag name to start an `href`.
198238
199−<table><tr><th>Sail</th></tr><tr><td><pre class="language-hoon">
200−;a/"urbit.org": A link to Urbit.org
201−</pre></td></tr><tr><th>HTML</th></tr><tr><td><pre>
202−&#x26;&#x6C;&#x74;&#x3B;a href="urbit.org">A link to Urbit.org&#x26;&#x6C;&#x74;&#x3B;/a>
203−</pre></td></tr></table>
239+{% table %}
240+
241+- Sail
242+- HTML
243+
244+---
245+
246+- ```
247+ ;a/"urbit.org": A link to Urbit.org
248+ ```
249+- ```
250+ <a href="urbit.org">A link to Urbit.org</a>
251+ ```
252+{% /table %}
204253
205254## Interpolation
206255
@@ -208,29 +257,53 @@ The textual content of tags, despite not being enclosed in double-quotes, are
208257actually tapes. This means they support interpolated Hoon expressions in the
209258usual manner. For example:
210259
211−<table><thead><tr><th>Sail</th><th>HTML</th></tr></thead><tbody><tr><td>
212−<pre class="language-hoon">
213−=| =time
214−;p: foo {&#x26;&#x6C;&#x74;&#x3B;time>} bar
215−</pre></td><td><pre>
216−&#x26;&#x6C;&#x74;&#x3B;p>foo ~2000.1.1 baz&#x26;&#x6C;&#x74;&#x3B;/p>
217−</pre></td></tr></tbody></table>
260+{% table %}
261+
262+- Sail
263+- HTML
264+
265+---
266+
267+- ```
268+ =| =time
269+ ;p: foo {<time>} bar
270+ ```
271+- ```
272+ <p>foo ~2000.1.1 baz</p>
273+ ```
274+{% /table %}
218275
219276Likewise:
220277
221−<table><tr><th>Sail</th></tr><tr><td><pre class="language-hoon">
222−=/ txt=tape " bananas"
223−;article
224− ;b: {(a-co:co (mul 42 789))}
225− ; {txt}
226− {&#x26;&#x6C;&#x74;&#x3B;our>} {&#x26;&#x6C;&#x74;&#x3B;now>} {&#x26;&#x6C;&#x74;&#x3B;`@ux`(end 6 eny)>}
227−==
228−</pre></td></tr><tr><th>HTML</th></tr><tr><td><pre>
229−&#x26;&#x6C;&#x74;&#x3B;article>
230− &#x26;&#x6C;&#x74;&#x3B;b>33138&#x26;&#x6C;&#x74;&#x3B;/b> bananas
231− &#x26;&#x6C;&#x74;&#x3B;p>~zod ~2022.2.21..09.54.21..5b63 0x9827.99c7.06f4.8ef9&#x26;&#x6C;&#x74;&#x3B;/p>
232−&#x26;&#x6C;&#x74;&#x3B;/article>
233−</pre></td></tr></table>
278+{% table .w-full %}
279+
280+- Sail
281+
282+---
283+
284+- ```
285+ =/ txt=tape " bananas"
286+ ;article
287+ ;b: {(a-co:co (mul 42 789))}
288+ ; {txt}
289+ {<our>} {<now>} {<`@ux`(end 6 eny)>}
290+ ==
291+ ```
292+{% /table %}
293+
294+{% table .w-full %}
295+
296+- HTML
297+
298+---
299+
300+- ```
301+ <article>
302+ <b>33138</b> bananas
303+ <p>~zod ~2022.2.21..09.54.21..5b63 0x9827.99c7.06f4.8ef9</p>
304+ </article>
305+ ```
306+{% /table %}
234307
235308## A note on CSS
236309
@@ -316,7 +389,7 @@ elements, converting characters such as `>` to HTML entities. For example:
316389> =z ;p(class "\"><script src=\"example.com/xxx.js"): <h1>FOO</h1>
317390
318391> (crip (en-xml:html z))
319−'<p class="&quot;&gt;&lt;script src=&quot;example.com/xxx.js">&lt;h1&gt;FOO&lt;/h1&gt;</p>'
392+'<p class="&quot;&gt;<script src=&quot;example.com/xxx.js"><h1&gt;FOO</h1&gt;</p>'
320393```
321394
322395### Marks
@@ -338,7 +411,7 @@ the resulting `tape` through `++crip`.
338411- Type: `$manx`
339412
340413The `%hymn` mark is intended to be used for complete HTML documents - having an
341−`&lt;html>` root element, `&lt;head>`, `&lt;body>`, etc. This isn't enforced on
414+`<html>` root element, `<head>`, `<body>`, etc. This isn't enforced on
342415the type level but it is assumed in certain mark conversion pathways. Eyre can
343416automatically convert a `%hymn` to printed `%html` if it was requested through
344417Eyre's scry interface.
@@ -399,25 +472,33 @@ The [mictar rune](/docs/hoon/reference/rune/mic#-mictar) makes a `$marl` (a list
399472of XML nodes) from a complex hoon expression. This rune lets you add many
400473elements inside another Sail element. For example:
401474
402−<table><thead><tr><th>Sail</th><th>HTML</th></tr></thead><tbody><tr><td>
403−<pre class="language-hoon">
404−=/ nums=(list @ud) (gulf 1 9)
405−;p
406− ;* %+ turn nums
407− |= n=@ud
408− ?: =(0 (mod n 2))
409− ;sup: {(a-co:co n)}
410− ;sub: {(a-co:co n)}
411−==
412−</pre></td><td><pre>
413−&#x26;&#x6C;&#x74;&#x3B;p>
414− &#x26;&#x6C;&#x74;&#x3B;sub>1&#x26;&#x6C;&#x74;&#x3B;/sub>&#x26;&#x6C;&#x74;&#x3B;sup>2&#x26;&#x6C;&#x74;&#x3B;/sup>
415− &#x26;&#x6C;&#x74;&#x3B;sub>3&#x26;&#x6C;&#x74;&#x3B;/sub>&#x26;&#x6C;&#x74;&#x3B;sup>4&#x26;&#x6C;&#x74;&#x3B;/sup>
416− &#x26;&#x6C;&#x74;&#x3B;sub>5&#x26;&#x6C;&#x74;&#x3B;/sub>&#x26;&#x6C;&#x74;&#x3B;sup>6&#x26;&#x6C;&#x74;&#x3B;/sup>
417− &#x26;&#x6C;&#x74;&#x3B;sub>7&#x26;&#x6C;&#x74;&#x3B;/sub>&#x26;&#x6C;&#x74;&#x3B;sup>8&#x26;&#x6C;&#x74;&#x3B;/sup>
418− &#x26;&#x6C;&#x74;&#x3B;sub>9&#x26;&#x6C;&#x74;&#x3B;/sub>
419−&#x26;&#x6C;&#x74;&#x3B;/p>
420−</pre></td></tr></tbody></table>
475+{% table %}
476+
477+- Sail
478+- HTML
479+
480+---
481+
482+- ```
483+ =/ nums=(list @ud) (gulf 1 9)
484+ ;p
485+ ;* %+ turn nums
486+ |= n=@ud
487+ ?: =(0 (mod n 2))
488+ ;sup: {(a-co:co n)}
489+ ;sub: {(a-co:co n)}
490+ ==
491+ ```
492+- ```
493+ <p>
494+ <sub>1</sub><sup>2</sup>
495+ <sub>3</sub><sup>4</sup>
496+ <sub>5</sub><sup>6</sup>
497+ <sub>7</sub><sup>8</sup>
498+ <sub>9</sub>
499+ </p>
500+ ```
501+{% /table %}
421502
422503### `;=` Mictis
423504
@@ -426,23 +507,31 @@ of XML nodes) from a series of `$manx`es. This is mostly useful if you want to
426507make the list outside of an element and then be able to insert it afterwards.
427508For example:
428509
429−<table><thead><tr><th>Sail</th><th>HTML</th></tr></thead><tbody><tr><td>
430−<pre class="language-hoon">
431−=/ paras=marl
432− ;= ;p: First node.
433− ;p: Second node.
434− ;p: Third node.
510+{% table %}
511+
512+- Sail
513+- HTML
514+
515+---
516+
517+- ```
518+ =/ paras=marl
519+ ;= ;p: First node.
520+ ;p: Second node.
521+ ;p: Third node.
522+ ==
523+ ;main
524+ ;* paras
435525 ==
436−;main
437− ;* paras
438−==
439−</pre></td><td><pre>
440−&#x26;&#x6C;&#x74;&#x3B;main>
441− &#x26;&#x6C;&#x74;&#x3B;p>First node.&#x26;&#x6C;&#x74;&#x3B;/p>
442− &#x26;&#x6C;&#x74;&#x3B;p>Second node.&#x26;&#x6C;&#x74;&#x3B;/p>
443− &#x26;&#x6C;&#x74;&#x3B;p>Third node.&#x26;&#x6C;&#x74;&#x3B;/p>
444−&#x26;&#x6C;&#x74;&#x3B;/main>
445−</pre></td></tr></tbody></table>
526+ ```
527+- ```
528+ <main>
529+ <p>First node.</p>
530+ <p>Second node.</p>
531+ <p>Third node.</p>
532+ </main>
533+ ```
534+{% /table %}
446535
447536### `;/` Micfas
448537
content/docs/hoon/guides/strings.md+5−5
@@ -175,11 +175,11 @@ This is something to be wary of. For example, if you wanted to form a `(set @tas
175175However, this will actually form a set of the union `?(%foo %bar %baz)` due to
176176the specificity of type inference:
177177
178−```
179−> ? (silt (limo ~[%foo %bar %baz]))
180− ?(%~ [?(n=%bar n=%baz n=%foo) l=nlr(?(%bar %baz %foo)) r=nlr(?(%bar %baz %foo))])
181−[n=%baz l={%bar} r={%foo}]
182−```
178+{% customFence %}
179+\> ? (silt (limo ~[%foo %bar %baz]))
180+?(%~ [?(n=%bar n=%baz n=%foo) l=nlr(?(%bar %baz %foo)) r=nlr(?(%bar %baz %foo))])
181+[n=%baz l&#x7B;&#x25;bar} r=&#x7B;&#x25;foo}]
182+{% /customFence %}
183183
184184One further note about the type-as-itself form: Ocassionally you may wish to
185185form a union of strings which contain characters disallowed in `term`s. To get
content/docs/hoon/hoon-school/doors.md+44−42
@@ -5,13 +5,13 @@ template = "doc.html"
55aliases = ["/docs/learn/hoon/hoon-tutorial/doors/"]
66+++
77
8−It's useful to have [cores](/docs/glossary/core/) whose [arms](/docs/glossary/arm/) evaluate to make [gates](/docs/glossary/gate/). The use of such cores is common in Hoon; that's how the functions of the Hoon standard library are stored in the subject. Learning about such cores will also deepen the reader's understanding of Hoon semantics, and for that reason alone is worthwhile.
8+It's useful to have [cores](/docs/glossary/core/) whose [arms](/docs/glossary/arm/) evaluate to make [gates](/docs/glossary/gate/). The use of such cores is common in Hoon; that's how the functions of the Hoon standard library are stored in the subject. Learning about such cores will also deepen the reader's understanding of Hoon semantics, and for that reason alone is worthwhile.
99
1010In this lesson you'll also learn about a new kind of core, called a 'door'.
1111
1212## Two Kinds of Function Calls
1313
14−There are two ways of making a function call in Hoon. First, you can call a gate in the subject by name. This is what you did with `inc` in the last lesson; you bound `inc` to a gate that adds `1` to an input:
14+There are two ways of making a function call in Hoon. First, you can call a gate in the subject by name. This is what you did with `inc` in the last lesson; you bound `inc` to a gate that adds `1` to an input:
1515
1616```
1717> =inc |=(a=@ (add 1 a))
@@ -32,7 +32,7 @@ The second way of making a function call involves an expression that _produces_
3232246
3333```
3434
35−The difference is that `inc` is an already-created gate in the subject when we called it. The latter calls involve producing a gate that doesn't exist anywhere in the subject, and then calling it.
35+The difference is that `inc` is an already-created gate in the subject when we called it. The latter calls involve producing a gate that doesn't exist anywhere in the subject, and then calling it.
3636
3737Are calls to `add` and `mul` of the Hoon standard library of the first kind, or the second?
3838
@@ -44,15 +44,15 @@ Are calls to `add` and `mul` of the Hoon standard library of the first kind, or
4444276
4545```
4646
47−They're of the second kind. Neither `add` nor `mul` resolves to a gate directly; they're each arms that _produce_ gates.
47+They're of the second kind. Neither `add` nor `mul` resolves to a gate directly; they're each arms that _produce_ gates.
4848
49−Often the difference doesn't matter much. Either way you can do a function call using the `(gate arg)` syntax.
49+Often the difference doesn't matter much. Either way you can do a function call using the `(gate arg)` syntax.
5050
5151It's important to learn the difference, however, because for certain use cases you'll want the extra flexibility that comes with having an already produced core in the subject.
5252
5353## A Gate-Building Core
5454
55−Let's make a core with arms that build gates of various kinds. As we did in a previous lesson, we'll use the `|%` rune. Feel free to cut and paste the following into the dojo:
55+Let's make a core with arms that build gates of various kinds. As we did in a previous lesson, we'll use the `|%` rune. Feel free to cut and paste the following into the dojo:
5656
5757```hoon
5858> =c |%
@@ -79,20 +79,20 @@ Let's try out these arms, using them for function calls:
797930
8080```
8181
82−Notice that each arm in core `c` is able to call the other arms of `c` -- `add-two` uses the `inc` arm to increment a number twice. As a reminder, each arm is evaluated with its parent core as the subject. In the case of `add-two` the parent core is `c`, which has `inc` in it.
82+Notice that each arm in core `c` is able to call the other arms of `c` -- `add-two` uses the `inc` arm to increment a number twice. As a reminder, each arm is evaluated with its parent core as the subject. In the case of `add-two` the parent core is `c`, which has `inc` in it.
8383
8484### Mutating a Gate
8585
86−Let's say you want to modify the default sample of the gate for `double`. We can infer the default sample by calling `double` with no argument:
86+Let's say you want to modify the default sample of the gate for `double`. We can infer the default sample by calling `double` with no argument:
8787
8888```
8989> (double:c)
90900
9191```
9292
93−Given that `a x 2 = 0`, `a` must be `0`. (Remember that `a` is the face for the `double` sample, as defined in the core we bound to `c` above.)
93+Given that `a x 2 = 0`, `a` must be `0`. (Remember that `a` is the face for the `double` sample, as defined in the core we bound to `c` above.)
9494
95−Let's say we want to mutate the `double` gate so that the default sample is `25`. There is only one problem: `double` isn't a gate!
95+Let's say we want to mutate the `double` gate so that the default sample is `25`. There is only one problem: `double` isn't a gate!
9696
9797```
9898> double.c(a 25)
@@ -100,7 +100,7 @@ Let's say we want to mutate the `double` gate so that the default sample is `25`
100100-find.a
101101```
102102
103−It's an arm that produces a gate, and `a` cannot be found in `double` until the gate is created. Furthermore, every time the gate is created, it has the default sample, `0`. If you want to mutate the gate produced by `double`, you'll first have to put a copy of that gate into the subject:
103+It's an arm that produces a gate, and `a` cannot be found in `double` until the gate is created. Furthermore, every time the gate is created, it has the default sample, `0`. If you want to mutate the gate produced by `double`, you'll first have to put a copy of that gate into the subject:
104104
105105```
106106> =double-copy double:c
@@ -116,14 +116,14 @@ Now let's mutate the sample to `25`, and check that it worked with `+6`:
116116a=25
117117```
118118
119−Good. Let's call it with no argument and see if it returns double the value of the modified sample.
119+Good. Let's call it with no argument and see if it returns double the value of the modified sample.
120120
121121```
122122> (double-copy(a 25))
12312350
124124```
125125
126−It does indeed. Unbind `c` and `double-copy`:
126+It does indeed. Unbind `c` and `double-copy`:
127127
128128```
129129> =c
@@ -131,7 +131,7 @@ It does indeed. Unbind `c` and `double-copy`:
131131> =double-copy
132132```
133133
134−Contrast this with the behavior of `add`. We can look at the sample of the gate for `add` with `+6:add`:
134+Contrast this with the behavior of `add`. We can look at the sample of the gate for `add` with `+6:add`:
135135
136136```
137137> +6:add
@@ -157,9 +157,9 @@ Let's look once more at the parent core of the `add` arm in the Hoon standard li
157157<74.dbd 1.qct $141>
158158```
159159
160−The battery of this core contains 74 arms, each of which evaluates to a gate in the standard library. This 'library' is nothing more than a core containing useful basic functions that Hoon often makes available as part of the subject. You can see the Hoon code defining these arms near the beginning of [hoon.hoon](https://github.com/urbit/urbit/blob/master/pkg/arvo/sys/hoon.hoon), starting with [`++ add`](https://github.com/urbit/urbit/blob/master/pkg/arvo/sys/hoon.hoon#L21). (Yes, the Hoon standard library is written in Hoon.)
160+The battery of this core contains 74 arms, each of which evaluates to a gate in the standard library. This 'library' is nothing more than a core containing useful basic functions that Hoon often makes available as part of the subject. You can see the Hoon code defining these arms near the beginning of [hoon.hoon](https://github.com/urbit/urbit/blob/master/pkg/arvo/sys/hoon.hoon), starting with [`++ add`](https://github.com/urbit/urbit/blob/master/pkg/arvo/sys/hoon.hoon#L21). (Yes, the Hoon standard library is written in Hoon.)
161161
162−Here are some of the other gates that can be generated from this core in the Hoon standard library. It should be fairly obvious what they do:
162+Here are some of the other gates that can be generated from this core in the Hoon standard library. It should be fairly obvious what they do:
163163
164164```
165165> (dec 18)
@@ -210,9 +210,9 @@ Here are some of the other gates that can be generated from this core in the Hoo
210210
211211## Doors
212212
213−A brief review: A core is a cell of battery and [payload](/docs/glossary/payload/): `[battery payload]`. The battery is code and the payload is data. The battery contains a series of arms, and the payload contains all the data necessary to run those arms correctly.
213+A brief review: A core is a cell of battery and [payload](/docs/glossary/payload/): `[battery payload]`. The battery is code and the payload is data. The battery contains a series of arms, and the payload contains all the data necessary to run those arms correctly.
214214
215−New material: A **door** is a core with a sample. That is, a [door](/docs/glossary/door/) is a core whose payload is a cell of sample and context: `[sample context]`.
215+New material: A **door** is a core with a sample. That is, a [door](/docs/glossary/door/) is a core whose payload is a cell of sample and context: `[sample context]`.
216216
217217```
218218 Door
@@ -222,13 +222,13 @@ Battery .
222222 Sample Context
223223```
224224
225−It follows from this definition that a gate is a special case of a door. A gate is a door with exactly one arm, named `$`.
225+It follows from this definition that a gate is a special case of a door. A gate is a door with exactly one arm, named `$`.
226226
227−Gates are useful for defining functions. But there are many-armed doors as well. How are they used? Doors are quite useful data structures. In Chapter 2 of the Hoon tutorial series you'll learn how to use doors to implement state machines, where the sample stores the relevant state data. For now let's talk about how to use doors for simpler purposes.
227+Gates are useful for defining functions. But there are many-armed doors as well. How are they used? Doors are quite useful data structures. In Chapter 2 of the Hoon tutorial series you'll learn how to use doors to implement state machines, where the sample stores the relevant state data. For now let's talk about how to use doors for simpler purposes.
228228
229−### An Example Door {#example}
229+### An Example Door {% #example %}
230230
231−Let's write an example door in order to illustrate its features. Each of the arms in the door will define a simple gate. Let's bind the door to `c` as we did with the last core. To make a door we use the `|_` rune:
231+Let's write an example door in order to illustrate its features. Each of the arms in the door will define a simple gate. Let's bind the door to `c` as we did with the last core. To make a door we use the `|_` rune:
232232
233233```
234234> =c |_ b=@
@@ -238,7 +238,7 @@ Let's write an example door in order to illustrate its features. Each of the ar
238238 --
239239```
240240
241−If you type this into the dojo manually, make sure you attend carefully to the spacing. Feel free to cut and paste the code, if desired.
241+If you type this into the dojo manually, make sure you attend carefully to the spacing. Feel free to cut and paste the code, if desired.
242242
243243Before getting into what these arms do, let's cover how the `|_` rune works in general.
244244
@@ -246,7 +246,7 @@ Before getting into what these arms do, let's cover how the `|_` rune works in g
246246
247247The `|_` rune for making a door works exactly like the `|%` rune for making a core, except it takes one additional subexpression.
248248
249−The first subexpression after the `|_` rune defines the door's sample. (This is the subexpression the `|%` rune lacks.) Following that are a series of `++` runes, each of which defines an arm of the door. Finally, the expression is terminated with a `--` rune.
249+The first subexpression after the `|_` rune defines the door's sample. (This is the subexpression the `|%` rune lacks.) Following that are a series of `++` runes, each of which defines an arm of the door. Finally, the expression is terminated with a `--` rune.
250250
251251We emphasize that a door really is, at bedrock level, the same thing as a core
252252with a sample. Let's ask dojo to pretty print a simple door.
@@ -289,7 +289,7 @@ Thus we have witnessed that doors really are just cores with samples.
289289
290290#### Back to the Example
291291
292−For the door defined [above](#example), `c`, the sample is defined as an [atom](/docs/glossary/atom/), `@`, and given the face `b`. The `plus` arm defines a gate that takes a single [atom](/docs/glossary/atom/) as its argument, `a`, and which returns the sum of `a` and `b`. The `times` arm defines a gate that takes a single [atom](/docs/glossary/atom/), `a`, and returns `a` times `b`. The `greater` arm defines a gate that takes a single [atom](/docs/glossary/atom/), `a`, and if `a` is greater than `b` returns `%.y`; otherwise `%.n`.
292+For the door defined [above](#example), `c`, the sample is defined as an [atom](/docs/glossary/atom/), `@`, and given the face `b`. The `plus` arm defines a gate that takes a single [atom](/docs/glossary/atom/) as its argument, `a`, and which returns the sum of `a` and `b`. The `times` arm defines a gate that takes a single [atom](/docs/glossary/atom/), `a`, and returns `a` times `b`. The `greater` arm defines a gate that takes a single [atom](/docs/glossary/atom/), `a`, and if `a` is greater than `b` returns `%.y`; otherwise `%.n`.
293293
294294Let's try out the arms of `c` with ordinary function calls:
295295
@@ -304,7 +304,7 @@ Let's try out the arms of `c` with ordinary function calls:
304304%.y
305305```
306306
307−This works, but the results are not exciting. Passing `10` to the `plus` gate returns `10`, so it must be that the value of `b` is `0` (the bunt value of `@`). The products of the other function calls reinforce that assessment. Let's look directly at `+6` of `c`:
307+This works, but the results are not exciting. Passing `10` to the `plus` gate returns `10`, so it must be that the value of `b` is `0` (the bunt value of `@`). The products of the other function calls reinforce that assessment. Let's look directly at `+6` of `c`:
308308
309309```
310310> +6:c
@@ -342,7 +342,7 @@ Doing the same mutation repeatedly can be tedious, so let's bind `c` to the modi
342342%.y
343343```
344344
345−There's a more direct way of passing arguments for both the door sample and the gate sample simultaneously. We may use the `~(arm door arg)` syntax. This generates the `arm` product after modifying the `door`'s sample to be `arg`.
345+There's a more direct way of passing arguments for both the door sample and the gate sample simultaneously. We may use the `~(arm door arg)` syntax. This generates the `arm` product after modifying the `door`'s sample to be `arg`.
346346
347347```
348348> (~(plus c 7) 10)
@@ -358,7 +358,7 @@ There's a more direct way of passing arguments for both the door sample and the
358358%.n
359359```
360360
361−Readers with some mathematical background may notice that `~( )` expressions allow us to [curry](https://en.wikipedia.org/wiki/Currying). For each of the arms above, the `~( )` expression is used to create different versions of the same gate:
361+Readers with some mathematical background may notice that `~( )` expressions allow us to [curry](https://en.wikipedia.org/wiki/Currying). For each of the arms above, the `~( )` expression is used to create different versions of the same gate:
362362
363363```
364364> ~(plus c 7)
@@ -392,7 +392,7 @@ Readers with some mathematical background may notice that `~( )` expressions all
39239217
393393```
394394
395−Thus, 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.
395+Thus, 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.
396396
397397The standard library provides [currying
398398functionality](/docs/hoon/reference/stdlib/2n#curry) outside of the context of
@@ -401,6 +401,7 @@ doors - see `+curr` and `+cury`.
401401#### Creating Doors with a Modified Sample
402402
403403In the above example we created a door `c` with sample `b=@` and found that the initial value of `b` was `0`, the bunt value of `@`. We then created new door from `c` by modifying the value of `b`. But what if we wish to define a door with a chosen sample value directly? We make use of the `$_` rune, whose irregular form is simply `_`. To create the door `c` with the sample `b=@` set to have the value `7` in the dojo, we would write
404+
404405```
405406> =c |_ b=_7
406407 ++ plus |=(a=@ (add a b))
@@ -408,13 +409,14 @@ In the above example we created a door `c` with sample `b=@` and found that the
408409 ++ greater |=(a=@ (gth a b))
409410 --
410411```
412+
411413Here 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).
412414
413415### Doors in the Hoon Standard Library
414416
415−Back in lesson 1.2 you were introduced to atom auras, which are metadata used by Hoon that defines how that atom is interpreted and pretty-printed. Atoms are unsigned integers, but sometimes programmers want to work with fractions and decimal points. Accordingly, there are auras for [floating point numbers](https://en.wikipedia.org/wiki/Floating-point_arithmetic). Let's work with the aura for doing [single-precision](https://en.wikipedia.org/wiki/Single-precision_floating-point_format) floating point arithmetic: `@rs`.
417+Back in lesson 1.2 you were introduced to atom auras, which are metadata used by Hoon that defines how that atom is interpreted and pretty-printed. Atoms are unsigned integers, but sometimes programmers want to work with fractions and decimal points. Accordingly, there are auras for [floating point numbers](https://en.wikipedia.org/wiki/Floating-point_arithmetic). Let's work with the aura for doing [single-precision](https://en.wikipedia.org/wiki/Single-precision_floating-point_format) floating point arithmetic: `@rs`.
416418
417−The `@rs` has its own literal syntax. These atoms are represented as a `.` followed by digits, and possibly another `.` (for the decimal point) and more digits. For example, the float 3.14159 can be represented as a single-precision (32 bit) float with the literal expression `.3.14159`.
419+The `@rs` has its own literal syntax. These atoms are represented as a `.` followed by digits, and possibly another `.` (for the decimal point) and more digits. For example, the float 3.14159 can be represented as a single-precision (32 bit) float with the literal expression `.3.14159`.
418420
419421You can't use the ordinary `add` function to get the correct sum of two `@rs` atoms:
420422
@@ -423,21 +425,21 @@ You can't use the ordinary `add` function to get the correct sum of two `@rs` at
4234252.153.203.882
424426```
425427
426−That's because the `add` gate is designed for use with raw atoms, not floating point values. You can add two `@rs` atoms as follows:
428+That's because the `add` gate is designed for use with raw atoms, not floating point values. You can add two `@rs` atoms as follows:
427429
428430```
429431> (add:rs .3.14159 .2.22222)
430432.5.36381
431433```
432434
433−It turns out that the `rs` in `add:rs` is a Hoon standard library arm that produces a door. Let's take a closer look:
435+It turns out that the `rs` in `add:rs` is a Hoon standard library arm that produces a door. Let's take a closer look:
434436
435437```
436438> rs
437439<21|fan {r/?($n $u $d $z) <51.zox 93.pqh 74.dbd 1.qct $141>}>
438440```
439441
440−The battery of this core, pretty-printed as `21|fan`, has 21 arms that define functions specifically for `@rs` atoms. One of these arms is named `add`; it's a different `add` from the standard one we've been using for vanilla atoms. So when you invoke `add:rs` instead of just `add` in a function call, (1) the `rs` door is produced, and then (2) the name search for `add` resolves to the special `add` arm in `rs`. This produces the gate for adding `@rs` atoms:
442+The battery of this core, pretty-printed as `21|fan`, has 21 arms that define functions specifically for `@rs` atoms. One of these arms is named `add`; it's a different `add` from the standard one we've been using for vanilla atoms. So when you invoke `add:rs` instead of just `add` in a function call, (1) the `rs` door is produced, and then (2) the name search for `add` resolves to the special `add` arm in `rs`. This produces the gate for adding `@rs` atoms:
441443
442444```
443445> add:rs
@@ -446,7 +448,7 @@ The battery of this core, pretty-printed as `21|fan`, has 21 arms that define fu
446448>
447449```
448450
449−What about the sample of the `rs` door? The pretty-printer shows `r/?($n $u $d $z)`. What does this mean? Without yet explaining this notation fully, we'll simply say that the `rs` sample can take one of four values: `%n`, `%u`, `%d`, and `%z`. These argument values represent four options for how to round `@rs` numbers:
451+What about the sample of the `rs` door? The pretty-printer shows `r/?($n $u $d $z)`. What does this mean? Without yet explaining this notation fully, we'll simply say that the `rs` sample can take one of four values: `%n`, `%u`, `%d`, and `%z`. These argument values represent four options for how to round `@rs` numbers:
450452
451453```
452454%n -- round to the nearest value
@@ -455,7 +457,7 @@ What about the sample of the `rs` door? The pretty-printer shows `r/?($n $u $d
455457%z -- round to zero
456458```
457459
458−The default value is `%z` -- round to zero. When we invoke `add:rs` to call the addition function, there is no way to modify the `rs` door sample, so the default rounding option is used. How do we change it? We use the `~( )` notation: `~(arm door arg)`.
460+The default value is `%z` -- round to zero. When we invoke `add:rs` to call the addition function, there is no way to modify the `rs` door sample, so the default rounding option is used. How do we change it? We use the `~( )` notation: `~(arm door arg)`.
459461
460462Let's evaluate the `add` arm of `rs`, also modifying the door sample to `%u` for 'round up':
461463
@@ -466,14 +468,14 @@ Let's evaluate the `add` arm of `rs`, also modifying the door sample to `%u` for
466468>
467469```
468470
469−This is the gate produced by `add`, and you can see that its sample is a pair of `@rs` atoms. But if you look in the context you'll see the `rs` door. Let's look in the sample of that core to make sure that it changed to `%u`. We'll use the wing `+6.+7` to look at the sample of the gate's context:
471+This is the gate produced by `add`, and you can see that its sample is a pair of `@rs` atoms. But if you look in the context you'll see the `rs` door. Let's look in the sample of that core to make sure that it changed to `%u`. We'll use the wing `+6.+7` to look at the sample of the gate's context:
470472
471473```
472474> +6.+7:~(add rs %u)
473475r=%u
474476```
475477
476−It did indeed change. We also see that the door sample uses the face `r`, so let's use that instead of the unwieldy `+6.+7`:
478+It did indeed change. We also see that the door sample uses the face `r`, so let's use that instead of the unwieldy `+6.+7`:
477479
478480```
479481> r:~(add rs %u)
@@ -487,7 +489,7 @@ We can do the same thing for rounding down, `%d`:
487489%d
488490```
489491
490−Let's see the rounding differences in action. Because `~(add rs %u)` produces a gate, we can call it like we would any other gate:
492+Let's see the rounding differences in action. Because `~(add rs %u)` produces a gate, we can call it like we would any other gate:
491493
492494```
493495> (~(add rs %u) .3.14159265 .1.11111111)
@@ -497,13 +499,13 @@ Let's see the rounding differences in action. Because `~(add rs %u)` produces a
497499.4.2527037
498500```
499501
500−This difference between rounding up and rounding down might seem strange at first. There is a difference of 0.0000003 between the two answers. Why does this gap exist? Single-precision floats are 32-bit and there's only so many distinctions that can be made in floats before you run out of bits.
502+This difference between rounding up and rounding down might seem strange at first. There is a difference of 0.0000003 between the two answers. Why does this gap exist? Single-precision floats are 32-bit and there's only so many distinctions that can be made in floats before you run out of bits.
501503
502504Just as there is a door for `@rs` functions, there is a Hoon standard library door for `@rd` functions (double-precision 64 bit floats), another for `@rq` functions (quad-precision 128 bit floats), and more.
503505
504506### Mutating the `rs` Door
505507
506−Can we mutate the `rs` door so that its sample is `%u`? Let's try it:
508+Can we mutate the `rs` door so that its sample is `%u`? Let's try it:
507509
508510```
509511> rs(r %u)
@@ -511,6 +513,6 @@ Can we mutate the `rs` door so that its sample is `%u`? Let's try it:
511513-find.r
512514```
513515
514−Oops! Why didn't this work? Remember, `rs` isn't itself a door; it's an arm that produces a door. The `rs` in `rs(r %u)` resolves to the nameless parent core of `rs`, and the search for `r` commences there. But that face can't be found in that parent core -- it's not where we want to look.
516+Oops! Why didn't this work? Remember, `rs` isn't itself a door; it's an arm that produces a door. The `rs` in `rs(r %u)` resolves to the nameless parent core of `rs`, and the search for `r` commences there. But that face can't be found in that parent core -- it's not where we want to look.
515517
516518It's better simply to use the `~(arm rs arg)` syntax to replace the value of the `rs` door sample with `arg`.
content/docs/hoon/hoon-school/generators.md+1−1
@@ -285,7 +285,7 @@ arguments that aren't in the cells.
28528542
286286```
287287
288−### `%ask` generators {#ask}
288+### `%ask` generators {% #ask %}
289289
290290We use the `%ask` generator when we want to create an interactive program
291291that prompts for inputs as it runs, rather than expecting arguments to be passed
content/docs/hoon/overview.md+4−6
@@ -20,6 +20,7 @@ sense.
2020
2121In particular, the problems Hoon solves that aren't solved by other
2222functional languages are:
23+
2324- Compile and run other code in a typesafe manner at full speed,
2425- Typesafe metaprogramming, and
2526- Hot code reload and online data migration.
@@ -124,7 +125,7 @@ Hoon and Nock have several unusual properties:
124125 converted to each other. Lisp dialects are also homoiconic, but Hoon
125126 and Nock are arguably even more so, since things like closures and the
126127 environment are just Nock trees. We even have a statically typed
127− metacircular interpreter called <code>+mule</code>. We run userspace code
128+ metacircular interpreter called `+mule`. We run userspace code
128129 metacircularly with negligible performance overhead because of Urbit's
129130 jet system. In Lisp "eval is evil" is a common saying but, in Urbit,
130131 eval is a first-class feature.
@@ -144,7 +145,7 @@ Hoon and Nock have several unusual properties:
144145 the runtime has a matching jet, it will use that instead of the Nock
145146 implementation. Nock isn't as slow as you might think, especially
146147 considering it's a minimal, dynamic, axiomatic language.
147−<br/><br/>
148+
148149 This arrangement has the deeper implication that all code written in
149150 Nock is best considered as a specification for a program, which can be
150151 executed directly but might never run at all due to being jetted.
@@ -198,7 +199,7 @@ Hoon and Nock have several unusual properties:
198199 lot of the system manipulates types. In particular, the `!>` rune, when
199200 applied to a piece of data, uses compile-time type reflection to
200201 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+ a `Data.Dynamic` in Haskell, or a limited form of a dependent pair.
202203 Since the Arvo kernel does a lot of dynamic compilation, it uses vases
203204 to implement something akin to a dynamically typed language using
204205 Hoon. This allows for type-safe dynamic program loading, program
@@ -271,6 +272,3 @@ turn, we get an OS that provides far stronger guarantees than Unix with
271272a thousand times less code. Given the complexity of modern software,
272273this is what's required to put personal computing back into the hands of
273274people.
274−
275−
276−
content/docs/hoon/reference/rune/bar.md+303−257
@@ -21,30 +21,31 @@ Declares a mold builder wet gate with one or more molds as its sample.
2121
2222Two arguments, fixed.
2323
24−<table>
25−<tr><th>Form</th><th>Syntax</th></tr>
26−<tr>
27−<td>Tall</td>
28−<td>
29−<pre>
30−|$ sample
31−body
32−</pre>
33−</td>
34−</tr>
35−<tr>
36−<td>Wide</td>
37−<td>
38−<pre>
39−|$(sample body)
40−</pre>
41−</td>
42−</tr>
43−<tr>
44−<td>Irregular</td>
45−<td>None.</td>
46−</tr>
47−</table>
24+{% table %}
25+
26+- Form
27+- Syntax
28+
29+---
30+
31+- Tall
32+- ```hoon
33+ |$ sample
34+ body
35+ ```
36+
37+---
38+
39+- Wide
40+- ```hoon
41+ |$(sample body)
42+ ```
43+
44+---
45+
46+- Irregular
47+- None.
48+{% /table %}
4849
4950#### AST
5051
@@ -118,24 +119,33 @@ Produce a **door** (a core with a sample).
118119
119120One fixed argument, then a variable number of `+`-family expressions.
120121
121−<table>
122−<tr><th>Form</th><th>Syntax</th></tr>
123−<tr>
124−<td>Tall</td>
125−<td>
126−<pre>
127−|_ a=spec
128−++ b=term c=hoon
129−++ d=term e=hoon
122+{% table %}
123+
124+- Form
125+- Syntax
126+
127+---
128+
129+- Tall
130+- ```hoon
131+ |_ a=spec
132+ ++ b=term c=hoon
133+ ++ d=term e=hoon
130134 ...
131−++ f=term g=hoon
132−--
133−</pre>
134−</td>
135−</tr>
136−<tr><td>Wide</td><td>None.</td></tr>
137−<tr><td>Irregular</td><td>None.</td></tr>
138−</table>
135+ ++ f=term g=hoon
136+ --
137+ ```
138+
139+---
140+
141+- Wide
142+- None.
143+
144+---
145+
146+- Irregular
147+- None.
148+{% /table %}
139149
140150Note: The `++` rune may be replaced with any other rune in the `+` family.
141151
@@ -232,30 +242,31 @@ Produce a gate with a custom sample.
232242
233243Two arguments, fixed.
234244
235−<table>
236−<tr><th>Form</th><th>Syntax</th></tr>
237−<tr>
238−<td>Tall</td>
239−<td>
240−<pre>
241−|: a
242−b
243−</pre>
244−</td>
245−</tr>
246−<tr>
247−<td>Wide</td>
248−<td>
249−<pre>
250−|:(a b)
251−</pre>
252−</td>
253−</tr>
254−<tr>
255−<td>Irregular</td>
256−<td>None.</td>
257−</tr>
258−</table>
245+{% table %}
246+
247+- Form
248+- Syntax
249+
250+---
251+
252+- Tall
253+- ```hoon
254+ |: a
255+ b
256+ ```
257+
258+---
259+
260+- Wide
261+- ```hoon
262+ |:(a b)
263+ ```
264+
265+---
266+
267+- Irregular
268+- None.
269+{% /table %}
259270
260271#### AST
261272
@@ -303,24 +314,33 @@ Produce a core, `[battery payload]`.
303314
304315Argument: a variable number of `+`-family expressions.
305316
306−<table>
307−<tr><th>Form</th><th>Syntax</th></tr>
308−<tr>
309−<td>Tall</td>
310−<td>
311−<pre>
312−|%
313−++ a=term b=hoon
314−++ c=term d=hoon
317+{% table %}
318+
319+- Form
320+- Syntax
321+
322+---
323+
324+- Tall
325+- ```hoon
326+ |%
327+ ++ a=term b=hoon
328+ ++ c=term d=hoon
315329 ...
316−++ e=term f=hoon
317−--
318−</pre>
319−</td>
320−</tr>
321−<tr><td>Wide</td><td>None.</td></tr>
322−<tr><td>Irregular</td><td>None.</td></tr>
323−</table>
330+ ++ e=term f=hoon
331+ --
332+ ```
333+
334+---
335+
336+- Wide
337+- None.
338+
339+---
340+
341+- Irregular
342+- None.
343+{% /table %}
324344
325345Note: The `++` rune may be replaced with any other rune in the `+` family.
326346
@@ -387,29 +407,30 @@ Produce a trap (a core with one arm `$`).
387407
388408One argument, fixed.
389409
390−<table>
391−<tr><th>Form</th><th>Syntax</th></tr>
392−<tr>
393−<td>Tall</td>
394−<td>
395−<pre>
396−|. a
397−</pre>
398−</td>
399−</tr>
400−<tr>
401−<td>Wide</td>
402−<td>
403−<pre>
404−|.(a)
405−</pre>
406−</td>
407−</tr>
408−<tr>
409−<td>Irregular</td>
410−<td>None.</td>
411−</tr>
412−</table>
410+{% table %}
411+
412+- Form
413+- Syntax
414+
415+---
416+
417+- Tall
418+- ```hoon
419+ |. a
420+ ```
421+
422+---
423+
424+- Wide
425+- ```hoon
426+ |.(a)
427+ ```
428+
429+---
430+
431+- Irregular
432+- None.
433+{% /table %}
413434
414435#### AST
415436
@@ -480,25 +501,36 @@ Produce a core whose battery includes a `$` arm and compute the latter.
480501
481502One fixed argument, then a variable number of `+`-family expressions.
482503
483−<table>
484−<tr><th>Form</th><th>Syntax</th></tr>
485−<tr>
486−<td>Tall</td>
487−<td>
488−<pre>
489−|^ a=hoon
490−++ b=term c=hoon
491−++ d=term e=hoon
504+{% table %}
505+
506+- Form
507+- Syntax
508+
509+---
510+
511+- Tall
512+- ```hoon
513+ |^ a=hoon
514+ ++ b=term c=hoon
515+ ++ d=term e=hoon
492516 ...
493−++ f=term g=hoon
494−--
495−</pre>
496−</td>
497−</tr>
498−<tr>
499−<td>Wide</td><td>None.</td></tr>
500−<tr><td>Irregular</td><td>None.</td></tr>
501−</table>
517+ ++ f=term g=hoon
518+ --
519+ ```
520+
521+---
522+
523+- Wide
524+- None.
525+
526+---
527+
528+- Irregular
529+- None.
530+
531+---
532+
533+{% /table %}
502534
503535#### AST
504536
@@ -555,29 +587,30 @@ Produce a trap (a core with one arm `$`) and evaluate it.
555587
556588One argument, fixed.
557589
558−<table>
559−<tr><th>Form</th><th>Syntax</th></tr>
560−<tr>
561−<td>Tall</td>
562−<td>
563−<pre>
564−|- a
565−</pre>
566−</td>
567−</tr>
568−<tr>
569−<td>Wide</td>
570−<td>
571−<pre>
572−|-(a)
573−</pre>
574−</td>
575−</tr>
576−<tr>
577−<td>Irregular</td>
578−<td>None.</td>
579−</tr>
580−</table>
590+{% table %}
591+
592+- Form
593+- Syntax
594+
595+---
596+
597+- Tall
598+- ```hoon
599+ |- a
600+ ```
601+
602+---
603+
604+- Wide
605+- ```hoon
606+ |-(a)
607+ ```
608+
609+---
610+
611+- Irregular
612+- None.
613+{% /table %}
581614
582615#### AST
583616
@@ -637,30 +670,31 @@ Produce an iron gate.
637670
638671Two arguments, fixed.
639672
640−<table>
641−<tr><th>Form</th><th>Syntax</th></tr>
642−<tr>
643−<td>Tall</td>
644−<td>
645−<pre>
646−|~ a
647−b
648−</pre>
649−</td>
650−</tr>
651−<tr>
652−<td>Wide</td>
653−<td>
654−<pre>
655−|~(a b)
656−</pre>
657−</td>
658−</tr>
659−<tr>
660−<td>Irregular</td>
661−<td>None.</td>
662−</tr>
663−</table>
673+{% table %}
674+
675+- Form
676+- Syntax
677+
678+---
679+
680+- Tall
681+- ```hoon
682+ |~ a
683+ b
684+ ```
685+
686+---
687+
688+- Wide
689+- ```hoon
690+ |~(a b)
691+ ```
692+
693+---
694+
695+- Irregular
696+- None.
697+{% /table %}
664698
665699#### AST
666700
@@ -700,29 +734,30 @@ Produce a wet gate (one-armed core with sample).
700734
701735Two arguments, fixed.
702736
703−<table>
704−<tr><th>Form</th><th>Syntax</th></tr>
705−<tr>
706−<td>Tall</td>
707−<td>
708−<pre>
709−|* a b
710−</pre>
711−</td>
712−</tr>
713−<tr>
714−<td>Wide</td>
715−<td>
716−<pre>
717−|*(a b)
718−</pre>
719−</td>
720−</tr>
721−<tr>
722−<td>Irregular</td>
723−<td>None.</td>
724−</tr>
725−</table>
737+{% table %}
738+
739+- Form
740+- Syntax
741+
742+---
743+
744+- Tall
745+- ```hoon
746+ |* a b
747+ ```
748+
749+---
750+
751+- Wide
752+- ```hoon
753+ |*(a b)
754+ ```
755+
756+---
757+
758+- Irregular
759+- None.
760+{% /table %}
726761
727762#### AST
728763
@@ -792,30 +827,31 @@ Produce a gate (a one-armed core with a sample).
792827
793828Two arguments, fixed.
794829
795−<table>
796−<tr><th>Form</th><th>Syntax</th></tr>
797−<tr>
798−<td>Tall</td>
799−<td>
800−<pre>
801−|= a
802−b
803−</pre>
804−</td>
805−</tr>
806−<tr>
807−<td>Wide</td>
808−<td>
809−<pre>
810−|=(a b)
811−</pre>
812−</td>
813−</tr>
814−<tr>
815−<td>Irregular</td>
816−<td>None.</td>
817−</tr>
818−</table>
830+{% table %}
831+
832+- Form
833+- Syntax
834+
835+---
836+
837+- Tall
838+- ```hoon
839+ |= a
840+ b
841+ ```
842+
843+---
844+
845+- Wide
846+- ```hoon
847+ |=(a b)
848+ ```
849+
850+---
851+
852+- Irregular
853+- None.
854+{% /table %}
819855
820856#### AST
821857
@@ -878,24 +914,33 @@ Produce a 'wet' core `[battery payload]`.
878914
879915Arguments: a variable number of `+`-family expressions.
880916
881−<table>
882−<tr><th>Form</th><th>Syntax</th></tr>
883−<tr>
884−<td>Tall</td>
885−<td>
886−<pre>
887−|@
888−++ a=term b=hoon
889−++ c=term d=hoon
917+{% table %}
918+
919+- Form
920+- Syntax
921+
922+---
923+
924+- Tall
925+- ```hoon
926+ |@
927+ ++ a=term b=hoon
928+ ++ c=term d=hoon
890929 ...
891−++ e=term f=hoon
892−--
893−</pre>
894−</td>
895−</tr>
896−<tr><td>Wide</td><td>None.</td></tr>
897−<tr><td>Irregular</td><td>None.</td></tr>
898−</table>
930+ ++ e=term f=hoon
931+ --
932+ ```
933+
934+---
935+
936+- Wide
937+- None.
938+
939+---
940+
941+- Irregular
942+- None.
943+{% /table %}
899944
900945Note: The `++` rune may be replaced with any other rune in the `+` family.
901946
@@ -928,29 +973,30 @@ Produce a lead trap.
928973
929974One argument, fixed.
930975
931−<table>
932−<tr><th>Form</th><th>Syntax</th></tr>
933−<tr>
934−<td>Tall</td>
935−<td>
936−<pre>
937−|? a
938−</pre>
939−</td>
940−</tr>
941−<tr>
942−<td>Wide</td>
943−<td>
944−<pre>
945−|?(a)
946−</pre>
947−</td>
948−</tr>
949−<tr>
950−<td>Irregular</td>
951−<td>None.</td>
952−</tr>
953−</table>
976+{% table %}
977+
978+- Form
979+- Syntax
980+
981+---
982+
983+- Tall
984+- ```hoon
985+ |? a
986+ ```
987+
988+---
989+
990+- Wide
991+- ```hoon
992+ |?(a)
993+ ```
994+
995+---
996+
997+- Irregular
998+- None.
999+{% /table %}
9541000
9551001#### AST
9561002
content/docs/hoon/reference/rune/buc.md+348−317
@@ -56,27 +56,31 @@ Structure that satisfies a validator.
5656
5757Two arguments, fixed.
5858
59−<table>
60−<tr><th>Form</th><th>Syntax</th></tr>
61−<tr>
62−<td>Tall</td>
63−<td>
64−<pre>
65−$| p
66−q
67−</pre>
68−</td>
69−</tr>
70−<tr>
71−<td>Wide</td>
72−<td>
73−<pre>
74−$|(p q)
75−</pre>
76−</td>
77−</tr>
78−<tr><td>Irregular</td><td>None.</td></tr>
79−</table>
59+{% table %}
60+
61+- Form
62+- Syntax
63+
64+---
65+
66+- Tall
67+- ```hoon
68+ $| p
69+ q
70+ ```
71+
72+---
73+
74+- Wide
75+- ```hoon
76+ $|(p q)
77+ ```
78+
79+---
80+
81+- Irregular
82+- None.
83+{% /table %}
8084
8185#### AST
8286
@@ -160,33 +164,32 @@ Structure that normalizes to an example.
160164
161165One argument, fixed.
162166
163−<table>
164−<tr><th>Form</th><th>Syntax</th></tr>
165−<tr>
166−<td>Tall</td>
167−<td>
168−<pre>
169−$_ p
170−</pre>
171−</td>
172−</tr>
173−<tr>
174−<td>Wide</td>
175−<td>
176−<pre>
177−$_(p)
178−</pre>
179−</td>
180−</tr>
181−<tr>
182−<td>Irregular</td>
183−<td>
184−<pre>
185−_p
186−</pre>
187−</td>
188−</tr>
189−</table>
167+{% table %}
168+
169+- Form
170+- Syntax
171+
172+---
173+
174+- Tall
175+- ```hoon
176+ $_ p
177+ ```
178+
179+---
180+
181+- Wide
182+- ```hoon
183+ $_(p)
184+ ```
185+
186+---
187+
188+- Irregular
189+- ```
190+ _p
191+ ```
192+{% /table %}
190193
191194#### AST
192195
@@ -230,30 +233,34 @@ Structure which recognizes a union tagged by head atom.
230233
231234A variable number of arguments.
232235
233−<table>
234−<tr><th>Form</th><th>Syntax</th></tr>
235−<tr>
236−<td>Tall</td>
237−<td>
238−<pre>
239−$% [%p1 ...]
240− [%p2 ...]
241− [%p3 ...]
242− [%pn ...]
243−==
244−</pre>
245−</td>
246−</tr>
247−<tr>
248−<td>Wide</td>
249−<td>
250−<pre>
251−$%([%p1 ...] [%p2 ...] [%p3 ...] [%pn ...])
252−</pre>
253−</td>
254−</tr>
255−<tr><td>Irregular</td><td>None.</td></tr>
256−</table>
236+{% table %}
237+
238+- Form
239+- Syntax
240+
241+---
242+
243+- Tall
244+- ```hoon
245+ $% [%p1 ...]
246+ [%p2 ...]
247+ [%p3 ...]
248+ [%pn ...]
249+ ==
250+ ```
251+
252+---
253+
254+- Wide
255+- ```hoon
256+ $%([%p1 ...] [%p2 ...] [%p3 ...] [%pn ...])
257+ ```
258+
259+---
260+
261+- Irregular
262+- None.
263+{% /table %}
257264
258265Each item may be an atom or (more commonly) a cell. The atom or head of the cell
259266_must_ be a constant (`%foo`, `%1`, `%.y`, etc).
@@ -301,45 +308,43 @@ Form a cell type.
301308
302309A variable number of arguments.
303310
304−<table>
305−<tr><th>Form</th><th>Syntax</th></tr>
306−<tr>
307−<td>Tall</td>
308−<td>
309−<pre>
310−$: p1
311− p2
312− p3
313− pn
314−==
315−</pre>
316−</td>
317−</tr>
318−<tr>
319−<td>Wide</td>
320−<td>
321−<pre>
322−$:(p1 p2 p3 pn)
323−</pre>
324−</td>
325−</tr>
326−<tr>
327−<td>Irregular (noun mode)</td>
328−<td>
329−<pre>
330−,[p1 p2 p3 pn]
331−</pre>
332−</td>
333−</tr>
334−<tr>
335−<td>Irregular (structure mode)</td>
336−<td>
337−<pre>
338−[p1 p2 p3 pn]
339−</pre>
340−</td>
341−</tr>
342−</table>
311+{% table %}
312+
313+- Form
314+- Syntax
315+
316+---
317+
318+- Tall
319+- ```hoon
320+ $: p1
321+ p2
322+ p3
323+ pn
324+ ==
325+ ```
326+
327+---
328+
329+- Wide
330+- ```hoon
331+ $:(p1 p2 p3 pn)
332+ ```
333+
334+---
335+
336+- Irregular (noun mode)
337+- ```hoon
338+ ,[p1 p2 p3 pn]
339+ ```
340+
341+---
342+
343+- Irregular (structure mode)
344+- ```hoon
345+ [p1 p2 p3 pn]
346+ ```
347+{% /table %}
343348
344349#### AST
345350
@@ -381,27 +386,31 @@ structure.
381386
382387Two arguments, fixed.
383388
384−<table>
385−<tr><th>Form</th><th>Syntax</th></tr>
386−<tr>
387−<td>Tall</td>
388−<td>
389−<pre>
390−$< p
391−q
392−</pre>
393−</td>
394−</tr>
395−<tr>
396−<td>Wide</td>
397−<td>
398−<pre>
399−$<(p q)
400−</pre>
401−</td>
402−</tr>
403−<tr><td>Irregular</td><td>None.</td></tr>
404−</table>
389+{% table %}
390+
391+- Form
392+- Syntax
393+
394+---
395+
396+- Tall
397+- ```hoon
398+ $< p
399+ q
400+ ```
401+
402+---
403+
404+- Wide
405+- ```hoon
406+ $<(p q)
407+ ```
408+
409+---
410+
411+- Irregular
412+- None.
413+{% /table %}
405414
406415#### AST
407416
@@ -444,27 +453,31 @@ Filters a mold to obtain a new mold matching a particular structure.
444453
445454Two arguments, fixed.
446455
447−<table>
448−<tr><th>Form</th><th>Syntax</th></tr>
449−<tr>
450−<td>Tall</td>
451−<td>
452−<pre>
453−$> p
454−q
455−</pre>
456−</td>
457−</tr>
458−<tr>
459−<td>Wide</td>
460−<td>
461−<pre>
462−$>(p q)
463−</pre>
464−</td>
465−</tr>
466−<tr><td>Irregular</td><td>None.</td></tr>
467−</table>
456+{% table %}
457+
458+- Form
459+- Syntax
460+
461+---
462+
463+- Tall
464+- ```hoon
465+ $> p
466+ q
467+ ```
468+
469+---
470+
471+- Wide
472+- ```hoon
473+ $>(p q)
474+ ```
475+
476+---
477+
478+- Irregular
479+- None.
480+{% /table %}
468481
469482#### AST
470483
@@ -532,27 +545,31 @@ $_ ^|
532545
533546Two arguments, fixed.
534547
535−<table>
536−<tr><th>Form</th><th>Syntax</th></tr>
537−<tr>
538−<td>Tall</td>
539−<td>
540−<pre>
541−$- p
542−q
543−</pre>
544−</td>
545−</tr>
546−<tr>
547−<td>Wide</td>
548−<td>
549−<pre>
550−$-(p q)
551−</pre>
552−</td>
553−</tr>
554−<tr><td>Irregular</td><td>None.</td></tr>
555−</table>
548+{% table %}
549+
550+- Form
551+- Syntax
552+
553+---
554+
555+- Tall
556+- ```hoon
557+ $- p
558+ q
559+ ```
560+
561+---
562+
563+- Wide
564+- ```hoon
565+ $-(p q)
566+ ```
567+
568+---
569+
570+- Irregular
571+- None.
572+{% /table %}
556573
557574`p` is the type the gate takes and `q` is the type the gate produces.
558575
@@ -579,27 +596,31 @@ Structure which normalizes a union tagged by head depth (cell).
579596
580597Two arguments, fixed.
581598
582−<table>
583−<tr><th>Form</th><th>Syntax</th></tr>
584−<tr>
585−<td>Tall</td>
586−<td>
587−<pre>
588−$^ p
589−q
590−</pre>
591−</td>
592−</tr>
593−<tr>
594−<td>Wide</td>
595−<td>
596−<pre>
597−$^(p q)
598−</pre>
599−</td>
600−</tr>
601−<tr><td>Irregular</td><td>None.</td></tr>
602−</table>
599+{% table %}
600+
601+- Form
602+- Syntax
603+
604+---
605+
606+- Tall
607+- ```hoon
608+ $^ p
609+ q
610+ ```
611+
612+---
613+
614+- Wide
615+- ```hoon
616+ $^(p q)
617+ ```
618+
619+---
620+
621+- Irregular
622+- None.
623+{% /table %}
603624
604625#### AST
605626
@@ -643,27 +664,31 @@ Repair a value of a tagged union type.
643664
644665Two arguments, fixed.
645666
646−<table>
647−<tr><th>Form</th><th>Syntax</th></tr>
648−<tr>
649−<td>Tall</td>
650−<td>
651−<pre>
652−$& p
653−q
654−</pre>
655−</td>
656−</tr>
657−<tr>
658−<td>Wide</td>
659−<td>
660−<pre>
661−$&(p q)
662−</pre>
663−</td>
664−</tr>
665−<tr><td>Irregular</td><td>None.</td></tr>
666−</table>
667+{% table %}
668+
669+- Form
670+- Syntax
671+
672+---
673+
674+- Tall
675+- ```hoon
676+ $& p
677+ q
678+ ```
679+
680+---
681+
682+- Wide
683+- ```hoon
684+ $&(p q)
685+ ```
686+
687+---
688+
689+- Irregular
690+- None.
691+{% /table %}
667692
668693```hoon
669694$&(combined-mold=spec normalizing-gate=hoon)
@@ -715,27 +740,31 @@ Define a custom type default value.
715740
716741Two arguments, fixed.
717742
718−<table>
719−<tr><th>Form</th><th>Syntax</th></tr>
720−<tr>
721−<td>Tall</td>
722−<td>
723−<pre>
724−$~ p
725−q
726−</pre>
727−</td>
728−</tr>
729−<tr>
730−<td>Wide</td>
731−<td>
732−<pre>
733−$~(p q)
734−</pre>
735−</td>
736−</tr>
737−<tr><td>Irregular</td><td>None.</td></tr>
738−</table>
743+{% table %}
744+
745+- Form
746+- Syntax
747+
748+---
749+
750+- Tall
751+- ```hoon
752+ $~ p
753+ q
754+ ```
755+
756+---
757+
758+- Wide
759+- ```hoon
760+ $~(p q)
761+ ```
762+
763+---
764+
765+- Irregular
766+- None.
767+{% /table %}
739768
740769`p` defines the default value, and `q` defines everything else about the
741770structure.
@@ -809,27 +838,31 @@ Structure which normalizes a union tagged by head depth (atom).
809838
810839Two arguments, fixed.
811840
812−<table>
813−<tr><th>Form</th><th>Syntax</th></tr>
814−<tr>
815−<td>Tall</td>
816−<td>
817−<pre>
818−$@ p
819−q
820−</pre>
821−</td>
822−</tr>
823−<tr>
824−<td>Wide</td>
825−<td>
826−<pre>
827−$@(p q)
828−</pre>
829−</td>
830−</tr>
831−<tr><td>Irregular</td><td>None.</td></tr>
832−</table>
841+{% table %}
842+
843+- Form
844+- Syntax
845+
846+---
847+
848+- Tall
849+- ```hoon
850+ $@ p
851+ q
852+ ```
853+
854+---
855+
856+- Wide
857+- ```hoon
858+ $@(p q)
859+ ```
860+
861+---
862+
863+- Irregular
864+- None.
865+{% /table %}
833866
834867#### AST
835868
@@ -875,34 +908,33 @@ Structure which wraps a face around another structure.
875908
876909Two arguments, fixed.
877910
878−<table>
879−<tr><th>Form</th><th>Syntax</th></tr>
880−<tr>
881−<td>Tall</td>
882−<td>
883−<pre>
884−$= p
885−q
886−</pre>
887−</td>
888−</tr>
889−<tr>
890−<td>Wide</td>
891−<td>
892−<pre>
893−$=(p q)
894−</pre>
895−</td>
896−</tr>
897−<tr>
898−<td>Irregular</td>
899−<td>
900−<pre>
901−p=q
902−</pre>
903−</td>
904−</tr>
905−</table>
911+{% table %}
912+
913+- Form
914+- Syntax
915+
916+---
917+
918+- Tall
919+- ```hoon
920+ $= p
921+ q
922+ ```
923+
924+---
925+
926+- Wide
927+- ```hoon
928+ $=(p q)
929+ ```
930+
931+---
932+
933+- Irregular
934+- ```
935+ p=q
936+ ```
937+{% /table %}
906938
907939#### AST
908940
@@ -945,37 +977,36 @@ Form a type from a union of other types.
945977
946978Variable number of arguments.
947979
948−<table>
949−<tr><th>Form</th><th>Syntax</th></tr>
950−<tr>
951−<td>Tall</td>
952−<td>
953−<pre>
954−$? p1
955− p2
956− p3
957− pn
958−==
959−</pre>
960−</td>
961−</tr>
962−<tr>
963−<td>Wide</td>
964−<td>
965−<pre>
966−$?(p1 p2 p3 pn)
967−</pre>
968−</td>
969−</tr>
970−<tr>
971−<td>Irregular</td>
972−<td>
973−<pre>
974−?(p1 p2 p3 pn)
975−</pre>
976−</td>
977−</tr>
978−</table>
980+{% table %}
981+
982+- Form
983+- Syntax
984+
985+---
986+
987+- Tall
988+- ```hoon
989+ $? p1
990+ p2
991+ p3
992+ pn
993+ ==
994+ ```
995+
996+---
997+
998+- Wide
999+- ```hoon
1000+ $?(p1 p2 p3 pn)
1001+ ```
1002+
1003+---
1004+
1005+- Irregular
1006+- ```hoon
1007+ ?(p1 p2 p3 pn)
1008+ ```
1009+{% /table %}
9791010
9801011#### AST
9811012
content/docs/hoon/reference/rune/cen.md+303−306
@@ -20,50 +20,50 @@ Resolve a wing with changes, preserving type.
2020
2121One fixed argument, then a variable number of pairs.
2222
23−<table>
24−<tr><th>Form</th><th>Syntax</th></tr>
25−<tr>
26−<td>Tall style #1</td>
27−<td>
28−<pre>
29−%_ a=wing
30− b=wing c=hoon
31− d=wing e=hoon
32− f=wing g=hoon
33−==
34−</pre>
35−</td>
36−</tr>
37−<tr>
38−<td>Tall style #2</td>
39−<td>
40−<pre>
41−%_ a=wing
42− b=wing
43− c=hoon
44−::
45− d=wing
46− e=hoon
47−::
48− f=wing
49− g=hoon
50−==
51−</pre>
52−</td>
53−</tr>
54−<tr>
55−<td>Wide</td>
56−<td>
57−<pre>
58−%_(a=wing b=wing c=hoon, d=wing e=hoon, ...)
59−</pre>
60−</td>
61−</tr>
62−<tr>
63−<td>Irregular</td>
64−<td>None.</td>
65−</tr>
66−</table>
23+{% table %}
24+
25+- Form
26+- Syntax
27+
28+---
29+
30+- Tall style #1
31+- ```hoon
32+ %_ a=wing
33+ b=wing c=hoon
34+ d=wing e=hoon
35+ f=wing g=hoon
36+ ==
37+ ```
38+
39+---
40+
41+- Tall style #2
42+- ```hoon
43+ %_ a=wing
44+ b=wing
45+ c=hoon
46+ ::
47+ d=wing
48+ e=hoon
49+ ::
50+ f=wing
51+ g=hoon
52+ ==
53+ ```
54+
55+---
56+
57+- Wide
58+- ```hoon
59+ %_(a=wing b=wing c=hoon, d=wing e=hoon, ...)
60+ ```
61+
62+---
63+
64+- Irregular
65+- None.
66+{% /table %}
6767
6868#### AST
6969
@@ -119,38 +119,37 @@ Call a gate with many arguments.
119119
120120One fixed argument, then a variable number of arguments.
121121
122−<table>
123−<tr><th>Form</th><th>Syntax</th></tr>
124−<tr>
125−<td>Tall</td>
126−<td>
127−<pre>
128−%: a=hoon
129− b=hoon
130− c=hoon
131− ...
132− d=hoon
133−==
134−</pre>
135−</td>
136−</tr>
137−<tr>
138−<td>Wide</td>
139−<td>
140−<pre>
141−%:(a b c d)
142−</pre>
143−</td>
144−</tr>
145−<tr>
146−<td>Irregular</td>
147−<td>
148−<pre>
149−(a b c d)
150−</pre>
151−</td>
152−</tr>
153−</table>
122+{% table %}
123+
124+- Form
125+- Syntax
126+
127+---
128+
129+- Tall
130+- ```hoon
131+ %: a=hoon
132+ b=hoon
133+ c=hoon
134+ ...
135+ d=hoon
136+ ==
137+ ```
138+
139+---
140+
141+- Wide
142+- ```hoon
143+ %:(a b c d)
144+ ```
145+
146+---
147+
148+- Irregular
149+- ```hoon
150+ (a b c d)
151+ ```
152+{% /table %}
154153
155154#### AST
156155
@@ -206,29 +205,30 @@ Call a gate (function), inverted.
206205
207206Two arguments, fixed.
208207
209−<table>
210−<tr><th>Form</th><th>Syntax</th></tr>
211−<tr>
212−<td>Tall</td>
213−<td>
214−<pre>
215−%. a b
216−</pre>
217−</td>
218−</tr>
219−<tr>
220−<td>Wide</td>
221−<td>
222−<pre>
223−%.(a b)
224−</pre>
225−</td>
226−</tr>
227−<tr>
228−<td>Irregular</td>
229−<td>None.</td>
230−</tr>
231−</table>
208+{% table %}
209+
210+- Form
211+- Syntax
212+
213+---
214+
215+- Tall
216+- ```hoon
217+ %. a b
218+ ```
219+
220+---
221+
222+- Wide
223+- ```hoon
224+ %.(a b)
225+ ```
226+
227+---
228+
229+- Irregular
230+- None.
231+{% /table %}
232232
233233#### AST
234234
@@ -263,40 +263,39 @@ first, and then the gate.
263263
264264---
265265
266−## `%-` "cenhep" {#cenhep}
266+## `%-` "cenhep" {% #cenhep %}
267267
268268Call a gate (function).
269269
270270#### Syntax
271271
272−<table>
273−<tr><th>Form</th><th>Syntax</th></tr>
274−<tr>
275−<td>Tall</td>
276−<td>
277−<pre>
278−%- a
279−b
280−</pre>
281−</td>
282−</tr>
283−<tr>
284−<td>Wide</td>
285−<td>
286−<pre>
287−%-(a b)
288−</pre>
289−</td>
290−</tr>
291−<tr>
292−<td>Irregular</td>
293−<td>
294−<pre>
295−(a b)
296−</pre>
297−</td>
298−</tr>
299−</table>
272+{% table %}
273+
274+- Form
275+- Syntax
276+
277+---
278+
279+- Tall
280+- ```hoon
281+ %- a
282+ b
283+ ```
284+
285+---
286+
287+- Wide
288+- ```hoon
289+ %-(a b)
290+ ```
291+
292+---
293+
294+- Irregular
295+- ```hoon
296+ (a b)
297+ ```
298+{% /table %}
300299
301300#### AST
302301
@@ -345,36 +344,35 @@ Call gate with triple sample.
345344
346345Four arguments, fixed.
347346
348−<table>
349−<tr><th>Form</th><th>Syntax</th></tr>
350−<tr>
351−<td>Tall</td>
352−<td>
353−<pre>
354−%^ a
355− b
356− c
357−d
358−</pre>
359−</td>
360−</tr>
361−<tr>
362−<td>Wide</td>
363−<td>
364−<pre>
365−%^(a b c d)
366−</pre>
367−</td>
368−</tr>
369−<tr>
370−<td>Irregular</td>
371−<td>
372−<pre>
373−(a b c d)
374−</pre>
375−</td>
376−</tr>
377−</table>
347+{% table %}
348+
349+- Form
350+- Syntax
351+
352+---
353+
354+- Tall
355+- ```hoon
356+ %^ a
357+ b
358+ c
359+ d
360+ ```
361+
362+---
363+
364+- Wide
365+- ```hoon
366+ %^(a b c d)
367+ ```
368+
369+---
370+
371+- Irregular
372+- ```hoon
373+ (a b c d)
374+ ```
375+{% /table %}
378376
379377#### AST
380378
@@ -407,35 +405,34 @@ Call gate with a cell sample.
407405
408406Three arguments, fixed.
409407
410−<table>
411−<tr><th>Form</th><th>Syntax</th></tr>
412−<tr>
413−<td>Tall</td>
414−<td>
415−<pre>
416−%+ a
417− b
418−c
419−</pre>
420−</td>
421−</tr>
422−<tr>
423−<td>Wide</td>
424−<td>
425−<pre>
426−%+(a b c)
427−</pre>
428−</td>
429−</tr>
430−<tr>
431−<td>Irregular</td>
432−<td>
433−<pre>
434−(a b c)
435−</pre>
436−</td>
437−</tr>
438−</table>
408+{% table %}
409+
410+- Form
411+- Syntax
412+
413+---
414+
415+- Tall
416+- ```hoon
417+ %+ a
418+ b
419+ c
420+ ```
421+
422+---
423+
424+- Wide
425+- ```hoon
426+ %+(a b c)
427+ ```
428+
429+---
430+
431+- Irregular
432+- ```hoon
433+ (a b c)
434+ ```
435+{% /table %}
439436
440437#### AST
441438
@@ -473,34 +470,33 @@ Evaluate an arm in a door.
473470
474471Three arguments, fixed.
475472
476−<table>
477−<tr><th>Form</th><th>Syntax</th></tr>
478−<tr>
479−<td>Tall</td>
480−<td>
481−<pre>
482−%~ p q
483−r
484−</pre>
485−</td>
486−</tr>
487−<tr>
488−<td>Wide</td>
489−<td>
490−<pre>
491−%~(p q r)
492−</pre>
493−</td>
494−</tr>
495−<tr>
496−<td>Irregular</td>
497−<td>
498−<pre>
499−~(p q r1 r2 rn)
500−</pre>
501−</td>
502−</tr>
503−</table>
473+{% table %}
474+
475+- Form
476+- Syntax
477+
478+---
479+
480+- Tall
481+- ```hoon
482+ %~ p q
483+ r
484+ ```
485+
486+---
487+
488+- Wide
489+- ```hoon
490+ %~(p q r)
491+ ```
492+
493+---
494+
495+- Irregular
496+- ```
497+ ~(p q r1 r2 rn)
498+ ```
499+{% /table %}
504500
505501In the irregular form, `r` may be split into multiple parts. Multiple parts of
506502`r` will be formed into a cell.
@@ -542,48 +538,51 @@ Evaluate an expression, then resolve a wing with changes.
542538
543539Two fixed arguments, then a variable number of pairs.
544540
545−<table>
546−<tr><th>Form</th><th>Syntax</th></tr>
547−<tr>
548−<td>Tall style #1</td>
549−<td>
550−<pre>
551−%* a=wing b=hoon
552− c=wing d=hoon
553− e=wing f=hoon
554− ...
555− g=wing h=hoon
556−==
557−</pre>
558−</td>
559−</tr>
560−<tr>
561−<td>Tall style #2</td>
562−<td>
563−<pre>
564−%* a=wing b=hoon
565− c=wing
566− d=hoon
567−::
568− e=wing
569− f=hoon
570−::
571− g=wing
572− h=hoon
573−==
574−</pre>
575−</td>
576−</tr>
577−<tr>
578−<td>Wide</td>
579−<td>
580−<pre>
581−%*(a b c d, e f, g h)
582−</pre>
583−</td>
584−</tr>
585−<tr><td>Irregular</td><td>None.</td></tr>
586−</table>
541+{% table %}
542+
543+- Form
544+- Syntax
545+
546+---
547+
548+- Tall style #1
549+- ```hoon
550+ %* a=wing b=hoon
551+ c=wing d=hoon
552+ e=wing f=hoon
553+ ...
554+ g=wing h=hoon
555+ ==
556+ ```
557+
558+---
559+
560+- Tall style #2
561+- ```hoon
562+ %* a=wing b=hoon
563+ c=wing
564+ d=hoon
565+ ::
566+ e=wing
567+ f=hoon
568+ ::
569+ g=wing
570+ h=hoon
571+ ==
572+ ```
573+
574+---
575+
576+- Wide
577+- ```hoon
578+ %*(a b c d, e f, g h)
579+ ```
580+
581+---
582+
583+- Irregular
584+- None.
585+{% /table %}
587586
588587#### AST
589588
@@ -643,55 +642,53 @@ Resolve a wing with changes.
643642
644643One fixed argument, then a variable number of pairs.
645644
646−<table>
647−<tr><th>Form</th><th>Syntax</th></tr>
648−<tr>
649−<td>Tall style #1</td>
650−<td>
651−<pre>
652−%= a=wing
653− b=wing c=hoon
654− d=wing e=hoon
655− ...
656− f=wing g=hoon
657−==
658−</pre>
659−</td>
660−</tr>
661−<tr>
662−<td>Tall style #2</td>
663−<td>
664−<pre>
665−%= a=wing
666− b=wing
667− c=hoon
668−::
669− d=wing
670− e=hoon
671−::
672− f=wing
673− g=hoon
674−==
675−</pre>
676−</td>
677−</tr>
678−<tr>
679−<td>Wide</td>
680−<td>
681−<pre>
682−%=(a b c, d e, f g)
683−</pre>
684−</td>
685−</tr>
686−<tr>
687−<td>Irregular</td>
688−<td>
689−<pre>
690−a(b c, d e, f g)
691−</pre>
692−</td>
693−</tr>
694−</table>
645+{% table %}
646+
647+- Form
648+- Syntax
649+
650+---
651+
652+- Tall style #1
653+- ```hoon
654+ %= a=wing
655+ b=wing c=hoon
656+ d=wing e=hoon
657+ ...
658+ f=wing g=hoon
659+ ==
660+ ```
661+
662+---
663+
664+- Tall style #2
665+- ```hoon
666+ %= a=wing
667+ b=wing
668+ c=hoon
669+ ::
670+ d=wing
671+ e=hoon
672+ ::
673+ f=wing
674+ g=hoon
675+ ==
676+ ```
677+
678+---
679+
680+- Wide
681+- ```hoon
682+ %=(a b c, d e, f g)
683+ ```
684+
685+---
686+
687+- Irregular
688+- ```
689+ a(b c, d e, f g)
690+ ```
691+{% /table %}
695692
696693#### AST
697694
content/docs/hoon/reference/rune/col.md+176−181
@@ -16,42 +16,40 @@ Construct a cell (2-tuple).
1616
1717Two arguments, fixed.
1818
19−<table>
20−<tr><th>Form</th><th>Syntax</th></tr>
21−<tr>
22−<td>Tall</td>
23−<td>
24−<pre>
25−:- p
26−q
27−</pre>
28−</td>
29−</tr>
30−<tr>
31−<td>Wide</td>
32−<td>
33−<pre>
34−:-(p q)
35−</pre>
36−</td>
37−</tr>
38−<tr>
39−<td>Irregular #1</td>
40−<td>
41−<pre>
42−[p q]
43−</pre>
44−</td>
45−</tr>
46−<tr>
47−<td>Irregular #2</td>
48−<td>
49−<pre>
50−p^q
51−</pre>
52−</td>
53−</tr>
54−</table>
19+{% table %}
20+
21+- Form
22+- Syntax
23+
24+---
25+
26+- Tall
27+- ```hoon
28+ :- p
29+ q
30+ ```
31+
32+---
33+
34+- Wide
35+- ```hoon
36+ :-(p q)
37+ ```
38+
39+---
40+
41+- Irregular #1
42+- ```hoon
43+ [p q]
44+ ```
45+
46+---
47+
48+- Irregular #2
49+- ```
50+ p^q
51+ ```
52+{% /table %}
5553
5654#### AST
5755
@@ -89,30 +87,31 @@ Construct a cell, inverted.
8987
9088Two arguments, fixed.
9189
92−<table>
93−<tr><th>Form</th><th>Syntax</th></tr>
94−<tr>
95−<td>Tall</td>
96−<td>
97−<pre>
98−:_ p
99−q
100−</pre>
101−</td>
102−</tr>
103−<tr>
104−<td>Wide</td>
105−<td>
106−<pre>
107−:_(p q)
108−</pre>
109−</td>
110−</tr>
111−<tr>
112−<td>Irregular</td>
113−<td>None.</td>
114−</tr>
115−</table>
90+{% table %}
91+
92+- Form
93+- Syntax
94+
95+---
96+
97+- Tall
98+- ```hoon
99+ :_ p
100+ q
101+ ```
102+
103+---
104+
105+- Wide
106+- ```hoon
107+ :_(p q)
108+ ```
109+
110+---
111+
112+- Irregular
113+- None.
114+{% /table %}
116115
117116#### AST
118117
@@ -143,35 +142,34 @@ Construct a triple (3-tuple).
143142
144143Three arguments, fixed.
145144
146−<table>
147−<tr><th>Form</th><th>Syntax</th></tr>
148−<tr>
149−<td>Tall</td>
150−<td>
151−<pre>
152−:+ p
153− q
154−r
155−</pre>
156−</td>
157−</tr>
158−<tr>
159−<td>Wide</td>
160−<td>
161−<pre>
162−:+(p q r)
163−</pre>
164−</td>
165−</tr>
166−<tr>
167−<td>Irregular</td>
168−<td>
169−<pre>
170−[p q r]
171−</pre>
172−</td>
173−</tr>
174−</table>
145+{% table %}
146+
147+- Form
148+- Syntax
149+
150+---
151+
152+- Tall
153+- ```hoon
154+ :+ p
155+ q
156+ r
157+ ```
158+
159+---
160+
161+- Wide
162+- ```hoon
163+ :+(p q r)
164+ ```
165+
166+---
167+
168+- Irregular
169+- ```hoon
170+ [p q r]
171+ ```
172+{% /table %}
175173
176174#### AST
177175
@@ -207,36 +205,35 @@ Construct a quadruple (4-tuple).
207205
208206Four arguments, fixed.
209207
210−<table>
211−<tr><th>Form</th><th>Syntax</th></tr>
212−<tr>
213−<td>Tall</td>
214−<td>
215−<pre>
216−:^ p
217− q
218− r
219−s
220−</pre>
221−</td>
222−</tr>
223−<tr>
224−<td>Wide</td>
225−<td>
226−<pre>
227−:^(p q r s)
228−</pre>
229−</td>
230−</tr>
231−<tr>
232−<td>Irregular</td>
233−<td>
234−<pre>
235−[p q r s]
236−</pre>
237−</td>
238−</tr>
239−</table>
208+{% table %}
209+
210+- Form
211+- Syntax
212+
213+---
214+
215+- Tall
216+- ```hoon
217+ :^ p
218+ q
219+ r
220+ s
221+ ```
222+
223+---
224+
225+- Wide
226+- ```hoon
227+ :^(p q r s)
228+ ```
229+
230+---
231+
232+- Irregular
233+- ```hoon
234+ [p q r s]
235+ ```
236+{% /table %}
240237
241238#### AST
242239
@@ -273,37 +270,36 @@ Construct an n-tuple.
273270
274271Variable number of arguments.
275272
276−<table>
277−<tr><th>Form</th><th>Syntax</th></tr>
278−<tr>
279−<td>Tall</td>
280−<td>
281−<pre>
282−:* p1
283− p2
284− p3
285− pn
286−==
287−</pre>
288−</td>
289−</tr>
290−<tr>
291−<td>Wide</td>
292−<td>
293−<pre>
294−:*(p1 p2 p3 pn)
295−</pre>
296−</td>
297−</tr>
298−<tr>
299−<td>Irregular</td>
300−<td>
301−<pre>
302−[p1 p2 p3 pn]
303−</pre>
304−</td>
305−</tr>
306−</table>
273+{% table %}
274+
275+- Form
276+- Syntax
277+
278+---
279+
280+- Tall
281+- ```hoon
282+ :* p1
283+ p2
284+ p3
285+ pn
286+ ==
287+ ```
288+
289+---
290+
291+- Wide
292+- ```hoon
293+ :*(p1 p2 p3 pn)
294+ ```
295+
296+---
297+
298+- Irregular
299+- ```
300+ [p1 p2 p3 pn]
301+ ```
302+{% /table %}
307303
308304#### AST
309305
@@ -363,37 +359,36 @@ Construct a null-terminated list.
363359
364360Variable number of arguments.
365361
366−<table>
367−<tr><th>Form</th><th>Syntax</th></tr>
368−<tr>
369−<td>Tall</td>
370−<td>
371−<pre>
372−:~ p1
373− p2
374− p3
375− pn
376−==
377−</pre>
378−</td>
379−</tr>
380−<tr>
381−<td>Wide</td>
382−<td>
383−<pre>
384−:~(p1 p2 p3 pn)
385−</pre>
386−</td>
387−</tr>
388−<tr>
389−<td>Irregular</td>
390−<td>
391−<pre>
392−~[p1 p2 p3 pn]
393−</pre>
394−</td>
395−</tr>
396−</table>
362+{% table %}
363+
364+- Form
365+- Syntax
366+
367+---
368+
369+- Tall
370+- ```hoon
371+ :~ p1
372+ p2
373+ p3
374+ pn
375+ ==
376+ ```
377+
378+---
379+
380+- Wide
381+- ```hoon
382+ :~(p1 p2 p3 pn)
383+ ```
384+
385+---
386+
387+- Irregular
388+- ```
389+ ~[p1 p2 p3 pn]
390+ ```
391+{% /table %}
397392
398393#### AST
399394
content/docs/hoon/reference/rune/constants.md+1−1
@@ -134,7 +134,7 @@ String with interpolated prettyprinting:
134134
135135---
136136
137−## "Warm Atoms" {#warm}
137+## "Warm Atoms" {% #warm %}
138138
139139A constant, warm atom.
140140
content/docs/hoon/reference/rune/dot.md+132−131
@@ -22,34 +22,35 @@ with a `==`. Note also that the `==` does not make the arguments into a list as
2222you might expect, so `q` must be explicitly null-terminated if its elements are
2323specified separately.
2424
25−<table>
26−<tr><th>Form</th><th>Syntax</th></tr>
27−<tr>
28−<td>Tall</td>
29−<td>
30−<pre>
31−.^ p
32− q1
33− q2
34− q3
35− qn
36−==
37−</pre>
38−</td>
39−</tr>
40−<tr>
41−<td>Wide</td>
42−<td>
43−<pre>
44−.^(p q1 q2)
45−</pre>
46−</td>
47−</tr>
48−<tr>
49−<td>Irregular</td>
50−<td>None.</td>
51−</tr>
52−</table>
25+{% table %}
26+
27+- Form
28+- Syntax
29+
30+---
31+
32+- Tall
33+- ```hoon
34+ .^ p
35+ q1
36+ q2
37+ q3
38+ qn
39+ ==
40+ ```
41+
42+---
43+
44+- Wide
45+- ```hoon
46+ .^(p q1 q2)
47+ ```
48+
49+---
50+
51+- Irregular
52+- None.
53+{% /table %}
5354
5455#### AST
5556
@@ -132,33 +133,32 @@ Increment an atom with Nock `4`.
132133
133134One argument, fixed.
134135
135−<table>
136−<tr><th>Form</th><th>Syntax</th></tr>
137−<tr>
138−<td>Tall</td>
139−<td>
140−<pre>
141−.+ p
142−</pre>
143−</td>
144−</tr>
145−<tr>
146−<td>Wide</td>
147−<td>
148−<pre>
149−.+(p)
150−</pre>
151−</td>
152−</tr>
153−<tr>
154−<td>Irregular</td>
155−<td>
156−<pre>
157−+(p)
158−</pre>
159−</td>
160−</tr>
161−</table>
136+{% table %}
137+
138+- Form
139+- Syntax
140+
141+---
142+
143+- Tall
144+- ```hoon
145+ .+ p
146+ ```
147+
148+---
149+
150+- Wide
151+- ```hoon
152+ .+(p)
153+ ```
154+
155+---
156+
157+- Irregular
158+- ```hoon
159+ +(p)
160+ ```
161+{% /table %}
162162
163163#### AST
164164
@@ -200,30 +200,31 @@ Nock of formula `q` and subject `p`, with type `%noun`.
200200
201201Two arguments, fixed.
202202
203−<table>
204−<tr><th>Form</th><th>Syntax</th></tr>
205−<tr>
206−<td>Tall</td>
207−<td>
208−<pre>
209−.* p
210−q
211−</pre>
212−</td>
213−</tr>
214−<tr>
215−<td>Wide</td>
216−<td>
217−<pre>
218−.*(p q)
219−</pre>
220−</td>
221−</tr>
222−<tr>
223−<td>Irregular</td>
224−<td>None.</td>
225−</tr>
226−</table>
203+{% table %}
204+
205+- Form
206+- Syntax
207+
208+---
209+
210+- Tall
211+- ```hoon
212+ .* p
213+ q
214+ ```
215+
216+---
217+
218+- Wide
219+- ```hoon
220+ .*(p q)
221+ ```
222+
223+---
224+
225+- Irregular
226+- None.
227+{% /table %}
227228
228229#### AST
229230
@@ -264,7 +265,7 @@ therefore possible to use Hoon as a typeless language.
264265
265266---
266267
267−## `.=` "dottis" {#dottis}
268+## `.=` "dottis" {% #dottis %}
268269
269270Test for equality with Nock `5`.
270271
@@ -272,34 +273,33 @@ Test for equality with Nock `5`.
272273
273274Two arguments, fixed.
274275
275−<table>
276−<tr><th>Form</th><th>Syntax</th></tr>
277−<tr>
278−<td>Tall</td>
279−<td>
280−<pre>
281−.= p
282−q
283−</pre>
284−</td>
285−</tr>
286−<tr>
287−<td>Wide</td>
288−<td>
289−<pre>
290−.=(p q)
291−</pre>
292−</td>
293−</tr>
294−<tr>
295−<td>Irregular</td>
296−<td>
297−<pre>
298−=(p q)
299−</pre>
300−</td>
301−</tr>
302−</table>
276+{% table %}
277+
278+- Form
279+- Syntax
280+
281+---
282+
283+- Tall
284+- ```hoon
285+ .= p
286+ q
287+ ```
288+
289+---
290+
291+- Wide
292+- ```hoon
293+ .=(p q)
294+ ```
295+
296+---
297+
298+- Irregular
299+- ```hoon
300+ =(p q)
301+ ```
302+{% /table %}
303303
304304#### AST
305305
@@ -348,29 +348,30 @@ Test for cell or atom with Nock `3`.
348348
349349One argument, fixed.
350350
351−<table>
352−<tr><th>Form</th><th>Syntax</th></tr>
353−<tr>
354−<td>Tall</td>
355−<td>
356−<pre>
357−.? p
358−</pre>
359−</td>
360−</tr>
361−<tr>
362−<td>Wide</td>
363−<td>
364−<pre>
365−.?(p)
366−</pre>
367−</td>
368−</tr>
369−<tr>
370−<td>Irregular</td>
371−<td>None.</td>
372−</tr>
373−</table>
351+{% table %}
352+
353+- Form
354+- Syntax
355+
356+---
357+
358+- Tall
359+- ```hoon
360+ .? p
361+ ```
362+
363+---
364+
365+- Wide
366+- ```hoon
367+ .?(p)
368+ ```
369+
370+---
371+
372+- Irregular
373+- None.
374+{% /table %}
374375
375376#### AST
376377
content/docs/hoon/reference/rune/ket.md+250−234
@@ -19,29 +19,30 @@ Convert a gold core to an iron core (contravariant).
1919
2020One argument, fixed.
2121
22−<table>
23−<tr><th>Form</th><th>Syntax</th></tr>
24−<tr>
25−<td>Tall</td>
26−<td>
27−<pre>
28−^| p
29−</pre>
30−</td>
31−</tr>
32−<tr>
33−<td>Wide</td>
34−<td>
35−<pre>
36−^|(p)
37−</pre>
38−</td>
39−</tr>
40−<tr>
41−<td>Irregular</td>
42−<td>None.</td>
43−</tr>
44−</table>
22+{% table %}
23+
24+- Form
25+- Syntax
26+
27+---
28+
29+- Tall
30+- ```hoon
31+ ^| p
32+ ```
33+
34+---
35+
36+- Wide
37+- ```hoon
38+ ^|(p)
39+ ```
40+
41+---
42+
43+- Irregular
44+- None.
45+{% /table %}
4546
4647#### AST
4748
@@ -89,29 +90,30 @@ Mold gate for type `p`.
8990
9091One argument, fixed.
9192
92−<table>
93−<tr><th>Form</th><th>Syntax</th></tr>
94−<tr>
95−<td>Tall</td>
96−<td>
97−<pre>
98−^: p
99−</pre>
100−</td>
101−</tr>
102−<tr>
103−<td>Wide</td>
104−<td>
105−<pre>
106−^:(p)
107−</pre>
108−</td>
109−</tr>
110−<tr>
111−<td>Irregular</td>
112−<td>None.</td>
113−</tr>
114−</table>
93+{% table %}
94+
95+- Form
96+- Syntax
97+
98+---
99+
100+- Tall
101+- ```hoon
102+ ^: p
103+ ```
104+
105+---
106+
107+- Wide
108+- ```hoon
109+ ^:(p)
110+ ```
111+
112+---
113+
114+- Irregular
115+- None.
116+{% /table %}
115117
116118#### AST
117119
@@ -166,30 +168,31 @@ Typecast on value produced by passing `q` to `p`.
166168
167169Two arguments, fixed.
168170
169−<table>
170−<tr><th>Form</th><th>Syntax</th></tr>
171−<tr>
172−<td>Tall</td>
173−<td>
174−<pre>
175−^. p
176−q
177−</pre>
178−</td>
179−</tr>
180−<tr>
181−<td>Wide</td>
182−<td>
183−<pre>
184−^.(p q)
185−</pre>
186−</td>
187−</tr>
188−<tr>
189−<td>Irregular</td>
190−<td>None.</td>
191−</tr>
192−</table>
171+{% table %}
172+
173+- Form
174+- Syntax
175+
176+---
177+
178+- Tall
179+- ```hoon
180+ ^. p
181+ q
182+ ```
183+
184+---
185+
186+- Wide
187+- ```hoon
188+ ^.(p q)
189+ ```
190+
191+---
192+
193+- Irregular
194+- None.
195+{% /table %}
193196
194197#### AST
195198
@@ -236,34 +239,33 @@ Typecast by explicit type label.
236239
237240Two arguments, fixed.
238241
239−<table>
240−<tr><th>Form</th><th>Syntax</th></tr>
241−<tr>
242−<td>Tall</td>
243−<td>
244−<pre>
245−^- p
246−q
247−</pre>
248−</td>
249−</tr>
250−<tr>
251−<td>Wide</td>
252−<td>
253−<pre>
254−^-(p q)
255−</pre>
256−</td>
257−</tr>
258−<tr>
259−<td>Irregular</td>
260−<td>
261−<pre>
262−`p`q
263−</pre>
264−</td>
265−</tr>
266−</table>
242+{% table %}
243+
244+- Form
245+- Syntax
246+
247+---
248+
249+- Tall
250+- ```hoon
251+ ^- p
252+ q
253+ ```
254+
255+---
256+
257+- Wide
258+- ```hoon
259+ ^-(p q)
260+ ```
261+
262+---
263+
264+- Irregular
265+- ```
266+ `p`q
267+ ```
268+{% /table %}
267269
268270#### AST
269271
@@ -313,27 +315,31 @@ Typecast by inferred type.
313315
314316Two arguments, fixed.
315317
316−<table>
317−<tr><th>Form</th><th>Syntax</th></tr>
318−<tr>
319−<td>Tall</td>
320−<td>
321−<pre>
322−^+ p
323−q
324−</pre>
325−</td>
326−</tr>
327−<tr>
328−<td>Wide</td>
329−<td>
330−<pre>
331−^+(p q)
332−</pre>
333−</td>
334−</tr>
335−<tr><td>Irregular</td><td>None.</td></tr>
336−</table>
318+{% table %}
319+
320+- Form
321+- Syntax
322+
323+---
324+
325+- Tall
326+- ```hoon
327+ ^+ p
328+ q
329+ ```
330+
331+---
332+
333+- Wide
334+- ```hoon
335+ ^+(p q)
336+ ```
337+
338+---
339+
340+- Irregular
341+- None.
342+{% /table %}
337343
338344#### AST
339345
@@ -363,26 +369,30 @@ Convert a core to a zinc core (covariant).
363369
364370One argument, fixed.
365371
366−<table>
367−<tr><th>Form</th><th>Syntax</th></tr>
368−<tr>
369−<td>Tall</td>
370−<td>
371−<pre>
372−^& p
373−</pre>
374−</td>
375−</tr>
376−<tr>
377−<td>Wide</td>
378−<td>
379−<pre>
380−^&(p)
381−</pre>
382−</td>
383−</tr>
384−<tr><td>Irregular</td><td>None.</td></tr>
385−</table>
372+{% table %}
373+
374+- Form
375+- Syntax
376+
377+---
378+
379+- Tall
380+- ```hoon
381+ ^& p
382+ ```
383+
384+---
385+
386+- Wide
387+- ```hoon
388+ ^&(p)
389+ ```
390+
391+---
392+
393+- Irregular
394+- None.
395+{% /table %}
386396
387397#### AST
388398
@@ -446,26 +456,30 @@ Fold constant at compile time.
446456
447457One argument, fixed.
448458
449−<table>
450−<tr><th>Form</th><th>Syntax</th></tr>
451−<tr>
452−<td>Tall</td>
453−<td>
454−<pre>
455−^~ p
456−</pre>
457−</td>
458−</tr>
459−<tr>
460−<td>Wide</td>
461−<td>
462−<pre>
463−^~(p)
464−</pre>
465−</td>
466−</tr>
467−<tr><td>Irregular</td><td>None.</td></tr>
468−</table>
459+{% table %}
460+
461+- Form
462+- Syntax
463+
464+---
465+
466+- Tall
467+- ```hoon
468+ ^~ p
469+ ```
470+
471+---
472+
473+- Wide
474+- ```hoon
475+ ^~(p)
476+ ```
477+
478+---
479+
480+- Irregular
481+- None.
482+{% /table %}
469483
470484#### AST
471485
@@ -497,33 +511,32 @@ Produce example type value.
497511
498512One argument, fixed.
499513
500−<table>
501−<tr><th>Form</th><th>Syntax</th></tr>
502−<tr>
503−<td>Tall</td>
504−<td>
505−<pre>
506−^* p
507−</pre>
508−</td>
509−</tr>
510−<tr>
511−<td>Wide</td>
512−<td>
513−<pre>
514−^*(p)
515−</pre>
516−</td>
517−</tr>
518−<tr>
519−<td>Irregular</td>
520−<td>
521−<pre>
522−*p
523−</pre>
524−</td>
525−</tr>
526−</table>
514+{% table %}
515+
516+- Form
517+- Syntax
518+
519+---
520+
521+- Tall
522+- ```hoon
523+ ^* p
524+ ```
525+
526+---
527+
528+- Wide
529+- ```hoon
530+ ^*(p)
531+ ```
532+
533+---
534+
535+- Irregular
536+- ```hoon
537+ *p
538+ ```
539+{% /table %}
527540
528541`p` is any structure expression.
529542
@@ -578,34 +591,33 @@ Bind name to a value.
578591
579592Two arguments, fixed.
580593
581−<table>
582−<tr><th>Form</th><th>Syntax</th></tr>
583−<tr>
584−<td>Tall</td>
585−<td>
586−<pre>
587−^= p
588−q
589−</pre>
590−</td>
591−</tr>
592−<tr>
593−<td>Wide</td>
594−<td>
595−<pre>
596−^=(p q)
597−</pre>
598−</td>
599−</tr>
600−<tr>
601−<td>Irregular</td>
602−<td>
603−<pre>
604−p=q
605−</pre>
606−</td>
607−</tr>
608−</table>
594+{% table %}
595+
596+- Form
597+- Syntax
598+
599+---
600+
601+- Tall
602+- ```hoon
603+ ^= p
604+ q
605+ ```
606+
607+---
608+
609+- Wide
610+- ```hoon
611+ ^=(p q)
612+ ```
613+
614+---
615+
616+- Irregular
617+- ```
618+ p=q
619+ ```
620+{% /table %}
609621
610622#### AST
611623
@@ -649,26 +661,30 @@ Convert any core to a lead core (bivariant).
649661
650662One argument, fixed.
651663
652−<table>
653−<tr><th>Form</th><th>Syntax</th></tr>
654−<tr>
655−<td>Tall</td>
656−<td>
657−<pre>
658−^? p
659−</pre>
660−</td>
661−</tr>
662−<tr>
663−<td>Wide</td>
664−<td>
665−<pre>
666−^?(p)
667−</pre>
668−</td>
669−</tr>
670−<tr><td>Irregular</td><td>None.</td></tr>
671−</table>
664+{% table %}
665+
666+- Form
667+- Syntax
668+
669+---
670+
671+- Tall
672+- ```hoon
673+ ^? p
674+ ```
675+
676+---
677+
678+- Wide
679+- ```hoon
680+ ^?(p)
681+ ```
682+
683+---
684+
685+- Irregular
686+- None.
687+{% /table %}
672688
673689#### AST
674690
content/docs/hoon/reference/rune/lus.md+91−55
@@ -24,19 +24,28 @@ Chapter label (not useful)
2424
2525One argument, fixed.
2626
27−<table>
28−<tr><th>Form</th><th>Syntax</th></tr>
29−<tr>
30−<td>Tall</td>
31−<td>
32−<pre>
33−+| %label
34−</pre>
35−</td>
36−</tr>
37−<tr><td>Wide</td><td>None.</td></tr>
38−<tr><td>Irregular</td><td>None.</td></tr>
39−</table>
27+{% table %}
28+
29+- Form
30+- Syntax
31+
32+---
33+
34+- Tall
35+- ```hoon
36+ +| %label
37+ ```
38+
39+---
40+
41+- Wide
42+- None.
43+
44+---
45+
46+- Irregular
47+- None.
48+{% /table %}
4049
4150#### Discussion
4251
@@ -90,19 +99,28 @@ Produce a structure arm (type definition).
9099
91100Two arguments, fixed.
92101
93−<table>
94−<tr><th>Form</th><th>Syntax</th></tr>
95−<tr>
96−<td>Tall</td>
97−<td>
98−<pre>
99−+$ p=term q=spec
100−</pre>
101−</td>
102−</tr>
103−<tr><td>Wide</td><td>None.</td></tr>
104−<tr><td>Irregular</td><td>None.</td></tr>
105−</table>
102+{% table %}
103+
104+- Form
105+- Syntax
106+
107+---
108+
109+- Tall
110+- ```hoon
111+ +$ p=term q=spec
112+ ```
113+
114+---
115+
116+- Wide
117+- None.
118+
119+---
120+
121+- Irregular
122+- None.
123+{% /table %}
106124
107125`p` is an arm name, and `q` is any structure expression.
108126
@@ -143,19 +161,28 @@ Produce a normal arm.
143161
144162Two arguments, fixed.
145163
146−<table>
147−<tr><th>Form</th><th>Syntax</th></tr>
148−<tr>
149−<td>Tall</td>
150−<td>
151−<pre>
152−++ p=term q=hoon
153−</pre>
154−</td>
155−</tr>
156−<tr><td>Wide</td><td>None.</td></tr>
157−<tr><td>Irregular</td><td>None.</td></tr>
158−</table>
164+{% table %}
165+
166+- Form
167+- Syntax
168+
169+---
170+
171+- Tall
172+- ```hoon
173+ ++ p=term q=hoon
174+ ```
175+
176+---
177+
178+- Wide
179+- None.
180+
181+---
182+
183+- Irregular
184+- None.
185+{% /table %}
159186
160187`p` is the arm name, and `q` is any Hoon expression.
161188
@@ -192,22 +219,31 @@ Defines deferred expressions within doors.
192219
193220Arguments: A variable number of pairs.
194221
195−<table>
196−<tr><th>Form</th><th>Syntax</th></tr>
197−<tr>
198−<td>Tall</td>
199−<td>
200−<pre>
201−+* a=term b=hoon
202− c=term d=hoon
203− ...
204− e=term f=hoon
205−</pre>
206−</td>
207−</tr>
208−<tr><td>Wide</td><td>None.</td></tr>
209−<tr><td>Irregular</td><td>None.</td></tr>
210−</table>
222+{% table %}
223+
224+- Form
225+- Syntax
226+
227+---
228+
229+- Tall
230+- ```hoon
231+ +* a=term b=hoon
232+ c=term d=hoon
233+ ...
234+ e=term f=hoon
235+ ```
236+
237+---
238+
239+- Wide
240+- None.
241+
242+---
243+
244+- Irregular
245+- None.
246+{% /table %}
211247
212248`a`, `c`, `e` are arm names and `b`, `d`, `f` are any Hoon expression. Note that
213249unlike all other runes with a variable number of arguments, the list of
content/docs/hoon/reference/rune/mic.md+208−181
@@ -15,37 +15,36 @@ Call a binary function as an n-ary function.
1515
1616One fixed argument, then a variable number of arguments.
1717
18−<table>
19−<tr><th>Form</th><th>Syntax</th></tr>
20−<tr>
21−<td>Tall</td>
22−<td>
23−<pre>
24−;: p
25− q1
26− q2
27− qn
28−==
29−</pre>
30−</td>
31−</tr>
32−<tr>
33−<td>Wide</td>
34−<td>
35−<pre>
36−;:(p q1 q2 qn)
37−</pre>
38−</td>
39−</tr>
40−<tr>
41−<td>Irregular</td>
42−<td>
43−<pre>
44−:(p q1 q2 qn)
45−</pre>
46−</td>
47−</tr>
48−</table>
18+{% table %}
19+
20+- Form
21+- Syntax
22+
23+---
24+
25+- Tall
26+- ```hoon
27+ ;: p
28+ q1
29+ q2
30+ qn
31+ ==
32+ ```
33+
34+---
35+
36+- Wide
37+- ```hoon
38+ ;:(p q1 q2 qn)
39+ ```
40+
41+---
42+
43+- Irregular
44+- ```
45+ :(p q1 q2 qn)
46+ ```
47+{% /table %}
4948
5049#### AST
5150
@@ -106,26 +105,30 @@ Monadic do notation.
106105
107106Four arguments, fixed.
108107
109−<table>
110−<tr><th>Form</th><th>Syntax</th></tr>
111−<tr>
112−<td>Tall</td>
113−<td>
114−<pre>
115−;< mold bind expr1 expr2
116−</pre>
117−</td>
118−</tr>
119−<tr>
120−<td>Wide</td>
121−<td>
122−<pre>
123−;<(mold bind expr1 expr2)
124−</pre>
125−</td>
126−</tr>
127−<tr><td>Irregular</td><td>None.</td></tr>
128−</table>
108+{% table %}
109+
110+- Form
111+- Syntax
112+
113+---
114+
115+- Tall
116+- ```hoon
117+ ;< mold bind expr1 expr2
118+ ```
119+
120+---
121+
122+- Wide
123+- ```hoon
124+ ;<(mold bind expr1 expr2)
125+ ```
126+
127+---
128+
129+- Irregular
130+- None.
131+{% /table %}
129132
130133#### AST
131134
@@ -208,26 +211,30 @@ make a single XML node (Sail)
208211
209212One argument, fixed.
210213
211−<table>
212−<tr><th>Form</th><th>Syntax</th></tr>
213−<tr>
214−<td>Tall</td>
215−<td>
216−<pre>
217−;+ p
218−</pre>
219−</td>
220−</tr>
221−<tr>
222−<td>Wide</td>
223−<td>
224−<pre>
225−;+(p)
226−</pre>
227−</td>
228−</tr>
229−<tr><td>Irregular</td><td>None.</td></tr>
230−</table>
214+{% table %}
215+
216+- Form
217+- Syntax
218+
219+---
220+
221+- Tall
222+- ```hoon
223+ ;+ p
224+ ```
225+
226+---
227+
228+- Wide
229+- ```hoon
230+ ;+(p)
231+ ```
232+
233+---
234+
235+- Irregular
236+- None.
237+{% /table %}
231238
232239`p` is a Hoon expression that produces a `manx`.
233240
@@ -246,7 +253,7 @@ nouns that represent XML nodes. With the appropriate rendering pipeline, a Sail
246253document can be used to generate a static website.
247254
248255In Sail a single XML node is represented by a `manx`. A single
249−<code>&lt;p&gt;</code> node `manx` can be produced in the following way:
256+<code><p&gt;</code> node `manx` can be produced in the following way:
250257
251258```
252259> ;p: This will be rendered as an XML node.
@@ -294,27 +301,31 @@ Normalize with a mold, asserting fixpoint.
294301
295302Two arguments, fixed.
296303
297−<table>
298−<tr><th>Form</th><th>Syntax</th></tr>
299−<tr>
300−<td>Tall</td>
301−<td>
302−<pre>
303−;; p
304−q
305−</pre>
306−</td>
307−</tr>
308−<tr>
309−<td>Wide</td>
310−<td>
311−<pre>
312−;;(p q)
313−</pre>
314−</td>
315−</tr>
316−<tr><td>Irregular</td><td>None.</td></tr>
317−</table>
304+{% table %}
305+
306+- Form
307+- Syntax
308+
309+---
310+
311+- Tall
312+- ```hoon
313+ ;; p
314+ q
315+ ```
316+
317+---
318+
319+- Wide
320+- ```hoon
321+ ;;(p q)
322+ ```
323+
324+---
325+
326+- Irregular
327+- None.
328+{% /table %}
318329
319330#### AST
320331
@@ -369,26 +380,30 @@ Tape as XML element.
369380
370381One argument, fixed.
371382
372−<table>
373−<tr><th>Form</th><th>Syntax</th></tr>
374−<tr>
375−<td>Tall</td>
376−<td>
377−<pre>
378−;/ p
379−</pre>
380−</td>
381−</tr>
382−<tr>
383−<td>Wide</td>
384−<td>
385−<pre>
386−;/(p)
387−</pre>
388−</td>
389−</tr>
390−<tr><td>Irregular</td><td>None.</td></tr>
391−</table>
383+{% table %}
384+
385+- Form
386+- Syntax
387+
388+---
389+
390+- Tall
391+- ```hoon
392+ ;/ p
393+ ```
394+
395+---
396+
397+- Wide
398+- ```hoon
399+ ;/(p)
400+ ```
401+
402+---
403+
404+- Irregular
405+- None.
406+{% /table %}
392407
393408#### AST
394409
@@ -419,30 +434,34 @@ Glue a pipeline together with a product-sample adapter.
419434
420435One fixed argument, then a variable number of arguments.
421436
422−<table>
423−<tr><th>Form</th><th>Syntax</th></tr>
424−<tr>
425−<td>Tall</td>
426−<td>
427−<pre>
428−;~ p
429− q1
430− q2
431− qn
432−==
433−</pre>
434−</td>
435−</tr>
436−<tr>
437−<td>Wide</td>
438−<td>
439−<pre>
440−;~(p q1 q2 qn)
441−</pre>
442−</td>
443−</tr>
444−<tr><td>Irregular</td><td>None.</td></tr>
445−</table>
437+{% table %}
438+
439+- Form
440+- Syntax
441+
442+---
443+
444+- Tall
445+- ```hoon
446+ ;~ p
447+ q1
448+ q2
449+ qn
450+ ==
451+ ```
452+
453+---
454+
455+- Wide
456+- ```hoon
457+ ;~(p q1 q2 qn)
458+ ```
459+
460+---
461+
462+- Irregular
463+- None.
464+{% /table %}
446465
447466#### AST
448467
@@ -559,26 +578,30 @@ make a list of XML nodes from complex Hoon expression (Sail)
559578
560579One argument, fixed.
561580
562−<table>
563−<tr><th>Form</th><th>Syntax</th></tr>
564−<tr>
565−<td>Tall</td>
566−<td>
567−<pre>
568−;* p
569−</pre>
570−</td>
571−</tr>
572−<tr>
573−<td>Wide</td>
574−<td>
575−<pre>
576−;*(p)
577−</pre>
578−</td>
579−</tr>
580−<tr><td>Irregular</td><td>None.</td></tr>
581−</table>
581+{% table %}
582+
583+- Form
584+- Syntax
585+
586+---
587+
588+- Tall
589+- ```hoon
590+ ;* p
591+ ```
592+
593+---
594+
595+- Wide
596+- ```hoon
597+ ;*(p)
598+ ```
599+
600+---
601+
602+- Irregular
603+- None.
604+{% /table %}
582605
583606`p` is a Hoon expression that produces a `marl`.
584607
@@ -636,30 +659,34 @@ make a list of XML nodes (Sail)
636659
637660A variable number of arguments.
638661
639−<table>
640−<tr><th>Form</th><th>Syntax</th></tr>
641−<tr>
642−<td>Tall</td>
643−<td>
644−<pre>
645−;= p1
646− p2
647− p3
648− pn
649−==
650−</pre>
651−</td>
652−</tr>
653−<tr>
654−<td>Wide</td>
655−<td>
656−<pre>
657−;=(p1 p2 p3 pn)
658−</pre>
659−</td>
660−</tr>
661−<tr><td>Irregular</td><td>None.</td></tr>
662−</table>
662+{% table %}
663+
664+- Form
665+- Syntax
666+
667+---
668+
669+- Tall
670+- ```hoon
671+ ;= p1
672+ p2
673+ p3
674+ pn
675+ ==
676+ ```
677+
678+---
679+
680+- Wide
681+- ```hoon
682+ ;=(p1 p2 p3 pn)
683+ ```
684+
685+---
686+
687+- Irregular
688+- None.
689+{% /table %}
663690
664691`p1`-`pn` are Hoon expressions, each of which poduces a `manx`.
665692
content/docs/hoon/reference/rune/sig.md+303−283
@@ -16,30 +16,31 @@ Raw hint, applied to computation.
1616
1717Two arguments, fixed.
1818
19−<table>
20−<tr><th>Form</th><th>Syntax</th></tr>
21−<tr>
22−<td>Tall</td>
23−<td>
24−<pre>
25−~> p
26−q
27−</pre>
28−</td>
29−</tr>
30−<tr>
31−<td>Wide</td>
32−<td>
33−<pre>
34−~>(p q)
35−</pre>
36−</td>
37−</tr>
38−<tr>
39−<td>Irregular</td>
40−<td>None.</td>
41−</tr>
42−</table>
19+{% table %}
20+
21+- Form
22+- Syntax
23+
24+---
25+
26+- Tall
27+- ```hoon
28+ ~> p
29+ q
30+ ```
31+
32+---
33+
34+- Wide
35+- ```hoon
36+ ~>(p q)
37+ ```
38+
39+---
40+
41+- Irregular
42+- None.
43+{% /table %}
4344
4445#### AST
4546
@@ -89,30 +90,31 @@ Tracing printf.
8990
9091Two arguments, fixed.
9192
92−<table>
93−<tr><th>Form</th><th>Syntax</th></tr>
94−<tr>
95−<td>Tall</td>
96−<td>
97−<pre>
98−~| p
99−q
100−</pre>
101−</td>
102−</tr>
103−<tr>
104−<td>Wide</td>
105−<td>
106−<pre>
107−~|(p q)
108−</pre>
109−</td>
110−</tr>
111−<tr>
112−<td>Irregular</td>
113−<td>None.</td>
114−</tr>
115−</table>
93+{% table %}
94+
95+- Form
96+- Syntax
97+
98+---
99+
100+- Tall
101+- ```hoon
102+ ~| p
103+ q
104+ ```
105+
106+---
107+
108+- Wide
109+- ```hoon
110+ ~|(p q)
111+ ```
112+
113+---
114+
115+- Irregular
116+- None.
117+{% /table %}
116118
117119#### AST
118120
@@ -151,30 +153,31 @@ Profiling hit counter.
151153
152154Two arguments, fixed.
153155
154−<table>
155−<tr><th>Form</th><th>Syntax</th></tr>
156−<tr>
157−<td>Tall</td>
158−<td>
159−<pre>
160−~& p
161−q
162−</pre>
163−</td>
164−</tr>
165−<tr>
166−<td>Wide</td>
167−<td>
168−<pre>
169−~&(p q)
170−</pre>
171−</td>
172−</tr>
173−<tr>
174−<td>Irregular</td>
175−<td>None.</td>
176−</tr>
177−</table>
156+{% table %}
157+
158+- Form
159+- Syntax
160+
161+---
162+
163+- Tall
164+- ```hoon
165+ ~& p
166+ q
167+ ```
168+
169+---
170+
171+- Wide
172+- ```hoon
173+ ~&(p q)
174+ ```
175+
176+---
177+
178+- Irregular
179+- None.
180+{% /table %}
178181
179182#### AST
180183
@@ -229,30 +232,31 @@ User-formatted tracing printf.
229232
230233Two arguments, fixed.
231234
232−<table>
233−<tr><th>Form</th><th>Syntax</th></tr>
234−<tr>
235−<td>Tall</td>
236−<td>
237−<pre>
238−~_ p
239−q
240−</pre>
241−</td>
242−</tr>
243−<tr>
244−<td>Wide</td>
245−<td>
246−<pre>
247−~_(p q)
248−</pre>
249−</td>
250−</tr>
251−<tr>
252−<td>Irregular</td>
253−<td>None.</td>
254−</tr>
255−</table>
235+{% table %}
236+
237+- Form
238+- Syntax
239+
240+---
241+
242+- Tall
243+- ```hoon
244+ ~_ p
245+ q
246+ ```
247+
248+---
249+
250+- Wide
251+- ```hoon
252+ ~_(p q)
253+ ```
254+
255+---
256+
257+- Irregular
258+- None.
259+{% /table %}
256260
257261#### AST
258262
@@ -297,25 +301,34 @@ Four arguments. Two fixed arguments, then a third which may be `~` if empty or
297301else a variable number of pairs sandwiched between two `==`s, then a fourth
298302fixed argument.
299303
300−<table>
301−<tr><th>Form</th><th>Syntax</th></tr>
302−<tr>
303−<td>Tall</td>
304−<td>
305−<pre>
306−~% p q
307− ==
308− r1a r1b
309− r2a r2b
310− rna rnb
311− ==
312−s
313−</pre>
314−</td>
315−</tr>
316−<tr><td>Wide</td><td>None.</td></tr>
317−<tr><td>Irregular</td><td>None.</td></tr>
318−</table>
304+{% table %}
305+
306+- Form
307+- Syntax
308+
309+---
310+
311+- Tall
312+- ```hoon
313+ ~% p q
314+ ==
315+ r1a r1b
316+ r2a r2b
317+ rna rnb
318+ ==
319+ s
320+ ```
321+
322+---
323+
324+- Wide
325+- None.
326+
327+---
328+
329+- Irregular
330+- None.
331+{% /table %}
319332
320333#### AST
321334
@@ -406,30 +419,31 @@ Raw hint, applied to product.
406419
407420Two arguments, fixed.
408421
409−<table>
410−<tr><th>Form</th><th>Syntax</th></tr>
411−<tr>
412−<td>Tall</td>
413−<td>
414−<pre>
415−~< p
416−q
417−</pre>
418−</td>
419−</tr>
420−<tr>
421−<td>Wide</td>
422−<td>
423−<pre>
424−~<(p q)
425−</pre>
426−</td>
427−</tr>
428−<tr>
429−<td>Irregular</td>
430−<td>None.</td>
431−</tr>
432−</table>
422+{% table %}
423+
424+- Form
425+- Syntax
426+
427+---
428+
429+- Tall
430+- ```hoon
431+ ~< p
432+ q
433+ ```
434+
435+---
436+
437+- Wide
438+- ```hoon
439+ ~<(p q)
440+ ```
441+
442+---
443+
444+- Irregular
445+- None.
446+{% /table %}
433447
434448`p` may either be a a `term` or a pair of `[term hoon]`. If it's the latter, `p`
435449may optionally be written as `%foo.some-hoon`.
@@ -469,29 +483,30 @@ Cache a computation.
469483
470484One argument, fixed.
471485
472−<table>
473−<tr><th>Form</th><th>Syntax</th></tr>
474−<tr>
475−<td>Tall</td>
476−<td>
477−<pre>
478−~+ p
479−</pre>
480−</td>
481−</tr>
482−<tr>
483−<td>Wide</td>
484−<td>
485−<pre>
486−~+(p)
487−</pre>
488−</td>
489−</tr>
490−<tr>
491−<td>Irregular</td>
492−<td>None.</td>
493−</tr>
494−</table>
486+{% table %}
487+
488+- Form
489+- Syntax
490+
491+---
492+
493+- Tall
494+- ```hoon
495+ ~+ p
496+ ```
497+
498+---
499+
500+- Wide
501+- ```hoon
502+ ~+(p)
503+ ```
504+
505+---
506+
507+- Irregular
508+- None.
509+{% /table %}
495510
496511#### AST
497512
@@ -541,30 +556,31 @@ Jet registration for gate with registered context.
541556
542557Two arguments, fixed.
543558
544−<table>
545−<tr><th>Form</th><th>Syntax</th></tr>
546−<tr>
547−<td>Tall</td>
548−<td>
549−<pre>
550−~/ p
551−q
552−</pre>
553−</td>
554−</tr>
555−<tr>
556−<td>Wide</td>
557−<td>
558−<pre>
559−~/(p q)
560−</pre>
561−</td>
562−</tr>
563−<tr>
564−<td>Irregular</td>
565−<td>None.</td>
566−</tr>
567−</table>
559+{% table %}
560+
561+- Form
562+- Syntax
563+
564+---
565+
566+- Tall
567+- ```hoon
568+ ~/ p
569+ q
570+ ```
571+
572+---
573+
574+- Wide
575+- ```hoon
576+ ~/(p q)
577+ ```
578+
579+---
580+
581+- Irregular
582+- None.
583+{% /table %}
568584
569585#### AST
570586
@@ -601,30 +617,31 @@ Debugging printf.
601617
602618Two arguments, fixed.
603619
604−<table>
605−<tr><th>Form</th><th>Syntax</th></tr>
606−<tr>
607−<td>Tall</td>
608−<td>
609−<pre>
610−~& p
611−q
612−</pre>
613−</td>
614−</tr>
615−<tr>
616−<td>Wide</td>
617−<td>
618−<pre>
619−~&(p q)
620−</pre>
621−</td>
622−</tr>
623−<tr>
624−<td>Irregular</td>
625−<td>None.</td>
626−</tr>
627−</table>
620+{% table %}
621+
622+- Form
623+- Syntax
624+
625+---
626+
627+- Tall
628+- ```hoon
629+ ~& p
630+ q
631+ ```
632+
633+---
634+
635+- Wide
636+- ```hoon
637+ ~&(p q)
638+ ```
639+
640+---
641+
642+- Irregular
643+- None.
644+{% /table %}
628645
629646#### AST
630647
@@ -670,30 +687,31 @@ Detect duplicate.
670687
671688Two arguments, fixed.
672689
673−<table>
674−<tr><th>Form</th><th>Syntax</th></tr>
675−<tr>
676−<td>Tall</td>
677−<td>
678−<pre>
679−~= p
680−q
681−</pre>
682−</td>
683−</tr>
684−<tr>
685−<td>Wide</td>
686−<td>
687−<pre>
688−~=(p q)
689−</pre>
690−</td>
691−</tr>
692−<tr>
693−<td>Irregular</td>
694−<td>None.</td>
695−</tr>
696−</table>
690+{% table %}
691+
692+- Form
693+- Syntax
694+
695+---
696+
697+- Tall
698+- ```hoon
699+ ~= p
700+ q
701+ ```
702+
703+---
704+
705+- Wide
706+- ```hoon
707+ ~=(p q)
708+ ```
709+
710+---
711+
712+- Irregular
713+- None.
714+{% /table %}
697715
698716#### AST
699717
@@ -739,31 +757,32 @@ Conditional debug printf.
739757
740758Three arguments, fixed.
741759
742−<table>
743−<tr><th>Form</th><th>Syntax</th></tr>
744−<tr>
745−<td>Tall</td>
746−<td>
747−<pre>
748−~? p
749− q
750−r
751−</pre>
752−</td>
753−</tr>
754−<tr>
755−<td>Wide</td>
756−<td>
757−<pre>
758−~?(p q r)
759−</pre>
760−</td>
761−</tr>
762−<tr>
763−<td>Irregular</td>
764−<td>None.</td>
765−</tr>
766−</table>
760+{% table %}
761+
762+- Form
763+- Syntax
764+
765+---
766+
767+- Tall
768+- ```hoon
769+ ~? p
770+ q
771+ r
772+ ```
773+
774+---
775+
776+- Wide
777+- ```hoon
778+ ~?(p q r)
779+ ```
780+
781+---
782+
783+- Irregular
784+- None.
785+{% /table %}
767786
768787#### AST
769788
@@ -811,30 +830,31 @@ Print type on compilation fail.
811830
812831Two arguments, fixed.
813832
814−<table>
815−<tr><th>Form</th><th>Syntax</th></tr>
816−<tr>
817−<td>Tall</td>
818−<td>
819−<pre>
820−~! p
821−q
822−</pre>
823−</td>
824−</tr>
825−<tr>
826−<td>Wide</td>
827−<td>
828−<pre>
829−~!(p q)
830−</pre>
831−</td>
832−</tr>
833−<tr>
834−<td>Irregular</td>
835−<td>None.</td>
836−</tr>
837−</table>
833+{% table %}
834+
835+- Form
836+- Syntax
837+
838+---
839+
840+- Tall
841+- ```hoon
842+ ~! p
843+ q
844+ ```
845+
846+---
847+
848+- Wide
849+- ```hoon
850+ ~!(p q)
851+ ```
852+
853+---
854+
855+- Irregular
856+- None.
857+{% /table %}
838858
839859#### AST
840860
content/docs/hoon/reference/rune/tis.md+364−352
@@ -32,30 +32,31 @@ Compose two expressions.
3232
3333Two arguments, fixed.
3434
35−<table>
36−<tr><th>Form</th><th>Syntax</th></tr>
37−<tr>
38−<td>Tall</td>
39−<td>
40−<pre>
41−=> p
42−q
43−</pre>
44−</td>
45−</tr>
46−<tr>
47−<td>Wide</td>
48−<td>
49−<pre>
50−=>(p q)
51−</pre>
52−</td>
53−</tr>
54−<tr>
55−<td>Irregular</td>
56−<td>None.</td>
57−</tr>
58−</table>
35+{% table %}
36+
37+- Form
38+- Syntax
39+
40+---
41+
42+- Tall
43+- ```hoon
44+ => p
45+ q
46+ ```
47+
48+---
49+
50+- Wide
51+- ```hoon
52+ =>(p q)
53+ ```
54+
55+---
56+
57+- Irregular
58+- None.
59+{% /table %}
5960
6061#### AST
6162
@@ -100,30 +101,31 @@ of a given mold.
100101
101102Two arguments, fixed.
102103
103−<table>
104−<tr><th>Form</th><th>Syntax</th></tr>
105−<tr>
106−<td>Tall</td>
107−<td>
108−<pre>
109−=| p
110−q
111−</pre>
112−</td>
113−</tr>
114−<tr>
115−<td>Wide</td>
116−<td>
117−<pre>
118−=|(p q)
119−</pre>
120−</td>
121−</tr>
122−<tr>
123−<td>Irregular</td>
124−<td>None.</td>
125−</tr>
126−</table>
104+{% table %}
105+
106+- Form
107+- Syntax
108+
109+---
110+
111+- Tall
112+- ```hoon
113+ =| p
114+ q
115+ ```
116+
117+---
118+
119+- Wide
120+- ```hoon
121+ =|(p q)
122+ ```
123+
124+---
125+
126+- Irregular
127+- None.
128+{% /table %}
127129
128130#### AST
129131
@@ -165,33 +167,34 @@ Change multiple legs in the subject.
165167
166168Two arguments: the first a variable number of pairs, the second is fixed.
167169
168−<table>
169−<tr><th>Form</th><th>Syntax</th></tr>
170−<tr>
171−<td>Tall</td>
172−<td>
173−<pre>
174−=: p1a p1b
175− p2a p2b
176− p3a p3b
177− ==
178−q
179−</pre>
180−</td>
181−</tr>
182−<tr>
183−<td>Wide</td>
184−<td>
185−<pre>
186−=:(p1a p1b, p2a p2b, p3a p3b q)
187−</pre>
188−</td>
189−</tr>
190−<tr>
191−<td>Irregular</td>
192−<td>None.</td>
193−</tr>
194−</table>
170+{% table %}
171+
172+- Form
173+- Syntax
174+
175+---
176+
177+- Tall
178+- ```hoon
179+ =: p1a p1b
180+ p2a p2b
181+ p3a p3b
182+ ==
183+ q
184+ ```
185+
186+---
187+
188+- Wide
189+- ```hoon
190+ =:(p1a p1b, p2a p2b, p3a p3b q)
191+ ```
192+
193+---
194+
195+- Irregular
196+- None.
197+{% /table %}
195198
196199#### AST
197200
@@ -230,30 +233,31 @@ Expose namespace.
230233
231234Two arguments, fixed.
232235
233−<table>
234−<tr><th>Form</th><th>Syntax</th></tr>
235−<tr>
236−<td>Tall</td>
237−<td>
238−<pre>
239−=, p
240−q
241−</pre>
242−</td>
243−</tr>
244−<tr>
245−<td>Wide</td>
246−<td>
247−<pre>
248−=,(p q)
249−</pre>
250−</td>
251−</tr>
252−<tr>
253−<td>Irregular</td>
254−<td>None.</td>
255−</tr>
256−</table>
236+{% table %}
237+
238+- Form
239+- Syntax
240+
241+---
242+
243+- Tall
244+- ```hoon
245+ =, p
246+ q
247+ ```
248+
249+---
250+
251+- Wide
252+- ```hoon
253+ =,(p q)
254+ ```
255+
256+---
257+
258+- Irregular
259+- None.
260+{% /table %}
257261
258262#### AST
259263
@@ -312,30 +316,31 @@ Change one leg in the subject.
312316
313317Three arguments, fixed.
314318
315−<table>
316−<tr><th>Form</th><th>Syntax</th></tr>
317−<tr>
318−<td>Tall</td>
319−<td>
320−<pre>
321−=. p q
322−r
323−</pre>
324−</td>
325−</tr>
326−<tr>
327−<td>Wide</td>
328−<td>
329−<pre>
330−=.(p q r)
331−</pre>
332−</td>
333−</tr>
334−<tr>
335−<td>Irregular</td>
336−<td>None.</td>
337−</tr>
338−</table>
319+{% table %}
320+
321+- Form
322+- Syntax
323+
324+---
325+
326+- Tall
327+- ```hoon
328+ =. p q
329+ r
330+ ```
331+
332+---
333+
334+- Wide
335+- ```hoon
336+ =.(p q r)
337+ ```
338+
339+---
340+
341+- Irregular
342+- None.
343+{% /table %}
339344
340345#### AST
341346
@@ -383,30 +388,31 @@ Combine a new noun with the subject, inverted.
383388
384389Two arguments, fixed.
385390
386−<table>
387−<tr><th>Form</th><th>Syntax</th></tr>
388−<tr>
389−<td>Tall</td>
390−<td>
391−<pre>
392−=- p
393−q
394−</pre>
395−</td>
396−</tr>
397−<tr>
398−<td>Wide</td>
399−<td>
400−<pre>
401−=-(p q)
402−</pre>
403−</td>
404−</tr>
405−<tr>
406−<td>Irregular</td>
407−<td>None.</td>
408−</tr>
409−</table>
391+{% table %}
392+
393+- Form
394+- Syntax
395+
396+---
397+
398+- Tall
399+- ```hoon
400+ =- p
401+ q
402+ ```
403+
404+---
405+
406+- Wide
407+- ```hoon
408+ =-(p q)
409+ ```
410+
411+---
412+
413+- Irregular
414+- None.
415+{% /table %}
410416
411417#### AST
412418
@@ -447,31 +453,32 @@ Pin the head of a pair; change a leg with the tail.
447453
448454Four arguments, fixed.
449455
450−<table>
451−<tr><th>Form</th><th>Syntax</th></tr>
452−<tr>
453−<td>Tall</td>
454−<td>
455−<pre>
456−=^ p q
457− r
458−s
459−</pre>
460−</td>
461−</tr>
462−<tr>
463−<td>Wide</td>
464−<td>
465−<pre>
466−=^(p q r s)
467−</pre>
468−</td>
469−</tr>
470−<tr>
471−<td>Irregular</td>
472−<td>None.</td>
473−</tr>
474−</table>
456+{% table %}
457+
458+- Form
459+- Syntax
460+
461+---
462+
463+- Tall
464+- ```hoon
465+ =^ p q
466+ r
467+ s
468+ ```
469+
470+---
471+
472+- Wide
473+- ```hoon
474+ =^(p q r s)
475+ ```
476+
477+---
478+
479+- Irregular
480+- None.
481+{% /table %}
475482
476483#### AST
477484
@@ -528,34 +535,33 @@ Compose two expressions, inverted.
528535
529536Two arguments, fixed
530537
531−<table>
532−<tr><th>Form</th><th>Syntax</th></tr>
533−<tr>
534−<td>Tall</td>
535−<td>
536−<pre>
537−=< p
538−q
539−</pre>
540−</td>
541−</tr>
542−<tr>
543−<td>Wide</td>
544−<td>
545−<pre>
546−=<(p q)
547−</pre>
548−</td>
549−</tr>
550−<tr>
551−<td>Irregular</td>
552−<td>
553−<pre>
554−p:q
555−</pre>
556−</td>
557−</tr>
558−</table>
538+{% table %}
539+
540+- Form
541+- Syntax
542+
543+---
544+
545+- Tall
546+- ```hoon
547+ =< p
548+ q
549+ ```
550+
551+---
552+
553+- Wide
554+- ```hoon
555+ =<(p q)
556+ ```
557+
558+---
559+
560+- Irregular
561+- ```
562+ p:q
563+ ```
564+{% /table %}
559565
560566#### AST
561567
@@ -600,30 +606,31 @@ Combine a new noun with the subject.
600606
601607Two arguments, fixed.
602608
603−<table>
604−<tr><th>Form</th><th>Syntax</th></tr>
605−<tr>
606−<td>Tall</td>
607−<td>
608−<pre>
609−=+ p
610−q
611−</pre>
612−</td>
613−</tr>
614−<tr>
615−<td>Wide</td>
616−<td>
617−<pre>
618−=+(p q)
619−</pre>
620−</td>
621−</tr>
622−<tr>
623−<td>Irregular</td>
624−<td>None.</td>
625−</tr>
626−</table>
609+{% table %}
610+
611+- Form
612+- Syntax
613+
614+---
615+
616+- Tall
617+- ```hoon
618+ =+ p
619+ q
620+ ```
621+
622+---
623+
624+- Wide
625+- ```hoon
626+ =+(p q)
627+ ```
628+
629+---
630+
631+- Irregular
632+- None.
633+{% /table %}
627634
628635#### AST
629636
@@ -669,31 +676,32 @@ order.
669676
670677Three arguments, fixed.
671678
672−<table>
673−<tr><th>Form</th><th>Syntax</th></tr>
674−<tr>
675−<td>Tall</td>
676−<td>
677−<pre>
678−=; p
679− q
680−r
681−</pre>
682−</td>
683−</tr>
684−<tr>
685−<td>Wide</td>
686−<td>
687−<pre>
688−=;(p q r)
689−</pre>
690−</td>
691−</tr>
692−<tr>
693−<td>Irregular</td>
694−<td>None.</td>
695−</tr>
696−</table>
679+{% table %}
680+
681+- Form
682+- Syntax
683+
684+---
685+
686+- Tall
687+- ```hoon
688+ =; p
689+ q
690+ r
691+ ```
692+
693+---
694+
695+- Wide
696+- ```hoon
697+ =;(p q r)
698+ ```
699+
700+---
701+
702+- Irregular
703+- None.
704+{% /table %}
697705
698706#### AST
699707
@@ -734,31 +742,32 @@ Combine a named noun with the subject, possibly with type annotation.
734742
735743Three arguments, fixed.
736744
737−<table>
738−<tr><th>Form</th><th>Syntax</th></tr>
739−<tr>
740−<td>Tall</td>
741−<td>
742−<pre>
743−=/ p
744− q
745−r
746−</pre>
747−</td>
748−</tr>
749−<tr>
750−<td>Wide</td>
751−<td>
752−<pre>
753−=/(p q r)
754−</pre>
755−</td>
756−</tr>
757−<tr>
758−<td>Irregular</td>
759−<td>None.</td>
760−</tr>
761−</table>
745+{% table %}
746+
747+- Form
748+- Syntax
749+
750+---
751+
752+- Tall
753+- ```hoon
754+ =/ p
755+ q
756+ r
757+ ```
758+
759+---
760+
761+- Wide
762+- ```hoon
763+ =/(p q r)
764+ ```
765+
766+---
767+
768+- Irregular
769+- None.
770+{% /table %}
762771
763772#### AST
764773
@@ -823,33 +832,34 @@ Compose many expressions.
823832
824833Variable number of arguments.
825834
826−<table>
827−<tr><th>Form</th><th>Syntax</th></tr>
828−<tr>
829−<td>Tall</td>
830−<td>
831−<pre>
832−=~ p1
833− p2
834− p3
835− pn
836−==
837−</pre>
838−</td>
839−</tr>
840−<tr>
841−<td>Wide</td>
842−<td>
843−<pre>
844−=~(p1 p2 p3 pn)
845−</pre>
846−</td>
847−</tr>
848−<tr>
849−<td>Irregular</td>
850−<td>None.</td>
851−</tr>
852−</table>
835+{% table %}
836+
837+- Form
838+- Syntax
839+
840+---
841+
842+- Tall
843+- ```hoon
844+ =~ p1
845+ p2
846+ p3
847+ pn
848+ ==
849+ ```
850+
851+---
852+
853+- Wide
854+- ```hoon
855+ =~(p1 p2 p3 pn)
856+ ```
857+
858+---
859+
860+- Irregular
861+- None.
862+{% /table %}
853863
854864#### AST
855865
@@ -894,7 +904,7 @@ The product of the chain composition.
894904
895905---
896906
897−## `=*` "tistar" {#tistar}
907+## `=*` "tistar" {% #tistar %}
898908
899909Define a deferred expression.
900910
@@ -902,31 +912,32 @@ Define a deferred expression.
902912
903913Three arguments, fixed.
904914
905−<table>
906−<tr><th>Form</th><th>Syntax</th></tr>
907−<tr>
908−<td>Tall</td>
909−<td>
910−<pre>
911−=* p
912− q
913−r
914−</pre>
915−</td>
916−</tr>
917−<tr>
918−<td>Wide</td>
919−<td>
920−<pre>
921−=*(p q r)
922−</pre>
923−</td>
924−</tr>
925−<tr>
926−<td>Irregular</td>
927−<td>None.</td>
928−</tr>
929−</table>
915+{% table %}
916+
917+- Form
918+- Syntax
919+
920+---
921+
922+- Tall
923+- ```hoon
924+ =* p
925+ q
926+ r
927+ ```
928+
929+---
930+
931+- Wide
932+- ```hoon
933+ =*(p q r)
934+ ```
935+
936+---
937+
938+- Irregular
939+- None.
940+{% /table %}
930941
931942#### AST
932943
@@ -983,31 +994,32 @@ Conditionally change one leg in the subject.
983994
984995Four arguments, fixed.
985996
986−<table>
987−<tr><th>Form</th><th>Syntax</th></tr>
988−<tr>
989−<td>Tall</td>
990−<td>
991−<pre>
992−=? p q
993− r
994−s
995−</pre>
996−</td>
997−</tr>
998−<tr>
999−<td>Wide</td>
1000−<td>
1001−<pre>
1002−=?(p q r s)
1003−</pre>
1004−</td>
1005−</tr>
1006−<tr>
1007−<td>Irregular</td>
1008−<td>None.</td>
1009−</tr>
1010−</table>
997+{% table %}
998+
999+- Form
1000+- Syntax
1001+
1002+---
1003+
1004+- Tall
1005+- ```hoon
1006+ =? p q
1007+ r
1008+ s
1009+ ```
1010+
1011+---
1012+
1013+- Wide
1014+- ```hoon
1015+ =?(p q r s)
1016+ ```
1017+
1018+---
1019+
1020+- Irregular
1021+- None.
1022+{% /table %}
10111023
10121024#### AST
10131025
content/docs/hoon/reference/rune/wut.md+379−374
@@ -39,37 +39,36 @@ Logical OR.
3939
4040Variable number of arguments.
4141
42−<table>
43−<tr><th>Form</th><th>Syntax</th></tr>
44−<tr>
45−<td>Tall</td>
46−<td>
47−<pre>
48−?| p1
49− p2
50− p3
51− pn
52−==
53−</pre>
54−</td>
55−</tr>
56−<tr>
57−<td>Wide</td>
58−<td>
59−<pre>
60−?|(p1 p2 p3 pn)
61−</pre>
62−</td>
63−</tr>
64−<tr>
65−<td>Irregular</td>
66−<td>
67−<pre>
68−|(p1 p2 p3 pn)
69−</pre>
70−</td>
71−</tr>
72−</table>
42+{% table %}
43+
44+- Form
45+- Syntax
46+
47+---
48+
49+- Tall
50+- ```hoon
51+ ?| p1
52+ p2
53+ p3
54+ pn
55+ ==
56+ ```
57+
58+---
59+
60+- Wide
61+- ```hoon
62+ ?|(p1 p2 p3 pn)
63+ ```
64+
65+---
66+
67+- Irregular
68+- ```hoon
69+ |(p1 p2 p3 pn)
70+ ```
71+{% /table %}
7372
7473#### AST
7574
@@ -121,50 +120,50 @@ Switch against a union, with no default.
121120
122121One fixed argument, then a variable number of pairs.
123122
124−<table>
125−<tr><th>Form</th><th>Syntax</th></tr>
126−<tr>
127−<td>Tall style #1</td>
128−<td>
129−<pre>
130−?- p
131− q1a q1b
132− q2a q2b
133− qna qnb
134−==
135−</pre>
136−</td>
137−</tr>
138−<tr>
139−<td>Tall style #2</td>
140−<td>
141−<pre>
142−?- p
143− q1a
144− q1b
145−::
146− q2a
147− q2b
148−::
149− qna
150− qnb
151−==
152−</pre>
153−</td>
154−</tr>
155−<tr>
156−<td>Wide</td>
157−<td>
158−<pre>
159−?-(p q1a q1b, q2a q2b, qna qnb)
160−</pre>
161−</td>
162−</tr>
163−<tr>
164−<td>Irregular</td>
165−<td>None.</td>
166−</tr>
167−</table>
123+{% table %}
124+
125+- Form
126+- Syntax
127+
128+---
129+
130+- Tall style #1
131+- ```hoon
132+ ?- p
133+ q1a q1b
134+ q2a q2b
135+ qna qnb
136+ ==
137+ ```
138+
139+---
140+
141+- Tall style #2
142+- ```hoon
143+ ?- p
144+ q1a
145+ q1b
146+ ::
147+ q2a
148+ q2b
149+ ::
150+ qna
151+ qnb
152+ ==
153+ ```
154+
155+---
156+
157+- Wide
158+- ```hoon
159+ ?-(p q1a q1b, q2a q2b, qna qnb)
160+ ```
161+
162+---
163+
164+- Irregular
165+- None.
166+{% /table %}
168167
169168#### AST
170169
@@ -229,7 +228,7 @@ A missing case will throw the `mint-lost` error. An extra case will throw
229228
230229---
231230
232−## `?:` "wutcol" {#wutcol}
231+## `?:` "wutcol" {% #wutcol %}
233232
234233Branch on a boolean test.
235234
@@ -237,31 +236,32 @@ Branch on a boolean test.
237236
238237Three arguments, fixed.
239238
240−<table>
241−<tr><th>Form</th><th>Syntax</th></tr>
242−<tr>
243−<td>Tall</td>
244−<td>
245−<pre>
246−?: p
247− q
248−r
249−</pre>
250−</td>
251−</tr>
252−<tr>
253−<td>Wide</td>
254−<td>
255−<pre>
256−?:(p q r)
257−</pre>
258−</td>
259−</tr>
260−<tr>
261−<td>Irregular</td>
262−<td>None.</td>
263−</tr>
264−</table>
239+{% table %}
240+
241+- Form
242+- Syntax
243+
244+---
245+
246+- Tall
247+- ```hoon
248+ ?: p
249+ q
250+ r
251+ ```
252+
253+---
254+
255+- Wide
256+- ```hoon
257+ ?:(p q r)
258+ ```
259+
260+---
261+
262+- Irregular
263+- None.
264+{% /table %}
265265
266266#### AST
267267
@@ -311,31 +311,32 @@ Branch on a boolean test, inverted.
311311
312312Three arguments, fixed.
313313
314−<table>
315−<tr><th>Form</th><th>Syntax</th></tr>
316−<tr>
317−<td>Tall</td>
318−<td>
319−<pre>
320−?. p
321− q
322−r
323−</pre>
324−</td>
325−</tr>
326−<tr>
327−<td>Wide</td>
328−<td>
329−<pre>
330−?.(p q r)
331−</pre>
332−</td>
333−</tr>
334−<tr>
335−<td>Irregular</td>
336−<td>None.</td>
337−</tr>
338−</table>
314+{% table %}
315+
316+- Form
317+- Syntax
318+
319+---
320+
321+- Tall
322+- ```hoon
323+ ?. p
324+ q
325+ r
326+ ```
327+
328+---
329+
330+- Wide
331+- ```hoon
332+ ?.(p q r)
333+ ```
334+
335+---
336+
337+- Irregular
338+- None.
339+{% /table %}
339340
340341#### AST
341342
@@ -383,31 +384,32 @@ Branch on whether a wing of the subject is a cell.
383384
384385Three arguments, fixed.
385386
386−<table>
387−<tr><th>Form</th><th>Syntax</th></tr>
388−<tr>
389−<td>Tall</td>
390−<td>
391−<pre>
392−?^ p
393− q
394−r
395−</pre>
396−</td>
397−</tr>
398−<tr>
399−<td>Wide</td>
400−<td>
401−<pre>
402−?^(p q r)
403−</pre>
404−</td>
405−</tr>
406−<tr>
407−<td>Irregular</td>
408−<td>None.</td>
409−</tr>
410−</table>
387+{% table %}
388+
389+- Form
390+- Syntax
391+
392+---
393+
394+- Tall
395+- ```hoon
396+ ?^ p
397+ q
398+ r
399+ ```
400+
401+---
402+
403+- Wide
404+- ```hoon
405+ ?^(p q r)
406+ ```
407+
408+---
409+
410+- Irregular
411+- None.
412+{% /table %}
411413
412414#### AST
413415
@@ -451,30 +453,31 @@ Negative assertion.
451453
452454Two arguments, fixed.
453455
454−<table>
455−<tr><th>Form</th><th>Syntax</th></tr>
456−<tr>
457−<td>Tall</td>
458−<td>
459−<pre>
460−?< p
461−q
462−</pre>
463−</td>
464−</tr>
465−<tr>
466−<td>Wide</td>
467−<td>
468−<pre>
469−?<(p q)
470−</pre>
471−</td>
472−</tr>
473−<tr>
474−<td>Irregular</td>
475−<td>None.</td>
476−</tr>
477−</table>
456+{% table %}
457+
458+- Form
459+- Syntax
460+
461+---
462+
463+- Tall
464+- ```hoon
465+ ?< p
466+ q
467+ ```
468+
469+---
470+
471+- Wide
472+- ```hoon
473+ ?<(p q)
474+ ```
475+
476+---
477+
478+- Irregular
479+- None.
480+{% /table %}
478481
479482#### AST
480483
@@ -522,30 +525,31 @@ Positive assertion.
522525
523526Two arguments, fixed.
524527
525−<table>
526−<tr><th>Form</th><th>Syntax</th></tr>
527−<tr>
528−<td>Tall</td>
529−<td>
530−<pre>
531−?> p
532−q
533−</pre>
534−</td>
535−</tr>
536−<tr>
537−<td>Wide</td>
538−<td>
539−<pre>
540−?>(p q)
541−</pre>
542−</td>
543−</tr>
544−<tr>
545−<td>Irregular</td>
546−<td>None.</td>
547−</tr>
548−</table>
528+{% table %}
529+
530+- Form
531+- Syntax
532+
533+---
534+
535+- Tall
536+- ```hoon
537+ ?> p
538+ q
539+ ```
540+
541+---
542+
543+- Wide
544+- ```hoon
545+ ?>(p q)
546+ ```
547+
548+---
549+
550+- Irregular
551+- None.
552+{% /table %}
549553
550554#### AST
551555
@@ -593,50 +597,50 @@ Switch against a union, with a default.
593597
594598Two fixed arguments, then a variable number of pairs.
595599
596−<table>
597−<tr><th>Form</th><th>Syntax</th></tr>
598−<tr>
599−<td>Tall style #1</td>
600−<td>
601−<pre>
602−?+ p q
603− r1a r1b
604− r2a r2b
605− rna rnb
606−==
607−</pre>
608−</td>
609−</tr>
610−<tr>
611−<td>Tall style #2</td>
612−<td>
613−<pre>
614−?+ p q
615− r1a
616− r1b
617−::
618− r2a
619− r2b
620−::
621− rna
622− rnb
623−==
624−</pre>
625−</td>
626−</tr>
627−<tr>
628−<td>Wide</td>
629−<td>
630−<pre>
631−?+(p q r1a r1b, r2a r2b, rna rnb)
632−</pre>
633−</td>
634−</tr>
635−<tr>
636−<td>Irregular</td>
637−<td>None.</td>
638−</tr>
639−</table>
600+{% table %}
601+
602+- Form
603+- Syntax
604+
605+---
606+
607+- Tall style #1
608+- ```hoon
609+ ?+ p q
610+ r1a r1b
611+ r2a r2b
612+ rna rnb
613+ ==
614+ ```
615+
616+---
617+
618+- Tall style #2
619+- ```hoon
620+ ?+ p q
621+ r1a
622+ r1b
623+ ::
624+ r2a
625+ r2b
626+ ::
627+ rna
628+ rnb
629+ ==
630+ ```
631+
632+---
633+
634+- Wide
635+- ```hoon
636+ ?+(p q r1a r1b, r2a r2b, rna rnb)
637+ ```
638+
639+---
640+
641+- Irregular
642+- None.
643+{% /table %}
640644
641645#### AST
642646
@@ -705,36 +709,35 @@ Logical AND.
705709
706710Variable arguments.
707711
708−<table>
709−<tr><th>Form</th><th>Syntax</th></tr>
710−<tr>
711−<td>Tall</td>
712−<td>
713−<pre>
714−?& p1
715− p2
716− pn
717−==
718−</pre>
719−</td>
720−</tr>
721−<tr>
722−<td>Wide</td>
723−<td>
724−<pre>
725−?&(p1 p2 pn)
726−</pre>
727−</td>
728−</tr>
729−<tr>
730−<td>Irregular</td>
731−<td>
732−<pre>
733−&(p1 p2 pn)
734−</pre>
735−</td>
736−</tr>
737−</table>
712+{% table %}
713+
714+- Form
715+- Syntax
716+
717+---
718+
719+- Tall
720+- ```hoon
721+ ?& p1
722+ p2
723+ pn
724+ ==
725+ ```
726+
727+---
728+
729+- Wide
730+- ```hoon
731+ ?&(p1 p2 pn)
732+ ```
733+
734+---
735+
736+- Irregular
737+- ```
738+ &(p1 p2 pn)
739+ ```
740+{% /table %}
738741
739742#### AST
740743
@@ -786,31 +789,32 @@ Branch on whether a wing of the subject is an atom.
786789
787790Three arguments, fixed.
788791
789−<table>
790−<tr><th>Form</th><th>Syntax</th></tr>
791−<tr>
792−<td>Tall</td>
793−<td>
794−<pre>
795−?@ p
796− q
797−r
798−</pre>
799−</td>
800−</tr>
801−<tr>
802−<td>Wide</td>
803−<td>
804−<pre>
805−?@(p q r)
806−</pre>
807−</td>
808−</tr>
809−<tr>
810−<td>Irregular</td>
811−<td>None.</td>
812−</tr>
813−</table>
792+{% table %}
793+
794+- Form
795+- Syntax
796+
797+---
798+
799+- Tall
800+- ```hoon
801+ ?@ p
802+ q
803+ r
804+ ```
805+
806+---
807+
808+- Wide
809+- ```hoon
810+ ?@(p q r)
811+ ```
812+
813+---
814+
815+- Irregular
816+- None.
817+{% /table %}
814818
815819#### AST
816820
@@ -858,31 +862,32 @@ Branch on whether a wing of the subject is null.
858862
859863Three arguments, fixed.
860864
861−<table>
862−<tr><th>Form</th><th>Syntax</th></tr>
863−<tr>
864−<td>Tall</td>
865−<td>
866−<pre>
867−?~ p
868− q
869−r
870−</pre>
871−</td>
872−</tr>
873−<tr>
874−<td>Wide</td>
875−<td>
876−<pre>
877−?~(p q r)
878−</pre>
879−</td>
880−</tr>
881−<tr>
882−<td>Irregular</td>
883−<td>None.</td>
884−</tr>
885−</table>
865+{% table %}
866+
867+- Form
868+- Syntax
869+
870+---
871+
872+- Tall
873+- ```hoon
874+ ?~ p
875+ q
876+ r
877+ ```
878+
879+---
880+
881+- Wide
882+- ```hoon
883+ ?~(p q r)
884+ ```
885+
886+---
887+
888+- Irregular
889+- None.
890+{% /table %}
886891
887892#### AST
888893
@@ -924,30 +929,31 @@ Test pattern match.
924929
925930Two arguments, fixed.
926931
927−<table>
928−<tr><th>Form</th><th>Syntax</th></tr>
929−<tr>
930−<td>Tall</td>
931−<td>
932−<pre>
933−?= p
934−q
935−</pre>
936−</td>
937−</tr>
938−<tr>
939−<td>Wide</td>
940−<td>
941−<pre>
942−?=(p q)
943−</pre>
944−</td>
945−</tr>
946−<tr>
947−<td>Irregular</td>
948−<td>None.</td>
949−</tr>
950−</table>
932+{% table %}
933+
934+- Form
935+- Syntax
936+
937+---
938+
939+- Tall
940+- ```hoon
941+ ?= p
942+ q
943+ ```
944+
945+---
946+
947+- Wide
948+- ```hoon
949+ ?=(p q)
950+ ```
951+
952+---
953+
954+- Irregular
955+- None.
956+{% /table %}
951957
952958#### AST
953959
@@ -992,33 +998,32 @@ Logical NOT.
992998
993999One argument, fixed.
9941000
995−<table>
996−<tr><th>Form</th><th>Syntax</th></tr>
997−<tr>
998−<td>Tall</td>
999−<td>
1000−<pre>
1001−?! p
1002−</pre>
1003−</td>
1004−</tr>
1005−<tr>
1006−<td>Wide</td>
1007−<td>
1008−<pre>
1009−?!(p)
1010−</pre>
1011−</td>
1012−</tr>
1013−<tr>
1014−<td>Irregular</td>
1015−<td>
1016−<pre>
1017−!p
1018−</pre>
1019−</td>
1020−</tr>
1021−</table>
1001+{% table %}
1002+
1003+- Form
1004+- Syntax
1005+
1006+---
1007+
1008+- Tall
1009+- ```hoon
1010+ ?! p
1011+ ```
1012+
1013+---
1014+
1015+- Wide
1016+- ```hoon
1017+ ?!(p)
1018+ ```
1019+
1020+---
1021+
1022+- Irregular
1023+- ```hoon
1024+ !p
1025+ ```
1026+{% /table %}
10221027
10231028#### AST
10241029
content/docs/hoon/reference/rune/zap.md+246−236
@@ -13,30 +13,31 @@ Produce the Hoon AST of an expression.
1313
1414Two arguments, fixed.
1515
16−<table>
17−<tr><th>Form</th><th>Syntax</th></tr>
18−<tr>
19−<td>Tall</td>
20−<td>
21−<pre>
22−!, p
23−q
24−</pre>
25−</td>
26−</tr>
27−<tr>
28−<td>Wide</td>
29−<td>
30−<pre>
31−!,(p q)
32−</pre>
33−</td>
34−</tr>
35−<tr>
36−<td>Irregular</td>
37−<td>None.</td>
38−</tr>
39−</table>
16+{% table %}
17+
18+- Form
19+- Syntax
20+
21+---
22+
23+- Tall
24+- ```hoon
25+ !, p
26+ q
27+ ```
28+
29+---
30+
31+- Wide
32+- ```hoon
33+ !,(p q)
34+ ```
35+
36+---
37+
38+- Irregular
39+- None.
40+{% /table %}
4041
4142#### AST
4243
@@ -71,29 +72,30 @@ Wrap a noun in its type (form a [`vase`](/docs/hoon/reference/stdlib/4o#vase)).
7172
7273One argument, fixed.
7374
74−<table>
75−<tr><th>Form</th><th>Syntax</th></tr>
76−<tr>
77−<td>Tall</td>
78−<td>
79−<pre>
80−!> p
81−</pre>
82−</td>
83−</tr>
84−<tr>
85−<td>Wide</td>
86−<td>
87−<pre>
88−!>(p)
89−</pre>
90−</td>
91−</tr>
92−<tr>
93−<td>Irregular</td>
94−<td>None.</td>
95−</tr>
96−</table>
75+{% table %}
76+
77+- Form
78+- Syntax
79+
80+---
81+
82+- Tall
83+- ```hoon
84+ !> p
85+ ```
86+
87+---
88+
89+- Wide
90+- ```hoon
91+ !>(p)
92+ ```
93+
94+---
95+
96+- Irregular
97+- None.
98+{% /table %}
9799
98100#### AST
99101
@@ -136,30 +138,31 @@ its type nests.
136138
137139Two arguments, fixed.
138140
139−<table>
140−<tr><th>Form</th><th>Syntax</th></tr>
141−<tr>
142−<td>Tall</td>
143−<td>
144−<pre>
145−!< p
146−q
147−</pre>
148−</td>
149−</tr>
150−<tr>
151−<td>Wide</td>
152−<td>
153−<pre>
154−!<(p q)
155−</pre>
156−</td>
157−</tr>
158−<tr>
159−<td>Irregular</td>
160−<td>None.</td>
161−</tr>
162−</table>
141+{% table %}
142+
143+- Form
144+- Syntax
145+
146+---
147+
148+- Tall
149+- ```hoon
150+ !< p
151+ q
152+ ```
153+
154+---
155+
156+- Wide
157+- ```hoon
158+ !<(p q)
159+ ```
160+
161+---
162+
163+- Irregular
164+- None.
165+{% /table %}
163166
164167#### AST
165168
@@ -200,30 +203,31 @@ Wrap a noun in its type (raw).
200203
201204Two arguments, fixed.
202205
203−<table>
204−<tr><th>Form</th><th>Syntax</th></tr>
205−<tr>
206−<td>Tall</td>
207−<td>
208−<pre>
209−!; p
210−q
211−</pre>
212−</td>
213−</tr>
214−<tr>
215−<td>Wide</td>
216−<td>
217−<pre>
218−!;(p q)
219−</pre>
220−</td>
221−</tr>
222−<tr>
223−<td>Irregular</td>
224−<td>None.</td>
225−</tr>
226−</table>
206+{% table %}
207+
208+- Form
209+- Syntax
210+
211+---
212+
213+- Tall
214+- ```hoon
215+ !; p
216+ q
217+ ```
218+
219+---
220+
221+- Wide
222+- ```hoon
223+ !;(p q)
224+ ```
225+
226+---
227+
228+- Irregular
229+- None.
230+{% /table %}
227231
228232#### AST
229233
@@ -265,29 +269,30 @@ Make the Nock formula for a Hoon expression.
265269
266270One argument, fixed.
267271
268−<table>
269−<tr><th>Form</th><th>Syntax</th></tr>
270−<tr>
271−<td>Tall</td>
272−<td>
273−<pre>
274−!= p
275−</pre>
276−</td>
277−</tr>
278−<tr>
279−<td>Wide</td>
280−<td>
281−<pre>
282−!=(p)
283−</pre>
284−</td>
285−</tr>
286−<tr>
287−<td>Irregular</td>
288−<td>None.</td>
289−</tr>
290−</table>
272+{% table %}
273+
274+- Form
275+- Syntax
276+
277+---
278+
279+- Tall
280+- ```hoon
281+ != p
282+ ```
283+
284+---
285+
286+- Wide
287+- ```hoon
288+ !=(p)
289+ ```
290+
291+---
292+
293+- Irregular
294+- None.
295+{% /table %}
291296
292297#### AST
293298
@@ -339,30 +344,31 @@ Restrict Hoon version.
339344
340345Two arguments, fixed.
341346
342−<table>
343−<tr><th>Form</th><th>Syntax</th></tr>
344−<tr>
345−<td>Tall</td>
346−<td>
347−<pre>
348−!? p
349−q
350−</pre>
351−</td>
352−</tr>
353−<tr>
354−<td>Wide</td>
355−<td>
356−<pre>
357−!?(p q)
358−</pre>
359−</td>
360−</tr>
361−<tr>
362−<td>Irregular</td>
363−<td>None.</td>
364−</tr>
365−</table>
347+{% table %}
348+
349+- Form
350+- Syntax
351+
352+---
353+
354+- Tall
355+- ```hoon
356+ !? p
357+ q
358+ ```
359+
360+---
361+
362+- Wide
363+- ```hoon
364+ !?(p q)
365+ ```
366+
367+---
368+
369+- Irregular
370+- None.
371+{% /table %}
366372
367373#### AST
368374
@@ -405,31 +411,32 @@ Branch on whether a wing exists.
405411
406412Three arguments, fixed.
407413
408−<table>
409−<tr><th>Form</th><th>Syntax</th></tr>
410−<tr>
411−<td>Tall</td>
412−<td>
413−<pre>
414−!@ p
415− q
416−r
417−</pre>
418−</td>
419−</tr>
420−<tr>
421−<td>Wide</td>
422−<td>
423−<pre>
424−!@(p q r)
425−</pre>
426−</td>
427−</tr>
428−<tr>
429−<td>Irregular</td>
430−<td>None.</td>
431−</tr>
432−</table>
414+{% table %}
415+
416+- Form
417+- Syntax
418+
419+---
420+
421+- Tall
422+- ```hoon
423+ !@ p
424+ q
425+ r
426+ ```
427+
428+---
429+
430+- Wide
431+- ```hoon
432+ !@(p q r)
433+ ```
434+
435+---
436+
437+- Irregular
438+- None.
439+{% /table %}
433440
434441#### AST
435442
@@ -464,29 +471,30 @@ Crash.
464471
465472No arguments.
466473
467−<table>
468−<tr><th>Form</th><th>Syntax</th></tr>
469−<tr>
470−<td>Tall</td>
471−<td>
472−<pre>
473−!!
474−</pre>
475−</td>
476−</tr>
477−<tr>
478−<td>Wide</td>
479−<td>
480−<pre>
481−!!
482−</pre>
483−</td>
484−</tr>
485−<tr>
486−<td>Irregular</td>
487−<td>None.</td>
488−</tr>
489−</table>
474+{% table %}
475+
476+- Form
477+- Syntax
478+
479+---
480+
481+- Tall
482+- ```hoon
483+ !!
484+ ```
485+
486+---
487+
488+- Wide
489+- ```
490+ !!
491+ ```
492+
493+---
494+
495+- Irregular
496+- None.
497+{% /table %}
490498
491499#### AST
492500
@@ -519,29 +527,30 @@ Turn on stack trace.
519527
520528One argument, fixed
521529
522−<table>
523−<tr><th>Form</th><th>Syntax</th></tr>
524−<tr>
525−<td>Tall</td>
526−<td>
527−<pre>
528−!: p
529−</pre>
530−</td>
531−</tr>
532−<tr>
533−<td>Wide</td>
534−<td>
535−<pre>
536−!:(p)
537−</pre>
538−</td>
539−</tr>
540−<tr>
541−<td>Irregular</td>
542−<td>None.</td>
543−</tr>
544−</table>
530+{% table %}
531+
532+- Form
533+- Syntax
534+
535+---
536+
537+- Tall
538+- ```hoon
539+ !: p
540+ ```
541+
542+---
543+
544+- Wide
545+- ```hoon
546+ !:(p)
547+ ```
548+
549+---
550+
551+- Irregular
552+- None.
553+{% /table %}
545554
546555#### Produces
547556
@@ -574,29 +583,30 @@ Turn off stack trace for a subexpression `p`
574583
575584One argument, fixed.
576585
577−<table>
578−<tr><th>Form</th><th>Syntax</th></tr>
579−<tr>
580−<td>Tall</td>
581−<td>
582−<pre>
583−!. p
584−</pre>
585−</td>
586−</tr>
587−<tr>
588−<td>Wide</td>
589−<td>
590−<pre>
591−!.(p)
592−</pre>
593−</td>
594−</tr>
595−<tr>
596−<td>Irregular</td>
597−<td>None.</td>
598−</tr>
599−</table>
586+{% table %}
587+
588+- Form
589+- Syntax
590+
591+---
592+
593+- Tall
594+- ```hoon
595+ !. p
596+ ```
597+
598+---
599+
600+- Wide
601+- ```hoon
602+ !.(p)
603+ ```
604+
605+---
606+
607+- Irregular
608+- None.
609+{% /table %}
600610
601611#### Produces
602612
content/docs/hoon/reference/stdlib/2b.md+7−3
@@ -789,6 +789,7 @@ If you check the definition of `+mul`, you'll see that it also utilizes this
789789pattern.
790790
791791We can check explicitly what sequence of operations `+reel` performs like this:
792+
792793```
793794> =f |: [l='e_l' r='e_r']
794795 ^- @t
@@ -797,7 +798,6 @@ We can check explicitly what sequence of operations `+reel` performs like this:
797798'(a*(b*(c*(d*(e*e_r)))))'
798799```
799800
800−
801801---
802802
803803## `++roll`
@@ -876,10 +876,12 @@ We can fix this with `|:`:
876876> (roll `(list @)`~[1 2 3 4] |:([a=1 b=1] (mul a b)))
87787724
878878```
879+
879880If you check the definition of `+mul`, you'll see that it also utilizes this
880881pattern.
881882
882883We can check explicitly what sequence of operations `+roll` performs like this:
884+
883885```
884886> =f |: [l='e_l' r='e_r']
885887 ^- @t
@@ -887,7 +889,9 @@ We can check explicitly what sequence of operations `+roll` performs like this:
887889> (roll "abcde" f)
888890'(e*(d*(c*(b*(a*e_r)))))
889891```
892+
890893This is in contrast to what one might expect:
894+
891895```
892896> =foldl
893897 |* [l=(list) f=$-([* *] *)]
@@ -1307,7 +1311,7 @@ A list
13071311
13081312---
13091313
1310−## `++spin` {#spin}
1314+## `++spin` {% #spin %}
13111315
13121316Gate to list, with state
13131317
@@ -1375,7 +1379,7 @@ is the continuation of the RNG.
13751379
13761380---
13771381
1378−## `++spun` {#spun}
1382+## `++spun` {% #spun %}
13791383
13801384Gate to list, with state
13811385
content/docs/hoon/reference/stdlib/2e.md+1−1
@@ -4,7 +4,7 @@ weight = 8
44template = "doc.html"
55+++
66
7−## `++mug` {#mug}
7+## `++mug` {% #mug %}
88
99murmur3 scrambler
1010
content/docs/hoon/reference/stdlib/2i.md+6−5
@@ -825,12 +825,13 @@ A set.
825825
826826#### Examples
827827
828−```
829−> =a `(map @tas @)`(malt (limo ~[a+1 b+2 c+3 d+4]))
828+{% customFence %}
830829
831−> ~(key by a)
832−{%b %d %a %c}
833−```
830+\> =a `(map @tas @)`(malt (limo ~[a+1 b+2 c+3 d+4]))
831+
832+\> ~(key by a)
833+{&#x7B;&#x25;b %d %a %c}
834+{% /customFence %}
834835
835836---
836837
content/docs/hoon/reference/stdlib/2n.md+1−1
@@ -109,7 +109,7 @@ This is the inverse of [`++cork`](#cork).
109109
110110---
111111
112−## `++curr` {#curry}
112+## `++curr` {% #curry %}
113113
114114Right curry
115115
content/docs/hoon/reference/stdlib/2p.md+2−2
@@ -4,7 +4,7 @@ weight = 19
44template = "doc.html"
55+++
66
7−## `++cue` {#cue}
7+## `++cue` {% #cue %}
88
99Unpack atom to noun
1010
@@ -54,7 +54,7 @@ A noun.
5454
5555---
5656
57−## `++jam` {#jam}
57+## `++jam` {% #jam %}
5858
5959Pack noun to atom
6060
content/docs/hoon/reference/stdlib/4g.md+8−8
@@ -202,14 +202,14 @@ Either a `tape` or a crash.
202202
203203#### Source
204204
205−```hoon
206−++ scan |* [los=tape sab=rule]
207− =+ vex=((full sab) [[1 1] los])
208− ?~ q.vex
209− ~_ (show [%m '{%d %d}'] p.p.vex q.p.vex ~)
210− ~_(leaf+"syntax error" !!)
211− p.u.q.vex
212−```
205+{% customFence %}
206+++ scan |\* [los=tape sab=rule]
207+=+ vex=((full sab) [[1 1] los])
208+?~ q.vex
209+~_ (show [%m '&#x7B;&#x25;d %d}'] p.p.vex q.p.vex ~)
210+~_(leaf+"syntax error" !!)
211+p.u.q.vex
212+{% /customFence %}
213213
214214#### Examples
215215
content/docs/hoon/reference/stdlib/table-of-contents.md+1793−1793
@@ -13,1297 +13,1297 @@ Can be navigated [alphabetically](#alphabetical) or [by section](#by-section).
1313
1414### a
1515
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/#absfl' title="Absolute value"><code>++abs:fl</code></a>
18−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#abssi' title="Absolute value (signed integer)"><code>++abs:si</code></a>
19−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#abel' title="Original sin: type"><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/4k/#a-coco' title="Render decimal"><code>++a-co:co</code></a>
22−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#add' title="Add"><code>++add</code></a>
23−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#addff' title="Add (floating point)"><code>++add:ff</code></a>
24−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#addfl' title="Add (with exact/rounded flag)"><code>++add:fl</code></a>
25−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#addja' title="Prepend to list"><code>++add:ja</code></a>
26−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#addrd' title="Add (doubleprecision float)"><code>++add:rd</code></a>
27−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#addrh' title="Add (halfprecision float)"><code>++add:rh</code></a>
28−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#addrs' title="Add (singleprecision float)"><code>++add:rs</code></a>
29−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#addrq' title="Add (quadprecision float)"><code>++add:rq</code></a>
30−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#aftr' title="Pair after"><code>++aftr</code></a>
31−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ag' title="Toplevel atom parser engine"><code>++ag</code></a>
32−<a class="tooltip" href='/docs/hoon/reference/stdlib/5b/#ah' title="Tiki engine"><code>++ah</code></a>
33−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#alas' title="Alias list"><code>+$alas</code></a>
34−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#alf' title="Parse alphabetic characters"><code>++alf</code></a>
35−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#allby' title="Logical AND (map and wet gate)"><code>++all:by</code></a>
36−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#allin' title="Logical AND (set and wet gate)"><code>++all:in</code></a>
37−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#aln' title="Parse alphanumeric characters"><code>++aln</code></a>
38−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#alp' title="Parse alphanumeric characters and "><code>++alp</code></a>
39−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#anyby' title="Logical OR (map and wet gate)"><code>++any:by</code></a>
40−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#anyin' title="Logical OR (set and gate)"><code>++any:in</code></a>
41−<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#aor' title="Alphabetical order"><code>++aor</code></a>
42−<a class="tooltip" href='/docs/hoon/reference/stdlib/5b/#ap' title="Hoon engine"><code>++ap</code></a>
43−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#apeag' title="Parse 0 or rule"><code>++ape:ag</code></a>
44−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#aptby' title="Check correctness (map)"><code>++apt:by</code></a>
45−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#aptin' title="Check correctness (set)"><code>++apt:in</code></a>
46−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#aptto' title="Check correctness of queue"><code>++apt:to</code></a>
47−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#at' title="Basic printing"><code>++at</code></a>
48−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#atom' title="Just an atom"><code>+$atom</code></a>
49−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#aura' title="'Type' of atom"><code>+$aura</code></a>
50−<a class="tooltip" href='/docs/hoon/reference/stdlib/5b/#ax' title="Spec engine"><code>++ax</code></a>
51−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#axis' title="Tree address"><code>+$axis</code></a>
16+[`++ab`](/docs/hoon/reference/stdlib/4j/#ab)
17+[`++abs:fl`](/docs/hoon/reference/stdlib/3b/#absfl)
18+[`++abs:si`](/docs/hoon/reference/stdlib/3a/#abssi)
19+[`+$abel`](/docs/hoon/reference/stdlib/4o/#abel)
20+[`++ace`](/docs/hoon/reference/stdlib/4h/#ace)
21+[`++a-co:co`](/docs/hoon/reference/stdlib/4k/#a-coco)
22+[`++add`](/docs/hoon/reference/stdlib/1a/#add)
23+[`++add:ff`](/docs/hoon/reference/stdlib/3b/#addff)
24+[`++add:fl`](/docs/hoon/reference/stdlib/3b/#addfl)
25+[`++add:ja`](/docs/hoon/reference/stdlib/2j/#addja)
26+[`++add:rd`](/docs/hoon/reference/stdlib/3b/#addrd)
27+[`++add:rh`](/docs/hoon/reference/stdlib/3b/#addrh)
28+[`++add:rs`](/docs/hoon/reference/stdlib/3b/#addrs)
29+[`++add:rq`](/docs/hoon/reference/stdlib/3b/#addrq)
30+[`++aftr`](/docs/hoon/reference/stdlib/2n/#aftr)
31+[`++ag`](/docs/hoon/reference/stdlib/4j/#ag)
32+[`++ah`](/docs/hoon/reference/stdlib/5b/#ah)
33+[`+$alas`](/docs/hoon/reference/stdlib/4o/#alas)
34+[`++alf`](/docs/hoon/reference/stdlib/4i/#alf)
35+[`++all:by`](/docs/hoon/reference/stdlib/2i/#allby)
36+[`++all:in`](/docs/hoon/reference/stdlib/2h/#allin)
37+[`++aln`](/docs/hoon/reference/stdlib/4i/#aln)
38+[`++alp`](/docs/hoon/reference/stdlib/4i/#alp)
39+[`++any:by`](/docs/hoon/reference/stdlib/2i/#anyby)
40+[`++any:in`](/docs/hoon/reference/stdlib/2h/#anyin)
41+[`++aor`](/docs/hoon/reference/stdlib/2f/#aor)
42+[`++ap`](/docs/hoon/reference/stdlib/5b/#ap)
43+[`++ape:ag`](/docs/hoon/reference/stdlib/4j/#apeag)
44+[`++apt:by`](/docs/hoon/reference/stdlib/2i/#aptby)
45+[`++apt:in`](/docs/hoon/reference/stdlib/2h/#aptin)
46+[`++apt:to`](/docs/hoon/reference/stdlib/2k/#aptto)
47+[`++at`](/docs/hoon/reference/stdlib/4b/#at)
48+[`+$atom`](/docs/hoon/reference/stdlib/4o/#atom)
49+[`+$aura`](/docs/hoon/reference/stdlib/4o/#aura)
50+[`++ax`](/docs/hoon/reference/stdlib/5b/#ax)
51+[`+$axis`](/docs/hoon/reference/stdlib/2q/#axis)
5252
5353### b
5454
55−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#bake' title="Convert wet gate to dry gate"><code>++bake</code></a>
56−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#balto' title="Balance queue"><code>++bal:to</code></a>
57−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#bar' title="Parse | (bar)"><code>++bar</code></a>
58−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#bas' title="Parse \ (bas)"><code>++bas</code></a>
59−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#base' title="Base type"><code>+$base</code></a>
60−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#bass' title="Parser modifier (LSBordered ++list as atom of ++base)"><code>++bass</code></a>
61−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bayag' title="Parses binary number"><code>++bay:ag</code></a>
62−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#bean' title="Boolean"><code>+$bean</code></a>
63−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#beerhoot' title="Simple embed"><code>+$beer:hoot</code></a>
64−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#bend' title="Conditional composer"><code>++bend</code></a>
65−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#bet' title="Parse hep and lus axis syntax"><code>++bet</code></a>
66−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#bex' title="Binary exponent"><code>++bex</code></a>
67−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bifff' title="Converts from fn to @r"><code>++bif:ff</code></a>
68−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#bifby' title="Bifurcate map"><code>++bif:by</code></a>
69−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#bifin' title="Bifurcate set"><code>++bif:in</code></a>
70−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#biff' title="Unit as argument"><code>++biff</code></a>
71−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#bin' title="Binary to atom"><code>++bin</code></a>
72−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#bind' title="Nonunit function to unit, producing unit"><code>++bind</code></a>
73−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bipag' title="Parse IPv6"><code>++bip:ag</code></a>
74−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bitff' title="fn to @r with rounding"><code>++bit:ff</code></a>
75−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bitrd' title="fn to doubleprecision binary float"><code>++bit:rd</code></a>
76−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bitrh' title="fn to halfprecision float"><code>++bit:rh</code></a>
77−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bitrs' title="fn to singleprecision float"><code>++bit:rs</code></a>
78−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bitrq' title="fn to quadprecision float"><code>++bit:rq</code></a>
79−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#bite' title="Atom slice specificier"><code>$bite</code></a>
80−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bixab' title="Parse hex pair"><code>++bix:ab</code></a>
81−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#biskso' title="Parse auraatom pair"><code>++bisk:so</code></a>
82−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#block' title="Abstract identity of resource awaited"><code>+$block</code></a>
83−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#bloq' title="Blocksize"><code>$bloq</code></a>
84−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#bond' title="Replace null"><code>++bond</code></a>
85−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#bool' title="Make loobean (compiler utility)"><code>++bool</code></a>
86−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#boss' title="Parser modifier: LSB"><code>++boss</code></a>
87−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#both' title="Group unit values into pair"><code>++both</code></a>
88−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#buc' title="Parse $ (buc)"><code>++buc</code></a>
89−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#but' title="Parse binary digit"><code>++but</code></a>
90−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#byts' title="bytes, LSB first"><code>+$byts</code></a>
55+[`++bake`](/docs/hoon/reference/stdlib/2b/#bake)
56+[`++bal:to`](/docs/hoon/reference/stdlib/2k/#balto)
57+[`++bar`](/docs/hoon/reference/stdlib/4h/#bar)
58+[`++bas`](/docs/hoon/reference/stdlib/4h/#bas)
59+[`+$base`](/docs/hoon/reference/stdlib/4o/#base)
60+[`++bass`](/docs/hoon/reference/stdlib/4f/#bass)
61+[`++bay:ag`](/docs/hoon/reference/stdlib/4j/#bayag)
62+[`+$bean`](/docs/hoon/reference/stdlib/2q/#bean)
63+[`+$beer:hoot`](/docs/hoon/reference/stdlib/4o/#beerhoot)
64+[`++bend`](/docs/hoon/reference/stdlib/4e/#bend)
65+[`++bet`](/docs/hoon/reference/stdlib/4i/#bet)
66+[`++bex`](/docs/hoon/reference/stdlib/2c/#bex)
67+[`++bif:ff`](/docs/hoon/reference/stdlib/3b/#bifff)
68+[`++bif:by`](/docs/hoon/reference/stdlib/2i/#bifby)
69+[`++bif:in`](/docs/hoon/reference/stdlib/2h/#bifin)
70+[`++biff`](/docs/hoon/reference/stdlib/2a/#biff)
71+[`++bin`](/docs/hoon/reference/stdlib/4i/#bin)
72+[`++bind`](/docs/hoon/reference/stdlib/2a/#bind)
73+[`++bip:ag`](/docs/hoon/reference/stdlib/4j/#bipag)
74+[`++bit:ff`](/docs/hoon/reference/stdlib/3b/#bitff)
75+[`++bit:rd`](/docs/hoon/reference/stdlib/3b/#bitrd)
76+[`++bit:rh`](/docs/hoon/reference/stdlib/3b/#bitrh)
77+[`++bit:rs`](/docs/hoon/reference/stdlib/3b/#bitrs)
78+[`++bit:rq`](/docs/hoon/reference/stdlib/3b/#bitrq)
79+[`$bite`](/docs/hoon/reference/stdlib/1c/#bite)
80+[`++bix:ab`](/docs/hoon/reference/stdlib/4j/#bixab)
81+[`++bisk:so`](/docs/hoon/reference/stdlib/4l/#biskso)
82+[`+$block`](/docs/hoon/reference/stdlib/4o/#block)
83+[`$bloq`](/docs/hoon/reference/stdlib/1c/#bloq)
84+[`++bond`](/docs/hoon/reference/stdlib/2a/#bond)
85+[`++bool`](/docs/hoon/reference/stdlib/5a/#bool)
86+[`++boss`](/docs/hoon/reference/stdlib/4f/#boss)
87+[`++both`](/docs/hoon/reference/stdlib/2a/#both)
88+[`++buc`](/docs/hoon/reference/stdlib/4h/#buc)
89+[`++but`](/docs/hoon/reference/stdlib/4i/#but)
90+[`+$byts`](/docs/hoon/reference/stdlib/2q/#byts)
9191
9292### c
9393
94−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#cne' title="Render base58check"><code>++c:ne</code></a>
95−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#cab' title="Parse _ (cab)"><code>++cab</code></a>
96−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#cain' title="Tank pretty-print"><code>++cain</code></a>
97−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#can' title="Assemble"><code>++can</code></a>
98−<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#cap' title="Tree head"><code>++cap</code></a>
99−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#cass' title="To lowercase"><code>++cass</code></a>
100−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#cat' title="Concatenate"><code>++cat</code></a>
101−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#c-coco' title="Render base58check"><code>++c-co:co</code></a>
102−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#cell' title="Make %cell type (compiler utility)"><code>++cell</code></a>
103−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#cen' title="Parse % (cen)"><code>++cen</code></a>
104−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#cetyo' title="Days in a century"><code>++cet:yo</code></a>
105−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#chafa' title="Decode base58check character"><code>++cha:fa</code></a>
106−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#char' title="Character"><code>+$char</code></a>
107−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#chum' title="Jet hint information"><code>+$chum</code></a>
108−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#cit' title="Octal digit"><code>++cit</code></a>
109−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#clap' title="Combine two units with function"><code>++clap</code></a>
110−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#clef' title="Compose two units with function"><code>++clef</code></a>
111−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#cmpsi' title="Compare (signed integer)"><code>++cmp:si</code></a>
112−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#co' title="Literal rendering engine"><code>++co</code></a>
113−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#coil' title="Tuple of core information"><code>+$coil</code></a>
114−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#coin' title="Nounliteral syntax cases"><code>+$coin</code></a>
115−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#col' title="Parse : (col)"><code>++col</code></a>
116−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#cold' title="Replace with constant"><code>++cold</code></a>
117−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#com' title="Parse , (com)"><code>++com</code></a>
118−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#comb' title="Combine two formulas (compiler utility)"><code>++comb</code></a>
119−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#comp' title="Arbitrary compose"><code>++comp</code></a>
120−<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#con' title="Binary OR"><code>++con</code></a>
121−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#cond' title="?: compile (compiler utility)"><code>++cond</code></a>
122−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#cons' title="Make formula cell (compiler utility)"><code>++cons</code></a>
123−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#cook' title="Apply gate"><code>++cook</code></a>
124−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#cord' title="UTF8 text"><code>+$cord</code></a>
125−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#core' title="Make %core type (compiler utility)"><code>++core</code></a>
126−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#cork' title="Compose forward"><code>++cork</code></a>
127−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#corl' title="Compose backward"><code>++corl</code></a>
128−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#cove' title="Extract [0 *] axis (compiler utility)"><code>++cove</code></a>
129−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#crib' title="Summary and details"><code>+$crib</code></a>
130−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#crip' title="Tape to cord"><code>++crip</code></a>
131−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#crubso' title="Parse @da, @dr, @p, @t"><code>++crub:so</code></a>
132−<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#cue' title="Unpack atom to noun"><code>++cue</code></a>
133−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#curr' title="Rightcurry a gate"><code>++curr</code></a>
134−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#cury' title="Curry left a gate"><code>++cury</code></a>
135−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#cuss' title="To uppercase"><code>++cuss</code></a>
136−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#cut' title="Slice"><code>++cut</code></a>
94+[`++c:ne`](/docs/hoon/reference/stdlib/4j/#cne)
95+[`++cab`](/docs/hoon/reference/stdlib/4h/#cab)
96+[`++cain`](/docs/hoon/reference/stdlib/5c/#cain)
97+[`++can`](/docs/hoon/reference/stdlib/2c/#can)
98+[`++cap`](/docs/hoon/reference/stdlib/1b/#cap)
99+[`++cass`](/docs/hoon/reference/stdlib/4b/#cass)
100+[`++cat`](/docs/hoon/reference/stdlib/2c/#cat)
101+[`++c-co:co`](/docs/hoon/reference/stdlib/4k/#c-coco)
102+[`++cell`](/docs/hoon/reference/stdlib/5a/#cell)
103+[`++cen`](/docs/hoon/reference/stdlib/4h/#cen)
104+[`++cet:yo`](/docs/hoon/reference/stdlib/3c/#cetyo)
105+[`++cha:fa`](/docs/hoon/reference/stdlib/4a/#chafa)
106+[`+$char`](/docs/hoon/reference/stdlib/2q/#char)
107+[`+$chum`](/docs/hoon/reference/stdlib/4o/#chum)
108+[`++cit`](/docs/hoon/reference/stdlib/4i/#cit)
109+[`++clap`](/docs/hoon/reference/stdlib/2a/#clap)
110+[`++clef`](/docs/hoon/reference/stdlib/2a/#clef)
111+[`++cmp:si`](/docs/hoon/reference/stdlib/3a/#cmpsi)
112+[`++co`](/docs/hoon/reference/stdlib/4k/#co)
113+[`+$coil`](/docs/hoon/reference/stdlib/4o/#coil)
114+[`+$coin`](/docs/hoon/reference/stdlib/3g/#coin)
115+[`++col`](/docs/hoon/reference/stdlib/4h/#col)
116+[`++cold`](/docs/hoon/reference/stdlib/4f/#cold)
117+[`++com`](/docs/hoon/reference/stdlib/4h/#com)
118+[`++comb`](/docs/hoon/reference/stdlib/5a/#comb)
119+[`++comp`](/docs/hoon/reference/stdlib/4e/#comp)
120+[`++con`](/docs/hoon/reference/stdlib/2d/#con)
121+[`++cond`](/docs/hoon/reference/stdlib/5a/#cond)
122+[`++cons`](/docs/hoon/reference/stdlib/5a/#cons)
123+[`++cook`](/docs/hoon/reference/stdlib/4f/#cook)
124+[`+$cord`](/docs/hoon/reference/stdlib/2q/#cord)
125+[`++core`](/docs/hoon/reference/stdlib/5a/#core)
126+[`++cork`](/docs/hoon/reference/stdlib/2n/#cork)
127+[`++corl`](/docs/hoon/reference/stdlib/2n/#corl)
128+[`++cove`](/docs/hoon/reference/stdlib/5a/#cove)
129+[`+$crib`](/docs/hoon/reference/stdlib/4o/#crib)
130+[`++crip`](/docs/hoon/reference/stdlib/4b/#crip)
131+[`++crub:so`](/docs/hoon/reference/stdlib/4l/#crubso)
132+[`++cue`](/docs/hoon/reference/stdlib/2p/#cue)
133+[`++curr`](/docs/hoon/reference/stdlib/2n/#curr)
134+[`++cury`](/docs/hoon/reference/stdlib/2n/#cury)
135+[`++cuss`](/docs/hoon/reference/stdlib/4b/#cuss)
136+[`++cut`](/docs/hoon/reference/stdlib/2c/#cut)
137137
138138### d
139139
140−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dne' title="Render decimal"><code>++d:ne</code></a>
141−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#date' title="Parsed date"><code>+$date</code></a>
142−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#dayyo' title="Seconds in day"><code>++day:yo</code></a>
143−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#d-coco' title="Render decimal with min length"><code>++d-co:co</code></a>
144−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#dec' title="Decrement"><code>++dec</code></a>
145−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#delby' title="Delete (map)"><code>++del:by</code></a>
146−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#delin' title="Delete (set)"><code>++del:in</code></a>
147−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#delju' title="Delete (jug)"><code>++del:ju</code></a>
148−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dem' title="Decimal to atom"><code>++dem</code></a>
149−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#demag' title="Parse decmal with dots"><code>++dem:ag</code></a>
150−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#denfa' title="Decode base58check"><code>++den:fa</code></a>
151−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#denfl' title="Denormalizes (floating point)"><code>++den:fl</code></a>
152−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#depto' title="Maximum depth (queue)"><code>++dep:to</code></a>
153−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#difby' title="Difference between maps"><code>++dif:by</code></a>
154−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#diffe' title="Difference between atoms (modular basis)"><code>++dif:fe</code></a>
140+[`++d:ne`](/docs/hoon/reference/stdlib/4j/#dne)
141+[`+$date`](/docs/hoon/reference/stdlib/2q/#date)
142+[`++day:yo`](/docs/hoon/reference/stdlib/3c/#dayyo)
143+[`++d-co:co`](/docs/hoon/reference/stdlib/4k/#d-coco)
144+[`++dec`](/docs/hoon/reference/stdlib/1a/#dec)
145+[`++del:by`](/docs/hoon/reference/stdlib/2i/#delby)
146+[`++del:in`](/docs/hoon/reference/stdlib/2h/#delin)
147+[`++del:ju`](/docs/hoon/reference/stdlib/2j/#delju)
148+[`++dem`](/docs/hoon/reference/stdlib/4i/#dem)
149+[`++dem:ag`](/docs/hoon/reference/stdlib/4j/#demag)
150+[`++den:fa`](/docs/hoon/reference/stdlib/4a/#denfa)
151+[`++den:fl`](/docs/hoon/reference/stdlib/3b/#denfl)
152+[`++dep:to`](/docs/hoon/reference/stdlib/2k/#depto)
153+[`++dif:by`](/docs/hoon/reference/stdlib/2i/#difby)
154+[`++dif:fe`](/docs/hoon/reference/stdlib/2c/#diffe)
155155<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#diffo' title='Subtraction (modular base)'><code>++dif:fo</code></a>
156156<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#difin' title='Difference (set)'><code>++dif:in</code></a>
157−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#difsi' title="Subtraction (signed integer)"><code>++dif:si</code></a>
158−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#digby' title="Address of key (map)"><code>++dig:by</code></a>
159−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#digin' title="Address of a in set"><code>++dig:in</code></a>
160−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dimag' title="Parse decimal number"><code>++dim:ag</code></a>
161−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#dime' title="Auraatom pair"><code>+$dime</code></a>
162−<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#dis' title="Binary AND (atoms)"><code>++dis</code></a>
163−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dit' title="Decimal digit"><code>++dit</code></a>
164−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#div' title="Divide"><code>++div</code></a>
165−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#divff' title="Divide (IEEE float)"><code>++div:ff</code></a>
166−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#divfl' title="Divide (signed and unsigned integer cell)"><code>++div:fl</code></a>
167−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#divrd' title="Double precision float"><code>++div:rd</code></a>
168−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#divrh' title="Divide (halfprecision float)"><code>++div:rh</code></a>
169−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#divrs' title="Divide (singleprecision float)"><code>++div:rs</code></a>
170−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#divrq' title="Divide (quadprecision float)"><code>++div:rq</code></a>
171−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dof' title="Hep & optional gap"><code>++dof</code></a>
172−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dog' title="Optional gap"><code>++dog</code></a>
173−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#doh' title="@p separator"><code>++doh</code></a>
174−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#doq' title="Parse double quote"><code>++doq</code></a>
175−<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#dor' title="Depth order"><code>++dor</code></a>
176−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#doss' title="Profiling"><code>+$doss</code></a>
177−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#dot' title="Parse period"><code>++dot</code></a>
178−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drgff' title="@r to decimal float"><code>++drg:ff</code></a>
179−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drgfl' title="Get printable decimal (signed and unsigned integer cell)"><code>++drg:fl</code></a>
180−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drgrd' title="@rd to decimal float"><code>++drg:rd</code></a>
181−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drgrh' title="@rh to decimal float"><code>++drg:rh</code></a>
182−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drgrs' title="@rs to decimal float"><code>++drg:rs</code></a>
183−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drgrq' title="@rq to decimal float"><code>++drg:rq</code></a>
184−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#drop' title="Unit to list"><code>++drop</code></a>
185−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dulsi' title="Modulus (signed integer)"><code>++dul:si</code></a>
186−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dumag' title="Parse decimal with leading zero"><code>++dum:ag</code></a>
187−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dun' title=" to ~"><code>++dun</code></a>
188−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#duz' title="== to ~"><code>++duz</code></a>
189−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#dvr' title="Divide (with remainder)"><code>++dvr</code></a>
157+[`++dif:si`](/docs/hoon/reference/stdlib/3a/#difsi)
158+[`++dig:by`](/docs/hoon/reference/stdlib/2i/#digby)
159+[`++dig:in`](/docs/hoon/reference/stdlib/2h/#digin)
160+[`++dim:ag`](/docs/hoon/reference/stdlib/4j/#dimag)
161+[`+$dime`](/docs/hoon/reference/stdlib/3g/#dime)
162+[`++dis`](/docs/hoon/reference/stdlib/2d/#dis)
163+[`++dit`](/docs/hoon/reference/stdlib/4i/#dit)
164+[`++div`](/docs/hoon/reference/stdlib/1a/#div)
165+[`++div:ff`](/docs/hoon/reference/stdlib/3b/#divff)
166+[`++div:fl`](/docs/hoon/reference/stdlib/3b/#divfl)
167+[`++div:rd`](/docs/hoon/reference/stdlib/3b/#divrd)
168+[`++div:rh`](/docs/hoon/reference/stdlib/3b/#divrh)
169+[`++div:rs`](/docs/hoon/reference/stdlib/3b/#divrs)
170+[`++div:rq`](/docs/hoon/reference/stdlib/3b/#divrq)
171+[`++dof`](/docs/hoon/reference/stdlib/4i/#dof)
172+[`++dog`](/docs/hoon/reference/stdlib/4i/#dog)
173+[`++doh`](/docs/hoon/reference/stdlib/4i/#doh)
174+[`++doq`](/docs/hoon/reference/stdlib/4h/#doq)
175+[`++dor`](/docs/hoon/reference/stdlib/2f/#dor)
176+[`+$doss`](/docs/hoon/reference/stdlib/4o/#doss)
177+[`++dot`](/docs/hoon/reference/stdlib/4h/#dot)
178+[`++drg:ff`](/docs/hoon/reference/stdlib/3b/#drgff)
179+[`++drg:fl`](/docs/hoon/reference/stdlib/3b/#drgfl)
180+[`++drg:rd`](/docs/hoon/reference/stdlib/3b/#drgrd)
181+[`++drg:rh`](/docs/hoon/reference/stdlib/3b/#drgrh)
182+[`++drg:rs`](/docs/hoon/reference/stdlib/3b/#drgrs)
183+[`++drg:rq`](/docs/hoon/reference/stdlib/3b/#drgrq)
184+[`++drop`](/docs/hoon/reference/stdlib/2a/#drop)
185+[`++dul:si`](/docs/hoon/reference/stdlib/3a/#dulsi)
186+[`++dum:ag`](/docs/hoon/reference/stdlib/4j/#dumag)
187+[`++dun`](/docs/hoon/reference/stdlib/4i/#dun)
188+[`++duz`](/docs/hoon/reference/stdlib/4i/#duz)
189+[`++dvr`](/docs/hoon/reference/stdlib/1a/#dvr)
190190
191191### e
192192
193−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#eadfl' title="Exact add"><code>++ead:fl</code></a>
194−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#each' title="Mold of fork between two types"><code>++each</code></a>
195−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#easy' title="Always parse"><code>++easy</code></a>
196−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#ed-coco' title="Format with decimal place"><code>++ed-co:co</code></a>
197−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#edge' title="Parsing location metadata"><code>+$edge</code></a>
198−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#effob' title="murmur3-based pseudorandom function"><code>++eff:ob</code></a>
199−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#egcd' title="Extended Euclidean algorithm"><code>++egcd</code></a>
200−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#em-coco' title="Render in numeric base"><code>++em-co:co</code></a>
201−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emnfl' title="Minimum exponent"><code>++emn:fl</code></a>
202−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emufl' title="Exact multiply"><code>++emu:fl</code></a>
203−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emxfl' title="Maximum exponent"><code>++emx:fl</code></a>
204−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#encfa' title="Encode base58check"><code>++enc:fa</code></a>
205−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#end' title="Tail"><code>++end</code></a>
206−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equff' title="Equals (IEEE float)"><code>++equ:ff</code></a>
207−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equfl' title="Equals (signed and unsigned integer cell)"><code>++equ:fl</code></a>
208−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equrd' title="Equals (doubleprecision float)"><code>++equ:rd</code></a>
209−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equrh' title="Equals (halfprecision float)"><code>++equ:rh</code></a>
210−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equrs' title="Equals (singleprecision float)"><code>++equ:rs</code></a>
211−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equrq' title="Equals (quadprecision float)"><code>++equ:rq</code></a>
212−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#erayo' title="Leapyear period"><code>++era:yo</code></a>
213−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#expff' title="Get exponent (IEEE float)"><code>++exp:ff</code></a>
214−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#expfo' title="Exponent (modular base)"><code>++exp:fo</code></a>
215−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exprd' title="Exponent (@rd)"><code>++exp:rd</code></a>
216−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exprh' title="Exponent (halfprecision float)"><code>++exp:rh</code></a>
217−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exprs' title="Exponent (@rs)"><code>++exp:rs</code></a>
218−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exprq' title="Exponent (quadprecision float)"><code>++exp:rq</code></a>
193+[`++ead:fl`](/docs/hoon/reference/stdlib/3b/#eadfl)
194+[`++each`](/docs/hoon/reference/stdlib/1c/#each)
195+[`++easy`](/docs/hoon/reference/stdlib/4f/#easy)
196+[`++ed-co:co`](/docs/hoon/reference/stdlib/4k/#ed-coco)
197+[`+$edge`](/docs/hoon/reference/stdlib/3g/#edge)
198+[`++eff:ob`](/docs/hoon/reference/stdlib/3f/#effob)
199+[`++egcd`](/docs/hoon/reference/stdlib/3a/#egcd)
200+[`++em-co:co`](/docs/hoon/reference/stdlib/4k/#em-coco)
201+[`++emn:fl`](/docs/hoon/reference/stdlib/3b/#emnfl)
202+[`++emu:fl`](/docs/hoon/reference/stdlib/3b/#emufl)
203+[`++emx:fl`](/docs/hoon/reference/stdlib/3b/#emxfl)
204+[`++enc:fa`](/docs/hoon/reference/stdlib/4a/#encfa)
205+[`++end`](/docs/hoon/reference/stdlib/2c/#end)
206+[`++equ:ff`](/docs/hoon/reference/stdlib/3b/#equff)
207+[`++equ:fl`](/docs/hoon/reference/stdlib/3b/#equfl)
208+[`++equ:rd`](/docs/hoon/reference/stdlib/3b/#equrd)
209+[`++equ:rh`](/docs/hoon/reference/stdlib/3b/#equrh)
210+[`++equ:rs`](/docs/hoon/reference/stdlib/3b/#equrs)
211+[`++equ:rq`](/docs/hoon/reference/stdlib/3b/#equrq)
212+[`++era:yo`](/docs/hoon/reference/stdlib/3c/#erayo)
213+[`++exp:ff`](/docs/hoon/reference/stdlib/3b/#expff)
214+[`++exp:fo`](/docs/hoon/reference/stdlib/3a/#expfo)
215+[`++exp:rd`](/docs/hoon/reference/stdlib/3b/#exprd)
216+[`++exp:rh`](/docs/hoon/reference/stdlib/3b/#exprh)
217+[`++exp:rs`](/docs/hoon/reference/stdlib/3b/#exprs)
218+[`++exp:rq`](/docs/hoon/reference/stdlib/3b/#exprq)
219219
220220### f
221221
222−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#fa' title="base58check"><code>++fa</code></a>
223−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#face' title="Make %face type (compiler utility)"><code>++face</code></a>
224−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#fail' title="Never parse"><code>++fail</code></a>
225−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#fall' title="Give unit a default value"><code>++fall</code></a>
226−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#fand' title="All indices in list"><code>++fand</code></a>
227−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#fas' title="Parse / (fas)"><code>++fas</code></a>
228−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#fe' title="Modulo bloq"><code>++fe</code></a>
229−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#fedag' title="Parse @p"><code>++fed:ag</code></a>
230−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feob' title="Internal function to +fee"><code>++fe:ob</code></a>
231−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feeob' title="Feistel cipher Fe in B&R (2002)"><code>++fee:ob</code></a>
232−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feenob' title="Reverse +fee"><code>++feen:ob</code></a>
233−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feinob' title="Conceal structure v3"><code>++fein:ob</code></a>
234−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feisob' title="Four-round generalised Feistel cipher over the domain [0, 2^32 - 2^16 - 1]"><code>++feis:ob</code></a>
235−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#femab' title="Parse base58check char"><code>++fem:ab</code></a>
236−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#fenob' title="Reverse +fe"><code>++fen:ob</code></a>
237−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#feqag' title="Parse @q phonetic base"><code>++feq:ag</code></a>
238−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#fil' title="Fill bloqstream"><code>++fil</code></a>
239−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#fimag' title="Parse base58check"><code>++fim:ag</code></a>
240−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#find' title="First index in list"><code>++find</code></a>
241−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#fitz' title="Odor compatibility (compiler utility)"><code>++fitz</code></a>
242−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#flag' title="Boolean (flag)"><code>+$flag</code></a>
243−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#flan' title="Loobean & (compiler utility)"><code>++flan</code></a>
244−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#flifl' title="Flip sign"><code>++fli:fl</code></a>
245−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#flip' title="Loobean negation (compiler utility)"><code>++flip</code></a>
246−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#flit' title="Make filter"><code>++flit</code></a>
247−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#flop' title="Reverse list"><code>++flop</code></a>
248−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#flor' title="Loobean | (compiler utility)"><code>++flor</code></a>
249−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fmaff' title="Fused multiplyadd (IEEE float)"><code>++fma:ff</code></a>
250−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fmafl' title="Fused multiplyadd"><code>++fma:fl</code></a>
251−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fmard' title="Fused multiplyadd (@rd)"><code>++fma:rd</code></a>
252−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fmarh' title="Fused multiplyadd (halfprecision float)"><code>++fma:rh</code></a>
253−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fmars' title="Fused multiplyadd (singleprecision float)"><code>++fma:rs</code></a>
254−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fmarq' title="Fused multiplyadd (quadprecision float)"><code>++fma:rq</code></a>
255−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fo' title="Modulo prime"><code>++fo</code></a>
256−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#foot' title="Cases of arms by variance model"><code>+$foot</code></a>
257−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#fore' title="Pair before"><code>++fore</code></a>
258−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#fork' title="Make %fork type (compiler utility)"><code>++fork</code></a>
259−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fosrh' title="@rs to @rh"><code>++fos:rh</code></a>
260−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#frafo' title="Divide (modular base)"><code>++fra:fo</code></a>
261−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#frasi' title="Divide (signed integer)"><code>++fra:si</code></a>
262−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#full' title="Parse to end"><code>++full</code></a>
263−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#funk' title="Add to tape"><code>++funk</code></a>
264−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#fuss' title="Has A or B?"><code>++fuss</code></a>
265−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#fyndob' title="Restore structure v3"><code>++fynd:ob</code></a>
222+[`++fa`](/docs/hoon/reference/stdlib/4a/#fa)
223+[`++face`](/docs/hoon/reference/stdlib/5a/#face)
224+[`++fail`](/docs/hoon/reference/stdlib/4e/#fail)
225+[`++fall`](/docs/hoon/reference/stdlib/2a/#fall)
226+[`++fand`](/docs/hoon/reference/stdlib/2b/#fand)
227+[`++fas`](/docs/hoon/reference/stdlib/4h/#fas)
228+[`++fe`](/docs/hoon/reference/stdlib/2c/#fe)
229+[`++fed:ag`](/docs/hoon/reference/stdlib/4j/#fedag)
230+[`++fe:ob`](/docs/hoon/reference/stdlib/3f/#feob)
231+[`++fee:ob`](/docs/hoon/reference/stdlib/3f/#feeob)
232+[`++feen:ob`](/docs/hoon/reference/stdlib/3f/#feenob)
233+[`++fein:ob`](/docs/hoon/reference/stdlib/3f/#feinob)
234+[`++feis:ob`](/docs/hoon/reference/stdlib/3f/#feisob)
235+[`++fem:ab`](/docs/hoon/reference/stdlib/4j/#femab)
236+[`++fen:ob`](/docs/hoon/reference/stdlib/3f/#fenob)
237+[`++feq:ag`](/docs/hoon/reference/stdlib/4j/#feqag)
238+[`++fil`](/docs/hoon/reference/stdlib/2c/#fil)
239+[`++fim:ag`](/docs/hoon/reference/stdlib/4j/#fimag)
240+[`++find`](/docs/hoon/reference/stdlib/2b/#find)
241+[`++fitz`](/docs/hoon/reference/stdlib/5a/#fitz)
242+[`+$flag`](/docs/hoon/reference/stdlib/2q/#flag)
243+[`++flan`](/docs/hoon/reference/stdlib/5a/#flan)
244+[`++fli:fl`](/docs/hoon/reference/stdlib/3b/#flifl)
245+[`++flip`](/docs/hoon/reference/stdlib/5a/#flip)
246+[`++flit`](/docs/hoon/reference/stdlib/2a/#flit)
247+[`++flop`](/docs/hoon/reference/stdlib/2b/#flop)
248+[`++flor`](/docs/hoon/reference/stdlib/5a/#flor)
249+[`++fma:ff`](/docs/hoon/reference/stdlib/3b/#fmaff)
250+[`++fma:fl`](/docs/hoon/reference/stdlib/3b/#fmafl)
251+[`++fma:rd`](/docs/hoon/reference/stdlib/3b/#fmard)
252+[`++fma:rh`](/docs/hoon/reference/stdlib/3b/#fmarh)
253+[`++fma:rs`](/docs/hoon/reference/stdlib/3b/#fmars)
254+[`++fma:rq`](/docs/hoon/reference/stdlib/3b/#fmarq)
255+[`++fo`](/docs/hoon/reference/stdlib/3a/#fo)
256+[`+$foot`](/docs/hoon/reference/stdlib/4o/#foot)
257+[`++fore`](/docs/hoon/reference/stdlib/2n/#fore)
258+[`++fork`](/docs/hoon/reference/stdlib/5a/#fork)
259+[`++fos:rh`](/docs/hoon/reference/stdlib/3b/#fosrh)
260+[`++fra:fo`](/docs/hoon/reference/stdlib/3a/#frafo)
261+[`++fra:si`](/docs/hoon/reference/stdlib/3a/#frasi)
262+[`++full`](/docs/hoon/reference/stdlib/4f/#full)
263+[`++funk`](/docs/hoon/reference/stdlib/4f/#funk)
264+[`++fuss`](/docs/hoon/reference/stdlib/4f/#fuss)
265+[`++fynd:ob`](/docs/hoon/reference/stdlib/3f/#fyndob)
266266
267267### g
268268
269−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gah' title="New line or ''"><code>++gah</code></a>
270−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#gal' title="Parse < (gal)"><code>++gal</code></a>
271−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gap' title="Plural whitespace"><code>++gap</code></a>
272−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gaq' title="End of line"><code>++gaq</code></a>
273−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#gar' title="Parse > (gar)"><code>++gar</code></a>
274−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#garb' title="Core metadata"><code>+$garb</code></a>
275−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#gasby' title="Concatenate (map)"><code>++gas:by</code></a>
276−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#gasin' title="Concatenate (set)"><code>++gas:in</code></a>
277−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#gasju' title="Concatenate (jug)"><code>++gas:ju</code></a>
278−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#gasto' title="Push list into queue"><code>++gas:to</code></a>
279−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#gate' title="Function"><code>++gate</code></a>
280−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gaw' title="Classic whitespace"><code>++gaw</code></a>
281−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gay' title="Optional gap"><code>++gay</code></a>
282−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#getby' title="Grab unit value"><code>++get:by</code></a>
283−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#getja' title="Grab value by key"><code>++get:ja</code></a>
284−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#getju' title="Retrieve set"><code>++get:ju</code></a>
285−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#getto' title="Headtail pair"><code>++get:to</code></a>
286−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#glue' title="Skip delimiter"><code>++glue</code></a>
287−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gon' title="Parse long numbers"><code>++gon</code></a>
288−<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#gor' title="Mug order"><code>++gor</code></a>
289−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#gotby' title="Assert for value (map)"><code>++got:by</code></a>
290−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grdff' title="Decimal float to @r"><code>++grd:ff</code></a>
291−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grdfl' title="Decimal to float"><code>++grd:fl</code></a>
292−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grdrd' title="Decimal float to @rd"><code>++grd:rd</code></a>
293−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grdrh' title="Decimal float to @rh"><code>++grd:rh</code></a>
294−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grdrs' title="Decimal float to @rs"><code>++grd:rs</code></a>
295−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grdrq' title="Decimal float to @rq"><code>++grd:rq</code></a>
296−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#gte' title="Greater than / equal"><code>++gte</code></a>
297−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gteff' title="Greater than / equal (IEEE float)"><code>++gte:ff</code></a>
298−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gtefl' title="Greater than / equal (producing flag)"><code>++gte:fl</code></a>
299−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gterd' title="Greater than / equal (doubleprecision float)"><code>++gte:rd</code></a>
300−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gterh' title="Greater than / equal (halfprecision float)"><code>++gte:rh</code></a>
301−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gters' title="Greater than / equal (singleprecision float)"><code>++gte:rs</code></a>
302−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gterq' title="Greater than / equal (quadprecision float)"><code>++gte:rq</code></a>
303−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#gth' title="Greater than"><code>++gth</code></a>
304−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gthff' title="Greater than (IEEE float)"><code>++gth:ff</code></a>
305−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gthfl' title="Greater than (producing flag)"><code>++gth:fl</code></a>
306−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gthrd' title="Greater than (doubleprecision float)"><code>++gth:rd</code></a>
307−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gthrh' title="Greater than (halfprecision float)"><code>++gth:rh</code></a>
308−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gthrs' title="Greater than (singleprecision float)"><code>++gth:rs</code></a>
309−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gthrq' title="Greater than (quadprecision float)"><code>++gth:rq</code></a>
310−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gul' title="Axis syntax < or >"><code>++gul</code></a>
311−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#gulf' title="List from range"><code>++gulf</code></a>
269+[`++gah`](/docs/hoon/reference/stdlib/4i/#gah)
270+[`++gal`](/docs/hoon/reference/stdlib/4h/#gal)
271+[`++gap`](/docs/hoon/reference/stdlib/4i/#gap)
272+[`++gaq`](/docs/hoon/reference/stdlib/4i/#gaq)
273+[`++gar`](/docs/hoon/reference/stdlib/4h/#gar)
274+[`+$garb`](/docs/hoon/reference/stdlib/4o/#garb)
275+[`++gas:by`](/docs/hoon/reference/stdlib/2i/#gasby)
276+[`++gas:in`](/docs/hoon/reference/stdlib/2h/#gasin)
277+[`++gas:ju`](/docs/hoon/reference/stdlib/2j/#gasju)
278+[`++gas:to`](/docs/hoon/reference/stdlib/2k/#gasto)
279+[`++gate`](/docs/hoon/reference/stdlib/1c/#gate)
280+[`++gaw`](/docs/hoon/reference/stdlib/4i/#gaw)
281+[`++gay`](/docs/hoon/reference/stdlib/4i/#gay)
282+[`++get:by`](/docs/hoon/reference/stdlib/2i/#getby)
283+[`++get:ja`](/docs/hoon/reference/stdlib/2j/#getja)
284+[`++get:ju`](/docs/hoon/reference/stdlib/2j/#getju)
285+[`++get:to`](/docs/hoon/reference/stdlib/2k/#getto)
286+[`++glue`](/docs/hoon/reference/stdlib/4e/#glue)
287+[`++gon`](/docs/hoon/reference/stdlib/4i/#gon)
288+[`++gor`](/docs/hoon/reference/stdlib/2f/#gor)
289+[`++got:by`](/docs/hoon/reference/stdlib/2i/#gotby)
290+[`++grd:ff`](/docs/hoon/reference/stdlib/3b/#grdff)
291+[`++grd:fl`](/docs/hoon/reference/stdlib/3b/#grdfl)
292+[`++grd:rd`](/docs/hoon/reference/stdlib/3b/#grdrd)
293+[`++grd:rh`](/docs/hoon/reference/stdlib/3b/#grdrh)
294+[`++grd:rs`](/docs/hoon/reference/stdlib/3b/#grdrs)
295+[`++grd:rq`](/docs/hoon/reference/stdlib/3b/#grdrq)
296+[`++gte`](/docs/hoon/reference/stdlib/1a/#gte)
297+[`++gte:ff`](/docs/hoon/reference/stdlib/3b/#gteff)
298+[`++gte:fl`](/docs/hoon/reference/stdlib/3b/#gtefl)
299+[`++gte:rd`](/docs/hoon/reference/stdlib/3b/#gterd)
300+[`++gte:rh`](/docs/hoon/reference/stdlib/3b/#gterh)
301+[`++gte:rs`](/docs/hoon/reference/stdlib/3b/#gters)
302+[`++gte:rq`](/docs/hoon/reference/stdlib/3b/#gterq)
303+[`++gth`](/docs/hoon/reference/stdlib/1a/#gth)
304+[`++gth:ff`](/docs/hoon/reference/stdlib/3b/#gthff)
305+[`++gth:fl`](/docs/hoon/reference/stdlib/3b/#gthfl)
306+[`++gth:rd`](/docs/hoon/reference/stdlib/3b/#gthrd)
307+[`++gth:rh`](/docs/hoon/reference/stdlib/3b/#gthrh)
308+[`++gth:rs`](/docs/hoon/reference/stdlib/3b/#gthrs)
309+[`++gth:rq`](/docs/hoon/reference/stdlib/3b/#gthrq)
310+[`++gul`](/docs/hoon/reference/stdlib/4i/#gul)
311+[`++gulf`](/docs/hoon/reference/stdlib/2b/#gulf)
312312
313313### h
314314
315−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hafab' title="Parse non-doz phonetic pair"><code>++haf:ab</code></a>
316−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#hair' title="Parsing line and column"><code>+$hair</code></a>
317−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#hasby' title="Key existence check (map)"><code>++has:by</code></a>
318−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#hasin' title="Key existence check (set)"><code>++has:in</code></a>
319−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#hasju' title="Check contents (jug)"><code>++has:ju</code></a>
320−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#hax' title="Parse # (hax)"><code>++hax</code></a>
321−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#head' title="Get head of cell"><code>++head</code></a>
322−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#help' title="Documentation"><code>+$help</code></a>
323−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hefab' title="Parse non-dozzod phonetic pair"><code>++hef:ab</code></a>
324−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#here' title="Placebased apply"><code>++here</code></a>
325−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#hep' title="Parse (hep)"><code>++hep</code></a>
326−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hex' title="Hexadecimal to atom"><code>++hex</code></a>
327−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hexag' title="Parse hexadecimal number"><code>++hex:ag</code></a>
328−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hifab' title="Parse phonetic pair"><code>++hif:ab</code></a>
329−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hig' title="Parse single uppercase letter"><code>++hig</code></a>
330−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#hike' title="Compiler utility"><code>++hike</code></a>
331−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#hint' title="Make %hint type (compiler utility)"><code>++hint</code></a>
332−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hit' title="Parse single hexadecimal digit"><code>++hit</code></a>
333−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hofab' title="Parse 2-4 @q phonetic pair"><code>++hof:ab</code></a>
334−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#homo' title="Homogenize list"><code>++homo</code></a>
335−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#hoon' title="Hoon AST"><code>+$hoon</code></a>
336−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#hoot' title="Hoon tools"><code>++hoot</code></a>
337−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#horyo' title="Seconds in hour"><code>++hor:yo</code></a>
338−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hufab' title="Parse 1-4 @q phonetic pairs"><code>++huf:ab</code></a>
339−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#hump' title="Profiling"><code>+$hump</code></a>
340−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#hunt' title="Select between two units by a rule"><code>++hunt</code></a>
341−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hyfab' title="Parse four @q phonetic pairs"><code>++hyf:ab</code></a>
315+[`++haf:ab`](/docs/hoon/reference/stdlib/4j/#hafab)
316+[`+$hair`](/docs/hoon/reference/stdlib/3g/#hair)
317+[`++has:by`](/docs/hoon/reference/stdlib/2i/#hasby)
318+[`++has:in`](/docs/hoon/reference/stdlib/2h/#hasin)
319+[`++has:ju`](/docs/hoon/reference/stdlib/2j/#hasju)
320+[`++hax`](/docs/hoon/reference/stdlib/4h/#hax)
321+[`++head`](/docs/hoon/reference/stdlib/2n/#head)
322+[`+$help`](/docs/hoon/reference/stdlib/4o/#help)
323+[`++hef:ab`](/docs/hoon/reference/stdlib/4j/#hefab)
324+[`++here`](/docs/hoon/reference/stdlib/4f/#here)
325+[`++hep`](/docs/hoon/reference/stdlib/4h/#hep)
326+[`++hex`](/docs/hoon/reference/stdlib/4i/#hex)
327+[`++hex:ag`](/docs/hoon/reference/stdlib/4j/#hexag)
328+[`++hif:ab`](/docs/hoon/reference/stdlib/4j/#hifab)
329+[`++hig`](/docs/hoon/reference/stdlib/4i/#hig)
330+[`++hike`](/docs/hoon/reference/stdlib/5a/#hike)
331+[`++hint`](/docs/hoon/reference/stdlib/5a/#hint)
332+[`++hit`](/docs/hoon/reference/stdlib/4i/#hit)
333+[`++hof:ab`](/docs/hoon/reference/stdlib/4j/#hofab)
334+[`++homo`](/docs/hoon/reference/stdlib/2b/#homo)
335+[`+$hoon`](/docs/hoon/reference/stdlib/4o/#hoon)
336+[`++hoot`](/docs/hoon/reference/stdlib/4o/#hoot)
337+[`++hor:yo`](/docs/hoon/reference/stdlib/3c/#horyo)
338+[`++huf:ab`](/docs/hoon/reference/stdlib/4j/#hufab)
339+[`+$hump`](/docs/hoon/reference/stdlib/4o/#hump)
340+[`++hunt`](/docs/hoon/reference/stdlib/2a/#hunt)
341+[`++hyf:ab`](/docs/hoon/reference/stdlib/4j/#hyfab)
342342
343343### i
344344
345−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#iblfl' title="Integer binary logarithm"><code>++ibl:fl</code></a>
346−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#ifix' title="Infix"><code>++ifix</code></a>
347−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#inde' title="Indentation block"><code>++inde</code></a>
348−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#indpo' title="Parse suffix"><code>++ind:po</code></a>
349−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#inspo' title="Parse prefix"><code>++ins:po</code></a>
350−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#intby' title="Intersection (map)"><code>++int:by</code></a>
351−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#intin' title="Intersection (set)"><code>++int:in</code></a>
352−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#invfe' title="Inverse order of modular field"><code>++inv:fe</code></a>
353−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#invfl' title="Inverse"><code>++inv:fl</code></a>
354−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#invfo' title="Inverse (signed modulus)"><code>++inv:fo</code></a>
355−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#iny' title="Indentation block"><code>++iny</code></a>
345+[`++ibl:fl`](/docs/hoon/reference/stdlib/3b/#iblfl)
346+[`++ifix`](/docs/hoon/reference/stdlib/4f/#ifix)
347+[`++inde`](/docs/hoon/reference/stdlib/4f/#inde)
348+[`++ind:po`](/docs/hoon/reference/stdlib/4a/#indpo)
349+[`++ins:po`](/docs/hoon/reference/stdlib/4a/#inspo)
350+[`++int:by`](/docs/hoon/reference/stdlib/2i/#intby)
351+[`++int:in`](/docs/hoon/reference/stdlib/2h/#intin)
352+[`++inv:fe`](/docs/hoon/reference/stdlib/2c/#invfe)
353+[`++inv:fl`](/docs/hoon/reference/stdlib/3b/#invfl)
354+[`++inv:fo`](/docs/hoon/reference/stdlib/3a/#invfo)
355+[`++iny`](/docs/hoon/reference/stdlib/4i/#iny)
356356
357357### j
358358
359−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#ja' title="Jar engine"><code>++ja</code></a>
360−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#jabby' title="Transform value (map)"><code>++jab:by</code></a>
361−<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#jam' title="Pack noun to atom"><code>++jam</code></a>
362−<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#jar' title="Mold generator (jar)"><code>++jar</code></a>
363−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#jesyo' title="Maximum 64bit timestamp"><code>++jes:yo</code></a>
364−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#jest' title="Match a cord"><code>++jest</code></a>
365−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#jock' title="Compiler utility"><code>++jock</code></a>
366−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#join' title="Add separator between list elements"><code>++join</code></a>
367−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#ju' title="Jug operations"><code>++ju</code></a>
368−<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#jug' title="Mold generator (jug)"><code>++jug</code></a>
369−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#just' title="Match a single character"><code>++just</code></a>
359+[`++ja`](/docs/hoon/reference/stdlib/2j/#ja)
360+[`++jab:by`](/docs/hoon/reference/stdlib/2i/#jabby)
361+[`++jam`](/docs/hoon/reference/stdlib/2p/#jam)
362+[`++jar`](/docs/hoon/reference/stdlib/2o/#jar)
363+[`++jes:yo`](/docs/hoon/reference/stdlib/3c/#jesyo)
364+[`++jest`](/docs/hoon/reference/stdlib/4f/#jest)
365+[`++jock`](/docs/hoon/reference/stdlib/5a/#jock)
366+[`++join`](/docs/hoon/reference/stdlib/2b/#join)
367+[`++ju`](/docs/hoon/reference/stdlib/2j/#ju)
368+[`++jug`](/docs/hoon/reference/stdlib/2o/#jug)
369+[`++just`](/docs/hoon/reference/stdlib/4f/#just)
370370
371371### k
372372
373−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#kel' title="Parse { (kel)"><code>++kel</code></a>
374−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ker' title="Parse } (ker)"><code>++ker</code></a>
375−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ket' title="Parse ^ (ket)"><code>++ket</code></a>
376−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#keyby' title="Set of keys"><code>++key:by</code></a>
377−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#knee' title="Recursive parsers"><code>++knee</code></a>
378−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#knot' title="Atom type of ASCII characters"><code>+$knot</code></a>
373+[`++kel`](/docs/hoon/reference/stdlib/4h/#kel)
374+[`++ker`](/docs/hoon/reference/stdlib/4h/#ker)
375+[`++ket`](/docs/hoon/reference/stdlib/4h/#ket)
376+[`++key:by`](/docs/hoon/reference/stdlib/2i/#keyby)
377+[`++knee`](/docs/hoon/reference/stdlib/4f/#knee)
378+[`+$knot`](/docs/hoon/reference/stdlib/2q/#knot)
379379
380380### l
381381
382−<a class="tooltip" href='/docs/hoon/reference/stdlib/4d/#last' title="Further trace"><code>++last</code></a>
383−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#late' title="Put tail"><code>++late</code></a>
384−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#lead' title="Put head"><code>++lead</code></a>
385−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#lenl' title="Construct list from nullterminated noun"><code>++le:nl</code></a>
386−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#lent' title="List length"><code>++lent</code></a>
387−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#levi' title="Type nests or crash"><code>++levi</code></a>
388−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#levy' title="Logical AND on list"><code>++levy</code></a>
389−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lfefl' title="Maximum"><code>++lfe:fl</code></a>
390−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lfnfl' title="Largest normal float"><code>++lfn:fl</code></a>
391−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#lien' title="Logical OR on list"><code>++lien</code></a>
392−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#lift' title="Curried bind"><code>++lift</code></a>
393−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#like' title="Generic edge"><code>++like</code></a>
394−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#limb' title="Reference into subject by name/axis"><code>+$limb</code></a>
395−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#limo' title="Construct list from nullterminated tuple"><code>++limo</code></a>
396−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#link' title="Lexical segment"><code>+$link</code></a>
397−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#lipag' title="Parse IPv4 address"><code>++lip:ag</code></a>
398−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#list' title="Mold constructor (list)"><code>++list</code></a>
399−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#lone' title="Mold generator (face on mold)"><code>++lone</code></a>
400−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#look' title="Compiler utility"><code>++look</code></a>
401−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#loot' title="Compiler utility"><code>++loot</code></a>
402−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#low' title="Parse lowercase letter"><code>++low</code></a>
403−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#lsh' title="Leftshift"><code>++lsh</code></a>
404−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#lte' title="Less than / equal (atom)"><code>++lte</code></a>
405−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lteff' title="Less than / equal (IEEE float)"><code>++lte:ff</code></a>
406−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ltefl' title="Less than / equal (producing flag)"><code>++lte:fl</code></a>
407−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lterd' title="Less than / equal (doubleprecision float)"><code>++lte:rd</code></a>
408−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lterh' title="Less than / equal (halfprecision float)"><code>++lte:rh</code></a>
409−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lters' title="Less than / equal (singleprecision float)"><code>++lte:rs</code></a>
410−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lterq' title="Less than / equal (quadprecision float)"><code>++lte:rq</code></a>
411−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#lth' title="Less than (atom)"><code>++lth</code></a>
412−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lthff' title="Less than (IEEE float)"><code>++lth:ff</code></a>
413−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lthfl' title="Less than (signed and unsigned integer cell)"><code>++lth:fl</code></a>
414−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lthrd' title="Less than (doubleprecision float)"><code>++lth:rd</code></a>
415−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lthrh' title="Less than (halfprecision float)"><code>++lth:rh</code></a>
416−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lthrs' title="Less than (singleprecision float)"><code>++lth:rs</code></a>
417−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lthrq' title="Less than (quadprecision float)"><code>++lth:rq</code></a>
418−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lugfl' title="Central rounding mechanism"><code>++lug:fl</code></a>
419−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#lus' title="Parse + (lus)"><code>++lus</code></a>
420−<a class="tooltip" href='/docs/hoon/reference/stdlib/4d/#lust' title="Detect new line"><code>++lust</code></a>
421−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#less' title="Parse unless"><code>++less</code></a>
422−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#ly' title="List from raw noun"><code>++ly</code></a>
382+[`++last`](/docs/hoon/reference/stdlib/4d/#last)
383+[`++late`](/docs/hoon/reference/stdlib/2n/#late)
384+[`++lead`](/docs/hoon/reference/stdlib/2n/#lead)
385+[`++le:nl`](/docs/hoon/reference/stdlib/2m/#lenl)
386+[`++lent`](/docs/hoon/reference/stdlib/2b/#lent)
387+[`++levi`](/docs/hoon/reference/stdlib/5c/#levi)
388+[`++levy`](/docs/hoon/reference/stdlib/2b/#levy)
389+[`++lfe:fl`](/docs/hoon/reference/stdlib/3b/#lfefl)
390+[`++lfn:fl`](/docs/hoon/reference/stdlib/3b/#lfnfl)
391+[`++lien`](/docs/hoon/reference/stdlib/2b/#lien)
392+[`++lift`](/docs/hoon/reference/stdlib/2a/#lift)
393+[`++like`](/docs/hoon/reference/stdlib/3g/#like)
394+[`+$limb`](/docs/hoon/reference/stdlib/4o/#limb)
395+[`++limo`](/docs/hoon/reference/stdlib/2b/#limo)
396+[`+$link`](/docs/hoon/reference/stdlib/4o/#link)
397+[`++lip:ag`](/docs/hoon/reference/stdlib/4j/#lipag)
398+[`++list`](/docs/hoon/reference/stdlib/1c/#list)
399+[`++lone`](/docs/hoon/reference/stdlib/1c/#lone)
400+[`++look`](/docs/hoon/reference/stdlib/5a/#look)
401+[`++loot`](/docs/hoon/reference/stdlib/5a/#loot)
402+[`++low`](/docs/hoon/reference/stdlib/4i/#low)
403+[`++lsh`](/docs/hoon/reference/stdlib/2c/#lsh)
404+[`++lte`](/docs/hoon/reference/stdlib/1a/#lte)
405+[`++lte:ff`](/docs/hoon/reference/stdlib/3b/#lteff)
406+[`++lte:fl`](/docs/hoon/reference/stdlib/3b/#ltefl)
407+[`++lte:rd`](/docs/hoon/reference/stdlib/3b/#lterd)
408+[`++lte:rh`](/docs/hoon/reference/stdlib/3b/#lterh)
409+[`++lte:rs`](/docs/hoon/reference/stdlib/3b/#lters)
410+[`++lte:rq`](/docs/hoon/reference/stdlib/3b/#lterq)
411+[`++lth`](/docs/hoon/reference/stdlib/1a/#lth)
412+[`++lth:ff`](/docs/hoon/reference/stdlib/3b/#lthff)
413+[`++lth:fl`](/docs/hoon/reference/stdlib/3b/#lthfl)
414+[`++lth:rd`](/docs/hoon/reference/stdlib/3b/#lthrd)
415+[`++lth:rh`](/docs/hoon/reference/stdlib/3b/#lthrh)
416+[`++lth:rs`](/docs/hoon/reference/stdlib/3b/#lthrs)
417+[`++lth:rq`](/docs/hoon/reference/stdlib/3b/#lthrq)
418+[`++lug:fl`](/docs/hoon/reference/stdlib/3b/#lugfl)
419+[`++lus`](/docs/hoon/reference/stdlib/4h/#lus)
420+[`++lust`](/docs/hoon/reference/stdlib/4d/#lust)
421+[`++less`](/docs/hoon/reference/stdlib/4e/#less)
422+[`++ly`](/docs/hoon/reference/stdlib/2m/#ly)
423423
424424### m
425425
426−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#mane' title="XML name+space"><code>++mane</code></a>
427−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#manx' title="Dynamic XML node"><code>++manx</code></a>
428−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#manxhoot' title="Dynamic XML node"><code>+$manx:hoot</code></a>
429−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mard' title="Initialize ff (rd core)"><code>++ma:rd</code></a>
430−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#marh' title="Initialize ff (rh core)"><code>++ma:rh</code></a>
431−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mars' title="Initialize ff (rs core)"><code>++ma:rs</code></a>
432−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#marq' title="Initialize ff (rq core)"><code>++ma:rq</code></a>
433−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mack' title="Nock subject to unit"><code>++mack</code></a>
434−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#make' title="Compile cord to nock"><code>++make</code></a>
435−<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#malt' title="Map from list"><code>++malt</code></a>
436−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#manehoot' title="XML name+space"><code>+$mane:hoot</code></a>
437−<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#map' title="Mold generator (map)"><code>++map</code></a>
438−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#marby' title="Add with validation (map)"><code>++mar:by</code></a>
439−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#marehoot' title="Node or nodes"><code>+$mare:hoot</code></a>
440−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#marl' title="XML node list"><code>++marl</code></a>
441−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#marlhoot' title="Dynamic XML nodes"><code>+$marl:hoot</code></a>
442−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#marthoot' title="Dynamic XML attributes"><code>+$mart:hoot</code></a>
443−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#mars' title="XML cdata"><code>++mars</code></a>
444−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#mart' title="XML attributes"><code>++mart</code></a>
445−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#maruhoot' title="Interpolation or nodes"><code>+$maru:hoot</code></a>
446−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#marx' title="Dynamic XML tag"><code>++marx</code></a>
447−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#marxhoot' title="Dynamic XML tag"><code>+$marx:hoot</code></a>
448−<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#mas' title="Address within head/tail"><code>++mas</code></a>
449−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#mask' title="Match character"><code>++mask</code></a>
450−<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#mat' title="Lengthencode"><code>++mat</code></a>
451−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#mate' title="Choose"><code>++mate</code></a>
452−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#max' title="Maximum"><code>++max</code></a>
453−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#meff' title="Minimum exponent of ff"><code>++me:ff</code></a>
454−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#mean' title="Crash and printf"><code>++mean</code></a>
455−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#mes' title="Parse hexabyte"><code>++mes</code></a>
456−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#mesc' title="Escape special characters"><code>++mesc</code></a>
457−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#met' title="Measure"><code>++met</code></a>
458−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#min' title="Minimum (atom)"><code>++min</code></a>
459−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mink' title="Mock (virtual Nock) interpreter"><code>++mink</code></a>
460−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#mite' title="MIME type"><code>++mite</code></a>
461−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#mityo' title="Seconds in minute"><code>++mit:yo</code></a>
462−<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#mix' title="Binary XOR (atom)"><code>++mix</code></a>
463−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#mixed-case-symbol' title="Mixed-case term"><code>++mixed-case-symbol</code></a>
464−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#moan' title="Profiling: sample metric"><code>+$moan</code></a>
465−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mock' title="Compute formula on subject with hint"><code>++mock</code></a>
466−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#mod' title="Modulus (atom)"><code>++mod</code></a>
467−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#mohyo' title="Days in month"><code>++moh:yo</code></a>
468−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mole' title="Typed unitary virtual"><code>++mole</code></a>
469−<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#molt' title="Map from pair list"><code>++molt</code></a>
470−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mong' title="Slam gate with sample"><code>++mong</code></a>
471−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mook' title="Intelligently render crash annotation"><code>++mook</code></a>
472−<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#mor' title="(more) mug order"><code>++mor</code></a>
473−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#more' title="Parse list with delimiter"><code>++more</code></a>
474−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#most' title="Parse list of at least one match"><code>++most</code></a>
475−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#motag' title="Parse numerical month"><code>++mot:ag</code></a>
476−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#moyyo' title="Days in months of leapyear"><code>++moy:yo</code></a>
477−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#mu' title="Core used to scramble 16bit atoms"><code>++mu</code></a>
478−<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#mug' title="FNV1a scrambler"><code>++mug</code></a>
479−<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#muk' title="Standard MurmurHash3"><code>++muk</code></a>
480−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#mul' title="Multiply (atom)"><code>++mul</code></a>
481−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mulff' title="Multiply (IEEE float)"><code>++mul:ff</code></a>
482−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mulfl' title="Multiply (signed and unsigned integer cell)"><code>++mul:fl</code></a>
483−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mulrd' title="Multiply (doubleprecision float)"><code>++mul:rd</code></a>
484−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mulrh' title="Multiply (quadprecision float)"><code>++mul:rh</code></a>
485−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mulrs' title="Multiply (singleprecision float)"><code>++mul:rs</code></a>
486−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mulrq' title="Multiply (quadprecision float)"><code>++mul:rq</code></a>
487−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mule' title="Typed virtual"><code>++mule</code></a>
488−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mure' title="Untyped unitary virtual"><code>++mure</code></a>
489−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#musk' title="Nock with block set (compiler utility)"><code>++musk</code></a>
490−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mute' title="Untyped virtual"><code>++mute</code></a>
491−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#murn' title="Maybe transform"><code>++murn</code></a>
492−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#my' title="Map from raw noun"><code>++my</code></a>
493−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#mynl' title="Construct map from nullterminated noun"><code>++my:nl</code></a>
426+[`++mane`](/docs/hoon/reference/stdlib/5e/#mane)
427+[`++manx`](/docs/hoon/reference/stdlib/5e/#manx)
428+[`+$manx:hoot`](/docs/hoon/reference/stdlib/4o/#manxhoot)
429+[`++ma:rd`](/docs/hoon/reference/stdlib/3b/#mard)
430+[`++ma:rh`](/docs/hoon/reference/stdlib/3b/#marh)
431+[`++ma:rs`](/docs/hoon/reference/stdlib/3b/#mars)
432+[`++ma:rq`](/docs/hoon/reference/stdlib/3b/#marq)
433+[`++mack`](/docs/hoon/reference/stdlib/4n/#mack)
434+[`++make`](/docs/hoon/reference/stdlib/5d/#make)
435+[`++malt`](/docs/hoon/reference/stdlib/2l/#malt)
436+[`+$mane:hoot`](/docs/hoon/reference/stdlib/4o/#manehoot)
437+[`++map`](/docs/hoon/reference/stdlib/2o/#map)
438+[`++mar:by`](/docs/hoon/reference/stdlib/2i/#marby)
439+[`+$mare:hoot`](/docs/hoon/reference/stdlib/4o/#marehoot)
440+[`++marl`](/docs/hoon/reference/stdlib/5e/#marl)
441+[`+$marl:hoot`](/docs/hoon/reference/stdlib/4o/#marlhoot)
442+[`+$mart:hoot`](/docs/hoon/reference/stdlib/4o/#marthoot)
443+[`++mars`](/docs/hoon/reference/stdlib/5e/#mars)
444+[`++mart`](/docs/hoon/reference/stdlib/5e/#mart)
445+[`+$maru:hoot`](/docs/hoon/reference/stdlib/4o/#maruhoot)
446+[`++marx`](/docs/hoon/reference/stdlib/5e/#marx)
447+[`+$marx:hoot`](/docs/hoon/reference/stdlib/4o/#marxhoot)
448+[`++mas`](/docs/hoon/reference/stdlib/1b/#mas)
449+[`++mask`](/docs/hoon/reference/stdlib/4f/#mask)
450+[`++mat`](/docs/hoon/reference/stdlib/2p/#mat)
451+[`++mate`](/docs/hoon/reference/stdlib/2a/#mate)
452+[`++max`](/docs/hoon/reference/stdlib/1a/#max)
453+[`++me:ff`](/docs/hoon/reference/stdlib/3b/#meff)
454+[`++mean`](/docs/hoon/reference/stdlib/5c/#mean)
455+[`++mes`](/docs/hoon/reference/stdlib/4i/#mes)
456+[`++mesc`](/docs/hoon/reference/stdlib/4b/#mesc)
457+[`++met`](/docs/hoon/reference/stdlib/2c/#met)
458+[`++min`](/docs/hoon/reference/stdlib/1a/#min)
459+[`++mink`](/docs/hoon/reference/stdlib/4n/#mink)
460+[`++mite`](/docs/hoon/reference/stdlib/5e/#mite)
461+[`++mit:yo`](/docs/hoon/reference/stdlib/3c/#mityo)
462+[`++mix`](/docs/hoon/reference/stdlib/2d/#mix)
463+[`++mixed-case-symbol`](/docs/hoon/reference/stdlib/4i/#mixed-case-symbol)
464+[`+$moan`](/docs/hoon/reference/stdlib/4o/#moan)
465+[`++mock`](/docs/hoon/reference/stdlib/4n/#mock)
466+[`++mod`](/docs/hoon/reference/stdlib/1a/#mod)
467+[`++moh:yo`](/docs/hoon/reference/stdlib/3c/#mohyo)
468+[`++mole`](/docs/hoon/reference/stdlib/4n/#mole)
469+[`++molt`](/docs/hoon/reference/stdlib/2l/#molt)
470+[`++mong`](/docs/hoon/reference/stdlib/4n/#mong)
471+[`++mook`](/docs/hoon/reference/stdlib/4n/#mook)
472+[`++mor`](/docs/hoon/reference/stdlib/2f/#mor)
473+[`++more`](/docs/hoon/reference/stdlib/4f/#more)
474+[`++most`](/docs/hoon/reference/stdlib/4f/#most)
475+[`++mot:ag`](/docs/hoon/reference/stdlib/4j/#motag)
476+[`++moy:yo`](/docs/hoon/reference/stdlib/3c/#moyyo)
477+[`++mu`](/docs/hoon/reference/stdlib/4j/#mu)
478+[`++mug`](/docs/hoon/reference/stdlib/2e/#mug)
479+[`++muk`](/docs/hoon/reference/stdlib/2e/#muk)
480+[`++mul`](/docs/hoon/reference/stdlib/1a/#mul)
481+[`++mul:ff`](/docs/hoon/reference/stdlib/3b/#mulff)
482+[`++mul:fl`](/docs/hoon/reference/stdlib/3b/#mulfl)
483+[`++mul:rd`](/docs/hoon/reference/stdlib/3b/#mulrd)
484+[`++mul:rh`](/docs/hoon/reference/stdlib/3b/#mulrh)
485+[`++mul:rs`](/docs/hoon/reference/stdlib/3b/#mulrs)
486+[`++mul:rq`](/docs/hoon/reference/stdlib/3b/#mulrq)
487+[`++mule`](/docs/hoon/reference/stdlib/4n/#mule)
488+[`++mure`](/docs/hoon/reference/stdlib/4n/#mure)
489+[`++musk`](/docs/hoon/reference/stdlib/5a/#musk)
490+[`++mute`](/docs/hoon/reference/stdlib/4n/#mute)
491+[`++murn`](/docs/hoon/reference/stdlib/2b/#murn)
492+[`++my`](/docs/hoon/reference/stdlib/2m/#my)
493+[`++my:nl`](/docs/hoon/reference/stdlib/2m/#mynl)
494494
495495### n
496496
497−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#nail' title="Location, remainder of parsed text"><code>+$nail</code></a>
498−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#napto' title="Remove head of queue"><code>++nap:to</code></a>
499−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ne' title="Digit rendering engine"><code>++ne</code></a>
500−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#nedfl' title="Require float"><code>++ned:fl</code></a>
501−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#need' title="Unwrap unit"><code>++need</code></a>
502−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#netfe' title="Flip endianness"><code>++net:fe</code></a>
503−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#newsi' title="Atom to @s"><code>++new:si</code></a>
504−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#next' title="Consume character"><code>++next</code></a>
505−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#nipto' title="Remove root of queue"><code>++nip:to</code></a>
506−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#nix' title="Parse letters and underscore"><code>++nix</code></a>
507−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#nl' title="Noun to container operations"><code>++nl</code></a>
508−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#noah' title="Tape pretty-print"><code>++noah</code></a>
509−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#nock' title="Virtual nock"><code>+$nock</code></a>
510−<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#not' title="Binary NOT (atom)"><code>++not</code></a>
511−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#note' title="Type annotation"><code>+$note</code></a>
512−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#noun' title="Any noun"><code>+$noun</code></a>
513−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#nuckso' title="Toplevel coin parser"><code>++nuck:so</code></a>
514−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#nud' title="Parse numeric character"><code>++nud</code></a>
515−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#null' title="Null, nil, etc"><code>+$null</code></a>
516−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#nuskso' title="Parse coin literal with escapes"><code>++nusk:so</code></a>
497+[`+$nail`](/docs/hoon/reference/stdlib/3g/#nail)
498+[`++nap:to`](/docs/hoon/reference/stdlib/2k/#napto)
499+[`++ne`](/docs/hoon/reference/stdlib/4j/#ne)
500+[`++ned:fl`](/docs/hoon/reference/stdlib/3b/#nedfl)
501+[`++need`](/docs/hoon/reference/stdlib/2a/#need)
502+[`++net:fe`](/docs/hoon/reference/stdlib/2c/#netfe)
503+[`++new:si`](/docs/hoon/reference/stdlib/3a/#newsi)
504+[`++next`](/docs/hoon/reference/stdlib/4f/#next)
505+[`++nip:to`](/docs/hoon/reference/stdlib/2k/#nipto)
506+[`++nix`](/docs/hoon/reference/stdlib/4i/#nix)
507+[`++nl`](/docs/hoon/reference/stdlib/2m/#nl)
508+[`++noah`](/docs/hoon/reference/stdlib/5c/#noah)
509+[`+$nock`](/docs/hoon/reference/stdlib/4o/#nock)
510+[`++not`](/docs/hoon/reference/stdlib/2d/#not)
511+[`+$note`](/docs/hoon/reference/stdlib/4o/#note)
512+[`+$noun`](/docs/hoon/reference/stdlib/2q/#noun)
513+[`++nuck:so`](/docs/hoon/reference/stdlib/4l/#nuckso)
514+[`++nud`](/docs/hoon/reference/stdlib/4i/#nud)
515+[`+$null`](/docs/hoon/reference/stdlib/4o/#null)
516+[`++nusk:so`](/docs/hoon/reference/stdlib/4l/#nuskso)
517517
518518### o
519519
520−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#ob' title="Reversible scrambling v2"><code>++ob</code></a>
521−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#og' title="Container arm for SHA256 powered RNG"><code>++og</code></a>
522−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#oldsi' title="Sign and absolute value"><code>++old:si</code></a>
523−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#onan' title="Vise to vase"><code>++onan</code></a>
524−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#onyx' title="Arm activation"><code>+$onyx</code></a>
525−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#opal' title="Wing match"><code>+$opal</code></a>
526−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#oust' title="Remove from list"><code>++oust</code></a>
527−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#outfe' title="Maximum integer value"><code>++out:fe</code></a>
528−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#ox-coco' title="Format dot-separated digits in numeric base"><code>++ox-co:co</code></a>
520+[`++ob`](/docs/hoon/reference/stdlib/3f/#ob)
521+[`++og`](/docs/hoon/reference/stdlib/3d/#og)
522+[`++old:si`](/docs/hoon/reference/stdlib/3a/#oldsi)
523+[`++onan`](/docs/hoon/reference/stdlib/5c/#onan)
524+[`+$onyx`](/docs/hoon/reference/stdlib/4o/#onyx)
525+[`+$opal`](/docs/hoon/reference/stdlib/4o/#opal)
526+[`++oust`](/docs/hoon/reference/stdlib/2b/#oust)
527+[`++out:fe`](/docs/hoon/reference/stdlib/2c/#outfe)
528+[`++ox-co:co`](/docs/hoon/reference/stdlib/4k/#ox-coco)
529529
530530### p
531531
532−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#paff' title="Initialize fl from ff core"><code>++pa:ff</code></a>
533−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#padfa' title="base58check padding bytes"><code>++pad:fa</code></a>
534−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#pair' title="Mold of pair of types"><code>++pair</code></a>
535−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pam' title="Parse & (pam)"><code>++pam</code></a>
536−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pat' title="Parse @ (pat)"><code>++pat</code></a>
537−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#path' title="Like unix path"><code>+$path</code></a>
538−<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#peg' title="Address within address"><code>++peg</code></a>
539−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pal' title="Parse ( (pal)"><code>++pal</code></a>
540−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#palo' title="Wing trace, match"><code>+$palo</code></a>
541−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#par' title="Parse ) (par)"><code>++par</code></a>
542−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#pass' title="Public key"><code>++pass</code></a>
543−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#perdso' title="Parsing coin literal without prefixes"><code>++perd:so</code></a>
544−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#perk' title="Parse cube fork"><code>++perk</code></a>
545−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pevab' title="Parse 1-5 @uv base-32 chars"><code>++pev:ab</code></a>
546−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pewab' title="Parse <= 5 in base 64"><code>++pew:ab</code></a>
547−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#pfix' title="Discard first rule"><code>++pfix</code></a>
548−<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pi-heck' title="Profiling utility"><code>++pi-heck</code></a>
549−<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pi-noon' title="Sample trace"><code>++pi-noon</code></a>
550−<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pi-mope' title="Add sample"><code>++pi-mope</code></a>
551−<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pi-moth' title="Count sample"><code>++pi-moth</code></a>
552−<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pi-mumm' title="Print sample"><code>++pi-mumm</code></a>
553−<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pi-tell' title="Produce dump"><code>++pi-tell</code></a>
554−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#pica' title="Prose or code"><code>+$pica</code></a>
555−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#pint' title="Parsing range"><code>+$pint</code></a>
556−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pivab' title="Parse 5 @uv base-32 chars"><code>++piv:ab</code></a>
557−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#piwab' title="Parse 5 @uw base-64 chars"><code>++piw:ab</code></a>
558−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#plat' title="%hoon, %type, %nock or %tank"><code>+$plat</code></a>
559−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#plug' title="Parse to tuple"><code>++plug</code></a>
560−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#plus' title="List of at least one match"><code>++plus</code></a>
561−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#po' title="Phonetic base"><code>++po</code></a>
562−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#pock' title="Changes"><code>+$pock</code></a>
563−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#pole' title="Mold generator of faceless list"><code>++pole</code></a>
564−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#poly' title="Polarity"><code>+$poly</code></a>
565−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#port' title="Successful wing match"><code>+$port</code></a>
566−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#pose' title="Parse options"><code>++pose</code></a>
567−<a class="tooltip" href='/docs/hoon/reference/stdlib/2g/#pow' title="Computes a to the power of b"><code>++pow</code></a>
568−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#prcfl' title="Force precision of 2 or greater (floating point)"><code>++prc:fl</code></a>
569−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#prn' title="Parse any printable character"><code>++prn</code></a>
570−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#profo' title="Multiplies b and c modulo a"><code>++pro:fo</code></a>
571−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#prosi' title="Multiply to signed integer"><code>++pro:si</code></a>
572−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#punt' title="Unitized parse"><code>++punt</code></a>
573−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#putby' title="Add keyvalue pair (map)"><code>++put:by</code></a>
574−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#putin' title="Put b in a (set)"><code>++put:in</code></a>
575−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#putju' title="Add keyset pair (jar)"><code>++put:ju</code></a>
576−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#putto' title="Insert into queue"><code>++put:to</code></a>
532+[`++pa:ff`](/docs/hoon/reference/stdlib/3b/#paff)
533+[`++pad:fa`](/docs/hoon/reference/stdlib/4a/#padfa)
534+[`++pair`](/docs/hoon/reference/stdlib/1c/#pair)
535+[`++pam`](/docs/hoon/reference/stdlib/4h/#pam)
536+[`++pat`](/docs/hoon/reference/stdlib/4h/#pat)
537+[`+$path`](/docs/hoon/reference/stdlib/2q/#path)
538+[`++peg`](/docs/hoon/reference/stdlib/1b/#peg)
539+[`++pal`](/docs/hoon/reference/stdlib/4h/#pal)
540+[`+$palo`](/docs/hoon/reference/stdlib/4o/#palo)
541+[`++par`](/docs/hoon/reference/stdlib/4h/#par)
542+[`++pass`](/docs/hoon/reference/stdlib/5e/#pass)
543+[`++perd:so`](/docs/hoon/reference/stdlib/4l/#perdso)
544+[`++perk`](/docs/hoon/reference/stdlib/4f/#perk)
545+[`++pev:ab`](/docs/hoon/reference/stdlib/4j/#pevab)
546+[`++pew:ab`](/docs/hoon/reference/stdlib/4j/#pewab)
547+[`++pfix`](/docs/hoon/reference/stdlib/4e/#pfix)
548+[`++pi-heck`](/docs/hoon/reference/stdlib/5f/#pi-heck)
549+[`++pi-noon`](/docs/hoon/reference/stdlib/5f/#pi-noon)
550+[`++pi-mope`](/docs/hoon/reference/stdlib/5f/#pi-mope)
551+[`++pi-moth`](/docs/hoon/reference/stdlib/5f/#pi-moth)
552+[`++pi-mumm`](/docs/hoon/reference/stdlib/5f/#pi-mumm)
553+[`++pi-tell`](/docs/hoon/reference/stdlib/5f/#pi-tell)
554+[`+$pica`](/docs/hoon/reference/stdlib/4o/#pica)
555+[`+$pint`](/docs/hoon/reference/stdlib/3g/#pint)
556+[`++piv:ab`](/docs/hoon/reference/stdlib/4j/#pivab)
557+[`++piw:ab`](/docs/hoon/reference/stdlib/4j/#piwab)
558+[`+$plat`](/docs/hoon/reference/stdlib/4o/#plat)
559+[`++plug`](/docs/hoon/reference/stdlib/4e/#plug)
560+[`++plus`](/docs/hoon/reference/stdlib/4f/#plus)
561+[`++po`](/docs/hoon/reference/stdlib/4a/#po)
562+[`+$pock`](/docs/hoon/reference/stdlib/4o/#pock)
563+[`++pole`](/docs/hoon/reference/stdlib/1c/#pole)
564+[`+$poly`](/docs/hoon/reference/stdlib/4o/#poly)
565+[`+$port`](/docs/hoon/reference/stdlib/4o/#port)
566+[`++pose`](/docs/hoon/reference/stdlib/4e/#pose)
567+[`++pow`](/docs/hoon/reference/stdlib/2g/#pow)
568+[`++prc:fl`](/docs/hoon/reference/stdlib/3b/#prcfl)
569+[`++prn`](/docs/hoon/reference/stdlib/4i/#prn)
570+[`++pro:fo`](/docs/hoon/reference/stdlib/3a/#profo)
571+[`++pro:si`](/docs/hoon/reference/stdlib/3a/#prosi)
572+[`++punt`](/docs/hoon/reference/stdlib/4f/#punt)
573+[`++put:by`](/docs/hoon/reference/stdlib/2i/#putby)
574+[`++put:in`](/docs/hoon/reference/stdlib/2h/#putin)
575+[`++put:ju`](/docs/hoon/reference/stdlib/2j/#putju)
576+[`++put:to`](/docs/hoon/reference/stdlib/2k/#putto)
577577
578578### q
579579
580−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#qadyo' title="Seconds in 4 years"><code>++qad:yo</code></a>
581−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qat' title="Parse chars in blockcord"><code>++qat</code></a>
582−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qebab' title="Parse 1-4 binary digits"><code>++qeb:ab</code></a>
583−<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#qeu' title="Mold generator (queue)"><code>++qeu</code></a>
584−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qexab' title="Parse 1-4 hex digits"><code>++qex:ab</code></a>
585−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qibab' title="Parse 4 binary digits"><code>++qib:ab</code></a>
586−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qit' title="Parse character to cord atom"><code>++qit</code></a>
587−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qixab' title="Parse 4 hexadecimal digits"><code>++qix:ab</code></a>
588−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#quip' title="Mold generator (tuple of list and type)"><code>++quip</code></a>
589−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qut' title="Parse cord"><code>++qut</code></a>
580+[`++qad:yo`](/docs/hoon/reference/stdlib/3c/#qadyo)
581+[`++qat`](/docs/hoon/reference/stdlib/4i/#qat)
582+[`++qeb:ab`](/docs/hoon/reference/stdlib/4j/#qebab)
583+[`++qeu`](/docs/hoon/reference/stdlib/2o/#qeu)
584+[`++qex:ab`](/docs/hoon/reference/stdlib/4j/#qexab)
585+[`++qib:ab`](/docs/hoon/reference/stdlib/4j/#qibab)
586+[`++qit`](/docs/hoon/reference/stdlib/4i/#qit)
587+[`++qix:ab`](/docs/hoon/reference/stdlib/4j/#qixab)
588+[`++quip`](/docs/hoon/reference/stdlib/1c/#quip)
589+[`++qut`](/docs/hoon/reference/stdlib/4i/#qut)
590590
591591### r
592592
593−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rat' title="Print term, number or hex"><code>++r:at</code></a>
594−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#radog' title="Random in range"><code>++rad:og</code></a>
595−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#radsog' title="Random continuation"><code>++rads:og</code></a>
596−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#rain' title="Parse with % path"><code>++rain</code></a>
597−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#rakuob' title="Key list"><code>++raku:ob</code></a>
598−<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#ramre' title="Flatten tank to tape"><code>++ram:re</code></a>
599−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rap' title="Assemble nonzero"><code>++rap</code></a>
600−<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rash' title="Parse or crash"><code>++rash</code></a>
601−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#raufl' title="Various roundings (floating point)"><code>++rau:fl</code></a>
602−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#rawog' title="Random bits"><code>++raw:og</code></a>
603−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#rawsog' title="Random bits continuation"><code>++raws:og</code></a>
604−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#r-coco' title="Render floating point"><code>++r-co:co</code></a>
605−<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#re' title="Prettyprinting engine (tank)"><code>++re</code></a>
606−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#ream' title="Parse cord to hoon"><code>++ream</code></a>
607−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#rear' title="Last item in list"><code>++rear</code></a>
608−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rearco' title="Prepend and render atom as tape"><code>++rear:co</code></a>
609−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#reap' title="Replicate (list)"><code>++reap</code></a>
610−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#reck' title="Parse hoon file"><code>++reck</code></a>
611−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#reel' title="Right fold (list)"><code>++reel</code></a>
612−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#remsi' title="Remainder (signed integer)"><code>++rem:si</code></a>
613−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rendco' title="Render coin lot as tape"><code>++rend:co</code></a>
614−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rentco' title="Render coin as knot"><code>++rent:co</code></a>
615−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rep' title="Assemble single"><code>++rep</code></a>
616−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#repby' title="Reduce to product (map)"><code>++rep:by</code></a>
617−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#repin' title="Accumulate elements (set)"><code>++rep:in</code></a>
618−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#result' title="Internal interpreter result"><code>+$result</code></a>
619−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rev' title="Reverse"><code>++rev</code></a>
620−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rfat' title="Print loobean"><code>++rf:at</code></a>
621−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#ribby' title="Transform + product (map)"><code>++rib:by</code></a>
622−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#ride' title="End-to-end compiler"><code>++ride</code></a>
623−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#ring' title="Private key"><code>++ring</code></a>
624−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rip' title="Disassemble"><code>++rip</code></a>
625−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rnat' title="Print null"><code>++rn:at</code></a>
626−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#ro-coco' title="Format dot-prefixed bloqs in numeric base"><code>++ro-co:co</code></a>
627−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#road' title="Evaluate trap"><code>++road</code></a>
628−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rolfe' title="Roll left"><code>++rol:fe</code></a>
629−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#roll' title="Left fold (list)"><code>++roll</code></a>
593+[`++r:at`](/docs/hoon/reference/stdlib/4b/#rat)
594+[`++rad:og`](/docs/hoon/reference/stdlib/3d/#radog)
595+[`++rads:og`](/docs/hoon/reference/stdlib/3d/#radsog)
596+[`++rain`](/docs/hoon/reference/stdlib/5d/#rain)
597+[`++raku:ob`](/docs/hoon/reference/stdlib/3f/#rakuob)
598+[`++ram:re`](/docs/hoon/reference/stdlib/4c/#ramre)
599+[`++rap`](/docs/hoon/reference/stdlib/2c/#rap)
600+[`++rash`](/docs/hoon/reference/stdlib/4g/#rash)
601+[`++rau:fl`](/docs/hoon/reference/stdlib/3b/#raufl)
602+[`++raw:og`](/docs/hoon/reference/stdlib/3d/#rawog)
603+[`++raws:og`](/docs/hoon/reference/stdlib/3d/#rawsog)
604+[`++r-co:co`](/docs/hoon/reference/stdlib/4k/#r-coco)
605+[`++re`](/docs/hoon/reference/stdlib/4c/#re)
606+[`++ream`](/docs/hoon/reference/stdlib/5d/#ream)
607+[`++rear`](/docs/hoon/reference/stdlib/2b/#rear)
608+[`++rear:co`](/docs/hoon/reference/stdlib/4k/#rearco)
609+[`++reap`](/docs/hoon/reference/stdlib/2b/#reap)
610+[`++reck`](/docs/hoon/reference/stdlib/5d/#reck)
611+[`++reel`](/docs/hoon/reference/stdlib/2b/#reel)
612+[`++rem:si`](/docs/hoon/reference/stdlib/3a/#remsi)
613+[`++rend:co`](/docs/hoon/reference/stdlib/4k/#rendco)
614+[`++rent:co`](/docs/hoon/reference/stdlib/4k/#rentco)
615+[`++rep`](/docs/hoon/reference/stdlib/2c/#rep)
616+[`++rep:by`](/docs/hoon/reference/stdlib/2i/#repby)
617+[`++rep:in`](/docs/hoon/reference/stdlib/2h/#repin)
618+[`+$result`](/docs/hoon/reference/stdlib/4o/#result)
619+[`++rev`](/docs/hoon/reference/stdlib/2c/#rev)
620+[`++rf:at`](/docs/hoon/reference/stdlib/4b/#rfat)
621+[`++rib:by`](/docs/hoon/reference/stdlib/2i/#ribby)
622+[`++ride`](/docs/hoon/reference/stdlib/5d/#ride)
623+[`++ring`](/docs/hoon/reference/stdlib/5e/#ring)
624+[`++rip`](/docs/hoon/reference/stdlib/2c/#rip)
625+[`++rn:at`](/docs/hoon/reference/stdlib/4b/#rnat)
626+[`++ro-co:co`](/docs/hoon/reference/stdlib/4k/#ro-coco)
627+[`++road`](/docs/hoon/reference/stdlib/5c/#road)
628+[`++rol:fe`](/docs/hoon/reference/stdlib/2c/#rolfe)
629+[`++roll`](/docs/hoon/reference/stdlib/2b/#roll)
630630<code>++rood</code>
631−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rorfe' title="Roll right"><code>++ror:fe</code></a>
632−<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rose' title="Parse to each"><code>++rose</code></a>
633−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#roufl' title="Round to nearest float with 113bit significand"><code>++rou:fl</code></a>
634−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#roylso' title="Parse dime float"><code>++royl:so</code></a>
635−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-cellso' title="Convert rn to dn"><code>++royl-cell:so</code></a>
636−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-rhso' title="Parse half-precision float"><code>++royl-rh:so</code></a>
637−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-rqso' title="Parse quad-precision float"><code>++royl-rq:so</code></a>
638−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-rdso' title="Parse double-precision float"><code>++royl-rd:so</code></a>
639−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-rsso' title="Parse single-precision float"><code>++royl-rs:so</code></a>
640−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-rnso' title="Parse real number"><code>++royl-rn:so</code></a>
641−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rsh' title="Rightshift"><code>++rsh</code></a>
642−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rtat' title="Print cord, including escape characters"><code>++rt:at</code></a>
643−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rtaat' title="Print cord, including escape characters"><code>++rta:at</code></a>
644−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rtamat' title="Print cord with @tas syntax"><code>++rtam:at</code></a>
645−<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#rub' title="Lengthdecode"><code>++rub</code></a>
646−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rubat' title="Print binary"><code>++rub:at</code></a>
647−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rudat' title="Print atom as integer"><code>++rud:at</code></a>
648−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#rule' title="Parsing rule (match this with _)"><code>+$rule</code></a>
649−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rumat' title="Print base-n"><code>++rum:at</code></a>
650−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#runby' title="Transform values (map)"><code>++run:by</code></a>
651−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#runin' title="Apply gate to set"><code>++run:in</code></a>
652−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#runt' title="Prepend n times"><code>++runt</code></a>
653−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rupat' title="Print @p (outdated)"><code>++rup:at</code></a>
654−<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rush' title="Parse or null"><code>++rush</code></a>
655−<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rust' title="Parse tape or null"><code>++rust</code></a>
656−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rutby' title="Transform nodes (map)"><code>++rut:by</code></a>
657−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#ruvat' title="Print base-64"><code>++ruv:at</code></a>
658−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#ruxat' title="Print hexadecimal"><code>++rux:at</code></a>
631+[`++ror:fe`](/docs/hoon/reference/stdlib/2c/#rorfe)
632+[`++rose`](/docs/hoon/reference/stdlib/4g/#rose)
633+[`++rou:fl`](/docs/hoon/reference/stdlib/3b/#roufl)
634+[`++royl:so`](/docs/hoon/reference/stdlib/4l/#roylso)
635+[`++royl-cell:so`](/docs/hoon/reference/stdlib/4l/#royl-cellso)
636+[`++royl-rh:so`](/docs/hoon/reference/stdlib/4l/#royl-rhso)
637+[`++royl-rq:so`](/docs/hoon/reference/stdlib/4l/#royl-rqso)
638+[`++royl-rd:so`](/docs/hoon/reference/stdlib/4l/#royl-rdso)
639+[`++royl-rs:so`](/docs/hoon/reference/stdlib/4l/#royl-rsso)
640+[`++royl-rn:so`](/docs/hoon/reference/stdlib/4l/#royl-rnso)
641+[`++rsh`](/docs/hoon/reference/stdlib/2c/#rsh)
642+[`++rt:at`](/docs/hoon/reference/stdlib/4b/#rtat)
643+[`++rta:at`](/docs/hoon/reference/stdlib/4b/#rtaat)
644+[`++rtam:at`](/docs/hoon/reference/stdlib/4b/#rtamat)
645+[`++rub`](/docs/hoon/reference/stdlib/2p/#rub)
646+[`++rub:at`](/docs/hoon/reference/stdlib/4b/#rubat)
647+[`++rud:at`](/docs/hoon/reference/stdlib/4b/#rudat)
648+[`+$rule`](/docs/hoon/reference/stdlib/3g/#rule)
649+[`++rum:at`](/docs/hoon/reference/stdlib/4b/#rumat)
650+[`++run:by`](/docs/hoon/reference/stdlib/2i/#runby)
651+[`++run:in`](/docs/hoon/reference/stdlib/2h/#runin)
652+[`++runt`](/docs/hoon/reference/stdlib/4b/#runt)
653+[`++rup:at`](/docs/hoon/reference/stdlib/4b/#rupat)
654+[`++rush`](/docs/hoon/reference/stdlib/4g/#rush)
655+[`++rust`](/docs/hoon/reference/stdlib/4g/#rust)
656+[`++rut:by`](/docs/hoon/reference/stdlib/2i/#rutby)
657+[`++ruv:at`](/docs/hoon/reference/stdlib/4b/#ruvat)
658+[`++rux:at`](/docs/hoon/reference/stdlib/4b/#ruxat)
659659
660660### s
661661
662−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#same' title="Identity (produces same value)"><code>++same</code></a>
663−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sanff' title="Signed integer to @r"><code>++san:ff</code></a>
664−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sanfl' title="Signed integer to float"><code>++san:fl</code></a>
665−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sanrd' title="Unsigned integer to @rd"><code>++san:rd</code></a>
666−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sanrh' title="Signed integer to @rh"><code>++san:rh</code></a>
667−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sanrs' title="Signed integer to @rs"><code>++san:rs</code></a>
668−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sanrq' title="Signed integer to @rq"><code>++san:rq</code></a>
669−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#sand' title="Softcast by aura"><code>++sand</code></a>
670−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#sane' title="Check aura validity"><code>++sane</code></a>
671−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sbff' title="Sign bit"><code>++sb:ff</code></a>
672−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#scag' title="Prefix (produce front of list)"><code>++scag</code></a>
673−<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#scan' title="Parse tape or crash"><code>++scan</code></a>
674−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#s-coco' title="Render hex list"><code>++s-co:co</code></a>
675−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#scot' title="Render dime as cord"><code>++scot</code></a>
676−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#scow' title="Render dime as tape"><code>++scow</code></a>
677−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#seaff' title="Convert from IEEE float to fn"><code>++sea:ff</code></a>
678−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#seard' title="Convert from doubleprecision binary float to fn"><code>++sea:rd</code></a>
679−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#searh' title="Convert from halfprecision float to fn"><code>++sea:rh</code></a>
680−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sears' title="Convert from singleprecision float to fn"><code>++sea:rs</code></a>
681−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#searq' title="Convert from quadprecision float to fn"><code>++sea:rq</code></a>
682−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#sear' title="Conditional ++cook"><code>++sear</code></a>
683−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sebab' title="Parse 1"><code>++seb:ab</code></a>
684−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#sect' title="Paragraph"><code>+$sect</code></a>
685−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sedab' title="Parse nonzero decimal digit"><code>++sed:ab</code></a>
686−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#seem' title="Promote typo"><code>++seem</code></a>
687−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#seer' title="Promote vise"><code>++seer</code></a>
688−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sel' title="Parse [ (sel)"><code>++sel</code></a>
689−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#sell' title="Pretty-print vase to a tank"><code>++sell</code></a>
690−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#mic' title="Parse ; (mic)"><code>++mic</code></a>
691−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ser' title="Parse ] (ser)"><code>++ser</code></a>
692−<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#set' title="Mold generator (set)"><code>++set</code></a>
693−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sevab' title="Parse nonzero base 32 digit"><code>++sev:ab</code></a>
694−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sew' title="Stitch one atom into another"><code>++sew</code></a>
695−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sewab' title="Parse nonzero base 64 digit"><code>++sew:ab</code></a>
696−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sexab' title="Parse nonzero hexadecimal digit"><code>++sex:ab</code></a>
697−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#sfix' title="Discard second rule"><code>++sfix</code></a>
698−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shad' title="Double SHA256"><code>++shad</code></a>
699−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaf' title="Half SHA256"><code>++shaf</code></a>
700−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shal' title="SHA512 with length"><code>++shal</code></a>
701−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#sham' title="128bit noun hash"><code>++sham</code></a>
702−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shan' title="SHA1"><code>++shan</code></a>
703−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shas' title="Salted hash"><code>++shas</code></a>
704−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaw' title="Hash to nbits"><code>++shaw</code></a>
705−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shax' title="SHA256"><code>++shax</code></a>
706−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shay' title="SHA256 with length"><code>++shay</code></a>
707−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaz' title="SHA512"><code>++shaz</code></a>
708−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#shffl' title="Shift power"><code>++shf:fl</code></a>
709−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#shim' title="Match character within range"><code>++shim</code></a>
710−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#ship' title="Network identity"><code>++ship</code></a>
711−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#shop' title="Urbit/DNS identity"><code>++shop</code></a>
712−<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#show' title="Pretty-printer (deprecated)"><code>++show</code></a>
713−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#si' title="Signed integer"><code>++si</code></a>
714−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#sinl' title="Construct set from nullterminated noun"><code>++si:nl</code></a>
715−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sibab' title="Parse binary digit"><code>++sib:ab</code></a>
716−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sidab' title="Parse decimal digit"><code>++sid:ab</code></a>
717−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sig' title="Parse ~ (sig)"><code>++sig</code></a>
718−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sigff' title="Produce sign of IEEE float"><code>++sig:ff</code></a>
719−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sigrd' title="Produce sign of @rd"><code>++sig:rd</code></a>
720−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sigrh' title="Produce sign of halfprecision float"><code>++sig:rh</code></a>
721−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sigrs' title="Produce sign of @rs"><code>++sig:rs</code></a>
722−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sigrq' title="Produce sign of quadprecision float"><code>++sig:rq</code></a>
723−<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#silt' title="Produce set from list"><code>++silt</code></a>
724−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#simu' title="First and second"><code>++simu</code></a>
725−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sitfe' title="Enforce modulo"><code>++sit:fe</code></a>
726−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sitfo' title="Produce remainder of b modulo a"><code>++sit:fo</code></a>
727−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sivab' title="Parse a base 32 digit"><code>++siv:ab</code></a>
728−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#siwab' title="Parse a base 64 digit"><code>++siw:ab</code></a>
729−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sixab' title="Parse a hexadecimal digit"><code>++six:ab</code></a>
730−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skid' title="Separate list into two lists from slammed elments"><code>++skid</code></a>
731−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skim' title="Produce list of elements from boolean gate"><code>++skim</code></a>
732−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#skin' title="Texture"><code>+$skin</code></a>
733−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skip' title="Produce list of elements failing boolean gate"><code>++skip</code></a>
734−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#skol' title="Pretty-print type to tank"><code>++skol</code></a>
735−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slab' title="Test if contains"><code>++slab</code></a>
736−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#slag' title="Produce all elements from index in list"><code>++slag</code></a>
737−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slam' title="Slam a gate"><code>++slam</code></a>
738−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slap' title="Untyped vase .*"><code>++slap</code></a>
739−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slat' title="Curried slaw"><code>++slat</code></a>
740−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slav' title="Demand: parse cord with input aura"><code>++slav</code></a>
741−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slaw' title="Parse cord to input aura"><code>++slaw</code></a>
742−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slay' title="Parse cord to coin"><code>++slay</code></a>
743−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slew' title="Get axis in vase"><code>++slew</code></a>
744−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slim' title="Identical to ++seer"><code>++slim</code></a>
745−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slit' title="Type of slam"><code>++slit</code></a>
746−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slob' title="Superficial arm"><code>++slob</code></a>
747−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#sloe' title="Get arms in core"><code>++sloe</code></a>
748−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slog' title="Deify printf"><code>++slog</code></a>
749−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slop' title="Cons two vases"><code>++slop</code></a>
750−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slot' title="Got axis in vase"><code>++slot</code></a>
751−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#slug' title="Use gate to parse delimited list"><code>++slug</code></a>
752−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#slum' title="Slam a gate on a sample using raw nock, untyped"><code>++slum</code></a>
753−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slym' title="Slam without sample-type"><code>++slym</code></a>
754−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#smyt' title="Render path as tank"><code>++smyt</code></a>
755−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snag' title="Produce element at specific index (list)"><code>++snag</code></a>
756−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#snagnl' title="Produce element from list at specific nullterminated noun"><code>++snag:nl</code></a>
757−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snip' title="Drop tail off list"><code>++snip</code></a>
758−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snoc' title="Append noun to list"><code>++snoc</code></a>
759−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#so' title="Coin parser engine"><code>++so</code></a>
760−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#soft' title="Virtual clam"><code>++soft</code></a>
761−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#some' title="Wrap value in unit"><code>++some</code></a>
762−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#soq' title="Parse ' (soq)"><code>++soq</code></a>
763−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#sort' title="Quicksort (list)"><code>++sort</code></a>
764−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sovab' title="Parse @uv base-32 letter"><code>++sov:ab</code></a>
765−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sowab' title="Parse @uw base-64 letter/symbol"><code>++sow:ab</code></a>
766−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#soxab' title="Parse hexadecimal letter"><code>++sox:ab</code></a>
767−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#soz' title="Parse triple singlequote"><code>++soz</code></a>
768−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#spat' title="Render path as cord"><code>++spat</code></a>
769−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#spdfl' title="Produce smallest denormalized float"><code>++spd:fl</code></a>
770−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#spec' title="Structure definition AST"><code>+$spec</code></a>
771−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#sped' title="Reconstruct type"><code>++sped</code></a>
772−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#spin' title="Gate to list (with state)"><code>++spin</code></a>
773−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#spnfl' title="Produce smallest normal float"><code>++spn:fl</code></a>
774−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#spot' title="Stack trace line"><code>+$spot</code></a>
775−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#spud' title="Render path as tape"><code>++spud</code></a>
776−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#spun' title="Gate to list (with state)"><code>++spun</code></a>
777−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#spur' title="ship desk case spur"><code>++spur</code></a>
778−<a class="tooltip" href='/docs/hoon/reference/stdlib/2g/#sqt' title="Compute square root with remainder"><code>++sqt</code></a>
779−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqtff' title="Produce square root of IEEE float"><code>++sqt:ff</code></a>
780−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqtfl' title="Produce square root from signed and unsigned integer cell"><code>++sqt:fl</code></a>
781−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqtrd' title="Produce square root of doubleprecision float"><code>++sqt:rd</code></a>
782−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqtrh' title="Produce square root of halfprecision float"><code>++sqt:rh</code></a>
783−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqtrs' title="Produce square root of singleprecision float"><code>++sqt:rs</code></a>
784−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqtrq' title="Produce square root of quadprecision float"><code>++sqt:rq</code></a>
785−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#stab' title="Parse cord to path"><code>++stab</code></a>
786−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stag' title="Add label"><code>++stag</code></a>
787−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#stap' title="Path parser"><code>++stap</code></a>
788−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#star' title="Produce list of matches"><code>++star</code></a>
789−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#step' title="Atom size or offset, in bloqs"><code>++step</code></a>
790−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stet' title="Add faces to rangeparser pairs in list"><code>++stet</code></a>
791−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stew' title="Switch by first"><code>++stew</code></a>
792−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stir' title="Parse repeatedly"><code>++stir</code></a>
793−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#stud' title="Standard name"><code>+$stud</code></a>
794−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stun' title="Parse several times"><code>++stun</code></a>
795−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#sub' title="Subtract"><code>++sub</code></a>
796−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#subff' title="Subtract from IEEE float"><code>++sub:ff</code></a>
797−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#subfl' title="Subtract from signed and unsigned integer cells"><code>++sub:fl</code></a>
798−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#subrd' title="Subtract from doubleprecision float"><code>++sub:rd</code></a>
799−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#subrh' title="Subtract from halfprecision float"><code>++sub:rh</code></a>
800−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#subrs' title="Subtract from singleprecision float"><code>++sub:rs</code></a>
801−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#subrq' title="Subtract from quadprecision float"><code>++sub:rq</code></a>
802−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#succ' title="Successor"><code>++succ</code></a>
803−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sumfe' title="Sum two numbers in modular field"><code>++sum:fe</code></a>
804−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sumfo' title="Modular sum"><code>++sum:fo</code></a>
805−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sumsi' title="Addition (signed integer)"><code>++sum:si</code></a>
806−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sunff' title="Unsigned integer to IEEE float"><code>++sun:ff</code></a>
807−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sunfl' title="Unsigned integer to float"><code>++sun:fl</code></a>
808−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sunrd' title="Unsigned integer to doubleprecision float"><code>++sun:rd</code></a>
809−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sunrh' title="Unsigned integer to halfprecision float"><code>++sun:rh</code></a>
810−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sunrs' title="Unsigned integer to singleprecision float"><code>++sun:rs</code></a>
811−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sunrq' title="Unsigned integer to quadprecision float"><code>++sun:rq</code></a>
812−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sunsi' title="@u to @s"><code>++sun:si</code></a>
813−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#swag' title="Infix (list)"><code>++swag</code></a>
814−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#swat' title="Deferred ++slap"><code>++swat</code></a>
815−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#swp' title="Reverse block order"><code>++swp</code></a>
816−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#swrfl' title="Switch rounding mode of floating point"><code>++swr:fl</code></a>
817−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#sy' title="Produce set from nullterminated noun"><code>++sy</code></a>
818−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#sym' title="Term"><code>++sym</code></a>
819−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#synfl' title="Get sign"><code>++syn:fl</code></a>
820−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#synsi' title="Sign test"><code>++syn:si</code></a>
662+[`++same`](/docs/hoon/reference/stdlib/2n/#same)
663+[`++san:ff`](/docs/hoon/reference/stdlib/3b/#sanff)
664+[`++san:fl`](/docs/hoon/reference/stdlib/3b/#sanfl)
665+[`++san:rd`](/docs/hoon/reference/stdlib/3b/#sanrd)
666+[`++san:rh`](/docs/hoon/reference/stdlib/3b/#sanrh)
667+[`++san:rs`](/docs/hoon/reference/stdlib/3b/#sanrs)
668+[`++san:rq`](/docs/hoon/reference/stdlib/3b/#sanrq)
669+[`++sand`](/docs/hoon/reference/stdlib/4b/#sand)
670+[`++sane`](/docs/hoon/reference/stdlib/4b/#sane)
671+[`++sb:ff`](/docs/hoon/reference/stdlib/3b/#sbff)
672+[`++scag`](/docs/hoon/reference/stdlib/2b/#scag)
673+[`++scan`](/docs/hoon/reference/stdlib/4g/#scan)
674+[`++s-co:co`](/docs/hoon/reference/stdlib/4k/#s-coco)
675+[`++scot`](/docs/hoon/reference/stdlib/4m/#scot)
676+[`++scow`](/docs/hoon/reference/stdlib/4m/#scow)
677+[`++sea:ff`](/docs/hoon/reference/stdlib/3b/#seaff)
678+[`++sea:rd`](/docs/hoon/reference/stdlib/3b/#seard)
679+[`++sea:rh`](/docs/hoon/reference/stdlib/3b/#searh)
680+[`++sea:rs`](/docs/hoon/reference/stdlib/3b/#sears)
681+[`++sea:rq`](/docs/hoon/reference/stdlib/3b/#searq)
682+[`++sear`](/docs/hoon/reference/stdlib/4f/#sear)
683+[`++seb:ab`](/docs/hoon/reference/stdlib/4j/#sebab)
684+[`+$sect`](/docs/hoon/reference/stdlib/4o/#sect)
685+[`++sed:ab`](/docs/hoon/reference/stdlib/4j/#sedab)
686+[`++seem`](/docs/hoon/reference/stdlib/5c/#seem)
687+[`++seer`](/docs/hoon/reference/stdlib/5c/#seer)
688+[`++sel`](/docs/hoon/reference/stdlib/4h/#sel)
689+[`++sell`](/docs/hoon/reference/stdlib/5c/#sell)
690+[`++mic`](/docs/hoon/reference/stdlib/4h/#mic)
691+[`++ser`](/docs/hoon/reference/stdlib/4h/#ser)
692+[`++set`](/docs/hoon/reference/stdlib/2o/#set)
693+[`++sev:ab`](/docs/hoon/reference/stdlib/4j/#sevab)
694+[`++sew`](/docs/hoon/reference/stdlib/2c/#sew)
695+[`++sew:ab`](/docs/hoon/reference/stdlib/4j/#sewab)
696+[`++sex:ab`](/docs/hoon/reference/stdlib/4j/#sexab)
697+[`++sfix`](/docs/hoon/reference/stdlib/4e/#sfix)
698+[`++shad`](/docs/hoon/reference/stdlib/3d/#shad)
699+[`++shaf`](/docs/hoon/reference/stdlib/3d/#shaf)
700+[`++shal`](/docs/hoon/reference/stdlib/3d/#shal)
701+[`++sham`](/docs/hoon/reference/stdlib/3d/#sham)
702+[`++shan`](/docs/hoon/reference/stdlib/3d/#shan)
703+[`++shas`](/docs/hoon/reference/stdlib/3d/#shas)
704+[`++shaw`](/docs/hoon/reference/stdlib/3d/#shaw)
705+[`++shax`](/docs/hoon/reference/stdlib/3d/#shax)
706+[`++shay`](/docs/hoon/reference/stdlib/3d/#shay)
707+[`++shaz`](/docs/hoon/reference/stdlib/3d/#shaz)
708+[`++shf:fl`](/docs/hoon/reference/stdlib/3b/#shffl)
709+[`++shim`](/docs/hoon/reference/stdlib/4f/#shim)
710+[`++ship`](/docs/hoon/reference/stdlib/5e/#ship)
711+[`++shop`](/docs/hoon/reference/stdlib/5e/#shop)
712+[`++show`](/docs/hoon/reference/stdlib/4c/#show)
713+[`++si`](/docs/hoon/reference/stdlib/3a/#si)
714+[`++si:nl`](/docs/hoon/reference/stdlib/2m/#sinl)
715+[`++sib:ab`](/docs/hoon/reference/stdlib/4j/#sibab)
716+[`++sid:ab`](/docs/hoon/reference/stdlib/4j/#sidab)
717+[`++sig`](/docs/hoon/reference/stdlib/4h/#sig)
718+[`++sig:ff`](/docs/hoon/reference/stdlib/3b/#sigff)
719+[`++sig:rd`](/docs/hoon/reference/stdlib/3b/#sigrd)
720+[`++sig:rh`](/docs/hoon/reference/stdlib/3b/#sigrh)
721+[`++sig:rs`](/docs/hoon/reference/stdlib/3b/#sigrs)
722+[`++sig:rq`](/docs/hoon/reference/stdlib/3b/#sigrq)
723+[`++silt`](/docs/hoon/reference/stdlib/2l/#silt)
724+[`++simu`](/docs/hoon/reference/stdlib/4e/#simu)
725+[`++sit:fe`](/docs/hoon/reference/stdlib/2c/#sitfe)
726+[`++sit:fo`](/docs/hoon/reference/stdlib/3a/#sitfo)
727+[`++siv:ab`](/docs/hoon/reference/stdlib/4j/#sivab)
728+[`++siw:ab`](/docs/hoon/reference/stdlib/4j/#siwab)
729+[`++six:ab`](/docs/hoon/reference/stdlib/4j/#sixab)
730+[`++skid`](/docs/hoon/reference/stdlib/2b/#skid)
731+[`++skim`](/docs/hoon/reference/stdlib/2b/#skim)
732+[`+$skin`](/docs/hoon/reference/stdlib/4o/#skin)
733+[`++skip`](/docs/hoon/reference/stdlib/2b/#skip)
734+[`++skol`](/docs/hoon/reference/stdlib/5c/#skol)
735+[`++slab`](/docs/hoon/reference/stdlib/5c/#slab)
736+[`++slag`](/docs/hoon/reference/stdlib/2b/#slag)
737+[`++slam`](/docs/hoon/reference/stdlib/5c/#slam)
738+[`++slap`](/docs/hoon/reference/stdlib/5c/#slap)
739+[`++slat`](/docs/hoon/reference/stdlib/4m/#slat)
740+[`++slav`](/docs/hoon/reference/stdlib/4m/#slav)
741+[`++slaw`](/docs/hoon/reference/stdlib/4m/#slaw)
742+[`++slay`](/docs/hoon/reference/stdlib/4m/#slay)
743+[`++slew`](/docs/hoon/reference/stdlib/5c/#slew)
744+[`++slim`](/docs/hoon/reference/stdlib/5c/#slim)
745+[`++slit`](/docs/hoon/reference/stdlib/5c/#slit)
746+[`++slob`](/docs/hoon/reference/stdlib/5c/#slob)
747+[`++sloe`](/docs/hoon/reference/stdlib/5c/#sloe)
748+[`++slog`](/docs/hoon/reference/stdlib/5c/#slog)
749+[`++slop`](/docs/hoon/reference/stdlib/5c/#slop)
750+[`++slot`](/docs/hoon/reference/stdlib/5c/#slot)
751+[`++slug`](/docs/hoon/reference/stdlib/4f/#slug)
752+[`++slum`](/docs/hoon/reference/stdlib/4n/#slum)
753+[`++slym`](/docs/hoon/reference/stdlib/5c/#slym)
754+[`++smyt`](/docs/hoon/reference/stdlib/4m/#smyt)
755+[`++snag`](/docs/hoon/reference/stdlib/2b/#snag)
756+[`++snag:nl`](/docs/hoon/reference/stdlib/2m/#snagnl)
757+[`++snip`](/docs/hoon/reference/stdlib/2b/#snip)
758+[`++snoc`](/docs/hoon/reference/stdlib/2b/#snoc)
759+[`++so`](/docs/hoon/reference/stdlib/4l/#so)
760+[`++soft`](/docs/hoon/reference/stdlib/4n/#soft)
761+[`++some`](/docs/hoon/reference/stdlib/2a/#some)
762+[`++soq`](/docs/hoon/reference/stdlib/4h/#soq)
763+[`++sort`](/docs/hoon/reference/stdlib/2b/#sort)
764+[`++sov:ab`](/docs/hoon/reference/stdlib/4j/#sovab)
765+[`++sow:ab`](/docs/hoon/reference/stdlib/4j/#sowab)
766+[`++sox:ab`](/docs/hoon/reference/stdlib/4j/#soxab)
767+[`++soz`](/docs/hoon/reference/stdlib/4i/#soz)
768+[`++spat`](/docs/hoon/reference/stdlib/4m/#spat)
769+[`++spd:fl`](/docs/hoon/reference/stdlib/3b/#spdfl)
770+[`+$spec`](/docs/hoon/reference/stdlib/4o/#spec)
771+[`++sped`](/docs/hoon/reference/stdlib/5c/#sped)
772+[`++spin`](/docs/hoon/reference/stdlib/2b/#spin)
773+[`++spn:fl`](/docs/hoon/reference/stdlib/3b/#spnfl)
774+[`+$spot`](/docs/hoon/reference/stdlib/3g/#spot)
775+[`++spud`](/docs/hoon/reference/stdlib/4m/#spud)
776+[`++spun`](/docs/hoon/reference/stdlib/2b/#spun)
777+[`++spur`](/docs/hoon/reference/stdlib/5e/#spur)
778+[`++sqt`](/docs/hoon/reference/stdlib/2g/#sqt)
779+[`++sqt:ff`](/docs/hoon/reference/stdlib/3b/#sqtff)
780+[`++sqt:fl`](/docs/hoon/reference/stdlib/3b/#sqtfl)
781+[`++sqt:rd`](/docs/hoon/reference/stdlib/3b/#sqtrd)
782+[`++sqt:rh`](/docs/hoon/reference/stdlib/3b/#sqtrh)
783+[`++sqt:rs`](/docs/hoon/reference/stdlib/3b/#sqtrs)
784+[`++sqt:rq`](/docs/hoon/reference/stdlib/3b/#sqtrq)
785+[`++stab`](/docs/hoon/reference/stdlib/4m/#stab)
786+[`++stag`](/docs/hoon/reference/stdlib/4f/#stag)
787+[`++stap`](/docs/hoon/reference/stdlib/4m/#stap)
788+[`++star`](/docs/hoon/reference/stdlib/4f/#star)
789+[`++step`](/docs/hoon/reference/stdlib/1c/#step)
790+[`++stet`](/docs/hoon/reference/stdlib/4f/#stet)
791+[`++stew`](/docs/hoon/reference/stdlib/4f/#stew)
792+[`++stir`](/docs/hoon/reference/stdlib/4f/#stir)
793+[`+$stud`](/docs/hoon/reference/stdlib/2q/#stud)
794+[`++stun`](/docs/hoon/reference/stdlib/4f/#stun)
795+[`++sub`](/docs/hoon/reference/stdlib/1a/#sub)
796+[`++sub:ff`](/docs/hoon/reference/stdlib/3b/#subff)
797+[`++sub:fl`](/docs/hoon/reference/stdlib/3b/#subfl)
798+[`++sub:rd`](/docs/hoon/reference/stdlib/3b/#subrd)
799+[`++sub:rh`](/docs/hoon/reference/stdlib/3b/#subrh)
800+[`++sub:rs`](/docs/hoon/reference/stdlib/3b/#subrs)
801+[`++sub:rq`](/docs/hoon/reference/stdlib/3b/#subrq)
802+[`++succ`](/docs/hoon/reference/stdlib/2n/#succ)
803+[`++sum:fe`](/docs/hoon/reference/stdlib/2c/#sumfe)
804+[`++sum:fo`](/docs/hoon/reference/stdlib/3a/#sumfo)
805+[`++sum:si`](/docs/hoon/reference/stdlib/3a/#sumsi)
806+[`++sun:ff`](/docs/hoon/reference/stdlib/3b/#sunff)
807+[`++sun:fl`](/docs/hoon/reference/stdlib/3b/#sunfl)
808+[`++sun:rd`](/docs/hoon/reference/stdlib/3b/#sunrd)
809+[`++sun:rh`](/docs/hoon/reference/stdlib/3b/#sunrh)
810+[`++sun:rs`](/docs/hoon/reference/stdlib/3b/#sunrs)
811+[`++sun:rq`](/docs/hoon/reference/stdlib/3b/#sunrq)
812+[`++sun:si`](/docs/hoon/reference/stdlib/3a/#sunsi)
813+[`++swag`](/docs/hoon/reference/stdlib/2b/#swag)
814+[`++swat`](/docs/hoon/reference/stdlib/5c/#swat)
815+[`++swp`](/docs/hoon/reference/stdlib/2c/#swp)
816+[`++swr:fl`](/docs/hoon/reference/stdlib/3b/#swrfl)
817+[`++sy`](/docs/hoon/reference/stdlib/2m/#sy)
818+[`++sym`](/docs/hoon/reference/stdlib/4i/#sym)
819+[`++syn:fl`](/docs/hoon/reference/stdlib/3b/#synfl)
820+[`++syn:si`](/docs/hoon/reference/stdlib/3a/#synsi)
821821
822822### t
823823
824−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#taft' title="UTF8 to UTF32 cord"><code>++taft</code></a>
825−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#tail' title="Get tail of cell"><code>++tail</code></a>
826−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#tapto' title="Queue to list"><code>++tap:to</code></a>
827−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tar' title="Parse * (tar)"><code>++tar</code></a>
828−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tang' title="Bottom-first error"><code>+$tang</code></a>
829−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tank' title="Formatted print tree"><code>+$tank</code></a>
830−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#tapby' title="Listify pairs"><code>++tap:by</code></a>
831−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#tapin' title="Flatten set into list"><code>++tap:in</code></a>
832−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tape' title="List of characters"><code>+$tape</code></a>
833−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tarp' title="Parsed time"><code>+$tarp</code></a>
834−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#tashso' title="Parse signed dime"><code>++tash:so</code></a>
835−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tic' title="Parse ` (tic)"><code>++tic</code></a>
836−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tedab' title="Parse 1-999 decimal"><code>++ted:ab</code></a>
837−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#teff' title="UTF8 length"><code>++teff</code></a>
838−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#tailob' title="Reverse +feis"><code>++tail:ob</code></a>
839−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tent' title="Model builder"><code>+$tent</code></a>
840−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tepab' title="Parse non-doz leading phonetic byte"><code>++tep:ab</code></a>
841−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#term' title="Hoon constant"><code>+$term</code></a>
842−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#test' title="Test for equality"><code>++test</code></a>
843−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#text' title="Tape pretty-print"><code>++text</code></a>
844−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#thunk' title="Fragment constructor"><code>+$thunk</code></a>
845−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tidab' title="Parse 3 decimal digits"><code>++tid:ab</code></a>
846−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tiki' title="Test case"><code>+$tiki</code></a>
847−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tilab' title="Parse 3 lowercase letters"><code>++til:ab</code></a>
848−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#time' title="Galactic time"><code>++time</code></a>
849−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tine' title="Partial noun"><code>+$tine</code></a>
850−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tipab' title="Leading phonetic byte"><code>++tip:ab</code></a>
851−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tiqab' title="Trailing phonetic syllable"><code>++tiq:ab</code></a>
852−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tis' title="Parse = (tis)"><code>++tis</code></a>
853−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#to' title="Queue operations"><code>++to</code></a>
854−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#todpo' title="Fetch suffix"><code>++tod:po</code></a>
855−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toiff' title="Round IEEE float to nearest signed integer"><code>++toi:ff</code></a>
856−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toifl' title="Round float to nearest signed integer"><code>++toi:fl</code></a>
857−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toird' title="Round doubleprecision float to nearest signed integer"><code>++toi:rd</code></a>
858−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toirh' title="Round halfprecision float to nearest signed integer"><code>++toi:rh</code></a>
859−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toirs' title="Round singleprecision float to nearest signed integer"><code>++toi:rs</code></a>
860−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toirq' title="Round quadprecision float to nearest signed integer"><code>++toi:rq</code></a>
861−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#tojfl' title="Round unsigned and signed integer to float"><code>++toj:fl</code></a>
862−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#tokfa' title="Compute base58check checksum"><code>++tok:fa</code></a>
863−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tome' title="Core chapter"><code>+$tome</code></a>
864−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#tone' title="Nock result (error report)"><code>+$tone</code></a>
865−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tony' title="$tone done right"><code>+$tony</code></a>
866−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tool' title="Type decoration"><code>+$tool</code></a>
867−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#toon' title="Nock result (stack trace)"><code>+$toon</code></a>
868−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tope' title="Topographic type"><code>+$tope</code></a>
869−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#topto' title="Produce head of queue"><code>++top:to</code></a>
870−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#tospo' title="Fetch prefix"><code>++tos:po</code></a>
871−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#tosrh' title="Convert halfprecision float to singleprecision float"><code>++tos:rh</code></a>
872−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tour' title="UTF-32 clusters"><code>+$tour</code></a>
873−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#type' title="Hoon type type"><code>+$type</code></a>
874−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#trap' title="Core with one arm $"><code>++trap</code></a>
875−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#tree' title="Mold generator (tree)"><code>++tree</code></a>
876−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#trel' title="Mold generator (tuple of three types)"><code>++trel</code></a>
877−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#trim' title="Tape split"><code>++trim</code></a>
878−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#trip' title="Cord to tape"><code>++trip</code></a>
879−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tuba' title="UTF8 to UTF32 tape"><code>++tuba</code></a>
880−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tufa' title="UTF32 to UTF8 tape"><code>++tufa</code></a>
881−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tuft' title="UTF32 to UTF8 text"><code>++tuft</code></a>
882−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tunahoot' title="Maybe interpolation"><code>+$tuna:hoot</code></a>
883−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tune' title="Complex"><code>+$tune</code></a>
884−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#turn' title="Gate to list"><code>++turn</code></a>
885−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#twidso' title="Parse coins without ~ prefix"><code>++twid:so</code></a>
886−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tyke' title="List of 'maybe' hoons"><code>+$tyke</code></a>
887−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#typo' title="Old type"><code>+$typo</code></a>
888−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tyre' title="List, term hoon"><code>+$tyre</code></a>
824+[`++taft`](/docs/hoon/reference/stdlib/4b/#taft)
825+[`++tail`](/docs/hoon/reference/stdlib/2n/#tail)
826+[`++tap:to`](/docs/hoon/reference/stdlib/2k/#tapto)
827+[`++tar`](/docs/hoon/reference/stdlib/4h/#tar)
828+[`+$tang`](/docs/hoon/reference/stdlib/2q/#tang)
829+[`+$tank`](/docs/hoon/reference/stdlib/2q/#tank)
830+[`++tap:by`](/docs/hoon/reference/stdlib/2i/#tapby)
831+[`++tap:in`](/docs/hoon/reference/stdlib/2h/#tapin)
832+[`+$tape`](/docs/hoon/reference/stdlib/2q/#tape)
833+[`+$tarp`](/docs/hoon/reference/stdlib/2q/#tarp)
834+[`++tash:so`](/docs/hoon/reference/stdlib/4l/#tashso)
835+[`++tic`](/docs/hoon/reference/stdlib/4h/#tic)
836+[`++ted:ab`](/docs/hoon/reference/stdlib/4j/#tedab)
837+[`++teff`](/docs/hoon/reference/stdlib/4b/#teff)
838+[`++tail:ob`](/docs/hoon/reference/stdlib/3f/#tailob)
839+[`+$tent`](/docs/hoon/reference/stdlib/4o/#tent)
840+[`++tep:ab`](/docs/hoon/reference/stdlib/4j/#tepab)
841+[`+$term`](/docs/hoon/reference/stdlib/2q/#term)
842+[`++test`](/docs/hoon/reference/stdlib/2n/#test)
843+[`++text`](/docs/hoon/reference/stdlib/5c/#text)
844+[`+$thunk`](/docs/hoon/reference/stdlib/4o/#thunk)
845+[`++tid:ab`](/docs/hoon/reference/stdlib/4j/#tidab)
846+[`+$tiki`](/docs/hoon/reference/stdlib/4o/#tiki)
847+[`++til:ab`](/docs/hoon/reference/stdlib/4j/#tilab)
848+[`++time`](/docs/hoon/reference/stdlib/5e/#time)
849+[`+$tine`](/docs/hoon/reference/stdlib/4o/#tine)
850+[`++tip:ab`](/docs/hoon/reference/stdlib/4j/#tipab)
851+[`++tiq:ab`](/docs/hoon/reference/stdlib/4j/#tiqab)
852+[`++tis`](/docs/hoon/reference/stdlib/4h/#tis)
853+[`++to`](/docs/hoon/reference/stdlib/2k/#to)
854+[`++tod:po`](/docs/hoon/reference/stdlib/4a/#todpo)
855+[`++toi:ff`](/docs/hoon/reference/stdlib/3b/#toiff)
856+[`++toi:fl`](/docs/hoon/reference/stdlib/3b/#toifl)
857+[`++toi:rd`](/docs/hoon/reference/stdlib/3b/#toird)
858+[`++toi:rh`](/docs/hoon/reference/stdlib/3b/#toirh)
859+[`++toi:rs`](/docs/hoon/reference/stdlib/3b/#toirs)
860+[`++toi:rq`](/docs/hoon/reference/stdlib/3b/#toirq)
861+[`++toj:fl`](/docs/hoon/reference/stdlib/3b/#tojfl)
862+[`++tok:fa`](/docs/hoon/reference/stdlib/4a/#tokfa)
863+[`+$tome`](/docs/hoon/reference/stdlib/4o/#tome)
864+[`+$tone`](/docs/hoon/reference/stdlib/3g/#tone)
865+[`+$tony`](/docs/hoon/reference/stdlib/4o/#tony)
866+[`+$tool`](/docs/hoon/reference/stdlib/4o/#tool)
867+[`+$toon`](/docs/hoon/reference/stdlib/3g/#toon)
868+[`+$tope`](/docs/hoon/reference/stdlib/4o/#tope)
869+[`++top:to`](/docs/hoon/reference/stdlib/2k/#topto)
870+[`++tos:po`](/docs/hoon/reference/stdlib/4a/#tospo)
871+[`++tos:rh`](/docs/hoon/reference/stdlib/3b/#tosrh)
872+[`+$tour`](/docs/hoon/reference/stdlib/2q/#tour)
873+[`+$type`](/docs/hoon/reference/stdlib/4o/#type)
874+[`++trap`](/docs/hoon/reference/stdlib/1c/#trap)
875+[`++tree`](/docs/hoon/reference/stdlib/1c/#tree)
876+[`++trel`](/docs/hoon/reference/stdlib/1c/#trel)
877+[`++trim`](/docs/hoon/reference/stdlib/4b/#trim)
878+[`++trip`](/docs/hoon/reference/stdlib/4b/#trip)
879+[`++tuba`](/docs/hoon/reference/stdlib/4b/#tuba)
880+[`++tufa`](/docs/hoon/reference/stdlib/4b/#tufa)
881+[`++tuft`](/docs/hoon/reference/stdlib/4b/#tuft)
882+[`+$tuna:hoot`](/docs/hoon/reference/stdlib/4o/#tunahoot)
883+[`+$tune`](/docs/hoon/reference/stdlib/4o/#tune)
884+[`++turn`](/docs/hoon/reference/stdlib/2b/#turn)
885+[`++twid:so`](/docs/hoon/reference/stdlib/4l/#twidso)
886+[`+$tyke`](/docs/hoon/reference/stdlib/4o/#tyke)
887+[`+$typo`](/docs/hoon/reference/stdlib/4o/#typo)
888+[`+$tyre`](/docs/hoon/reference/stdlib/4o/#tyre)
889889
890890### u
891891
892−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#un' title="Reversible scrambling"><code>++un</code></a>
893−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#uniby' title="Union, merge (map)"><code>++uni:by</code></a>
894−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#unifl' title="Change representation to odd"><code>++uni:fl</code></a>
895−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#uniin' title="Union (sets)"><code>++uni:in</code></a>
896−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#unit' title="Mold generator (maybe)"><code>++unit</code></a>
897−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#unoby' title="General union (map)"><code>++uno:by</code></a>
898−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#urnby' title="Turn (with key) (map)"><code>++urn:by</code></a>
899−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ursab' title="Parse knot characters"><code>++urs:ab</code></a>
900−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#urtab' title="Parse knot without underscores"><code>++urt:ab</code></a>
901−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#us' title="Pretty-printer backend"><code>++us</code></a>
902−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#ut' title="Hoon compiler backend"><code>++ut</code></a>
892+[`++un`](/docs/hoon/reference/stdlib/3f/#un)
893+[`++uni:by`](/docs/hoon/reference/stdlib/2i/#uniby)
894+[`++uni:fl`](/docs/hoon/reference/stdlib/3b/#unifl)
895+[`++uni:in`](/docs/hoon/reference/stdlib/2h/#uniin)
896+[`++unit`](/docs/hoon/reference/stdlib/1c/#unit)
897+[`++uno:by`](/docs/hoon/reference/stdlib/2i/#unoby)
898+[`++urn:by`](/docs/hoon/reference/stdlib/2i/#urnby)
899+[`++urs:ab`](/docs/hoon/reference/stdlib/4j/#ursab)
900+[`++urt:ab`](/docs/hoon/reference/stdlib/4j/#urtab)
901+[`++us`](/docs/hoon/reference/stdlib/5c/#us)
902+[`++ut`](/docs/hoon/reference/stdlib/5c/#ut)
903903
904904### v
905905
906−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#vne' title="Render base 32"><code>++v:ne</code></a>
907−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vair' title="Core variance"><code>+$vair</code></a>
908−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#vang' title="Set ++vast parameters"><code>++vang</code></a>
909−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vase' title="Type-value pair"><code>+$vase</code></a>
910−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#vast' title="Main parsing core"><code>++vast</code></a>
911−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#v-coco' title="Render base-32 with minimum length"><code>++v-co:co</code></a>
912−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vein' title="Search trace"><code>+$vein</code></a>
913−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#ven' title="Axis syntax parser"><code>++ven</code></a>
914−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#vest' title="Parse hoon"><code>++vest</code></a>
915−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vial' title="co/contra/in/bi"><code>+$vial</code></a>
916−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#vice' title="Parse wide-form hoon"><code>++vice</code></a>
917−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vise' title="Old vase"><code>+$vise</code></a>
918−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#vit' title="Parse base 64 digit"><code>++vit</code></a>
919−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#vizag' title="Parse base 32 digit with dot separators"><code>++viz:ag</code></a>
920−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#voyab' title="Parse bas, soq, or bix"><code>++voy:ab</code></a>
921−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#vul' title="Comments to null"><code>++vul</code></a>
922−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#vumag' title="Parse base 32 string"><code>++vum:ag</code></a>
906+[`++v:ne`](/docs/hoon/reference/stdlib/4j/#vne)
907+[`+$vair`](/docs/hoon/reference/stdlib/4o/#vair)
908+[`++vang`](/docs/hoon/reference/stdlib/5d/#vang)
909+[`+$vase`](/docs/hoon/reference/stdlib/4o/#vase)
910+[`++vast`](/docs/hoon/reference/stdlib/5d/#vast)
911+[`++v-co:co`](/docs/hoon/reference/stdlib/4k/#v-coco)
912+[`+$vein`](/docs/hoon/reference/stdlib/4o/#vein)
913+[`++ven`](/docs/hoon/reference/stdlib/4i/#ven)
914+[`++vest`](/docs/hoon/reference/stdlib/5d/#vest)
915+[`+$vial`](/docs/hoon/reference/stdlib/4o/#vial)
916+[`++vice`](/docs/hoon/reference/stdlib/5d/#vice)
917+[`+$vise`](/docs/hoon/reference/stdlib/4o/#vise)
918+[`++vit`](/docs/hoon/reference/stdlib/4i/#vit)
919+[`++viz:ag`](/docs/hoon/reference/stdlib/4j/#vizag)
920+[`++voy:ab`](/docs/hoon/reference/stdlib/4j/#voyab)
921+[`++vul`](/docs/hoon/reference/stdlib/4i/#vul)
922+[`++vum:ag`](/docs/hoon/reference/stdlib/4j/#vumag)
923923
924924### w
925925
926−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#wne' title="Render base 64 digit"><code>++w:ne</code></a>
927−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wack' title="Knot escape"><code>++wack</code></a>
928−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#wain' title="List of cords"><code>+$wain</code></a>
929−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#wall' title="List of list of characters"><code>+$wall</code></a>
930−<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#wash' title="Render tank at width"><code>++wash</code></a>
931−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#w-coco' title="Render base-64 with minimum length"><code>++w-co:co</code></a>
932−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#weld' title="Concatenate two lists"><code>++weld</code></a>
933−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#weldnl' title="Concatenate nullterminated nouns"><code>++weld:nl</code></a>
934−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#welp' title="Perfect concatenate (lists)"><code>++welp</code></a>
935−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#what' title="Help slogan/section"><code>+$what</code></a>
936−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#whenso' title="Parse date"><code>++when:so</code></a>
937−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#whit' title="Documentation"><code>+$whit</code></a>
938−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wick' title="Knot unescape"><code>++wick</code></a>
939−<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#winre' title="Render at indent"><code>++win:re</code></a>
940−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#wing' title="Search path"><code>+$wing</code></a>
941−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#wizag' title="Parse base 64 number"><code>++wiz:ag</code></a>
942−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#woad' title="Unescape cord"><code>++woad</code></a>
943−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wood' title="Escape cord"><code>++wood</code></a>
944−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#woof' title="Simple embed"><code>+$woof</code></a>
945−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#wonk' title="Product from edge"><code>++wonk</code></a>
946−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#wredun' title="Restore structure"><code>++wred:un</code></a>
947−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#wrenun' title="Conceal structure"><code>++wren:un</code></a>
948−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#wut' title="Parse ? (wut)"><code>++wut</code></a>
949−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#wytby' title="Produce depth of tree map"><code>++wyt:by</code></a>
950−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#wytin' title="Produce number of elements in set"><code>++wyt:in</code></a>
926+[`++w:ne`](/docs/hoon/reference/stdlib/4j/#wne)
927+[`++wack`](/docs/hoon/reference/stdlib/4b/#wack)
928+[`+$wain`](/docs/hoon/reference/stdlib/2q/#wain)
929+[`+$wall`](/docs/hoon/reference/stdlib/2q/#wall)
930+[`++wash`](/docs/hoon/reference/stdlib/4c/#wash)
931+[`++w-co:co`](/docs/hoon/reference/stdlib/4k/#w-coco)
932+[`++weld`](/docs/hoon/reference/stdlib/2b/#weld)
933+[`++weld:nl`](/docs/hoon/reference/stdlib/2m/#weldnl)
934+[`++welp`](/docs/hoon/reference/stdlib/2b/#welp)
935+[`+$what`](/docs/hoon/reference/stdlib/4o/#what)
936+[`++when:so`](/docs/hoon/reference/stdlib/4l/#whenso)
937+[`+$whit`](/docs/hoon/reference/stdlib/4o/#whit)
938+[`++wick`](/docs/hoon/reference/stdlib/4b/#wick)
939+[`++win:re`](/docs/hoon/reference/stdlib/4c/#winre)
940+[`+$wing`](/docs/hoon/reference/stdlib/4o/#wing)
941+[`++wiz:ag`](/docs/hoon/reference/stdlib/4j/#wizag)
942+[`++woad`](/docs/hoon/reference/stdlib/4b/#woad)
943+[`++wood`](/docs/hoon/reference/stdlib/4b/#wood)
944+[`+$woof`](/docs/hoon/reference/stdlib/4o/#woof)
945+[`++wonk`](/docs/hoon/reference/stdlib/3g/#wonk)
946+[`++wred:un`](/docs/hoon/reference/stdlib/3f/#wredun)
947+[`++wren:un`](/docs/hoon/reference/stdlib/3f/#wrenun)
948+[`++wut`](/docs/hoon/reference/stdlib/4h/#wut)
949+[`++wyt:by`](/docs/hoon/reference/stdlib/2i/#wytby)
950+[`++wyt:in`](/docs/hoon/reference/stdlib/2h/#wytin)
951951
952952### x
953953
954−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#x-coco' title="Render hex with minimum length"><code>++x-co:co</code></a>
955−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#xne' title="Render hexadecimal digit as atom of ASCII byte value"><code>++x:ne</code></a>
956−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#xeb' title="Binary logarithm"><code>++xeb</code></a>
957−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#xpdfl' title="Expand signed and unsigned integer cell"><code>++xpd:fl</code></a>
954+[`++x-co:co`](/docs/hoon/reference/stdlib/4k/#x-coco)
955+[`++x:ne`](/docs/hoon/reference/stdlib/4j/#xne)
956+[`++xeb`](/docs/hoon/reference/stdlib/2c/#xeb)
957+[`++xpd:fl`](/docs/hoon/reference/stdlib/3b/#xpdfl)
958958
959959### y
960960
961−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yall' title="Time since beginning of time"><code>++yall</code></a>
962−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yawn' title="Days since beginning of time"><code>++yawn</code></a>
963−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#y-coco' title="Render decimal with at least two digits"><code>++y-co:co</code></a>
964−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#year' title="Date to @d"><code>++year</code></a>
965−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yell' title="Tarp from atomic date"><code>++yell</code></a>
966−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yelp' title="Determine if leapweek"><code>++yelp</code></a>
967−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yeryo' title="Seconds in year"><code>++yer:yo</code></a>
968−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yo' title="Time constants core"><code>++yo</code></a>
969−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yore' title="Date from atomic date"><code>++yore</code></a>
970−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yule' title="Daily time to time atom"><code>++yule</code></a>
961+[`++yall`](/docs/hoon/reference/stdlib/3c/#yall)
962+[`++yawn`](/docs/hoon/reference/stdlib/3c/#yawn)
963+[`++y-co:co`](/docs/hoon/reference/stdlib/4k/#y-coco)
964+[`++year`](/docs/hoon/reference/stdlib/3c/#year)
965+[`++yell`](/docs/hoon/reference/stdlib/3c/#yell)
966+[`++yelp`](/docs/hoon/reference/stdlib/3c/#yelp)
967+[`++yer:yo`](/docs/hoon/reference/stdlib/3c/#yeryo)
968+[`++yo`](/docs/hoon/reference/stdlib/3c/#yo)
969+[`++yore`](/docs/hoon/reference/stdlib/3c/#yore)
970+[`++yule`](/docs/hoon/reference/stdlib/3c/#yule)
971971
972972### z
973973
974−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zaftun' title="Look up in 255 sub box"><code>++zaft:un</code></a>
975−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zagmu' title="Add bottom into top"><code>++zag:mu</code></a>
976−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#zap' title="Parse ! (zap)"><code>++zap</code></a>
977−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zartun' title="Reverse look up in 255 sub box"><code>++zart:un</code></a>
978−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#z-coco' title="Render '0x'-prefixed hex"><code>++z-co:co</code></a>
979−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#zerfl' title="Produce zero as float"><code>++zer:fl</code></a>
980−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zigmu' title="Subtract bottom from top"><code>++zig:mu</code></a>
981−<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>
982−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zugmu' title="Concatenate into atom"><code>++zug:mu</code></a>
983−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#zustso' title="Parse dimes from @i, @f, @r or @q"><code>++zust:so</code></a>
984−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zyftun' title="Lookup byte in 256 sub box"><code>++zyft:un</code></a>
985−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zyrtun' title="Reverse lookup byte in 256 sub box"><code>++zyrt:un</code></a>
974+[`++zaft:un`](/docs/hoon/reference/stdlib/3f/#zaftun)
975+[`++zag:mu`](/docs/hoon/reference/stdlib/4j/#zagmu)
976+[`++zap`](/docs/hoon/reference/stdlib/4h/#zap)
977+[`++zart:un`](/docs/hoon/reference/stdlib/3f/#zartun)
978+[`++z-co:co`](/docs/hoon/reference/stdlib/4k/#z-coco)
979+[`++zer:fl`](/docs/hoon/reference/stdlib/3b/#zerfl)
980+[`++zig:mu`](/docs/hoon/reference/stdlib/4j/#zigmu)
981+[`++zing`](/docs/hoon/reference/stdlib/2b/#zing)
982+[`++zug:mu`](/docs/hoon/reference/stdlib/4j/#zugmu)
983+[`++zust:so`](/docs/hoon/reference/stdlib/4l/#zustso)
984+[`++zyft:un`](/docs/hoon/reference/stdlib/3f/#zyftun)
985+[`++zyrt:un`](/docs/hoon/reference/stdlib/3f/#zyrtun)
986986
987987## By Section
988988
989989### 1a: basic arithmetic
990990
991−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#add' title="Add"><code>++add</code></a>
992−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#dec' title="Decrement"><code>++dec</code></a>
993−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#div' title="Divide"><code>++div</code></a>
994−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#dvr' title="Divide (with remainder)"><code>++dvr</code></a>
995−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#gte' title="Greater than / equal"><code>++gte</code></a>
996−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#gth' title="Greater than"><code>++gth</code></a>
997−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#lte' title="Less than / equal (atom)"><code>++lte</code></a>
998−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#lth' title="Less than (atom)"><code>++lth</code></a>
999−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#max' title="Maximum"><code>++max</code></a>
1000−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#min' title="Minimum (atom)"><code>++min</code></a>
1001−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#mod' title="Modulus (atom)"><code>++mod</code></a>
1002−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#mul' title="Multiply (atom)"><code>++mul</code></a>
1003−<a class="tooltip" href='/docs/hoon/reference/stdlib/1a/#sub' title="Subtract"><code>++sub</code></a>
991+[`++add`](/docs/hoon/reference/stdlib/1a/#add)
992+[`++dec`](/docs/hoon/reference/stdlib/1a/#dec)
993+[`++div`](/docs/hoon/reference/stdlib/1a/#div)
994+[`++dvr`](/docs/hoon/reference/stdlib/1a/#dvr)
995+[`++gte`](/docs/hoon/reference/stdlib/1a/#gte)
996+[`++gth`](/docs/hoon/reference/stdlib/1a/#gth)
997+[`++lte`](/docs/hoon/reference/stdlib/1a/#lte)
998+[`++lth`](/docs/hoon/reference/stdlib/1a/#lth)
999+[`++max`](/docs/hoon/reference/stdlib/1a/#max)
1000+[`++min`](/docs/hoon/reference/stdlib/1a/#min)
1001+[`++mod`](/docs/hoon/reference/stdlib/1a/#mod)
1002+[`++mul`](/docs/hoon/reference/stdlib/1a/#mul)
1003+[`++sub`](/docs/hoon/reference/stdlib/1a/#sub)
10041004
10051005### 1b: tree addressing
10061006
1007−<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#cap' title="Tree head"><code>++cap</code></a>
1008−<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#mas' title="Address within head/tail"><code>++mas</code></a>
1009−<a class="tooltip" href='/docs/hoon/reference/stdlib/1b/#peg' title="Address within address"><code>++peg</code></a>
1007+[`++cap`](/docs/hoon/reference/stdlib/1b/#cap)
1008+[`++mas`](/docs/hoon/reference/stdlib/1b/#mas)
1009+[`++peg`](/docs/hoon/reference/stdlib/1b/#peg)
10101010
10111011### 1c: molds and mold builders
10121012
1013−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#bite' title="Atom slice specificier"><code>$bite</code></a>
1014−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#bloq' title="Blocksize"><code>$bloq</code></a>
1015−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#each' title="Mold of fork between two types"><code>++each</code></a>
1016−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#gate' title="Function"><code>++gate</code></a>
1017−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#list' title="Mold constructor (list)"><code>++list</code></a>
1018−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#lone' title="Mold generator (face on mold)"><code>++lone</code></a>
1019−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#pair' title="Mold of pair of types"><code>++pair</code></a>
1020−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#pole' title="Mold generator of faceless list"><code>++pole</code></a>
1021−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#quip' title="Mold generator (tuple of list and type)"><code>++quip</code></a>
1022−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#step' title="Atom size or offset, in bloqs"><code>++step</code></a>
1023−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#trap' title="Core with one arm $"><code>++trap</code></a>
1024−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#tree' title="Mold generator (tree)"><code>++tree</code></a>
1025−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#trel' title="Mold generator (tuple of three types)"><code>++trel</code></a>
1026−<a class="tooltip" href='/docs/hoon/reference/stdlib/1c/#unit' title="Mold generator (maybe)"><code>++unit</code></a>
1013+[`$bite`](/docs/hoon/reference/stdlib/1c/#bite)
1014+[`$bloq`](/docs/hoon/reference/stdlib/1c/#bloq)
1015+[`++each`](/docs/hoon/reference/stdlib/1c/#each)
1016+[`++gate`](/docs/hoon/reference/stdlib/1c/#gate)
1017+[`++list`](/docs/hoon/reference/stdlib/1c/#list)
1018+[`++lone`](/docs/hoon/reference/stdlib/1c/#lone)
1019+[`++pair`](/docs/hoon/reference/stdlib/1c/#pair)
1020+[`++pole`](/docs/hoon/reference/stdlib/1c/#pole)
1021+[`++quip`](/docs/hoon/reference/stdlib/1c/#quip)
1022+[`++step`](/docs/hoon/reference/stdlib/1c/#step)
1023+[`++trap`](/docs/hoon/reference/stdlib/1c/#trap)
1024+[`++tree`](/docs/hoon/reference/stdlib/1c/#tree)
1025+[`++trel`](/docs/hoon/reference/stdlib/1c/#trel)
1026+[`++unit`](/docs/hoon/reference/stdlib/1c/#unit)
10271027
10281028### 2a: unit logic
10291029
1030−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#biff' title="Unit as argument"><code>++biff</code></a>
1031−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#bind' title="Nonunit function to unit, producing unit"><code>++bind</code></a>
1032−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#bond' title="Replace null"><code>++bond</code></a>
1033−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#both' title="Group unit values into pair"><code>++both</code></a>
1034−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#clap' title="Combine two units with function"><code>++clap</code></a>
1035−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#clef' title="Compose two units with function"><code>++clef</code></a>
1036−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#drop' title="Unit to list"><code>++drop</code></a>
1037−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#fall' title="Give unit a default value"><code>++fall</code></a>
1038−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#flit' title="Make filter"><code>++flit</code></a>
1039−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#hunt' title="Select between two units by a rule"><code>++hunt</code></a>
1040−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#lift' title="Curried bind"><code>++lift</code></a>
1041−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#mate' title="Choose"><code>++mate</code></a>
1042−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#need' title="Unwrap unit"><code>++need</code></a>
1043−<a class="tooltip" href='/docs/hoon/reference/stdlib/2a/#some' title="Wrap value in unit"><code>++some</code></a>
1030+[`++biff`](/docs/hoon/reference/stdlib/2a/#biff)
1031+[`++bind`](/docs/hoon/reference/stdlib/2a/#bind)
1032+[`++bond`](/docs/hoon/reference/stdlib/2a/#bond)
1033+[`++both`](/docs/hoon/reference/stdlib/2a/#both)
1034+[`++clap`](/docs/hoon/reference/stdlib/2a/#clap)
1035+[`++clef`](/docs/hoon/reference/stdlib/2a/#clef)
1036+[`++drop`](/docs/hoon/reference/stdlib/2a/#drop)
1037+[`++fall`](/docs/hoon/reference/stdlib/2a/#fall)
1038+[`++flit`](/docs/hoon/reference/stdlib/2a/#flit)
1039+[`++hunt`](/docs/hoon/reference/stdlib/2a/#hunt)
1040+[`++lift`](/docs/hoon/reference/stdlib/2a/#lift)
1041+[`++mate`](/docs/hoon/reference/stdlib/2a/#mate)
1042+[`++need`](/docs/hoon/reference/stdlib/2a/#need)
1043+[`++some`](/docs/hoon/reference/stdlib/2a/#some)
10441044
10451045### 2b: list logic
10461046
1047−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#bake' title="Convert wet gate to dry gate"><code>++bake</code></a>
1048−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#fand' title="All indices in list"><code>++fand</code></a>
1049−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#find' title="First index in list"><code>++find</code></a>
1050−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#flop' title="Reverse list"><code>++flop</code></a>
1051−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#gulf' title="List from range"><code>++gulf</code></a>
1052−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#homo' title="Homogenize list"><code>++homo</code></a>
1053−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#join' title="Add separator between list elements"><code>++join</code></a>
1054−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#lent' title="List length"><code>++lent</code></a>
1055−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#levy' title="Logical AND on list"><code>++levy</code></a>
1056−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#lien' title="Logical OR on list"><code>++lien</code></a>
1057−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#limo' title="Construct list from nullterminated tuple"><code>++limo</code></a>
1058−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#murn' title="Maybe transform"><code>++murn</code></a>
1059−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#oust' title="Remove from list"><code>++oust</code></a>
1060−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#reap' title="Replicate (list)"><code>++reap</code></a>
1061−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#reel' title="Right fold (list)"><code>++reel</code></a>
1062−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#roll' title="Left fold (list)"><code>++roll</code></a>
1063−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#scag' title="Prefix (produce front of list)"><code>++scag</code></a>
1064−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skid' title="Separate list into two lists from slammed elments"><code>++skid</code></a>
1065−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skim' title="Produce list of elements from boolean gate"><code>++skim</code></a>
1066−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#skip' title="Produce list of elements failing boolean gate"><code>++skip</code></a>
1067−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#slag' title="Produce all elements from index in list"><code>++slag</code></a>
1068−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snag' title="Produce element at specific index (list)"><code>++snag</code></a>
1069−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snip' title="Drop tail off list"><code>++snip</code></a>
1070−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#snoc' title="Append noun to list"><code>++snoc</code></a>
1071−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#sort' title="Quicksort (list)"><code>++sort</code></a>
1072−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#spin' title="Gate to list (with state)"><code>++spin</code></a>
1073−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#spun' title="Gate to list (with state)"><code>++spun</code></a>
1074−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#swag' title="Infix (list)"><code>++swag</code></a>
1075−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#turn' title="Gate to list"><code>++turn</code></a>
1076−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#weld' title="Concatenate two lists"><code>++weld</code></a>
1077−<a class="tooltip" href='/docs/hoon/reference/stdlib/2b/#welp' title="Perfect concatenate (lists)"><code>++welp</code></a>
1078−<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>
1047+[`++bake`](/docs/hoon/reference/stdlib/2b/#bake)
1048+[`++fand`](/docs/hoon/reference/stdlib/2b/#fand)
1049+[`++find`](/docs/hoon/reference/stdlib/2b/#find)
1050+[`++flop`](/docs/hoon/reference/stdlib/2b/#flop)
1051+[`++gulf`](/docs/hoon/reference/stdlib/2b/#gulf)
1052+[`++homo`](/docs/hoon/reference/stdlib/2b/#homo)
1053+[`++join`](/docs/hoon/reference/stdlib/2b/#join)
1054+[`++lent`](/docs/hoon/reference/stdlib/2b/#lent)
1055+[`++levy`](/docs/hoon/reference/stdlib/2b/#levy)
1056+[`++lien`](/docs/hoon/reference/stdlib/2b/#lien)
1057+[`++limo`](/docs/hoon/reference/stdlib/2b/#limo)
1058+[`++murn`](/docs/hoon/reference/stdlib/2b/#murn)
1059+[`++oust`](/docs/hoon/reference/stdlib/2b/#oust)
1060+[`++reap`](/docs/hoon/reference/stdlib/2b/#reap)
1061+[`++reel`](/docs/hoon/reference/stdlib/2b/#reel)
1062+[`++roll`](/docs/hoon/reference/stdlib/2b/#roll)
1063+[`++scag`](/docs/hoon/reference/stdlib/2b/#scag)
1064+[`++skid`](/docs/hoon/reference/stdlib/2b/#skid)
1065+[`++skim`](/docs/hoon/reference/stdlib/2b/#skim)
1066+[`++skip`](/docs/hoon/reference/stdlib/2b/#skip)
1067+[`++slag`](/docs/hoon/reference/stdlib/2b/#slag)
1068+[`++snag`](/docs/hoon/reference/stdlib/2b/#snag)
1069+[`++snip`](/docs/hoon/reference/stdlib/2b/#snip)
1070+[`++snoc`](/docs/hoon/reference/stdlib/2b/#snoc)
1071+[`++sort`](/docs/hoon/reference/stdlib/2b/#sort)
1072+[`++spin`](/docs/hoon/reference/stdlib/2b/#spin)
1073+[`++spun`](/docs/hoon/reference/stdlib/2b/#spun)
1074+[`++swag`](/docs/hoon/reference/stdlib/2b/#swag)
1075+[`++turn`](/docs/hoon/reference/stdlib/2b/#turn)
1076+[`++weld`](/docs/hoon/reference/stdlib/2b/#weld)
1077+[`++welp`](/docs/hoon/reference/stdlib/2b/#welp)
1078+[`++zing`](/docs/hoon/reference/stdlib/2b/#zing)
10791079
10801080### 2c: bit arithmetic
10811081
1082−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#fe' title="Modulo bloq"><code>++fe</code></a>
1083−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#diffe' title="Difference between atoms (modular basis)"><code>++dif:fe</code></a>
1084−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#invfe' title="Inverse order of modular field"><code>++inv:fe</code></a>
1085−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#netfe' title="Flip endianness"><code>++net:fe</code></a>
1086−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#outfe' title="Maximum integer value"><code>++out:fe</code></a>
1087−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rolfe' title="Roll left"><code>++rol:fe</code></a>
1088−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rorfe' title="Roll right"><code>++ror:fe</code></a>
1089−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sitfe' title="Enforce modulo"><code>++sit:fe</code></a>
1090−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sumfe' title="Sum two numbers in modular field"><code>++sum:fe</code></a>
1091−
1092−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#bex' title="Binary exponent"><code>++bex</code></a>
1093−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#can' title="Assemble"><code>++can</code></a>
1094−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#cat' title="Concatenate"><code>++cat</code></a>
1095−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#cut' title="Slice"><code>++cut</code></a>
1096−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#end' title="Tail"><code>++end</code></a>
1097−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#fil' title="Fill bloqstream"><code>++fil</code></a>
1098−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#lsh' title="Leftshift"><code>++lsh</code></a>
1099−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#met' title="Measure"><code>++met</code></a>
1100−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rap' title="Assemble nonzero"><code>++rap</code></a>
1101−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rep' title="Assemble single"><code>++rep</code></a>
1102−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rip' title="Disassemble"><code>++rip</code></a>
1103−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rev' title="Reverse"><code>++rev</code></a>
1104−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#rsh' title="Rightshift"><code>++rsh</code></a>
1105−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#sew' title="Stitch one atom into another"><code>++sew</code></a>
1106−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#swp' title="Reverse block order"><code>++swp</code></a>
1107−<a class="tooltip" href='/docs/hoon/reference/stdlib/2c/#xeb' title="Binary logarithm"><code>++xeb</code></a>
1082+[`++fe`](/docs/hoon/reference/stdlib/2c/#fe)
1083+[`++dif:fe`](/docs/hoon/reference/stdlib/2c/#diffe)
1084+[`++inv:fe`](/docs/hoon/reference/stdlib/2c/#invfe)
1085+[`++net:fe`](/docs/hoon/reference/stdlib/2c/#netfe)
1086+[`++out:fe`](/docs/hoon/reference/stdlib/2c/#outfe)
1087+[`++rol:fe`](/docs/hoon/reference/stdlib/2c/#rolfe)
1088+[`++ror:fe`](/docs/hoon/reference/stdlib/2c/#rorfe)
1089+[`++sit:fe`](/docs/hoon/reference/stdlib/2c/#sitfe)
1090+[`++sum:fe`](/docs/hoon/reference/stdlib/2c/#sumfe)
1091+
1092+[`++bex`](/docs/hoon/reference/stdlib/2c/#bex)
1093+[`++can`](/docs/hoon/reference/stdlib/2c/#can)
1094+[`++cat`](/docs/hoon/reference/stdlib/2c/#cat)
1095+[`++cut`](/docs/hoon/reference/stdlib/2c/#cut)
1096+[`++end`](/docs/hoon/reference/stdlib/2c/#end)
1097+[`++fil`](/docs/hoon/reference/stdlib/2c/#fil)
1098+[`++lsh`](/docs/hoon/reference/stdlib/2c/#lsh)
1099+[`++met`](/docs/hoon/reference/stdlib/2c/#met)
1100+[`++rap`](/docs/hoon/reference/stdlib/2c/#rap)
1101+[`++rep`](/docs/hoon/reference/stdlib/2c/#rep)
1102+[`++rip`](/docs/hoon/reference/stdlib/2c/#rip)
1103+[`++rev`](/docs/hoon/reference/stdlib/2c/#rev)
1104+[`++rsh`](/docs/hoon/reference/stdlib/2c/#rsh)
1105+[`++sew`](/docs/hoon/reference/stdlib/2c/#sew)
1106+[`++swp`](/docs/hoon/reference/stdlib/2c/#swp)
1107+[`++xeb`](/docs/hoon/reference/stdlib/2c/#xeb)
11081108
11091109### 2d: bit logic
11101110
1111−<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#con' title="Binary OR"><code>++con</code></a>
1112−<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#dis' title="Binary AND (atoms)"><code>++dis</code></a>
1113−<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#mix' title="Binary XOR (atom)"><code>++mix</code></a>
1114−<a class="tooltip" href='/docs/hoon/reference/stdlib/2d/#not' title="Binary NOT (atom)"><code>++not</code></a>
1111+[`++con`](/docs/hoon/reference/stdlib/2d/#con)
1112+[`++dis`](/docs/hoon/reference/stdlib/2d/#dis)
1113+[`++mix`](/docs/hoon/reference/stdlib/2d/#mix)
1114+[`++not`](/docs/hoon/reference/stdlib/2d/#not)
11151115
11161116### 2e: insecure hashing
11171117
1118−<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#mug' title="FNV1a scrambler"><code>++mug</code></a>
1119−<a class="tooltip" href='/docs/hoon/reference/stdlib/2e/#muk' title="Standard MurmurHash3"><code>++muk</code></a>
1118+[`++mug`](/docs/hoon/reference/stdlib/2e/#mug)
1119+[`++muk`](/docs/hoon/reference/stdlib/2e/#muk)
11201120
11211121### 2f: noun ordering
11221122
1123−<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#aor' title="Alphabetical order"><code>++aor</code></a>
1124−<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#dor' title="Depth order"><code>++dor</code></a>
1125−<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#gor' title="Mug order"><code>++gor</code></a>
1126−<a class="tooltip" href='/docs/hoon/reference/stdlib/2f/#mor' title="(more) mug order"><code>++mor</code></a>
1123+[`++aor`](/docs/hoon/reference/stdlib/2f/#aor)
1124+[`++dor`](/docs/hoon/reference/stdlib/2f/#dor)
1125+[`++gor`](/docs/hoon/reference/stdlib/2f/#gor)
1126+[`++mor`](/docs/hoon/reference/stdlib/2f/#mor)
11271127
11281128### 2g: unsigned powers
11291129
1130−<a class="tooltip" href='/docs/hoon/reference/stdlib/2g/#pow' title="Computes a to the power of b"><code>++pow</code></a>
1131−<a class="tooltip" href='/docs/hoon/reference/stdlib/2g/#sqt' title="Compute square root with remainder"><code>++sqt</code></a>
1130+[`++pow`](/docs/hoon/reference/stdlib/2g/#pow)
1131+[`++sqt`](/docs/hoon/reference/stdlib/2g/#sqt)
11321132
11331133### 2h: set logic
11341134
11351135<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#in'><code>++in</code></a>
1136−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#allin' title="Logical AND (set and wet gate)"><code>++all:in</code></a>
1137−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#anyin' title="Logical OR (set and gate)"><code>++any:in</code></a>
1138−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#aptin' title="Check correctness (set)"><code>++apt:in</code></a>
1139−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#bifin' title="Bifurcate set"><code>++bif:in</code></a>
1140−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#delin' title="Delete (set)"><code>++del:in</code></a>
1136+[`++all:in`](/docs/hoon/reference/stdlib/2h/#allin)
1137+[`++any:in`](/docs/hoon/reference/stdlib/2h/#anyin)
1138+[`++apt:in`](/docs/hoon/reference/stdlib/2h/#aptin)
1139+[`++bif:in`](/docs/hoon/reference/stdlib/2h/#bifin)
1140+[`++del:in`](/docs/hoon/reference/stdlib/2h/#delin)
11411141<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#difin' title='Difference (set)'><code>++dif:in</code></a>
1142−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#digin' title="Address of a in set"><code>++dig:in</code></a>
1143−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#gasin' title="Concatenate (set)"><code>++gas:in</code></a>
1144−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#hasin' title="Key existence check (set)"><code>++has:in</code></a>
1145−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#intin' title="Intersection (set)"><code>++int:in</code></a>
1146−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#putin' title="Put b in a (set)"><code>++put:in</code></a>
1147−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#repin' title="Accumulate elements (set)"><code>++rep:in</code></a>
1148−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#runin' title="Apply gate to set"><code>++run:in</code></a>
1149−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#tapin' title="Flatten set into list"><code>++tap:in</code></a>
1150−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#uniin' title="Union (sets)"><code>++uni:in</code></a>
1151−<a class="tooltip" href='/docs/hoon/reference/stdlib/2h/#wytin' title="Produce number of elements in set"><code>++wyt:in</code></a>
1142+[`++dig:in`](/docs/hoon/reference/stdlib/2h/#digin)
1143+[`++gas:in`](/docs/hoon/reference/stdlib/2h/#gasin)
1144+[`++has:in`](/docs/hoon/reference/stdlib/2h/#hasin)
1145+[`++int:in`](/docs/hoon/reference/stdlib/2h/#intin)
1146+[`++put:in`](/docs/hoon/reference/stdlib/2h/#putin)
1147+[`++rep:in`](/docs/hoon/reference/stdlib/2h/#repin)
1148+[`++run:in`](/docs/hoon/reference/stdlib/2h/#runin)
1149+[`++tap:in`](/docs/hoon/reference/stdlib/2h/#tapin)
1150+[`++uni:in`](/docs/hoon/reference/stdlib/2h/#uniin)
1151+[`++wyt:in`](/docs/hoon/reference/stdlib/2h/#wytin)
11521152
11531153### 2i: map logic
11541154
1155−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#by' title="Map operations"><code>++by</code></a>
1156−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#allby' title="Logical AND (map and wet gate)"><code>++all:by</code></a>
1157−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#anyby' title="Logical OR (map and wet gate)"><code>++any:by</code></a>
1158−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#aptby' title="Check correctness (map)"><code>++apt:by</code></a>
1159−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#bifby' title="Bifurcate map"><code>++bif:by</code></a>
1160−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#delby' title="Delete (map)"><code>++del:by</code></a>
1161−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#difby' title="Difference between maps"><code>++dif:by</code></a>
1162−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#digby' title="Address of key (map)"><code>++dig:by</code></a>
1163−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#gasby' title="Concatenate (map)"><code>++gas:by</code></a>
1164−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#getby' title="Grab unit value"><code>++get:by</code></a>
1165−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#gotby' title="Assert for value (map)"><code>++got:by</code></a>
1166−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#hasby' title="Key existence check (map)"><code>++has:by</code></a>
1167−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#intby' title="Intersection (map)"><code>++int:by</code></a>
1168−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#jabby' title="Transform value (map)"><code>++jab:by</code></a>
1169−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#keyby' title="Set of keys"><code>++key:by</code></a>
1170−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#marby' title="Add with validation (map)"><code>++mar:by</code></a>
1171−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#putby' title="Add keyvalue pair (map)"><code>++put:by</code></a>
1172−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#repby' title="Reduce to product (map)"><code>++rep:by</code></a>
1173−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#ribby' title="Transform + product (map)"><code>++rib:by</code></a>
1174−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#runby' title="Transform values (map)"><code>++run:by</code></a>
1175−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#rutby' title="Transform nodes (map)"><code>++rut:by</code></a>
1176−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#tapby' title="Listify pairs"><code>++tap:by</code></a>
1177−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#uniby' title="Union, merge (map)"><code>++uni:by</code></a>
1178−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#unoby' title="General union (map)"><code>++uno:by</code></a>
1179−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#urnby' title="Turn (with key) (map)"><code>++urn:by</code></a>
1180−<a class="tooltip" href='/docs/hoon/reference/stdlib/2i/#wytby' title="Produce depth of tree map"><code>++wyt:by</code></a>
1155+[`++by`](/docs/hoon/reference/stdlib/2i/#by)
1156+[`++all:by`](/docs/hoon/reference/stdlib/2i/#allby)
1157+[`++any:by`](/docs/hoon/reference/stdlib/2i/#anyby)
1158+[`++apt:by`](/docs/hoon/reference/stdlib/2i/#aptby)
1159+[`++bif:by`](/docs/hoon/reference/stdlib/2i/#bifby)
1160+[`++del:by`](/docs/hoon/reference/stdlib/2i/#delby)
1161+[`++dif:by`](/docs/hoon/reference/stdlib/2i/#difby)
1162+[`++dig:by`](/docs/hoon/reference/stdlib/2i/#digby)
1163+[`++gas:by`](/docs/hoon/reference/stdlib/2i/#gasby)
1164+[`++get:by`](/docs/hoon/reference/stdlib/2i/#getby)
1165+[`++got:by`](/docs/hoon/reference/stdlib/2i/#gotby)
1166+[`++has:by`](/docs/hoon/reference/stdlib/2i/#hasby)
1167+[`++int:by`](/docs/hoon/reference/stdlib/2i/#intby)
1168+[`++jab:by`](/docs/hoon/reference/stdlib/2i/#jabby)
1169+[`++key:by`](/docs/hoon/reference/stdlib/2i/#keyby)
1170+[`++mar:by`](/docs/hoon/reference/stdlib/2i/#marby)
1171+[`++put:by`](/docs/hoon/reference/stdlib/2i/#putby)
1172+[`++rep:by`](/docs/hoon/reference/stdlib/2i/#repby)
1173+[`++rib:by`](/docs/hoon/reference/stdlib/2i/#ribby)
1174+[`++run:by`](/docs/hoon/reference/stdlib/2i/#runby)
1175+[`++rut:by`](/docs/hoon/reference/stdlib/2i/#rutby)
1176+[`++tap:by`](/docs/hoon/reference/stdlib/2i/#tapby)
1177+[`++uni:by`](/docs/hoon/reference/stdlib/2i/#uniby)
1178+[`++uno:by`](/docs/hoon/reference/stdlib/2i/#unoby)
1179+[`++urn:by`](/docs/hoon/reference/stdlib/2i/#urnby)
1180+[`++wyt:by`](/docs/hoon/reference/stdlib/2i/#wytby)
11811181
11821182### 2j: jar and jug logic
11831183
1184−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#ja' title="Jar engine"><code>++ja</code></a>
1185−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#addja' title="Prepend to list"><code>++add:ja</code></a>
1186−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#getja' title="Grab value by key"><code>++get:ja</code></a>
1184+[`++ja`](/docs/hoon/reference/stdlib/2j/#ja)
1185+[`++add:ja`](/docs/hoon/reference/stdlib/2j/#addja)
1186+[`++get:ja`](/docs/hoon/reference/stdlib/2j/#getja)
11871187
1188−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#ju' title="Jug operations"><code>++ju</code></a>
1189−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#delju' title="Delete (jug)"><code>++del:ju</code></a>
1190−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#gasju' title="Concatenate (jug)"><code>++gas:ju</code></a>
1191−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#getju' title="Retrieve set"><code>++get:ju</code></a>
1192−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#hasju' title="Check contents (jug)"><code>++has:ju</code></a>
1193−<a class="tooltip" href='/docs/hoon/reference/stdlib/2j/#putju' title="Add keyset pair (jar)"><code>++put:ju</code></a>
1188+[`++ju`](/docs/hoon/reference/stdlib/2j/#ju)
1189+[`++del:ju`](/docs/hoon/reference/stdlib/2j/#delju)
1190+[`++gas:ju`](/docs/hoon/reference/stdlib/2j/#gasju)
1191+[`++get:ju`](/docs/hoon/reference/stdlib/2j/#getju)
1192+[`++has:ju`](/docs/hoon/reference/stdlib/2j/#hasju)
1193+[`++put:ju`](/docs/hoon/reference/stdlib/2j/#putju)
11941194
11951195### 2k: queue logic
11961196
1197−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#to' title="Queue operations"><code>++to</code></a>
1198−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#aptto' title="Check correctness of queue"><code>++apt:to</code></a>
1199−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#balto' title="Balance queue"><code>++bal:to</code></a>
1200−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#depto' title="Maximum depth (queue)"><code>++dep:to</code></a>
1201−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#gasto' title="Push list into queue"><code>++gas:to</code></a>
1202−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#getto' title="Headtail pair"><code>++get:to</code></a>
1203−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#napto' title="Remove head of queue"><code>++nap:to</code></a>
1204−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#nipto' title="Remove root of queue"><code>++nip:to</code></a>
1205−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#putto' title="Insert into queue"><code>++put:to</code></a>
1206−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#tapto' title="Queue to list"><code>++tap:to</code></a>
1207−<a class="tooltip" href='/docs/hoon/reference/stdlib/2k/#topto' title="Produce head of queue"><code>++top:to</code></a>
1197+[`++to`](/docs/hoon/reference/stdlib/2k/#to)
1198+[`++apt:to`](/docs/hoon/reference/stdlib/2k/#aptto)
1199+[`++bal:to`](/docs/hoon/reference/stdlib/2k/#balto)
1200+[`++dep:to`](/docs/hoon/reference/stdlib/2k/#depto)
1201+[`++gas:to`](/docs/hoon/reference/stdlib/2k/#gasto)
1202+[`++get:to`](/docs/hoon/reference/stdlib/2k/#getto)
1203+[`++nap:to`](/docs/hoon/reference/stdlib/2k/#napto)
1204+[`++nip:to`](/docs/hoon/reference/stdlib/2k/#nipto)
1205+[`++put:to`](/docs/hoon/reference/stdlib/2k/#putto)
1206+[`++tap:to`](/docs/hoon/reference/stdlib/2k/#tapto)
1207+[`++top:to`](/docs/hoon/reference/stdlib/2k/#topto)
12081208
12091209### 2l: container from container
12101210
1211−<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#malt' title="Map from list"><code>++malt</code></a>
1212−<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#molt' title="Map from pair list"><code>++molt</code></a>
1213−<a class="tooltip" href='/docs/hoon/reference/stdlib/2l/#silt' title="Produce set from list"><code>++silt</code></a>
1211+[`++malt`](/docs/hoon/reference/stdlib/2l/#malt)
1212+[`++molt`](/docs/hoon/reference/stdlib/2l/#molt)
1213+[`++silt`](/docs/hoon/reference/stdlib/2l/#silt)
12141214
12151215### 2m: container from noun
12161216
1217−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#nl' title="Noun to container operations"><code>++nl</code></a>
1218−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#lenl' title="Construct list from nullterminated noun"><code>++le:nl</code></a>
1219−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#mynl' title="Construct map from nullterminated noun"><code>++my:nl</code></a>
1220−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#sinl' title="Construct set from nullterminated noun"><code>++si:nl</code></a>
1221−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#snagnl' title="Produce element from list at specific nullterminated noun"><code>++snag:nl</code></a>
1222−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#weldnl' title="Concatenate nullterminated nouns"><code>++weld:nl</code></a>
1217+[`++nl`](/docs/hoon/reference/stdlib/2m/#nl)
1218+[`++le:nl`](/docs/hoon/reference/stdlib/2m/#lenl)
1219+[`++my:nl`](/docs/hoon/reference/stdlib/2m/#mynl)
1220+[`++si:nl`](/docs/hoon/reference/stdlib/2m/#sinl)
1221+[`++snag:nl`](/docs/hoon/reference/stdlib/2m/#snagnl)
1222+[`++weld:nl`](/docs/hoon/reference/stdlib/2m/#weldnl)
12231223
1224−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#ly' title="List from raw noun"><code>++ly</code></a>
1225−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#my' title="Map from raw noun"><code>++my</code></a>
1226−<a class="tooltip" href='/docs/hoon/reference/stdlib/2m/#sy' title="Produce set from nullterminated noun"><code>++sy</code></a>
1224+[`++ly`](/docs/hoon/reference/stdlib/2m/#ly)
1225+[`++my`](/docs/hoon/reference/stdlib/2m/#my)
1226+[`++sy`](/docs/hoon/reference/stdlib/2m/#sy)
12271227
12281228### 2n: functional hacks
12291229
1230−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#aftr' title="Pair after"><code>++aftr</code></a>
1231−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#cork' title="Compose forward"><code>++cork</code></a>
1232−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#corl' title="Compose backward"><code>++corl</code></a>
1233−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#curr' title="Rightcurry a gate"><code>++curr</code></a>
1234−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#cury' title="Curry left a gate"><code>++cury</code></a>
1235−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#fore' title="Pair before"><code>++fore</code></a>
1236−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#head' title="Get head of cell"><code>++head</code></a>
1237−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#same' title="Identity (produces same value)"><code>++same</code></a>
1238−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#succ' title="Successor"><code>++succ</code></a>
1239−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#tail' title="Get tail of cell"><code>++tail</code></a>
1240−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#test' title="Test for equality"><code>++test</code></a>
1241−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#lead' title="Put head"><code>++lead</code></a>
1242−<a class="tooltip" href='/docs/hoon/reference/stdlib/2n/#late' title="Put tail"><code>++late</code></a>
1230+[`++aftr`](/docs/hoon/reference/stdlib/2n/#aftr)
1231+[`++cork`](/docs/hoon/reference/stdlib/2n/#cork)
1232+[`++corl`](/docs/hoon/reference/stdlib/2n/#corl)
1233+[`++curr`](/docs/hoon/reference/stdlib/2n/#curr)
1234+[`++cury`](/docs/hoon/reference/stdlib/2n/#cury)
1235+[`++fore`](/docs/hoon/reference/stdlib/2n/#fore)
1236+[`++head`](/docs/hoon/reference/stdlib/2n/#head)
1237+[`++same`](/docs/hoon/reference/stdlib/2n/#same)
1238+[`++succ`](/docs/hoon/reference/stdlib/2n/#succ)
1239+[`++tail`](/docs/hoon/reference/stdlib/2n/#tail)
1240+[`++test`](/docs/hoon/reference/stdlib/2n/#test)
1241+[`++lead`](/docs/hoon/reference/stdlib/2n/#lead)
1242+[`++late`](/docs/hoon/reference/stdlib/2n/#late)
12431243
12441244### 2o: normalizing containers
12451245
1246−<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#jar' title="Mold generator (jar)"><code>++jar</code></a>
1247−<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#jug' title="Mold generator (jug)"><code>++jug</code></a>
1248−<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#map' title="Mold generator (map)"><code>++map</code></a>
1249−<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#qeu' title="Mold generator (queue)"><code>++qeu</code></a>
1250−<a class="tooltip" href='/docs/hoon/reference/stdlib/2o/#set' title="Mold generator (set)"><code>++set</code></a>
1246+[`++jar`](/docs/hoon/reference/stdlib/2o/#jar)
1247+[`++jug`](/docs/hoon/reference/stdlib/2o/#jug)
1248+[`++map`](/docs/hoon/reference/stdlib/2o/#map)
1249+[`++qeu`](/docs/hoon/reference/stdlib/2o/#qeu)
1250+[`++set`](/docs/hoon/reference/stdlib/2o/#set)
12511251
12521252### 2p: serialization
12531253
1254−<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#cue' title="Unpack atom to noun"><code>++cue</code></a>
1255−<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#jam' title="Pack noun to atom"><code>++jam</code></a>
1256−<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#mat' title="Lengthencode"><code>++mat</code></a>
1257−<a class="tooltip" href='/docs/hoon/reference/stdlib/2p/#rub' title="Lengthdecode"><code>++rub</code></a>
1254+[`++cue`](/docs/hoon/reference/stdlib/2p/#cue)
1255+[`++jam`](/docs/hoon/reference/stdlib/2p/#jam)
1256+[`++mat`](/docs/hoon/reference/stdlib/2p/#mat)
1257+[`++rub`](/docs/hoon/reference/stdlib/2p/#rub)
12581258
12591259### 2q: molds and mold builders
12601260
1261−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#axis' title="Tree address"><code>+$axis</code></a>
1262−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#bean' title="Boolean"><code>+$bean</code></a>
1263−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#char' title="Character"><code>+$char</code></a>
1264−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#cord' title="UTF8 text"><code>+$cord</code></a>
1265−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#byts' title="bytes, LSB first"><code>+$byts</code></a>
1266−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#date' title="Parsed date"><code>+$date</code></a>
1267−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#flag' title="Boolean (flag)"><code>+$flag</code></a>
1268−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#knot' title="Atom type of ASCII characters"><code>+$knot</code></a>
1269−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#noun' title="Any noun"><code>+$noun</code></a>
1270−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#path' title="Like unix path"><code>+$path</code></a>
1271−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#stud' title="Standard name"><code>+$stud</code></a>
1272−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tang' title="Bottom-first error"><code>+$tang</code></a>
1273−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tank' title="Formatted print tree"><code>+$tank</code></a>
1274−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tape' title="List of characters"><code>+$tape</code></a>
1275−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tour' title="UTF-32 clusters"><code>+$tour</code></a>
1276−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#tarp' title="Parsed time"><code>+$tarp</code></a>
1277−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#term' title="Hoon constant"><code>+$term</code></a>
1278−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#wain' title="List of cords"><code>+$wain</code></a>
1279−<a class="tooltip" href='/docs/hoon/reference/stdlib/2q/#wall' title="List of list of characters"><code>+$wall</code></a>
1261+[`+$axis`](/docs/hoon/reference/stdlib/2q/#axis)
1262+[`+$bean`](/docs/hoon/reference/stdlib/2q/#bean)
1263+[`+$char`](/docs/hoon/reference/stdlib/2q/#char)
1264+[`+$cord`](/docs/hoon/reference/stdlib/2q/#cord)
1265+[`+$byts`](/docs/hoon/reference/stdlib/2q/#byts)
1266+[`+$date`](/docs/hoon/reference/stdlib/2q/#date)
1267+[`+$flag`](/docs/hoon/reference/stdlib/2q/#flag)
1268+[`+$knot`](/docs/hoon/reference/stdlib/2q/#knot)
1269+[`+$noun`](/docs/hoon/reference/stdlib/2q/#noun)
1270+[`+$path`](/docs/hoon/reference/stdlib/2q/#path)
1271+[`+$stud`](/docs/hoon/reference/stdlib/2q/#stud)
1272+[`+$tang`](/docs/hoon/reference/stdlib/2q/#tang)
1273+[`+$tank`](/docs/hoon/reference/stdlib/2q/#tank)
1274+[`+$tape`](/docs/hoon/reference/stdlib/2q/#tape)
1275+[`+$tour`](/docs/hoon/reference/stdlib/2q/#tour)
1276+[`+$tarp`](/docs/hoon/reference/stdlib/2q/#tarp)
1277+[`+$term`](/docs/hoon/reference/stdlib/2q/#term)
1278+[`+$wain`](/docs/hoon/reference/stdlib/2q/#wain)
1279+[`+$wall`](/docs/hoon/reference/stdlib/2q/#wall)
12801280
12811281### 3a: modular and signed ints
12821282
1283−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#fo' title="Modulo prime"><code>++fo</code></a>
1283+[`++fo`](/docs/hoon/reference/stdlib/3a/#fo)
12841284<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#diffo' title='Subtraction (modular base)'><code>++dif:fo</code></a>
1285−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#expfo' title="Exponent (modular base)"><code>++exp:fo</code></a>
1286−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#frafo' title="Divide (modular base)"><code>++fra:fo</code></a>
1287−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#invfo' title="Inverse (signed modulus)"><code>++inv:fo</code></a>
1288−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#profo' title="Multiplies b and c modulo a"><code>++pro:fo</code></a>
1289−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sitfo' title="Produce remainder of b modulo a"><code>++sit:fo</code></a>
1290−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sumfo' title="Modular sum"><code>++sum:fo</code></a>
1291−
1292−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#si' title="Signed integer"><code>++si</code></a>
1293−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#abssi' title="Absolute value (signed integer)"><code>++abs:si</code></a>
1294−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#cmpsi' title="Compare (signed integer)"><code>++cmp:si</code></a>
1295−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#difsi' title="Subtraction (signed integer)"><code>++dif:si</code></a>
1296−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#dulsi' title="Modulus (signed integer)"><code>++dul:si</code></a>
1297−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#frasi' title="Divide (signed integer)"><code>++fra:si</code></a>
1298−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#newsi' title="Atom to @s"><code>++new:si</code></a>
1299−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#oldsi' title="Sign and absolute value"><code>++old:si</code></a>
1300−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#prosi' title="Multiply to signed integer"><code>++pro:si</code></a>
1301−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#remsi' title="Remainder (signed integer)"><code>++rem:si</code></a>
1302−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sumsi' title="Addition (signed integer)"><code>++sum:si</code></a>
1303−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#sunsi' title="@u to @s"><code>++sun:si</code></a>
1304−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#synsi' title="Sign test"><code>++syn:si</code></a>
1305−
1306−<a class="tooltip" href='/docs/hoon/reference/stdlib/3a/#egcd' title="Extended Euclidean algorithm"><code>++egcd</code></a>
1285+[`++exp:fo`](/docs/hoon/reference/stdlib/3a/#expfo)
1286+[`++fra:fo`](/docs/hoon/reference/stdlib/3a/#frafo)
1287+[`++inv:fo`](/docs/hoon/reference/stdlib/3a/#invfo)
1288+[`++pro:fo`](/docs/hoon/reference/stdlib/3a/#profo)
1289+[`++sit:fo`](/docs/hoon/reference/stdlib/3a/#sitfo)
1290+[`++sum:fo`](/docs/hoon/reference/stdlib/3a/#sumfo)
1291+
1292+[`++si`](/docs/hoon/reference/stdlib/3a/#si)
1293+[`++abs:si`](/docs/hoon/reference/stdlib/3a/#abssi)
1294+[`++cmp:si`](/docs/hoon/reference/stdlib/3a/#cmpsi)
1295+[`++dif:si`](/docs/hoon/reference/stdlib/3a/#difsi)
1296+[`++dul:si`](/docs/hoon/reference/stdlib/3a/#dulsi)
1297+[`++fra:si`](/docs/hoon/reference/stdlib/3a/#frasi)
1298+[`++new:si`](/docs/hoon/reference/stdlib/3a/#newsi)
1299+[`++old:si`](/docs/hoon/reference/stdlib/3a/#oldsi)
1300+[`++pro:si`](/docs/hoon/reference/stdlib/3a/#prosi)
1301+[`++rem:si`](/docs/hoon/reference/stdlib/3a/#remsi)
1302+[`++sum:si`](/docs/hoon/reference/stdlib/3a/#sumsi)
1303+[`++sun:si`](/docs/hoon/reference/stdlib/3a/#sunsi)
1304+[`++syn:si`](/docs/hoon/reference/stdlib/3a/#synsi)
1305+
1306+[`++egcd`](/docs/hoon/reference/stdlib/3a/#egcd)
13071307
13081308### 3b: floating point
13091309
@@ -1312,167 +1312,167 @@ Can be navigated [alphabetically](#alphabetical) or [by section](#by-section).
13121312<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rn'><code>++rn</code></a>
13131313
13141314<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ff'><code>++ff</code></a>
1315−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#addff' title="Add (floating point)"><code>++add:ff</code></a>
1316−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bifff' title="Converts from fn to @r"><code>++bif:ff</code></a>
1317−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bitff' title="fn to @r with rounding"><code>++bit:ff</code></a>
1318−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#divff' title="Divide (IEEE float)"><code>++div:ff</code></a>
1319−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drgff' title="@r to decimal float"><code>++drg:ff</code></a>
1320−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equff' title="Equals (IEEE float)"><code>++equ:ff</code></a>
1321−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#expff' title="Get exponent (IEEE float)"><code>++exp:ff</code></a>
1322−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fmaff' title="Fused multiplyadd (IEEE float)"><code>++fma:ff</code></a>
1323−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grdff' title="Decimal float to @r"><code>++grd:ff</code></a>
1324−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gteff' title="Greater than / equal (IEEE float)"><code>++gte:ff</code></a>
1325−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gthff' title="Greater than (IEEE float)"><code>++gth:ff</code></a>
1326−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lteff' title="Less than / equal (IEEE float)"><code>++lte:ff</code></a>
1327−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lthff' title="Less than (IEEE float)"><code>++lth:ff</code></a>
1328−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#meff' title="Minimum exponent of ff"><code>++me:ff</code></a>
1329−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mulff' title="Multiply (IEEE float)"><code>++mul:ff</code></a>
1330−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#paff' title="Initialize fl from ff core"><code>++pa:ff</code></a>
1331−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sanff' title="Signed integer to @r"><code>++san:ff</code></a>
1332−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sbff' title="Sign bit"><code>++sb:ff</code></a>
1333−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#seaff' title="Convert from IEEE float to fn"><code>++sea:ff</code></a>
1334−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sigff' title="Produce sign of IEEE float"><code>++sig:ff</code></a>
1335−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqtff' title="Produce square root from IEEE float"><code>++sqt:ff</code></a>
1336−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#subff' title="Subtract from IEEE float"><code>++sub:ff</code></a>
1337−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sunff' title="Unsigned integer to IEEE float"><code>++sun:ff</code></a>
1338−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toiff' title="Round IEEE float to nearest signed integer"><code>++toi:ff</code></a>
1315+[`++add:ff`](/docs/hoon/reference/stdlib/3b/#addff)
1316+[`++bif:ff`](/docs/hoon/reference/stdlib/3b/#bifff)
1317+[`++bit:ff`](/docs/hoon/reference/stdlib/3b/#bitff)
1318+[`++div:ff`](/docs/hoon/reference/stdlib/3b/#divff)
1319+[`++drg:ff`](/docs/hoon/reference/stdlib/3b/#drgff)
1320+[`++equ:ff`](/docs/hoon/reference/stdlib/3b/#equff)
1321+[`++exp:ff`](/docs/hoon/reference/stdlib/3b/#expff)
1322+[`++fma:ff`](/docs/hoon/reference/stdlib/3b/#fmaff)
1323+[`++grd:ff`](/docs/hoon/reference/stdlib/3b/#grdff)
1324+[`++gte:ff`](/docs/hoon/reference/stdlib/3b/#gteff)
1325+[`++gth:ff`](/docs/hoon/reference/stdlib/3b/#gthff)
1326+[`++lte:ff`](/docs/hoon/reference/stdlib/3b/#lteff)
1327+[`++lth:ff`](/docs/hoon/reference/stdlib/3b/#lthff)
1328+[`++me:ff`](/docs/hoon/reference/stdlib/3b/#meff)
1329+[`++mul:ff`](/docs/hoon/reference/stdlib/3b/#mulff)
1330+[`++pa:ff`](/docs/hoon/reference/stdlib/3b/#paff)
1331+[`++san:ff`](/docs/hoon/reference/stdlib/3b/#sanff)
1332+[`++sb:ff`](/docs/hoon/reference/stdlib/3b/#sbff)
1333+[`++sea:ff`](/docs/hoon/reference/stdlib/3b/#seaff)
1334+[`++sig:ff`](/docs/hoon/reference/stdlib/3b/#sigff)
1335+[`++sqt:ff`](/docs/hoon/reference/stdlib/3b/#sqtff)
1336+[`++sub:ff`](/docs/hoon/reference/stdlib/3b/#subff)
1337+[`++sun:ff`](/docs/hoon/reference/stdlib/3b/#sunff)
1338+[`++toi:ff`](/docs/hoon/reference/stdlib/3b/#toiff)
13391339
13401340<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fl'><code>++fl</code></a>
1341−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#absfl' title="Absolute value"><code>++abs:fl</code></a>
1342−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#addfl' title="Add (with exact/rounded flag)"><code>++add:fl</code></a>
1343−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#denfl' title="Denormalizes (floating point)"><code>++den:fl</code></a>
1344−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#divfl' title="Divide (signed and unsigned integer cell)"><code>++div:fl</code></a>
1345−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drgfl' title="Get printable decimal (signed and unsigned integer cell)"><code>++drg:fl</code></a>
1346−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#eadfl' title="Exact add"><code>++ead:fl</code></a>
1347−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emnfl' title="Minimum exponent"><code>++emn:fl</code></a>
1348−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emufl' title="Exact multiply"><code>++emu:fl</code></a>
1349−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#emxfl' title="Maximum exponent"><code>++emx:fl</code></a>
1350−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equfl' title="Equals (signed and unsigned integer cell)"><code>++equ:fl</code></a>
1351−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#flifl' title="Flip sign"><code>++fli:fl</code></a>
1352−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fmafl' title="Fused multiplyadd"><code>++fma:fl</code></a>
1353−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grdfl' title="Decimal to float"><code>++grd:fl</code></a>
1354−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gtefl' title="Greater than / equal (producing flag)"><code>++gte:fl</code></a>
1355−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gthfl' title="Greater than (producing flag)"><code>++gth:fl</code></a>
1356−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#iblfl' title="Integer binary logarithm"><code>++ibl:fl</code></a>
1357−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#invfl' title="Inverse"><code>++inv:fl</code></a>
1358−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lfefl' title="Maximum"><code>++lfe:fl</code></a>
1359−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lfnfl' title="Largest normal float"><code>++lfn:fl</code></a>
1360−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#ltefl' title="Less than / equal (producing flag)"><code>++lte:fl</code></a>
1361−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lthfl' title="Less than (signed and unsigned integer cell)"><code>++lth:fl</code></a>
1362−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lugfl' title="Central rounding mechanism"><code>++lug:fl</code></a>
1363−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mulfl' title="Multiply (signed and unsigned integer cell)"><code>++mul:fl</code></a>
1364−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#nedfl' title="Require float"><code>++ned:fl</code></a>
1365−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#prcfl' title="Force precision of 2 or greater (floating point)"><code>++prc:fl</code></a>
1366−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#raufl' title="Various roundings (floating point)"><code>++rau:fl</code></a>
1367−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#roufl' title="Round to nearest float with 113bit significand"><code>++rou:fl</code></a>
1368−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sanfl' title="Signed integer to float"><code>++san:fl</code></a>
1369−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#shffl' title="Shift power"><code>++shf:fl</code></a>
1370−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#spdfl' title="Produce smallest denormalized float"><code>++spd:fl</code></a>
1371−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#spnfl' title="Produce smallest normal float"><code>++spn:fl</code></a>
1372−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqtfl' title="Produce square root from signed and unsigned integer cell"><code>++sqt:fl</code></a>
1373−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#subfl' title="Subtract from signed and unsigned integer cells"><code>++sub:fl</code></a>
1374−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sunfl' title="Unsigned integer to float"><code>++sun:fl</code></a>
1375−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#swrfl' title="Switch rounding mode of floating point"><code>++swr:fl</code></a>
1376−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#synfl' title="Get sign"><code>++syn:fl</code></a>
1377−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toifl' title="Round float to nearest signed integer"><code>++toi:fl</code></a>
1378−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#tojfl' title="Round unsigned and signed integer to float"><code>++toj:fl</code></a>
1379−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#unifl' title="Change representation to odd"><code>++uni:fl</code></a>
1380−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#xpdfl' title="Expand signed and unsigned integer cell"><code>++xpd:fl</code></a>
1381−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#zerfl' title="Produce zero as float"><code>++zer:fl</code></a>
1341+[`++abs:fl`](/docs/hoon/reference/stdlib/3b/#absfl)
1342+[`++add:fl`](/docs/hoon/reference/stdlib/3b/#addfl)
1343+[`++den:fl`](/docs/hoon/reference/stdlib/3b/#denfl)
1344+[`++div:fl`](/docs/hoon/reference/stdlib/3b/#divfl)
1345+[`++drg:fl`](/docs/hoon/reference/stdlib/3b/#drgfl)
1346+[`++ead:fl`](/docs/hoon/reference/stdlib/3b/#eadfl)
1347+[`++emn:fl`](/docs/hoon/reference/stdlib/3b/#emnfl)
1348+[`++emu:fl`](/docs/hoon/reference/stdlib/3b/#emufl)
1349+[`++emx:fl`](/docs/hoon/reference/stdlib/3b/#emxfl)
1350+[`++equ:fl`](/docs/hoon/reference/stdlib/3b/#equfl)
1351+[`++fli:fl`](/docs/hoon/reference/stdlib/3b/#flifl)
1352+[`++fma:fl`](/docs/hoon/reference/stdlib/3b/#fmafl)
1353+[`++grd:fl`](/docs/hoon/reference/stdlib/3b/#grdfl)
1354+[`++gte:fl`](/docs/hoon/reference/stdlib/3b/#gtefl)
1355+[`++gth:fl`](/docs/hoon/reference/stdlib/3b/#gthfl)
1356+[`++ibl:fl`](/docs/hoon/reference/stdlib/3b/#iblfl)
1357+[`++inv:fl`](/docs/hoon/reference/stdlib/3b/#invfl)
1358+[`++lfe:fl`](/docs/hoon/reference/stdlib/3b/#lfefl)
1359+[`++lfn:fl`](/docs/hoon/reference/stdlib/3b/#lfnfl)
1360+[`++lte:fl`](/docs/hoon/reference/stdlib/3b/#ltefl)
1361+[`++lth:fl`](/docs/hoon/reference/stdlib/3b/#lthfl)
1362+[`++lug:fl`](/docs/hoon/reference/stdlib/3b/#lugfl)
1363+[`++mul:fl`](/docs/hoon/reference/stdlib/3b/#mulfl)
1364+[`++ned:fl`](/docs/hoon/reference/stdlib/3b/#nedfl)
1365+[`++prc:fl`](/docs/hoon/reference/stdlib/3b/#prcfl)
1366+[`++rau:fl`](/docs/hoon/reference/stdlib/3b/#raufl)
1367+[`++rou:fl`](/docs/hoon/reference/stdlib/3b/#roufl)
1368+[`++san:fl`](/docs/hoon/reference/stdlib/3b/#sanfl)
1369+[`++shf:fl`](/docs/hoon/reference/stdlib/3b/#shffl)
1370+[`++spd:fl`](/docs/hoon/reference/stdlib/3b/#spdfl)
1371+[`++spn:fl`](/docs/hoon/reference/stdlib/3b/#spnfl)
1372+[`++sqt:fl`](/docs/hoon/reference/stdlib/3b/#sqtfl)
1373+[`++sub:fl`](/docs/hoon/reference/stdlib/3b/#subfl)
1374+[`++sun:fl`](/docs/hoon/reference/stdlib/3b/#sunfl)
1375+[`++swr:fl`](/docs/hoon/reference/stdlib/3b/#swrfl)
1376+[`++syn:fl`](/docs/hoon/reference/stdlib/3b/#synfl)
1377+[`++toi:fl`](/docs/hoon/reference/stdlib/3b/#toifl)
1378+[`++toj:fl`](/docs/hoon/reference/stdlib/3b/#tojfl)
1379+[`++uni:fl`](/docs/hoon/reference/stdlib/3b/#unifl)
1380+[`++xpd:fl`](/docs/hoon/reference/stdlib/3b/#xpdfl)
1381+[`++zer:fl`](/docs/hoon/reference/stdlib/3b/#zerfl)
13821382
13831383<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rd'><code>++rd</code></a>
1384−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#addrd' title="Add (doubleprecision float)"><code>++add:rd</code></a>
1385−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bitrd' title="fn to doubleprecision binary float"><code>++bit:rd</code></a>
1386−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#divrd' title="Double precision float"><code>++div:rd</code></a>
1387−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drgrd' title="@rd to decimal float"><code>++drg:rd</code></a>
1388−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equrd' title="Equals (doubleprecision float)"><code>++equ:rd</code></a>
1389−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exprd' title="Exponent (@rd)"><code>++exp:rd</code></a>
1390−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fmard' title="Fused multiplyadd (@rd)"><code>++fma:rd</code></a>
1391−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grdrd' title="Decimal float to @rd"><code>++grd:rd</code></a>
1392−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gterd' title="Greater than / equal (doubleprecision float)"><code>++gte:rd</code></a>
1393−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gthrd' title="Greater than (doubleprecision float)"><code>++gth:rd</code></a>
1394−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lterd' title="Less than / equal (doubleprecision float)"><code>++lte:rd</code></a>
1395−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lthrd' title="Less than (doubleprecision float)"><code>++lth:rd</code></a>
1396−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mard' title="Initialize ff (rd core)"><code>++ma:rd</code></a>
1397−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mulrd' title="Multiply (doubleprecision float)"><code>++mul:rd</code></a>
1398−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sanrd' title="Unsigned integer to @rd"><code>++san:rd</code></a>
1399−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#seard' title="Convert from doubleprecision binary float to fn"><code>++sea:rd</code></a>
1400−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sigrd' title="Produce sign of @rd"><code>++sig:rd</code></a>
1401−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqtrd' title="Produce square root of doubleprecision float"><code>++sqt:rd</code></a>
1402−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#subrd' title="Subtract from doubleprecision float"><code>++sub:rd</code></a>
1403−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sunrd' title="Unsigned integer to doubleprecision float"><code>++sun:rd</code></a>
1404−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toird' title="Round doubleprecision float to nearest signed integer"><code>++toi:rd</code></a>
1384+[`++add:rd`](/docs/hoon/reference/stdlib/3b/#addrd)
1385+[`++bit:rd`](/docs/hoon/reference/stdlib/3b/#bitrd)
1386+[`++div:rd`](/docs/hoon/reference/stdlib/3b/#divrd)
1387+[`++drg:rd`](/docs/hoon/reference/stdlib/3b/#drgrd)
1388+[`++equ:rd`](/docs/hoon/reference/stdlib/3b/#equrd)
1389+[`++exp:rd`](/docs/hoon/reference/stdlib/3b/#exprd)
1390+[`++fma:rd`](/docs/hoon/reference/stdlib/3b/#fmard)
1391+[`++grd:rd`](/docs/hoon/reference/stdlib/3b/#grdrd)
1392+[`++gte:rd`](/docs/hoon/reference/stdlib/3b/#gterd)
1393+[`++gth:rd`](/docs/hoon/reference/stdlib/3b/#gthrd)
1394+[`++lte:rd`](/docs/hoon/reference/stdlib/3b/#lterd)
1395+[`++lth:rd`](/docs/hoon/reference/stdlib/3b/#lthrd)
1396+[`++ma:rd`](/docs/hoon/reference/stdlib/3b/#mard)
1397+[`++mul:rd`](/docs/hoon/reference/stdlib/3b/#mulrd)
1398+[`++san:rd`](/docs/hoon/reference/stdlib/3b/#sanrd)
1399+[`++sea:rd`](/docs/hoon/reference/stdlib/3b/#seard)
1400+[`++sig:rd`](/docs/hoon/reference/stdlib/3b/#sigrd)
1401+[`++sqt:rd`](/docs/hoon/reference/stdlib/3b/#sqtrd)
1402+[`++sub:rd`](/docs/hoon/reference/stdlib/3b/#subrd)
1403+[`++sun:rd`](/docs/hoon/reference/stdlib/3b/#sunrd)
1404+[`++toi:rd`](/docs/hoon/reference/stdlib/3b/#toird)
14051405
14061406<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rh'><code>++rh</code></a>
1407−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#addrh' title="Add (halfprecision float)"><code>++add:rh</code></a>
1408−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bitrh' title="fn to halfprecision float"><code>++bit:rh</code></a>
1409−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#divrh' title="Divide (halfprecision float)"><code>++div:rh</code></a>
1410−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drgrh' title="@rh to decimal float"><code>++drg:rh</code></a>
1411−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equrh' title="Equals (halfprecision float)"><code>++equ:rh</code></a>
1412−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exprh' title="Exponent (halfprecision float)"><code>++exp:rh</code></a>
1413−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fmarh' title="Fused multiplyadd (halfprecision float)"><code>++fma:rh</code></a>
1414−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fosrh' title="@rs to @rh"><code>++fos:rh</code></a>
1415−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grdrh' title="Decimal float to @rh"><code>++grd:rh</code></a>
1416−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gterh' title="Greater than / equal (halfprecision float)"><code>++gte:rh</code></a>
1417−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gthrh' title="Greater than (halfprecision float)"><code>++gth:rh</code></a>
1418−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lterh' title="Less than / equal (halfprecision float)"><code>++lte:rh</code></a>
1419−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lthrh' title="Less than (halfprecision float)"><code>++lth:rh</code></a>
1420−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#marh' title="Initialize ff (rh core)"><code>++ma:rh</code></a>
1421−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mulrh' title="Multiply (quadprecision float)"><code>++mul:rh</code></a>
1422−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sanrh' title="Signed integer to @rh"><code>++san:rh</code></a>
1423−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#searh' title="Convert from halfprecision float to fn"><code>++sea:rh</code></a>
1424−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sigrh' title="Produce sign of halfprecision float"><code>++sig:rh</code></a>
1425−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqtrh' title="Produce square root of halfprecision float"><code>++sqt:rh</code></a>
1426−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#subrh' title="Subtract from halfprecision float"><code>++sub:rh</code></a>
1427−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sunrh' title="Unsigned integer to halfprecision float"><code>++sun:rh</code></a>
1428−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toirh' title="Round halfprecision float to nearest signed integer"><code>++toi:rh</code></a>
1429−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#tosrh' title="Convert halfprecision float to singleprecision float"><code>++tos:rh</code></a>
1407+[`++add:rh`](/docs/hoon/reference/stdlib/3b/#addrh)
1408+[`++bit:rh`](/docs/hoon/reference/stdlib/3b/#bitrh)
1409+[`++div:rh`](/docs/hoon/reference/stdlib/3b/#divrh)
1410+[`++drg:rh`](/docs/hoon/reference/stdlib/3b/#drgrh)
1411+[`++equ:rh`](/docs/hoon/reference/stdlib/3b/#equrh)
1412+[`++exp:rh`](/docs/hoon/reference/stdlib/3b/#exprh)
1413+[`++fma:rh`](/docs/hoon/reference/stdlib/3b/#fmarh)
1414+[`++fos:rh`](/docs/hoon/reference/stdlib/3b/#fosrh)
1415+[`++grd:rh`](/docs/hoon/reference/stdlib/3b/#grdrh)
1416+[`++gte:rh`](/docs/hoon/reference/stdlib/3b/#gterh)
1417+[`++gth:rh`](/docs/hoon/reference/stdlib/3b/#gthrh)
1418+[`++lte:rh`](/docs/hoon/reference/stdlib/3b/#lterh)
1419+[`++lth:rh`](/docs/hoon/reference/stdlib/3b/#lthrh)
1420+[`++ma:rh`](/docs/hoon/reference/stdlib/3b/#marh)
1421+[`++mul:rh`](/docs/hoon/reference/stdlib/3b/#mulrh)
1422+[`++san:rh`](/docs/hoon/reference/stdlib/3b/#sanrh)
1423+[`++sea:rh`](/docs/hoon/reference/stdlib/3b/#searh)
1424+[`++sig:rh`](/docs/hoon/reference/stdlib/3b/#sigrh)
1425+[`++sqt:rh`](/docs/hoon/reference/stdlib/3b/#sqtrh)
1426+[`++sub:rh`](/docs/hoon/reference/stdlib/3b/#subrh)
1427+[`++sun:rh`](/docs/hoon/reference/stdlib/3b/#sunrh)
1428+[`++toi:rh`](/docs/hoon/reference/stdlib/3b/#toirh)
1429+[`++tos:rh`](/docs/hoon/reference/stdlib/3b/#tosrh)
14301430
14311431<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rs'><code>++rs</code></a>
1432−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#addrs' title="Add (singleprecision float)"><code>++add:rs</code></a>
1433−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bitrs' title="fn to singleprecision float"><code>++bit:rs</code></a>
1434−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#divrs' title="Divide (singleprecision float)"><code>++div:rs</code></a>
1435−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drgrs' title="@rs to decimal float"><code>++drg:rs</code></a>
1436−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equrs' title="Equals (singleprecision float)"><code>++equ:rs</code></a>
1437−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exprs' title="Exponent (@rs)"><code>++exp:rs</code></a>
1438−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fmars' title="Fused multiplyadd (singleprecision float)"><code>++fma:rs</code></a>
1439−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grdrs' title="Decimal float to @rs"><code>++grd:rs</code></a>
1440−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gters' title="Greater than / equal (singleprecision float)"><code>++gte:rs</code></a>
1441−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gthrs' title="Greater than (singleprecision float)"><code>++gth:rs</code></a>
1442−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lters' title="Less than / equal (singleprecision float)"><code>++lte:rs</code></a>
1443−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lthrs' title="Less than (singleprecision float)"><code>++lth:rs</code></a>
1444−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mars' title="Initialize ff (rs core)"><code>++ma:rs</code></a>
1445−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mulrs' title="Multiply (singleprecision float)"><code>++mul:rs</code></a>
1446−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sanrs' title="Signed integer to @rs"><code>++san:rs</code></a>
1447−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sears' title="Convert from singleprecision float to fn"><code>++sea:rs</code></a>
1448−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sigrs' title="Produce sign of @rs"><code>++sig:rs</code></a>
1449−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqtrs' title="Produce square root of singleprecision float"><code>++sqt:rs</code></a>
1450−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#subrs' title="Subtract from singleprecision float"><code>++sub:rs</code></a>
1451−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sunrs' title="Unsigned integer to singleprecision float"><code>++sun:rs</code></a>
1452−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toirs' title="Round singleprecision float to nearest signed integer"><code>++toi:rs</code></a>
1432+[`++add:rs`](/docs/hoon/reference/stdlib/3b/#addrs)
1433+[`++bit:rs`](/docs/hoon/reference/stdlib/3b/#bitrs)
1434+[`++div:rs`](/docs/hoon/reference/stdlib/3b/#divrs)
1435+[`++drg:rs`](/docs/hoon/reference/stdlib/3b/#drgrs)
1436+[`++equ:rs`](/docs/hoon/reference/stdlib/3b/#equrs)
1437+[`++exp:rs`](/docs/hoon/reference/stdlib/3b/#exprs)
1438+[`++fma:rs`](/docs/hoon/reference/stdlib/3b/#fmars)
1439+[`++grd:rs`](/docs/hoon/reference/stdlib/3b/#grdrs)
1440+[`++gte:rs`](/docs/hoon/reference/stdlib/3b/#gters)
1441+[`++gth:rs`](/docs/hoon/reference/stdlib/3b/#gthrs)
1442+[`++lte:rs`](/docs/hoon/reference/stdlib/3b/#lters)
1443+[`++lth:rs`](/docs/hoon/reference/stdlib/3b/#lthrs)
1444+[`++ma:rs`](/docs/hoon/reference/stdlib/3b/#mars)
1445+[`++mul:rs`](/docs/hoon/reference/stdlib/3b/#mulrs)
1446+[`++san:rs`](/docs/hoon/reference/stdlib/3b/#sanrs)
1447+[`++sea:rs`](/docs/hoon/reference/stdlib/3b/#sears)
1448+[`++sig:rs`](/docs/hoon/reference/stdlib/3b/#sigrs)
1449+[`++sqt:rs`](/docs/hoon/reference/stdlib/3b/#sqtrs)
1450+[`++sub:rs`](/docs/hoon/reference/stdlib/3b/#subrs)
1451+[`++sun:rs`](/docs/hoon/reference/stdlib/3b/#sunrs)
1452+[`++toi:rs`](/docs/hoon/reference/stdlib/3b/#toirs)
14531453
14541454<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rq'><code>++rq</code></a>
1455−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#addrq' title="Add (quadprecision float)"><code>++add:rq</code></a>
1456−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#bitrq' title="fn to quadprecision float"><code>++bit:rq</code></a>
1457−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#divrq' title="Divide (quadprecision float)"><code>++div:rq</code></a>
1458−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#drgrq' title="@rq to decimal float"><code>++drg:rq</code></a>
1459−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#equrq' title="Equals (quadprecision float)"><code>++equ:rq</code></a>
1460−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#exprq' title="Exponent (quadprecision float)"><code>++exp:rq</code></a>
1461−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#fmarq' title="Fused multiplyadd (quadprecision float)"><code>++fma:rq</code></a>
1462−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#grdrq' title="Decimal float to @rq"><code>++grd:rq</code></a>
1463−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gterq' title="Greater than / equal (quadprecision float)"><code>++gte:rq</code></a>
1464−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#gthrq' title="Greater than (quadprecision float)"><code>++gth:rq</code></a>
1465−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lterq' title="Less than / equal (quadprecision float)"><code>++lte:rq</code></a>
1466−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#lthrq' title="Less than (quadprecision float)"><code>++lth:rq</code></a>
1467−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#marq' title="Initialize ff (rq core)"><code>++ma:rq</code></a>
1468−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#mulrq' title="Multiply (quadprecision float)"><code>++mul:rq</code></a>
1469−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sanrq' title="Signed integer to @rq"><code>++san:rq</code></a>
1470−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#searq' title="Convert from quadprecision float to fn"><code>++sea:rq</code></a>
1471−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sigrq' title="Produce sign of quadprecision float"><code>++sig:rq</code></a>
1472−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sqtrq' title="Produce square root of quadprecision float"><code>++sqt:rq</code></a>
1473−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#subrq' title="Subtract from quadprecision float"><code>++sub:rq</code></a>
1474−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#sunrq' title="Unsigned integer to quadprecision float"><code>++sun:rq</code></a>
1475−<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#toirq' title="Round quadprecision float to nearest signed integer"><code>++toi:rq</code></a>
1455+[`++add:rq`](/docs/hoon/reference/stdlib/3b/#addrq)
1456+[`++bit:rq`](/docs/hoon/reference/stdlib/3b/#bitrq)
1457+[`++div:rq`](/docs/hoon/reference/stdlib/3b/#divrq)
1458+[`++drg:rq`](/docs/hoon/reference/stdlib/3b/#drgrq)
1459+[`++equ:rq`](/docs/hoon/reference/stdlib/3b/#equrq)
1460+[`++exp:rq`](/docs/hoon/reference/stdlib/3b/#exprq)
1461+[`++fma:rq`](/docs/hoon/reference/stdlib/3b/#fmarq)
1462+[`++grd:rq`](/docs/hoon/reference/stdlib/3b/#grdrq)
1463+[`++gte:rq`](/docs/hoon/reference/stdlib/3b/#gterq)
1464+[`++gth:rq`](/docs/hoon/reference/stdlib/3b/#gthrq)
1465+[`++lte:rq`](/docs/hoon/reference/stdlib/3b/#lterq)
1466+[`++lth:rq`](/docs/hoon/reference/stdlib/3b/#lthrq)
1467+[`++ma:rq`](/docs/hoon/reference/stdlib/3b/#marq)
1468+[`++mul:rq`](/docs/hoon/reference/stdlib/3b/#mulrq)
1469+[`++san:rq`](/docs/hoon/reference/stdlib/3b/#sanrq)
1470+[`++sea:rq`](/docs/hoon/reference/stdlib/3b/#searq)
1471+[`++sig:rq`](/docs/hoon/reference/stdlib/3b/#sigrq)
1472+[`++sqt:rq`](/docs/hoon/reference/stdlib/3b/#sqtrq)
1473+[`++sub:rq`](/docs/hoon/reference/stdlib/3b/#subrq)
1474+[`++sun:rq`](/docs/hoon/reference/stdlib/3b/#sunrq)
1475+[`++toi:rq`](/docs/hoon/reference/stdlib/3b/#toirq)
14761476
14771477<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rlyd'><code>++rlyd</code></a>
14781478<a class="tooltip" href='/docs/hoon/reference/stdlib/3b/#rlyh'><code>++rlyh</code></a>
@@ -1485,44 +1485,44 @@ Can be navigated [alphabetically](#alphabetical) or [by section](#by-section).
14851485
14861486### 3c: urbit time
14871487
1488−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yo' title="Time constants core"><code>++yo</code></a>
1489−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#cetyo' title="Days in a century"><code>++cet:yo</code></a>
1490−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#dayyo' title="Seconds in day"><code>++day:yo</code></a>
1491−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#erayo' title="Leapyear period"><code>++era:yo</code></a>
1492−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#horyo' title="Seconds in hour"><code>++hor:yo</code></a>
1493−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#jesyo' title="Maximum 64bit timestamp"><code>++jes:yo</code></a>
1494−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#mityo' title="Seconds in minute"><code>++mit:yo</code></a>
1495−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#mohyo' title="Days in month"><code>++moh:yo</code></a>
1496−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#moyyo' title="Days in months of leapyear"><code>++moy:yo</code></a>
1497−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#qadyo' title="Seconds in 4 years"><code>++qad:yo</code></a>
1498−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yeryo' title="Seconds in year"><code>++yer:yo</code></a>
1499−
1500−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yall' title="Time since beginning of time"><code>++yall</code></a>
1501−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yawn' title="Days since beginning of time"><code>++yawn</code></a>
1502−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#year' title="Date to @d"><code>++year</code></a>
1503−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yell' title="Tarp from atomic date"><code>++yell</code></a>
1504−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yelp' title="Determine if leapweek"><code>++yelp</code></a>
1505−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yore' title="Date from atomic date"><code>++yore</code></a>
1506−<a class="tooltip" href='/docs/hoon/reference/stdlib/3c/#yule' title="Daily time to time atom"><code>++yule</code></a>
1488+[`++yo`](/docs/hoon/reference/stdlib/3c/#yo)
1489+[`++cet:yo`](/docs/hoon/reference/stdlib/3c/#cetyo)
1490+[`++day:yo`](/docs/hoon/reference/stdlib/3c/#dayyo)
1491+[`++era:yo`](/docs/hoon/reference/stdlib/3c/#erayo)
1492+[`++hor:yo`](/docs/hoon/reference/stdlib/3c/#horyo)
1493+[`++jes:yo`](/docs/hoon/reference/stdlib/3c/#jesyo)
1494+[`++mit:yo`](/docs/hoon/reference/stdlib/3c/#mityo)
1495+[`++moh:yo`](/docs/hoon/reference/stdlib/3c/#mohyo)
1496+[`++moy:yo`](/docs/hoon/reference/stdlib/3c/#moyyo)
1497+[`++qad:yo`](/docs/hoon/reference/stdlib/3c/#qadyo)
1498+[`++yer:yo`](/docs/hoon/reference/stdlib/3c/#yeryo)
1499+
1500+[`++yall`](/docs/hoon/reference/stdlib/3c/#yall)
1501+[`++yawn`](/docs/hoon/reference/stdlib/3c/#yawn)
1502+[`++year`](/docs/hoon/reference/stdlib/3c/#year)
1503+[`++yell`](/docs/hoon/reference/stdlib/3c/#yell)
1504+[`++yelp`](/docs/hoon/reference/stdlib/3c/#yelp)
1505+[`++yore`](/docs/hoon/reference/stdlib/3c/#yore)
1506+[`++yule`](/docs/hoon/reference/stdlib/3c/#yule)
15071507
15081508### 3d: SHA hash family
15091509
1510−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#og' title="Container arm for SHA256 powered RNG"><code>++og</code></a>
1511−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#radog' title="Random in range"><code>++rad:og</code></a>
1512−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#radsog' title="Random continuation"><code>++rads:og</code></a>
1513−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#rawog' title="Random bits"><code>++raw:og</code></a>
1514−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#rawsog' title="Random bits continuation"><code>++raws:og</code></a>
1515−
1516−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shad' title="Double SHA256"><code>++shad</code></a>
1517−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaf' title="Half SHA256"><code>++shaf</code></a>
1518−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shal' title="SHA512 with length"><code>++shal</code></a>
1519−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#sham' title="128bit noun hash"><code>++sham</code></a>
1520−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shan' title="SHA1"><code>++shan</code></a>
1521−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shas' title="Salted hash"><code>++shas</code></a>
1522−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaw' title="Hash to nbits"><code>++shaw</code></a>
1523−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shax' title="SHA256"><code>++shax</code></a>
1524−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shay' title="SHA256 with length"><code>++shay</code></a>
1525−<a class="tooltip" href='/docs/hoon/reference/stdlib/3d/#shaz' title="SHA512"><code>++shaz</code></a>
1510+[`++og`](/docs/hoon/reference/stdlib/3d/#og)
1511+[`++rad:og`](/docs/hoon/reference/stdlib/3d/#radog)
1512+[`++rads:og`](/docs/hoon/reference/stdlib/3d/#radsog)
1513+[`++raw:og`](/docs/hoon/reference/stdlib/3d/#rawog)
1514+[`++raws:og`](/docs/hoon/reference/stdlib/3d/#rawsog)
1515+
1516+[`++shad`](/docs/hoon/reference/stdlib/3d/#shad)
1517+[`++shaf`](/docs/hoon/reference/stdlib/3d/#shaf)
1518+[`++shal`](/docs/hoon/reference/stdlib/3d/#shal)
1519+[`++sham`](/docs/hoon/reference/stdlib/3d/#sham)
1520+[`++shan`](/docs/hoon/reference/stdlib/3d/#shan)
1521+[`++shas`](/docs/hoon/reference/stdlib/3d/#shas)
1522+[`++shaw`](/docs/hoon/reference/stdlib/3d/#shaw)
1523+[`++shax`](/docs/hoon/reference/stdlib/3d/#shax)
1524+[`++shay`](/docs/hoon/reference/stdlib/3d/#shay)
1525+[`++shaz`](/docs/hoon/reference/stdlib/3d/#shaz)
15261526
15271527### 3e: AES encryption
15281528
@@ -1530,535 +1530,535 @@ Can be navigated [alphabetically](#alphabetical) or [by section](#by-section).
15301530
15311531### 3f: scrambling
15321532
1533−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#ob' title="Reversible scrambling v2"><code>++ob</code></a>
1534−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feinob' title="Conceal structure v3"><code>++fein:ob</code></a>
1535−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#fyndob' title="Restore structure v3"><code>++fynd:ob</code></a>
1536−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feisob' title="Four-round generalised Feistel cipher over the domain [0, 2^32 - 2^16 - 1]"><code>++feis:ob</code></a>
1537−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#rakuob' title="Key list"><code>++raku:ob</code></a>
1538−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#tailob' title="Reverse +feis"><code>++tail:ob</code></a>
1539−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feeob' title="Feistel cipher Fe in B&R (2002)"><code>++fee:ob</code></a>
1540−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feenob' title="Reverse +fee"><code>++feen:ob</code></a>
1541−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#feob' title="Internal function to +fee"><code>++fe:ob</code></a>
1542−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#fenob' title="Reverse +fe"><code>++fen:ob</code></a>
1543−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#effob' title="murmur3-based pseudorandom function"><code>++eff:ob</code></a>
1544−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#un' title="Reversible scrambling"><code>++un</code></a>
1545−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#wredun' title="Restore structure"><code>++wred:un</code></a>
1546−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#wrenun' title="Conceal structure"><code>++wren:un</code></a>
1533+[`++ob`](/docs/hoon/reference/stdlib/3f/#ob)
1534+[`++fein:ob`](/docs/hoon/reference/stdlib/3f/#feinob)
1535+[`++fynd:ob`](/docs/hoon/reference/stdlib/3f/#fyndob)
1536+[`++feis:ob`](/docs/hoon/reference/stdlib/3f/#feisob)
1537+[`++raku:ob`](/docs/hoon/reference/stdlib/3f/#rakuob)
1538+[`++tail:ob`](/docs/hoon/reference/stdlib/3f/#tailob)
1539+[`++fee:ob`](/docs/hoon/reference/stdlib/3f/#feeob)
1540+[`++feen:ob`](/docs/hoon/reference/stdlib/3f/#feenob)
1541+[`++fe:ob`](/docs/hoon/reference/stdlib/3f/#feob)
1542+[`++fen:ob`](/docs/hoon/reference/stdlib/3f/#fenob)
1543+[`++eff:ob`](/docs/hoon/reference/stdlib/3f/#effob)
1544+[`++un`](/docs/hoon/reference/stdlib/3f/#un)
1545+[`++wred:un`](/docs/hoon/reference/stdlib/3f/#wredun)
1546+[`++wren:un`](/docs/hoon/reference/stdlib/3f/#wrenun)
15471547<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#xafoun'><code>++xafo:un</code></a>
15481548<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#xaroun'><code>++xaro:un</code></a>
1549−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zaftun' title="Look up in 255 sub box"><code>++zaft:un</code></a>
1550−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zartun' title="Reverse look up in 255 sub box"><code>++zart:un</code></a>
1551−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zyftun' title="Lookup byte in 256 sub box"><code>++zyft:un</code></a>
1552−<a class="tooltip" href='/docs/hoon/reference/stdlib/3f/#zyrtun' title="Reverse lookup byte in 256 sub box"><code>++zyrt:un</code></a>
1549+[`++zaft:un`](/docs/hoon/reference/stdlib/3f/#zaftun)
1550+[`++zart:un`](/docs/hoon/reference/stdlib/3f/#zartun)
1551+[`++zyft:un`](/docs/hoon/reference/stdlib/3f/#zyftun)
1552+[`++zyrt:un`](/docs/hoon/reference/stdlib/3f/#zyrtun)
15531553
15541554### 3g: molds and mold builders
15551555
1556−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#coin' title="Nounliteral syntax cases"><code>+$coin</code></a>
1557−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#dime' title="Auraatom pair"><code>+$dime</code></a>
1558−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#edge' title="Parsing location metadata"><code>+$edge</code></a>
1559−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#hair' title="Parsing line and column"><code>+$hair</code></a>
1560−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#like' title="Generic edge"><code>++like</code></a>
1561−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#nail' title="Location, remainder of parsed text"><code>+$nail</code></a>
1562−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#pint' title="Parsing range"><code>+$pint</code></a>
1563−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#rule' title="Parsing rule (match this with _)"><code>+$rule</code></a>
1564−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#spot' title="Stack trace line"><code>+$spot</code></a>
1565−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#tone' title="Nock result (error report)"><code>+$tone</code></a>
1566−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#toon' title="Nock result (stack trace)"><code>+$toon</code></a>
1567−<a class="tooltip" href='/docs/hoon/reference/stdlib/3g/#wonk' title="Product from edge"><code>++wonk</code></a>
1556+[`+$coin`](/docs/hoon/reference/stdlib/3g/#coin)
1557+[`+$dime`](/docs/hoon/reference/stdlib/3g/#dime)
1558+[`+$edge`](/docs/hoon/reference/stdlib/3g/#edge)
1559+[`+$hair`](/docs/hoon/reference/stdlib/3g/#hair)
1560+[`++like`](/docs/hoon/reference/stdlib/3g/#like)
1561+[`+$nail`](/docs/hoon/reference/stdlib/3g/#nail)
1562+[`+$pint`](/docs/hoon/reference/stdlib/3g/#pint)
1563+[`+$rule`](/docs/hoon/reference/stdlib/3g/#rule)
1564+[`+$spot`](/docs/hoon/reference/stdlib/3g/#spot)
1565+[`+$tone`](/docs/hoon/reference/stdlib/3g/#tone)
1566+[`+$toon`](/docs/hoon/reference/stdlib/3g/#toon)
1567+[`++wonk`](/docs/hoon/reference/stdlib/3g/#wonk)
15681568
15691569### 4a: exotic bases
15701570
1571−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#po' title="Phonetic base"><code>++po</code></a>
1572−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#indpo' title="Parse suffix"><code>++ind:po</code></a>
1573−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#inspo' title="Parse prefix"><code>++ins:po</code></a>
1574−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#todpo' title="Fetch suffix"><code>++tod:po</code></a>
1575−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#tospo' title="Fetch prefix"><code>++tos:po</code></a>
1576−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#fa' title="base58check"><code>++fa</code></a>
1577−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#chafa' title="Decode base58check character"><code>++cha:fa</code></a>
1578−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#tokfa' title="Compute base58check checksum"><code>++tok:fa</code></a>
1579−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#padfa' title="base58check padding bytes"><code>++pad:fa</code></a>
1580−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#encfa' title="Encode base58check"><code>++enc:fa</code></a>
1581−<a class="tooltip" href='/docs/hoon/reference/stdlib/4a/#denfa' title="Decode base58check"><code>++den:fa</code></a>
1571+[`++po`](/docs/hoon/reference/stdlib/4a/#po)
1572+[`++ind:po`](/docs/hoon/reference/stdlib/4a/#indpo)
1573+[`++ins:po`](/docs/hoon/reference/stdlib/4a/#inspo)
1574+[`++tod:po`](/docs/hoon/reference/stdlib/4a/#todpo)
1575+[`++tos:po`](/docs/hoon/reference/stdlib/4a/#tospo)
1576+[`++fa`](/docs/hoon/reference/stdlib/4a/#fa)
1577+[`++cha:fa`](/docs/hoon/reference/stdlib/4a/#chafa)
1578+[`++tok:fa`](/docs/hoon/reference/stdlib/4a/#tokfa)
1579+[`++pad:fa`](/docs/hoon/reference/stdlib/4a/#padfa)
1580+[`++enc:fa`](/docs/hoon/reference/stdlib/4a/#encfa)
1581+[`++den:fa`](/docs/hoon/reference/stdlib/4a/#denfa)
15821582
15831583### 4b: text processing
15841584
1585−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#at' title="Basic printing"><code>++at</code></a>
1586−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rat' title="Print term, number or hex"><code>++r:at</code></a>
1587−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rfat' title="Print loobean"><code>++rf:at</code></a>
1588−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rnat' title="Print null"><code>++rn:at</code></a>
1589−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rtat' title="Print cord, including escape characters"><code>++rt:at</code></a>
1590−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rtaat' title="Print cord, including escape characters"><code>++rta:at</code></a>
1591−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rtamat' title="Print cord with @tas syntax"><code>++rtam:at</code></a>
1592−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rubat' title="Print binary"><code>++rub:at</code></a>
1593−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rudat' title="Print atom as integer"><code>++rud:at</code></a>
1594−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rumat' title="Print base-n"><code>++rum:at</code></a>
1595−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#rupat' title="Print @p (outdated)"><code>++rup:at</code></a>
1596−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#ruvat' title="Print base-64"><code>++ruv:at</code></a>
1597−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#ruxat' title="Print hexadecimal"><code>++rux:at</code></a>
1598−
1599−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#cass' title="To lowercase"><code>++cass</code></a>
1600−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#crip' title="Tape to cord"><code>++crip</code></a>
1601−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#cuss' title="To uppercase"><code>++cuss</code></a>
1602−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#mesc' title="Escape special characters"><code>++mesc</code></a>
1603−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#runt' title="Prepend n times"><code>++runt</code></a>
1604−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#sand' title="Softcast by aura"><code>++sand</code></a>
1605−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#sane' title="Check aura validity"><code>++sane</code></a>
1606−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#teff' title="UTF8 length"><code>++teff</code></a>
1607−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#trim' title="Tape split"><code>++trim</code></a>
1608−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#trip' title="Cord to tape"><code>++trip</code></a>
1609−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tuba' title="UTF8 to UTF32 tape"><code>++tuba</code></a>
1610−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tufa' title="UTF32 to UTF8 tape"><code>++tufa</code></a>
1611−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#tuft' title="UTF32 to UTF8 text"><code>++tuft</code></a>
1612−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#taft' title="UTF8 to UTF32 cord"><code>++taft</code></a>
1613−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wack' title="Knot escape"><code>++wack</code></a>
1614−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wick' title="Knot unescape"><code>++wick</code></a>
1615−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#woad' title="Unescape cord"><code>++woad</code></a>
1616−<a class="tooltip" href='/docs/hoon/reference/stdlib/4b/#wood' title="Escape cord"><code>++wood</code></a>
1585+[`++at`](/docs/hoon/reference/stdlib/4b/#at)
1586+[`++r:at`](/docs/hoon/reference/stdlib/4b/#rat)
1587+[`++rf:at`](/docs/hoon/reference/stdlib/4b/#rfat)
1588+[`++rn:at`](/docs/hoon/reference/stdlib/4b/#rnat)
1589+[`++rt:at`](/docs/hoon/reference/stdlib/4b/#rtat)
1590+[`++rta:at`](/docs/hoon/reference/stdlib/4b/#rtaat)
1591+[`++rtam:at`](/docs/hoon/reference/stdlib/4b/#rtamat)
1592+[`++rub:at`](/docs/hoon/reference/stdlib/4b/#rubat)
1593+[`++rud:at`](/docs/hoon/reference/stdlib/4b/#rudat)
1594+[`++rum:at`](/docs/hoon/reference/stdlib/4b/#rumat)
1595+[`++rup:at`](/docs/hoon/reference/stdlib/4b/#rupat)
1596+[`++ruv:at`](/docs/hoon/reference/stdlib/4b/#ruvat)
1597+[`++rux:at`](/docs/hoon/reference/stdlib/4b/#ruxat)
1598+
1599+[`++cass`](/docs/hoon/reference/stdlib/4b/#cass)
1600+[`++crip`](/docs/hoon/reference/stdlib/4b/#crip)
1601+[`++cuss`](/docs/hoon/reference/stdlib/4b/#cuss)
1602+[`++mesc`](/docs/hoon/reference/stdlib/4b/#mesc)
1603+[`++runt`](/docs/hoon/reference/stdlib/4b/#runt)
1604+[`++sand`](/docs/hoon/reference/stdlib/4b/#sand)
1605+[`++sane`](/docs/hoon/reference/stdlib/4b/#sane)
1606+[`++teff`](/docs/hoon/reference/stdlib/4b/#teff)
1607+[`++trim`](/docs/hoon/reference/stdlib/4b/#trim)
1608+[`++trip`](/docs/hoon/reference/stdlib/4b/#trip)
1609+[`++tuba`](/docs/hoon/reference/stdlib/4b/#tuba)
1610+[`++tufa`](/docs/hoon/reference/stdlib/4b/#tufa)
1611+[`++tuft`](/docs/hoon/reference/stdlib/4b/#tuft)
1612+[`++taft`](/docs/hoon/reference/stdlib/4b/#taft)
1613+[`++wack`](/docs/hoon/reference/stdlib/4b/#wack)
1614+[`++wick`](/docs/hoon/reference/stdlib/4b/#wick)
1615+[`++woad`](/docs/hoon/reference/stdlib/4b/#woad)
1616+[`++wood`](/docs/hoon/reference/stdlib/4b/#wood)
16171617
16181618### 4c: tank printer
16191619
1620−<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#wash' title="Render tank at width"><code>++wash</code></a>
1621−<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#re' title="Prettyprinting engine (tank)"><code>++re</code></a>
1622−<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#ramre' title="Flatten tank to tape"><code>++ram:re</code></a>
1623−<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#winre' title="Render at indent"><code>++win:re</code></a>
1624−<a class="tooltip" href='/docs/hoon/reference/stdlib/4c/#show' title="Pretty-printer (deprecated)"><code>++show</code></a>
1620+[`++wash`](/docs/hoon/reference/stdlib/4c/#wash)
1621+[`++re`](/docs/hoon/reference/stdlib/4c/#re)
1622+[`++ram:re`](/docs/hoon/reference/stdlib/4c/#ramre)
1623+[`++win:re`](/docs/hoon/reference/stdlib/4c/#winre)
1624+[`++show`](/docs/hoon/reference/stdlib/4c/#show)
16251625
16261626### 4d: parsing (tracing)
16271627
1628−<a class="tooltip" href='/docs/hoon/reference/stdlib/4d/#last' title="Further trace"><code>++last</code></a>
1629−<a class="tooltip" href='/docs/hoon/reference/stdlib/4d/#lust' title="Detect new line"><code>++lust</code></a>
1628+[`++last`](/docs/hoon/reference/stdlib/4d/#last)
1629+[`++lust`](/docs/hoon/reference/stdlib/4d/#lust)
16301630
16311631### 4e: parsing (combinators)
16321632
1633−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#bend' title="Conditional composer"><code>++bend</code></a>
1634−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#comp' title="Arbitrary compose"><code>++comp</code></a>
1635−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#fail' title="Never parse"><code>++fail</code></a>
1636−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#glue' title="Skip delimiter"><code>++glue</code></a>
1637−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#less' title="Parse unless"><code>++less</code></a>
1638−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#pfix' title="Discard first rule"><code>++pfix</code></a>
1639−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#plug' title="Parse to tuple"><code>++plug</code></a>
1640−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#pose' title="Parse options"><code>++pose</code></a>
1641−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#sfix' title="Discard second rule"><code>++sfix</code></a>
1642−<a class="tooltip" href='/docs/hoon/reference/stdlib/4e/#simu' title="First and second"><code>++simu</code></a>
1633+[`++bend`](/docs/hoon/reference/stdlib/4e/#bend)
1634+[`++comp`](/docs/hoon/reference/stdlib/4e/#comp)
1635+[`++fail`](/docs/hoon/reference/stdlib/4e/#fail)
1636+[`++glue`](/docs/hoon/reference/stdlib/4e/#glue)
1637+[`++less`](/docs/hoon/reference/stdlib/4e/#less)
1638+[`++pfix`](/docs/hoon/reference/stdlib/4e/#pfix)
1639+[`++plug`](/docs/hoon/reference/stdlib/4e/#plug)
1640+[`++pose`](/docs/hoon/reference/stdlib/4e/#pose)
1641+[`++sfix`](/docs/hoon/reference/stdlib/4e/#sfix)
1642+[`++simu`](/docs/hoon/reference/stdlib/4e/#simu)
16431643
16441644### 4f: parsing (rule builders)
16451645
1646−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#bass' title="Parser modifier (LSBordered ++list as atom of ++base)"><code>++bass</code></a>
1647−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#boss' title="Parser modifier: LSB"><code>++boss</code></a>
1648−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#cold' title="Replace with constant"><code>++cold</code></a>
1649−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#cook' title="Apply gate"><code>++cook</code></a>
1650−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#easy' title="Always parse"><code>++easy</code></a>
1651−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#full' title="Parse to end"><code>++full</code></a>
1652−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#funk' title="Add to tape"><code>++funk</code></a>
1653−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#fuss' title="Has A or B?"><code>++fuss</code></a>
1654−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#here' title="Placebased apply"><code>++here</code></a>
1655−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#ifix' title="Infix"><code>++ifix</code></a>
1656−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#inde' title="Indentation block"><code>++inde</code></a>
1657−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#jest' title="Match a cord"><code>++jest</code></a>
1658−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#just' title="Match a single character"><code>++just</code></a>
1659−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#knee' title="Recursive parsers"><code>++knee</code></a>
1660−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#mask' title="Match character"><code>++mask</code></a>
1661−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#more' title="Parse list with delimiter"><code>++more</code></a>
1662−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#most' title="Parse list of at least one match"><code>++most</code></a>
1663−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#next' title="Consume character"><code>++next</code></a>
1664−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#perk' title="Parse cube fork"><code>++perk</code></a>
1665−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#plus' title="List of at least one match"><code>++plus</code></a>
1666−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#punt' title="Unitized parse"><code>++punt</code></a>
1667−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#sear' title="Conditional ++cook"><code>++sear</code></a>
1668−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#shim' title="Match character within range"><code>++shim</code></a>
1669−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#slug' title="Use gate to parse delimited list"><code>++slug</code></a>
1670−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stag' title="Add label"><code>++stag</code></a>
1671−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#star' title="Produce list of matches"><code>++star</code></a>
1672−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stet' title="Add faces to rangeparser pairs in list"><code>++stet</code></a>
1673−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stew' title="Switch by first"><code>++stew</code></a>
1674−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stir' title="Parse repeatedly"><code>++stir</code></a>
1675−<a class="tooltip" href='/docs/hoon/reference/stdlib/4f/#stun' title="Parse several times"><code>++stun</code></a>
1646+[`++bass`](/docs/hoon/reference/stdlib/4f/#bass)
1647+[`++boss`](/docs/hoon/reference/stdlib/4f/#boss)
1648+[`++cold`](/docs/hoon/reference/stdlib/4f/#cold)
1649+[`++cook`](/docs/hoon/reference/stdlib/4f/#cook)
1650+[`++easy`](/docs/hoon/reference/stdlib/4f/#easy)
1651+[`++full`](/docs/hoon/reference/stdlib/4f/#full)
1652+[`++funk`](/docs/hoon/reference/stdlib/4f/#funk)
1653+[`++fuss`](/docs/hoon/reference/stdlib/4f/#fuss)
1654+[`++here`](/docs/hoon/reference/stdlib/4f/#here)
1655+[`++ifix`](/docs/hoon/reference/stdlib/4f/#ifix)
1656+[`++inde`](/docs/hoon/reference/stdlib/4f/#inde)
1657+[`++jest`](/docs/hoon/reference/stdlib/4f/#jest)
1658+[`++just`](/docs/hoon/reference/stdlib/4f/#just)
1659+[`++knee`](/docs/hoon/reference/stdlib/4f/#knee)
1660+[`++mask`](/docs/hoon/reference/stdlib/4f/#mask)
1661+[`++more`](/docs/hoon/reference/stdlib/4f/#more)
1662+[`++most`](/docs/hoon/reference/stdlib/4f/#most)
1663+[`++next`](/docs/hoon/reference/stdlib/4f/#next)
1664+[`++perk`](/docs/hoon/reference/stdlib/4f/#perk)
1665+[`++plus`](/docs/hoon/reference/stdlib/4f/#plus)
1666+[`++punt`](/docs/hoon/reference/stdlib/4f/#punt)
1667+[`++sear`](/docs/hoon/reference/stdlib/4f/#sear)
1668+[`++shim`](/docs/hoon/reference/stdlib/4f/#shim)
1669+[`++slug`](/docs/hoon/reference/stdlib/4f/#slug)
1670+[`++stag`](/docs/hoon/reference/stdlib/4f/#stag)
1671+[`++star`](/docs/hoon/reference/stdlib/4f/#star)
1672+[`++stet`](/docs/hoon/reference/stdlib/4f/#stet)
1673+[`++stew`](/docs/hoon/reference/stdlib/4f/#stew)
1674+[`++stir`](/docs/hoon/reference/stdlib/4f/#stir)
1675+[`++stun`](/docs/hoon/reference/stdlib/4f/#stun)
16761676
16771677### 4g: parsing (outside caller)
16781678
1679−<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rash' title="Parse or crash"><code>++rash</code></a>
1680−<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rose' title="Parse to each"><code>++rose</code></a>
1681−<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rush' title="Parse or null"><code>++rush</code></a>
1682−<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#rust' title="Parse tape or null"><code>++rust</code></a>
1683−<a class="tooltip" href='/docs/hoon/reference/stdlib/4g/#scan' title="Parse tape or crash"><code>++scan</code></a>
1679+[`++rash`](/docs/hoon/reference/stdlib/4g/#rash)
1680+[`++rose`](/docs/hoon/reference/stdlib/4g/#rose)
1681+[`++rush`](/docs/hoon/reference/stdlib/4g/#rush)
1682+[`++rust`](/docs/hoon/reference/stdlib/4g/#rust)
1683+[`++scan`](/docs/hoon/reference/stdlib/4g/#scan)
16841684
16851685### 4h: parsing (ascii glyphs)
16861686
1687−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ace' title="Parse space"><code>++ace</code></a>
1688−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#bar' title="Parse | (bar)"><code>++bar</code></a>
1689−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#bas' title="Parse \ (bas)"><code>++bas</code></a>
1690−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#buc' title="Parse $ (buc)"><code>++buc</code></a>
1691−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#cab' title="Parse _ (cab)"><code>++cab</code></a>
1692−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#cen' title="Parse % (cen)"><code>++cen</code></a>
1693−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#col' title="Parse : (col)"><code>++col</code></a>
1694−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#com' title="Parse , (comma)"><code>++com</code></a>
1695−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#doq' title="Parse double quote"><code>++doq</code></a>
1696−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#dot' title="Parse period"><code>++dot</code></a>
1697−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#fas' title="Parse / (fas)"><code>++fas</code></a>
1698−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#gal' title="Parse < (gal)"><code>++gal</code></a>
1699−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#gar' title="Parse > (gar)"><code>++gar</code></a>
1700−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#hax' title="Parse # (hax)"><code>++hax</code></a>
1701−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#hep' title="Parse (hep)"><code>++hep</code></a>
1702−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#kel' title="Parse { (kel)"><code>++kel</code></a>
1703−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ker' title="Parse } (ker)"><code>++ker</code></a>
1704−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ket' title="Parse ^ (ket)"><code>++ket</code></a>
1705−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#lus' title="Parse + (lus)"><code>++lus</code></a>
1706−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pam' title="Parse & (pam)"><code>++pam</code></a>
1707−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pat' title="Parse @ (pat)"><code>++pat</code></a>
1708−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#pal' title="Parse ( (pal)"><code>++pal</code></a>
1709−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#par' title="Parse ) (par)"><code>++par</code></a>
1710−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sel' title="Parse [ (sel)"><code>++sel</code></a>
1711−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#mic' title="Parse ; (mic)"><code>++mic</code></a>
1712−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#ser' title="Parse ] (ser)"><code>++ser</code></a>
1713−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#sig' title="Parse ~ (sig)"><code>++sig</code></a>
1714−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#soq' title="Parse ' (soq)"><code>++soq</code></a>
1715−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tar' title="Parse * (tar)"><code>++tar</code></a>
1716−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tic' title="Parse ` (tic)"><code>++tic</code></a>
1717−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#tis' title="Parse = (tis)"><code>++tis</code></a>
1718−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#wut' title="Parse ? (wut)"><code>++wut</code></a>
1719−<a class="tooltip" href='/docs/hoon/reference/stdlib/4h/#zap' title="Parse ! (zap)"><code>++zap</code></a>
1687+[`++ace`](/docs/hoon/reference/stdlib/4h/#ace)
1688+[`++bar`](/docs/hoon/reference/stdlib/4h/#bar)
1689+[`++bas`](/docs/hoon/reference/stdlib/4h/#bas)
1690+[`++buc`](/docs/hoon/reference/stdlib/4h/#buc)
1691+[`++cab`](/docs/hoon/reference/stdlib/4h/#cab)
1692+[`++cen`](/docs/hoon/reference/stdlib/4h/#cen)
1693+[`++col`](/docs/hoon/reference/stdlib/4h/#col)
1694+[`++com`](/docs/hoon/reference/stdlib/4h/#com)
1695+[`++doq`](/docs/hoon/reference/stdlib/4h/#doq)
1696+[`++dot`](/docs/hoon/reference/stdlib/4h/#dot)
1697+[`++fas`](/docs/hoon/reference/stdlib/4h/#fas)
1698+[`++gal`](/docs/hoon/reference/stdlib/4h/#gal)
1699+[`++gar`](/docs/hoon/reference/stdlib/4h/#gar)
1700+[`++hax`](/docs/hoon/reference/stdlib/4h/#hax)
1701+[`++hep`](/docs/hoon/reference/stdlib/4h/#hep)
1702+[`++kel`](/docs/hoon/reference/stdlib/4h/#kel)
1703+[`++ker`](/docs/hoon/reference/stdlib/4h/#ker)
1704+[`++ket`](/docs/hoon/reference/stdlib/4h/#ket)
1705+[`++lus`](/docs/hoon/reference/stdlib/4h/#lus)
1706+[`++pam`](/docs/hoon/reference/stdlib/4h/#pam)
1707+[`++pat`](/docs/hoon/reference/stdlib/4h/#pat)
1708+[`++pal`](/docs/hoon/reference/stdlib/4h/#pal)
1709+[`++par`](/docs/hoon/reference/stdlib/4h/#par)
1710+[`++sel`](/docs/hoon/reference/stdlib/4h/#sel)
1711+[`++mic`](/docs/hoon/reference/stdlib/4h/#mic)
1712+[`++ser`](/docs/hoon/reference/stdlib/4h/#ser)
1713+[`++sig`](/docs/hoon/reference/stdlib/4h/#sig)
1714+[`++soq`](/docs/hoon/reference/stdlib/4h/#soq)
1715+[`++tar`](/docs/hoon/reference/stdlib/4h/#tar)
1716+[`++tic`](/docs/hoon/reference/stdlib/4h/#tic)
1717+[`++tis`](/docs/hoon/reference/stdlib/4h/#tis)
1718+[`++wut`](/docs/hoon/reference/stdlib/4h/#wut)
1719+[`++zap`](/docs/hoon/reference/stdlib/4h/#zap)
17201720
17211721### 4i: parsing (useful idioms)
17221722
1723−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#alf' title="Parse alphabetic characters"><code>++alf</code></a>
1724−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#aln' title="Parse alphanumeric characters"><code>++aln</code></a>
1725−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#alp' title="Parse alphanumeric characters and "><code>++alp</code></a>
1726−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#bet' title="Parse hep and lus axis syntax"><code>++bet</code></a>
1727−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#bin' title="Binary to atom"><code>++bin</code></a>
1728−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#but' title="Parse binary digit"><code>++but</code></a>
1729−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#cit' title="Octal digit"><code>++cit</code></a>
1730−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dem' title="Decimal to atom"><code>++dem</code></a>
1731−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dit' title="Decimal digit"><code>++dit</code></a>
1732−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dof' title="Hep & optional gap"><code>++dof</code></a>
1733−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dog' title="Optional gap"><code>++dog</code></a>
1734−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#doh' title="@p separator"><code>++doh</code></a>
1735−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#dun' title=" to ~"><code>++dun</code></a>
1736−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#duz' title="== to ~"><code>++duz</code></a>
1737−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gah' title="New line or ''"><code>++gah</code></a>
1738−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gap' title="Plural whitespace"><code>++gap</code></a>
1739−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gaq' title="End of line"><code>++gaq</code></a>
1740−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gaw' title="Classic whitespace"><code>++gaw</code></a>
1741−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gay' title="Optional gap"><code>++gay</code></a>
1742−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gon' title="Parse long numbers"><code>++gon</code></a>
1743−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#gul' title="Axis syntax < or >"><code>++gul</code></a>
1744−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hex' title="Hexadecimal to atom"><code>++hex</code></a>
1745−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hig' title="Parse single uppercase letter"><code>++hig</code></a>
1746−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#hit' title="Parse single hexadecimal digit"><code>++hit</code></a>
1747−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#iny' title="Indentation block"><code>++iny</code></a>
1748−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#low' title="Parse lowercase letter"><code>++low</code></a>
1749−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#mes' title="Parse hexabyte"><code>++mes</code></a>
1750−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#nix' title="Parse letters and underscore"><code>++nix</code></a>
1751−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#nud' title="Parse numeric character"><code>++nud</code></a>
1752−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#prn' title="Parse any printable character"><code>++prn</code></a>
1753−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qat' title="Parse chars in blockcord"><code>++qat</code></a>
1754−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qit' title="Parse character to cord atom"><code>++qit</code></a>
1755−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#qut' title="Parse cord"><code>++qut</code></a>
1756−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#soz' title="Parse triple singlequote"><code>++soz</code></a>
1757−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#sym' title="Term"><code>++sym</code></a>
1758−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#mixed-case-symbol' title="Mixed-case term"><code>++mixed-case-symbol</code></a>
1759−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#ven' title="Axis syntax parser"><code>++ven</code></a>
1760−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#vit' title="Parse base 64 digit"><code>++vit</code></a>
1761−<a class="tooltip" href='/docs/hoon/reference/stdlib/4i/#vul' title="Comments to null"><code>++vul</code></a>
1723+[`++alf`](/docs/hoon/reference/stdlib/4i/#alf)
1724+[`++aln`](/docs/hoon/reference/stdlib/4i/#aln)
1725+[`++alp`](/docs/hoon/reference/stdlib/4i/#alp)
1726+[`++bet`](/docs/hoon/reference/stdlib/4i/#bet)
1727+[`++bin`](/docs/hoon/reference/stdlib/4i/#bin)
1728+[`++but`](/docs/hoon/reference/stdlib/4i/#but)
1729+[`++cit`](/docs/hoon/reference/stdlib/4i/#cit)
1730+[`++dem`](/docs/hoon/reference/stdlib/4i/#dem)
1731+[`++dit`](/docs/hoon/reference/stdlib/4i/#dit)
1732+[`++dof`](/docs/hoon/reference/stdlib/4i/#dof)
1733+[`++dog`](/docs/hoon/reference/stdlib/4i/#dog)
1734+[`++doh`](/docs/hoon/reference/stdlib/4i/#doh)
1735+[`++dun`](/docs/hoon/reference/stdlib/4i/#dun)
1736+[`++duz`](/docs/hoon/reference/stdlib/4i/#duz)
1737+[`++gah`](/docs/hoon/reference/stdlib/4i/#gah)
1738+[`++gap`](/docs/hoon/reference/stdlib/4i/#gap)
1739+[`++gaq`](/docs/hoon/reference/stdlib/4i/#gaq)
1740+[`++gaw`](/docs/hoon/reference/stdlib/4i/#gaw)
1741+[`++gay`](/docs/hoon/reference/stdlib/4i/#gay)
1742+[`++gon`](/docs/hoon/reference/stdlib/4i/#gon)
1743+[`++gul`](/docs/hoon/reference/stdlib/4i/#gul)
1744+[`++hex`](/docs/hoon/reference/stdlib/4i/#hex)
1745+[`++hig`](/docs/hoon/reference/stdlib/4i/#hig)
1746+[`++hit`](/docs/hoon/reference/stdlib/4i/#hit)
1747+[`++iny`](/docs/hoon/reference/stdlib/4i/#iny)
1748+[`++low`](/docs/hoon/reference/stdlib/4i/#low)
1749+[`++mes`](/docs/hoon/reference/stdlib/4i/#mes)
1750+[`++nix`](/docs/hoon/reference/stdlib/4i/#nix)
1751+[`++nud`](/docs/hoon/reference/stdlib/4i/#nud)
1752+[`++prn`](/docs/hoon/reference/stdlib/4i/#prn)
1753+[`++qat`](/docs/hoon/reference/stdlib/4i/#qat)
1754+[`++qit`](/docs/hoon/reference/stdlib/4i/#qit)
1755+[`++qut`](/docs/hoon/reference/stdlib/4i/#qut)
1756+[`++soz`](/docs/hoon/reference/stdlib/4i/#soz)
1757+[`++sym`](/docs/hoon/reference/stdlib/4i/#sym)
1758+[`++mixed-case-symbol`](/docs/hoon/reference/stdlib/4i/#mixed-case-symbol)
1759+[`++ven`](/docs/hoon/reference/stdlib/4i/#ven)
1760+[`++vit`](/docs/hoon/reference/stdlib/4i/#vit)
1761+[`++vul`](/docs/hoon/reference/stdlib/4i/#vul)
17621762
17631763### 4j: parsing (bases and base digits)
17641764
1765−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ab' title="Primitive parser engine"><code>++ab</code></a>
1766−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bixab' title="Parse hex pair"><code>++bix:ab</code></a>
1767−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#femab' title="Parse base58check char"><code>++fem:ab</code></a>
1768−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hafab' title="Parse non-doz phonetic pair"><code>++haf:ab</code></a>
1769−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hefab' title="Parse non-dozzod phonetic pair"><code>++hef:ab</code></a>
1770−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hifab' title="Parse phonetic pair"><code>++hif:ab</code></a>
1771−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hofab' title="Parse 2-4 @q phonetic pair"><code>++hof:ab</code></a>
1772−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hufab' title="Parse 1-4 @q phonetic pairs"><code>++huf:ab</code></a>
1773−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hyfab' title="Parse four @q phonetic pairs"><code>++hyf:ab</code></a>
1774−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pevab' title="Parse 1-5 @uv base-32 chars"><code>++pev:ab</code></a>
1775−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pewab' title="Parse <= 5 in base 64"><code>++pew:ab</code></a>
1776−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#pivab' title="Parse 5 @uv base-32 chars"><code>++piv:ab</code></a>
1777−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#piwab' title="Parse 5 @uw base-64 chars"><code>++piw:ab</code></a>
1778−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qebab' title="Parse 1-4 binary digits"><code>++qeb:ab</code></a>
1779−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qexab' title="Parse 1-4 hex digits"><code>++qex:ab</code></a>
1780−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qibab' title="Parse 4 binary digits"><code>++qib:ab</code></a>
1781−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#qixab' title="Parse 4 hexadecimal digits"><code>++qix:ab</code></a>
1782−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sebab' title="Parse 1"><code>++seb:ab</code></a>
1783−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sedab' title="Parse nonzero decimal digit"><code>++sed:ab</code></a>
1784−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sevab' title="Parse nonzero base 32 digit"><code>++sev:ab</code></a>
1785−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sewab' title="Parse nonzero base 64 digit"><code>++sew:ab</code></a>
1786−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sexab' title="Parse nonzero hexadecimal digit"><code>++sex:ab</code></a>
1787−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sibab' title="Parse binary digit"><code>++sib:ab</code></a>
1788−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sidab' title="Parse decimal digit"><code>++sid:ab</code></a>
1789−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sivab' title="Parse a base 32 digit"><code>++siv:ab</code></a>
1790−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#siwab' title="Parse a base 64 digit"><code>++siw:ab</code></a>
1791−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sixab' title="Parse a hexadecimal digit"><code>++six:ab</code></a>
1792−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sovab' title="Parse @uv base-32 letter"><code>++sov:ab</code></a>
1793−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#sowab' title="Parse @uw base-64 letter/symbol"><code>++sow:ab</code></a>
1794−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#soxab' title="Parse hexadecimal letter"><code>++sox:ab</code></a>
1795−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tedab' title="Parse 1-999 decimal"><code>++ted:ab</code></a>
1796−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tepab' title="Parse non-doz leading phonetic byte"><code>++tep:ab</code></a>
1797−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tidab' title="Parse 3 decimal digits"><code>++tid:ab</code></a>
1798−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tilab' title="Parse 3 lowercase letters"><code>++til:ab</code></a>
1799−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tipab' title="Leading phonetic byte"><code>++tip:ab</code></a>
1800−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#tiqab' title="Trailing phonetic syllable"><code>++tiq:ab</code></a>
1801−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ursab' title="Parse knot characters"><code>++urs:ab</code></a>
1802−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#urtab' title="Parse knot without underscores"><code>++urt:ab</code></a>
1803−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#voyab' title="Parse bas, soq, or bix"><code>++voy:ab</code></a>
1804−
1805−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ag' title="Toplevel atom parser engine"><code>++ag</code></a>
1806−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#apeag' title="Parse 0 or rule"><code>++ape:ag</code></a>
1807−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bayag' title="Parses binary number"><code>++bay:ag</code></a>
1808−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#bipag' title="Parse IPv6"><code>++bip:ag</code></a>
1809−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#demag' title="Parse decmal with dots"><code>++dem:ag</code></a>
1810−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dimag' title="Parse decimal number"><code>++dim:ag</code></a>
1811−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dumag' title="Parse decimal with leading zero"><code>++dum:ag</code></a>
1812−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#fedag' title="Parse @p"><code>++fed:ag</code></a>
1813−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#feqag' title="Parse @q phonetic base"><code>++feq:ag</code></a>
1814−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#fimag' title="Parse base58check"><code>++fim:ag</code></a>
1815−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#hexag' title="Parse hexadecimal number"><code>++hex:ag</code></a>
1816−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#lipag' title="Parse IPv4 address"><code>++lip:ag</code></a>
1817−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#motag' title="Parse numerical month"><code>++mot:ag</code></a>
1818−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#vizag' title="Parse base 32 digit with dot separators"><code>++viz:ag</code></a>
1819−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#vumag' title="Parse base 32 string"><code>++vum:ag</code></a>
1820−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#wizag' title="Parse base 64 number"><code>++wiz:ag</code></a>
1821−
1822−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#mu' title="Core used to scramble 16bit atoms"><code>++mu</code></a>
1823−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zagmu' title="Add bottom into top"><code>++zag:mu</code></a>
1824−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zigmu' title="Subtract bottom from top"><code>++zig:mu</code></a>
1825−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#zugmu' title="Concatenate into atom"><code>++zug:mu</code></a>
1826−
1827−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#ne' title="Digit rendering engine"><code>++ne</code></a>
1828−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#cne' title="Render base58check"><code>++c:ne</code></a>
1829−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#dne' title="Render decimal"><code>++d:ne</code></a>
1830−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#vne' title="Render base 32"><code>++v:ne</code></a>
1831−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#wne' title="Render base 64 digit"><code>++w:ne</code></a>
1832−<a class="tooltip" href='/docs/hoon/reference/stdlib/4j/#xne' title="Render hexadecimal digit as atom of ASCII byte value"><code>++x:ne</code></a>
1765+[`++ab`](/docs/hoon/reference/stdlib/4j/#ab)
1766+[`++bix:ab`](/docs/hoon/reference/stdlib/4j/#bixab)
1767+[`++fem:ab`](/docs/hoon/reference/stdlib/4j/#femab)
1768+[`++haf:ab`](/docs/hoon/reference/stdlib/4j/#hafab)
1769+[`++hef:ab`](/docs/hoon/reference/stdlib/4j/#hefab)
1770+[`++hif:ab`](/docs/hoon/reference/stdlib/4j/#hifab)
1771+[`++hof:ab`](/docs/hoon/reference/stdlib/4j/#hofab)
1772+[`++huf:ab`](/docs/hoon/reference/stdlib/4j/#hufab)
1773+[`++hyf:ab`](/docs/hoon/reference/stdlib/4j/#hyfab)
1774+[`++pev:ab`](/docs/hoon/reference/stdlib/4j/#pevab)
1775+[`++pew:ab`](/docs/hoon/reference/stdlib/4j/#pewab)
1776+[`++piv:ab`](/docs/hoon/reference/stdlib/4j/#pivab)
1777+[`++piw:ab`](/docs/hoon/reference/stdlib/4j/#piwab)
1778+[`++qeb:ab`](/docs/hoon/reference/stdlib/4j/#qebab)
1779+[`++qex:ab`](/docs/hoon/reference/stdlib/4j/#qexab)
1780+[`++qib:ab`](/docs/hoon/reference/stdlib/4j/#qibab)
1781+[`++qix:ab`](/docs/hoon/reference/stdlib/4j/#qixab)
1782+[`++seb:ab`](/docs/hoon/reference/stdlib/4j/#sebab)
1783+[`++sed:ab`](/docs/hoon/reference/stdlib/4j/#sedab)
1784+[`++sev:ab`](/docs/hoon/reference/stdlib/4j/#sevab)
1785+[`++sew:ab`](/docs/hoon/reference/stdlib/4j/#sewab)
1786+[`++sex:ab`](/docs/hoon/reference/stdlib/4j/#sexab)
1787+[`++sib:ab`](/docs/hoon/reference/stdlib/4j/#sibab)
1788+[`++sid:ab`](/docs/hoon/reference/stdlib/4j/#sidab)
1789+[`++siv:ab`](/docs/hoon/reference/stdlib/4j/#sivab)
1790+[`++siw:ab`](/docs/hoon/reference/stdlib/4j/#siwab)
1791+[`++six:ab`](/docs/hoon/reference/stdlib/4j/#sixab)
1792+[`++sov:ab`](/docs/hoon/reference/stdlib/4j/#sovab)
1793+[`++sow:ab`](/docs/hoon/reference/stdlib/4j/#sowab)
1794+[`++sox:ab`](/docs/hoon/reference/stdlib/4j/#soxab)
1795+[`++ted:ab`](/docs/hoon/reference/stdlib/4j/#tedab)
1796+[`++tep:ab`](/docs/hoon/reference/stdlib/4j/#tepab)
1797+[`++tid:ab`](/docs/hoon/reference/stdlib/4j/#tidab)
1798+[`++til:ab`](/docs/hoon/reference/stdlib/4j/#tilab)
1799+[`++tip:ab`](/docs/hoon/reference/stdlib/4j/#tipab)
1800+[`++tiq:ab`](/docs/hoon/reference/stdlib/4j/#tiqab)
1801+[`++urs:ab`](/docs/hoon/reference/stdlib/4j/#ursab)
1802+[`++urt:ab`](/docs/hoon/reference/stdlib/4j/#urtab)
1803+[`++voy:ab`](/docs/hoon/reference/stdlib/4j/#voyab)
1804+
1805+[`++ag`](/docs/hoon/reference/stdlib/4j/#ag)
1806+[`++ape:ag`](/docs/hoon/reference/stdlib/4j/#apeag)
1807+[`++bay:ag`](/docs/hoon/reference/stdlib/4j/#bayag)
1808+[`++bip:ag`](/docs/hoon/reference/stdlib/4j/#bipag)
1809+[`++dem:ag`](/docs/hoon/reference/stdlib/4j/#demag)
1810+[`++dim:ag`](/docs/hoon/reference/stdlib/4j/#dimag)
1811+[`++dum:ag`](/docs/hoon/reference/stdlib/4j/#dumag)
1812+[`++fed:ag`](/docs/hoon/reference/stdlib/4j/#fedag)
1813+[`++feq:ag`](/docs/hoon/reference/stdlib/4j/#feqag)
1814+[`++fim:ag`](/docs/hoon/reference/stdlib/4j/#fimag)
1815+[`++hex:ag`](/docs/hoon/reference/stdlib/4j/#hexag)
1816+[`++lip:ag`](/docs/hoon/reference/stdlib/4j/#lipag)
1817+[`++mot:ag`](/docs/hoon/reference/stdlib/4j/#motag)
1818+[`++viz:ag`](/docs/hoon/reference/stdlib/4j/#vizag)
1819+[`++vum:ag`](/docs/hoon/reference/stdlib/4j/#vumag)
1820+[`++wiz:ag`](/docs/hoon/reference/stdlib/4j/#wizag)
1821+
1822+[`++mu`](/docs/hoon/reference/stdlib/4j/#mu)
1823+[`++zag:mu`](/docs/hoon/reference/stdlib/4j/#zagmu)
1824+[`++zig:mu`](/docs/hoon/reference/stdlib/4j/#zigmu)
1825+[`++zug:mu`](/docs/hoon/reference/stdlib/4j/#zugmu)
1826+
1827+[`++ne`](/docs/hoon/reference/stdlib/4j/#ne)
1828+[`++c:ne`](/docs/hoon/reference/stdlib/4j/#cne)
1829+[`++d:ne`](/docs/hoon/reference/stdlib/4j/#dne)
1830+[`++v:ne`](/docs/hoon/reference/stdlib/4j/#vne)
1831+[`++w:ne`](/docs/hoon/reference/stdlib/4j/#wne)
1832+[`++x:ne`](/docs/hoon/reference/stdlib/4j/#xne)
18331833
18341834### 4k: parsing (atom printing)
18351835
1836−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#co' title="Literal rendering engine"><code>++co</code></a>
1837−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rearco' title="Prepend and render atom as tape"><code>++rear:co</code></a>
1838−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rendco' title="Render coin lot as tape"><code>++rend:co</code></a>
1839−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#rentco' title="Render coin as knot"><code>++rent:co</code></a>
1840−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#a-coco' title="Render decimal"><code>++a-co:co</code></a>
1841−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#c-coco' title="Render base58check"><code>++c-co:co</code></a>
1842−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#d-coco' title="Render decimal with min length"><code>++d-co:co</code></a>
1843−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#r-coco' title="Render floating point"><code>++r-co:co</code></a>
1844−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#s-coco' title="Render hex list"><code>++s-co:co</code></a>
1845−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#v-coco' title="Render base-32 with minimum length"><code>++v-co:co</code></a>
1846−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#w-coco' title="Render base-64 with minimum length"><code>++w-co:co</code></a>
1847−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#x-coco' title="Render hex with minimum length"><code>++x-co:co</code></a>
1848−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#y-coco' title="Render decimal with at least two digits"><code>++y-co:co</code></a>
1849−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#z-coco' title="Render '0x'-prefixed hex"><code>++z-co:co</code></a>
1850−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#em-coco' title="Render in numeric base"><code>++em-co:co</code></a>
1851−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#ed-coco' title="Format with decimal place"><code>++ed-co:co</code></a>
1852−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#ox-coco' title="Format dot-separated digits in numeric base"><code>++ox-co:co</code></a>
1853−<a class="tooltip" href='/docs/hoon/reference/stdlib/4k/#ro-coco' title="Format dot-prefixed bloqs in numeric base"><code>++ro-co:co</code></a>
1836+[`++co`](/docs/hoon/reference/stdlib/4k/#co)
1837+[`++rear:co`](/docs/hoon/reference/stdlib/4k/#rearco)
1838+[`++rend:co`](/docs/hoon/reference/stdlib/4k/#rendco)
1839+[`++rent:co`](/docs/hoon/reference/stdlib/4k/#rentco)
1840+[`++a-co:co`](/docs/hoon/reference/stdlib/4k/#a-coco)
1841+[`++c-co:co`](/docs/hoon/reference/stdlib/4k/#c-coco)
1842+[`++d-co:co`](/docs/hoon/reference/stdlib/4k/#d-coco)
1843+[`++r-co:co`](/docs/hoon/reference/stdlib/4k/#r-coco)
1844+[`++s-co:co`](/docs/hoon/reference/stdlib/4k/#s-coco)
1845+[`++v-co:co`](/docs/hoon/reference/stdlib/4k/#v-coco)
1846+[`++w-co:co`](/docs/hoon/reference/stdlib/4k/#w-coco)
1847+[`++x-co:co`](/docs/hoon/reference/stdlib/4k/#x-coco)
1848+[`++y-co:co`](/docs/hoon/reference/stdlib/4k/#y-coco)
1849+[`++z-co:co`](/docs/hoon/reference/stdlib/4k/#z-coco)
1850+[`++em-co:co`](/docs/hoon/reference/stdlib/4k/#em-coco)
1851+[`++ed-co:co`](/docs/hoon/reference/stdlib/4k/#ed-coco)
1852+[`++ox-co:co`](/docs/hoon/reference/stdlib/4k/#ox-coco)
1853+[`++ro-co:co`](/docs/hoon/reference/stdlib/4k/#ro-coco)
18541854
18551855### 4l: parsing (atom parsing)
18561856
1857−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#so' title="Coin parser engine"><code>++so</code></a>
1858−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#biskso' title="Parse auraatom pair"><code>++bisk:so</code></a>
1859−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#crubso' title="Parse @da, @dr, @p, @t"><code>++crub:so</code></a>
1860−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#nuckso' title="Toplevel coin parser"><code>++nuck:so</code></a>
1861−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#nuskso' title="Parse coin literal with escapes"><code>++nusk:so</code></a>
1862−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#perdso' title="Parsing coin literal without prefixes"><code>++perd:so</code></a>
1863−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#roylso' title="Parse dime float"><code>++royl:so</code></a>
1864−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-cellso' title="Convert rn to dn"><code>++royl-cell:so</code></a>
1865−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-rhso' title="Parse half-precision float"><code>++royl-rh:so</code></a>
1866−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-rqso' title="Parse quad-precision float"><code>++royl-rq:so</code></a>
1867−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-rdso' title="Parse double-precision float"><code>++royl-rd:so</code></a>
1868−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-rsso' title="Parse single-precision float"><code>++royl-rs:so</code></a>
1869−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#royl-rnso' title="Parse real number"><code>++royl-rn:so</code></a>
1870−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#tashso' title="Parse signed dime"><code>++tash:so</code></a>
1871−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#twidso' title="Parse coins without ~ prefix"><code>++twid:so</code></a>
1872−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#whenso' title="Parse date"><code>++when:so</code></a>
1873−<a class="tooltip" href='/docs/hoon/reference/stdlib/4l/#zustso' title="Parse dimes from @i, @f, @r or @q"><code>++zust:so</code></a>
1857+[`++so`](/docs/hoon/reference/stdlib/4l/#so)
1858+[`++bisk:so`](/docs/hoon/reference/stdlib/4l/#biskso)
1859+[`++crub:so`](/docs/hoon/reference/stdlib/4l/#crubso)
1860+[`++nuck:so`](/docs/hoon/reference/stdlib/4l/#nuckso)
1861+[`++nusk:so`](/docs/hoon/reference/stdlib/4l/#nuskso)
1862+[`++perd:so`](/docs/hoon/reference/stdlib/4l/#perdso)
1863+[`++royl:so`](/docs/hoon/reference/stdlib/4l/#roylso)
1864+[`++royl-cell:so`](/docs/hoon/reference/stdlib/4l/#royl-cellso)
1865+[`++royl-rh:so`](/docs/hoon/reference/stdlib/4l/#royl-rhso)
1866+[`++royl-rq:so`](/docs/hoon/reference/stdlib/4l/#royl-rqso)
1867+[`++royl-rd:so`](/docs/hoon/reference/stdlib/4l/#royl-rdso)
1868+[`++royl-rs:so`](/docs/hoon/reference/stdlib/4l/#royl-rsso)
1869+[`++royl-rn:so`](/docs/hoon/reference/stdlib/4l/#royl-rnso)
1870+[`++tash:so`](/docs/hoon/reference/stdlib/4l/#tashso)
1871+[`++twid:so`](/docs/hoon/reference/stdlib/4l/#twidso)
1872+[`++when:so`](/docs/hoon/reference/stdlib/4l/#whenso)
1873+[`++zust:so`](/docs/hoon/reference/stdlib/4l/#zustso)
18741874
18751875### 4m: parsing (formatting functions)
18761876
1877−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#scot' title="Render dime as cord"><code>++scot</code></a>
1878−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#scow' title="Render dime as tape"><code>++scow</code></a>
1879−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slat' title="Curried slaw"><code>++slat</code></a>
1880−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slav' title="Demand: parse cord with input aura"><code>++slav</code></a>
1881−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slaw' title="Parse cord to input aura"><code>++slaw</code></a>
1882−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#slay' title="Parse cord to coin"><code>++slay</code></a>
1883−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#smyt' title="Render path as tank"><code>++smyt</code></a>
1884−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#spat' title="Render path as cord"><code>++spat</code></a>
1885−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#spud' title="Render path as tape"><code>++spud</code></a>
1886−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#stab' title="Parse cord to path"><code>++stab</code></a>
1887−<a class="tooltip" href='/docs/hoon/reference/stdlib/4m/#stap' title="Path parser"><code>++stap</code></a>
1877+[`++scot`](/docs/hoon/reference/stdlib/4m/#scot)
1878+[`++scow`](/docs/hoon/reference/stdlib/4m/#scow)
1879+[`++slat`](/docs/hoon/reference/stdlib/4m/#slat)
1880+[`++slav`](/docs/hoon/reference/stdlib/4m/#slav)
1881+[`++slaw`](/docs/hoon/reference/stdlib/4m/#slaw)
1882+[`++slay`](/docs/hoon/reference/stdlib/4m/#slay)
1883+[`++smyt`](/docs/hoon/reference/stdlib/4m/#smyt)
1884+[`++spat`](/docs/hoon/reference/stdlib/4m/#spat)
1885+[`++spud`](/docs/hoon/reference/stdlib/4m/#spud)
1886+[`++stab`](/docs/hoon/reference/stdlib/4m/#stab)
1887+[`++stap`](/docs/hoon/reference/stdlib/4m/#stap)
18881888
18891889### 4n: parsing (virtualization)
18901890
1891−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mack' title="Nock subject to unit"><code>++mack</code></a>
1892−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mink' title="Mock (virtual Nock) interpreter"><code>++mink</code></a>
1893−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mock' title="Compute formula on subject with hint"><code>++mock</code></a>
1894−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mook' title="Intelligently render crash annotation"><code>++mook</code></a>
1895−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mole' title="Typed unitary virtual"><code>++mole</code></a>
1896−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mong' title="Slam gate with sample"><code>++mong</code></a>
1897−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mule' title="Typed virtual"><code>++mule</code></a>
1898−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mure' title="Untyped unitary virtual"><code>++mure</code></a>
1899−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#mute' title="Untyped virtual"><code>++mute</code></a>
1900−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#slum' title="Slam a gate on a sample using raw nock, untyped"><code>++slum</code></a>
1901−<a class="tooltip" href='/docs/hoon/reference/stdlib/4n/#soft' title="Virtual clam"><code>++soft</code></a>
1891+[`++mack`](/docs/hoon/reference/stdlib/4n/#mack)
1892+[`++mink`](/docs/hoon/reference/stdlib/4n/#mink)
1893+[`++mock`](/docs/hoon/reference/stdlib/4n/#mock)
1894+[`++mook`](/docs/hoon/reference/stdlib/4n/#mook)
1895+[`++mole`](/docs/hoon/reference/stdlib/4n/#mole)
1896+[`++mong`](/docs/hoon/reference/stdlib/4n/#mong)
1897+[`++mule`](/docs/hoon/reference/stdlib/4n/#mule)
1898+[`++mure`](/docs/hoon/reference/stdlib/4n/#mure)
1899+[`++mute`](/docs/hoon/reference/stdlib/4n/#mute)
1900+[`++slum`](/docs/hoon/reference/stdlib/4n/#slum)
1901+[`++soft`](/docs/hoon/reference/stdlib/4n/#soft)
19021902
19031903### 4o: parsing (molds)
19041904
1905−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#abel' title="Original sin: type"><code>+$abel</code></a>
1906−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#alas' title="Alias list"><code>+$alas</code></a>
1907−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#atom' title="Just an atom"><code>+$atom</code></a>
1908−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#aura' title="'Type' of atom"><code>+$aura</code></a>
1909−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#base' title="Base type"><code>+$base</code></a>
1910−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#woof' title="Simple embed"><code>+$woof</code></a>
1911−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#chum' title="Jet hint information"><code>+$chum</code></a>
1912−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#coil' title="Tuple of core information"><code>+$coil</code></a>
1913−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#garb' title="Core metadata"><code>+$garb</code></a>
1914−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#poly' title="Polarity"><code>+$poly</code></a>
1915−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#foot' title="Cases of arms by variance model"><code>+$foot</code></a>
1916−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#link' title="Lexical segment"><code>+$link</code></a>
1917−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#crib' title="Summary and details"><code>+$crib</code></a>
1918−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#help' title="Documentation"><code>+$help</code></a>
1919−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#limb' title="Reference into subject by name/axis"><code>+$limb</code></a>
1920−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#null' title="Null, nil, etc"><code>+$null</code></a>
1921−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#onyx' title="Arm activation"><code>+$onyx</code></a>
1922−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#opal' title="Wing match"><code>+$opal</code></a>
1923−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#pica' title="Prose or code"><code>+$pica</code></a>
1924−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#palo' title="Wing trace, match"><code>+$palo</code></a>
1925−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#plat' title="%hoon, %type, %nock or %tank"><code>+$plat</code></a>
1926−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#pock' title="Changes"><code>+$pock</code></a>
1927−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#port' title="Successful wing match"><code>+$port</code></a>
1928−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#spec' title="Structure definition AST"><code>+$spec</code></a>
1929−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tent' title="Model builder"><code>+$tent</code></a>
1930−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tiki' title="Test case"><code>+$tiki</code></a>
1931−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#skin' title="Texture"><code>+$skin</code></a>
1932−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tome' title="Core chapter"><code>+$tome</code></a>
1933−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tope' title="Topographic type"><code>+$tope</code></a>
1934−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#hoot' title="Hoon tools"><code>++hoot</code></a>
1935−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#beerhoot' title="Simple embed"><code>+$beer:hoot</code></a>
1936−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#manehoot' title="XML name+space"><code>+$mane:hoot</code></a>
1937−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#manxhoot' title="Dynamic XML node"><code>+$manx:hoot</code></a>
1938−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#marlhoot' title="Dynamic XML nodes"><code>+$marl:hoot</code></a>
1939−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#marthoot' title="Dynamic XML attributes"><code>+$mart:hoot</code></a>
1940−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#marxhoot' title="Dynamic XML tag"><code>+$marx:hoot</code></a>
1941−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#marehoot' title="Node or nodes"><code>+$mare:hoot</code></a>
1942−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#maruhoot' title="Interpolation or nodes"><code>+$maru:hoot</code></a>
1943−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tunahoot' title="Maybe interpolation"><code>+$tuna:hoot</code></a>
1944−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#hoon' title="Hoon AST"><code>+$hoon</code></a>
1945−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tyre' title="List, term hoon"><code>+$tyre</code></a>
1946−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tyke' title="List of 'maybe' hoons"><code>+$tyke</code></a>
1947−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#nock' title="Virtual nock"><code>+$nock</code></a>
1948−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#note' title="Type annotation"><code>+$note</code></a>
1949−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#type' title="Hoon type type"><code>+$type</code></a>
1950−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tony' title="$tone done right"><code>+$tony</code></a>
1951−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tine' title="Partial noun"><code>+$tine</code></a>
1952−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tool' title="Type decoration"><code>+$tool</code></a>
1953−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#tune' title="Complex"><code>+$tune</code></a>
1954−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#typo' title="Old type"><code>+$typo</code></a>
1955−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vase' title="Type-value pair"><code>+$vase</code></a>
1956−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vise' title="Old vase"><code>+$vise</code></a>
1957−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vial' title="co/contra/in/bi"><code>+$vial</code></a>
1958−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vair' title="Core variance"><code>+$vair</code></a>
1959−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#vein' title="Search trace"><code>+$vein</code></a>
1960−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#sect' title="Paragraph"><code>+$sect</code></a>
1961−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#whit' title="Documentation"><code>+$whit</code></a>
1962−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#what' title="Help slogan/section"><code>+$what</code></a>
1963−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#wing' title="Search path"><code>+$wing</code></a>
1964−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#block' title="Abstract identity of resource awaited"><code>+$block</code></a>
1965−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#result' title="Internal interpreter result"><code>+$result</code></a>
1966−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#thunk' title="Fragment constructor"><code>+$thunk</code></a>
1967−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#doss' title="Profiling"><code>+$doss</code></a>
1968−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#moan' title="Profiling: sample metric"><code>+$moan</code></a>
1969−<a class="tooltip" href='/docs/hoon/reference/stdlib/4o/#hump' title="Profiling"><code>+$hump</code></a>
1905+[`+$abel`](/docs/hoon/reference/stdlib/4o/#abel)
1906+[`+$alas`](/docs/hoon/reference/stdlib/4o/#alas)
1907+[`+$atom`](/docs/hoon/reference/stdlib/4o/#atom)
1908+[`+$aura`](/docs/hoon/reference/stdlib/4o/#aura)
1909+[`+$base`](/docs/hoon/reference/stdlib/4o/#base)
1910+[`+$woof`](/docs/hoon/reference/stdlib/4o/#woof)
1911+[`+$chum`](/docs/hoon/reference/stdlib/4o/#chum)
1912+[`+$coil`](/docs/hoon/reference/stdlib/4o/#coil)
1913+[`+$garb`](/docs/hoon/reference/stdlib/4o/#garb)
1914+[`+$poly`](/docs/hoon/reference/stdlib/4o/#poly)
1915+[`+$foot`](/docs/hoon/reference/stdlib/4o/#foot)
1916+[`+$link`](/docs/hoon/reference/stdlib/4o/#link)
1917+[`+$crib`](/docs/hoon/reference/stdlib/4o/#crib)
1918+[`+$help`](/docs/hoon/reference/stdlib/4o/#help)
1919+[`+$limb`](/docs/hoon/reference/stdlib/4o/#limb)
1920+[`+$null`](/docs/hoon/reference/stdlib/4o/#null)
1921+[`+$onyx`](/docs/hoon/reference/stdlib/4o/#onyx)
1922+[`+$opal`](/docs/hoon/reference/stdlib/4o/#opal)
1923+[`+$pica`](/docs/hoon/reference/stdlib/4o/#pica)
1924+[`+$palo`](/docs/hoon/reference/stdlib/4o/#palo)
1925+[`+$plat`](/docs/hoon/reference/stdlib/4o/#plat)
1926+[`+$pock`](/docs/hoon/reference/stdlib/4o/#pock)
1927+[`+$port`](/docs/hoon/reference/stdlib/4o/#port)
1928+[`+$spec`](/docs/hoon/reference/stdlib/4o/#spec)
1929+[`+$tent`](/docs/hoon/reference/stdlib/4o/#tent)
1930+[`+$tiki`](/docs/hoon/reference/stdlib/4o/#tiki)
1931+[`+$skin`](/docs/hoon/reference/stdlib/4o/#skin)
1932+[`+$tome`](/docs/hoon/reference/stdlib/4o/#tome)
1933+[`+$tope`](/docs/hoon/reference/stdlib/4o/#tope)
1934+[`++hoot`](/docs/hoon/reference/stdlib/4o/#hoot)
1935+[`+$beer:hoot`](/docs/hoon/reference/stdlib/4o/#beerhoot)
1936+[`+$mane:hoot`](/docs/hoon/reference/stdlib/4o/#manehoot)
1937+[`+$manx:hoot`](/docs/hoon/reference/stdlib/4o/#manxhoot)
1938+[`+$marl:hoot`](/docs/hoon/reference/stdlib/4o/#marlhoot)
1939+[`+$mart:hoot`](/docs/hoon/reference/stdlib/4o/#marthoot)
1940+[`+$marx:hoot`](/docs/hoon/reference/stdlib/4o/#marxhoot)
1941+[`+$mare:hoot`](/docs/hoon/reference/stdlib/4o/#marehoot)
1942+[`+$maru:hoot`](/docs/hoon/reference/stdlib/4o/#maruhoot)
1943+[`+$tuna:hoot`](/docs/hoon/reference/stdlib/4o/#tunahoot)
1944+[`+$hoon`](/docs/hoon/reference/stdlib/4o/#hoon)
1945+[`+$tyre`](/docs/hoon/reference/stdlib/4o/#tyre)
1946+[`+$tyke`](/docs/hoon/reference/stdlib/4o/#tyke)
1947+[`+$nock`](/docs/hoon/reference/stdlib/4o/#nock)
1948+[`+$note`](/docs/hoon/reference/stdlib/4o/#note)
1949+[`+$type`](/docs/hoon/reference/stdlib/4o/#type)
1950+[`+$tony`](/docs/hoon/reference/stdlib/4o/#tony)
1951+[`+$tine`](/docs/hoon/reference/stdlib/4o/#tine)
1952+[`+$tool`](/docs/hoon/reference/stdlib/4o/#tool)
1953+[`+$tune`](/docs/hoon/reference/stdlib/4o/#tune)
1954+[`+$typo`](/docs/hoon/reference/stdlib/4o/#typo)
1955+[`+$vase`](/docs/hoon/reference/stdlib/4o/#vase)
1956+[`+$vise`](/docs/hoon/reference/stdlib/4o/#vise)
1957+[`+$vial`](/docs/hoon/reference/stdlib/4o/#vial)
1958+[`+$vair`](/docs/hoon/reference/stdlib/4o/#vair)
1959+[`+$vein`](/docs/hoon/reference/stdlib/4o/#vein)
1960+[`+$sect`](/docs/hoon/reference/stdlib/4o/#sect)
1961+[`+$whit`](/docs/hoon/reference/stdlib/4o/#whit)
1962+[`+$what`](/docs/hoon/reference/stdlib/4o/#what)
1963+[`+$wing`](/docs/hoon/reference/stdlib/4o/#wing)
1964+[`+$block`](/docs/hoon/reference/stdlib/4o/#block)
1965+[`+$result`](/docs/hoon/reference/stdlib/4o/#result)
1966+[`+$thunk`](/docs/hoon/reference/stdlib/4o/#thunk)
1967+[`+$doss`](/docs/hoon/reference/stdlib/4o/#doss)
1968+[`+$moan`](/docs/hoon/reference/stdlib/4o/#moan)
1969+[`+$hump`](/docs/hoon/reference/stdlib/4o/#hump)
19701970
19711971### 5a: compiler utilities
19721972
1973−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#musk' title="Nock with block set (compiler utility)"><code>++musk</code></a>
1974−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#bool' title="Make loobean (compiler utility)"><code>++bool</code></a>
1975−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#cell' title="Make %cell type (compiler utility)"><code>++cell</code></a>
1976−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#core' title="Make %core type (compiler utility)"><code>++core</code></a>
1977−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#hint' title="Make %hint type (compiler utility)"><code>++hint</code></a>
1978−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#face' title="Make %face type (compiler utility)"><code>++face</code></a>
1979−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#fork' title="Make %fork type (compiler utility)"><code>++fork</code></a>
1980−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#cove' title="Extract [0 *] axis (compiler utility)"><code>++cove</code></a>
1981−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#comb' title="Combine two formulas (compiler utility)"><code>++comb</code></a>
1982−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#cond' title="?: compile (compiler utility)"><code>++cond</code></a>
1983−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#cons' title="Make formula cell (compiler utility)"><code>++cons</code></a>
1984−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#fitz' title="Odor compatibility (compiler utility)"><code>++fitz</code></a>
1985−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#flan' title="Loobean & (compiler utility)"><code>++flan</code></a>
1986−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#flip' title="Loobean negation (compiler utility)"><code>++flip</code></a>
1987−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#flor' title="Loobean | (compiler utility)"><code>++flor</code></a>
1988−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#hike' title="Compiler utility"><code>++hike</code></a>
1989−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#jock' title="Compiler utility"><code>++jock</code></a>
1990−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#look' title="Compiler utility"><code>++look</code></a>
1991−<a class="tooltip" href='/docs/hoon/reference/stdlib/5a/#loot' title="Compiler utility"><code>++loot</code></a>
1973+[`++musk`](/docs/hoon/reference/stdlib/5a/#musk)
1974+[`++bool`](/docs/hoon/reference/stdlib/5a/#bool)
1975+[`++cell`](/docs/hoon/reference/stdlib/5a/#cell)
1976+[`++core`](/docs/hoon/reference/stdlib/5a/#core)
1977+[`++hint`](/docs/hoon/reference/stdlib/5a/#hint)
1978+[`++face`](/docs/hoon/reference/stdlib/5a/#face)
1979+[`++fork`](/docs/hoon/reference/stdlib/5a/#fork)
1980+[`++cove`](/docs/hoon/reference/stdlib/5a/#cove)
1981+[`++comb`](/docs/hoon/reference/stdlib/5a/#comb)
1982+[`++cond`](/docs/hoon/reference/stdlib/5a/#cond)
1983+[`++cons`](/docs/hoon/reference/stdlib/5a/#cons)
1984+[`++fitz`](/docs/hoon/reference/stdlib/5a/#fitz)
1985+[`++flan`](/docs/hoon/reference/stdlib/5a/#flan)
1986+[`++flip`](/docs/hoon/reference/stdlib/5a/#flip)
1987+[`++flor`](/docs/hoon/reference/stdlib/5a/#flor)
1988+[`++hike`](/docs/hoon/reference/stdlib/5a/#hike)
1989+[`++jock`](/docs/hoon/reference/stdlib/5a/#jock)
1990+[`++look`](/docs/hoon/reference/stdlib/5a/#look)
1991+[`++loot`](/docs/hoon/reference/stdlib/5a/#loot)
19921992
19931993### 5b: macro expansion
19941994
1995−<a class="tooltip" href='/docs/hoon/reference/stdlib/5b/#ah' title="Tiki engine"><code>++ah</code></a>
1996−<a class="tooltip" href='/docs/hoon/reference/stdlib/5b/#ax' title="Spec engine"><code>++ax</code></a>
1997−<a class="tooltip" href='/docs/hoon/reference/stdlib/5b/#ap' title="Hoon engine"><code>++ap</code></a>
1995+[`++ah`](/docs/hoon/reference/stdlib/5b/#ah)
1996+[`++ax`](/docs/hoon/reference/stdlib/5b/#ax)
1997+[`++ap`](/docs/hoon/reference/stdlib/5b/#ap)
19981998
19991999### 5c: compiler backend and prettyprinter
20002000
2001−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#ut' title="Hoon compiler backend"><code>++ut</code></a>
2002−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#us' title="Pretty-printer backend"><code>++us</code></a>
2003−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#cain' title="Tank pretty-print"><code>++cain</code></a>
2004−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#noah' title="Tape pretty-print"><code>++noah</code></a>
2005−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#onan' title="Vise to vase"><code>++onan</code></a>
2006−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#levi' title="Type nests or crash"><code>++levi</code></a>
2007−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#text' title="Tape pretty-print"><code>++text</code></a>
2008−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#seem' title="Promote typo"><code>++seem</code></a>
2009−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#seer' title="Promote vise"><code>++seer</code></a>
2010−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#sell' title="Pretty-print vase to a tank"><code>++sell</code></a>
2011−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#skol' title="Pretty-print type to tank"><code>++skol</code></a>
2012−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slam' title="Slam a gate"><code>++slam</code></a>
2013−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slab' title="Test if contains"><code>++slab</code></a>
2014−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slap' title="Untyped vase .*"><code>++slap</code></a>
2015−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slog' title="Deify printf"><code>++slog</code></a>
2016−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#mean' title="Crash and printf"><code>++mean</code></a>
2017−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#road' title="Evaluate trap"><code>++road</code></a>
2018−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slew' title="Get axis in vase"><code>++slew</code></a>
2019−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slim' title="Identical to ++seer"><code>++slim</code></a>
2020−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slit' title="Type of slam"><code>++slit</code></a>
2021−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slob' title="Superficial arm"><code>++slob</code></a>
2022−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#sloe' title="Get arms in core"><code>++sloe</code></a>
2023−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slop' title="Cons two vases"><code>++slop</code></a>
2024−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slot' title="Got axis in vase"><code>++slot</code></a>
2025−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#slym' title="Slam without sample-type"><code>++slym</code></a>
2026−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#sped' title="Reconstruct type"><code>++sped</code></a>
2027−<a class="tooltip" href='/docs/hoon/reference/stdlib/5c/#swat' title="Deferred ++slap"><code>++swat</code></a>
2001+[`++ut`](/docs/hoon/reference/stdlib/5c/#ut)
2002+[`++us`](/docs/hoon/reference/stdlib/5c/#us)
2003+[`++cain`](/docs/hoon/reference/stdlib/5c/#cain)
2004+[`++noah`](/docs/hoon/reference/stdlib/5c/#noah)
2005+[`++onan`](/docs/hoon/reference/stdlib/5c/#onan)
2006+[`++levi`](/docs/hoon/reference/stdlib/5c/#levi)
2007+[`++text`](/docs/hoon/reference/stdlib/5c/#text)
2008+[`++seem`](/docs/hoon/reference/stdlib/5c/#seem)
2009+[`++seer`](/docs/hoon/reference/stdlib/5c/#seer)
2010+[`++sell`](/docs/hoon/reference/stdlib/5c/#sell)
2011+[`++skol`](/docs/hoon/reference/stdlib/5c/#skol)
2012+[`++slam`](/docs/hoon/reference/stdlib/5c/#slam)
2013+[`++slab`](/docs/hoon/reference/stdlib/5c/#slab)
2014+[`++slap`](/docs/hoon/reference/stdlib/5c/#slap)
2015+[`++slog`](/docs/hoon/reference/stdlib/5c/#slog)
2016+[`++mean`](/docs/hoon/reference/stdlib/5c/#mean)
2017+[`++road`](/docs/hoon/reference/stdlib/5c/#road)
2018+[`++slew`](/docs/hoon/reference/stdlib/5c/#slew)
2019+[`++slim`](/docs/hoon/reference/stdlib/5c/#slim)
2020+[`++slit`](/docs/hoon/reference/stdlib/5c/#slit)
2021+[`++slob`](/docs/hoon/reference/stdlib/5c/#slob)
2022+[`++sloe`](/docs/hoon/reference/stdlib/5c/#sloe)
2023+[`++slop`](/docs/hoon/reference/stdlib/5c/#slop)
2024+[`++slot`](/docs/hoon/reference/stdlib/5c/#slot)
2025+[`++slym`](/docs/hoon/reference/stdlib/5c/#slym)
2026+[`++sped`](/docs/hoon/reference/stdlib/5c/#sped)
2027+[`++swat`](/docs/hoon/reference/stdlib/5c/#swat)
20282028
20292029### 5d: parser
20302030
2031−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#vang' title="Set ++vast parameters"><code>++vang</code></a>
2032−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#vast' title="Main parsing core"><code>++vast</code></a>
2033−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#vest' title="Parse hoon"><code>++vest</code></a>
2034−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#vice' title="Parse wide-form hoon"><code>++vice</code></a>
2035−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#make' title="Compile cord to nock"><code>++make</code></a>
2036−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#rain' title="Parse with % path"><code>++rain</code></a>
2037−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#ream' title="Parse cord to hoon"><code>++ream</code></a>
2038−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#reck' title="Parse hoon file"><code>++reck</code></a>
2039−<a class="tooltip" href='/docs/hoon/reference/stdlib/5d/#ride' title="End-to-end compiler"><code>++ride</code></a>
2031+[`++vang`](/docs/hoon/reference/stdlib/5d/#vang)
2032+[`++vast`](/docs/hoon/reference/stdlib/5d/#vast)
2033+[`++vest`](/docs/hoon/reference/stdlib/5d/#vest)
2034+[`++vice`](/docs/hoon/reference/stdlib/5d/#vice)
2035+[`++make`](/docs/hoon/reference/stdlib/5d/#make)
2036+[`++rain`](/docs/hoon/reference/stdlib/5d/#rain)
2037+[`++ream`](/docs/hoon/reference/stdlib/5d/#ream)
2038+[`++reck`](/docs/hoon/reference/stdlib/5d/#reck)
2039+[`++ride`](/docs/hoon/reference/stdlib/5d/#ride)
20402040
20412041### 5e: Molds and mold builders
20422042
2043−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#mane' title="XML name+space"><code>++mane</code></a>
2044−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#manx' title="Dynamic XML node"><code>++manx</code></a>
2045−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#marl' title="XML node list"><code>++marl</code></a>
2046−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#mars' title="XML cdata"><code>++mars</code></a>
2047−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#mart' title="XML attributes"><code>++mart</code></a>
2048−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#marx' title="Dynamic XML tag"><code>++marx</code></a>
2049−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#mite' title="MIME type"><code>++mite</code></a>
2050−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#pass' title="Public key"><code>++pass</code></a>
2051−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#ring' title="Private key"><code>++ring</code></a>
2052−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#ship' title="Network identity"><code>++ship</code></a>
2053−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#shop' title="Urbit/DNS identity"><code>++shop</code></a>
2054−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#spur' title="ship desk case spur"><code>++spur</code></a>
2055−<a class="tooltip" href='/docs/hoon/reference/stdlib/5e/#time' title="Galactic time"><code>++time</code></a>
2043+[`++mane`](/docs/hoon/reference/stdlib/5e/#mane)
2044+[`++manx`](/docs/hoon/reference/stdlib/5e/#manx)
2045+[`++marl`](/docs/hoon/reference/stdlib/5e/#marl)
2046+[`++mars`](/docs/hoon/reference/stdlib/5e/#mars)
2047+[`++mart`](/docs/hoon/reference/stdlib/5e/#mart)
2048+[`++marx`](/docs/hoon/reference/stdlib/5e/#marx)
2049+[`++mite`](/docs/hoon/reference/stdlib/5e/#mite)
2050+[`++pass`](/docs/hoon/reference/stdlib/5e/#pass)
2051+[`++ring`](/docs/hoon/reference/stdlib/5e/#ring)
2052+[`++ship`](/docs/hoon/reference/stdlib/5e/#ship)
2053+[`++shop`](/docs/hoon/reference/stdlib/5e/#shop)
2054+[`++spur`](/docs/hoon/reference/stdlib/5e/#spur)
2055+[`++time`](/docs/hoon/reference/stdlib/5e/#time)
20562056
20572057### 5f: Profiling support
20582058
2059−<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pi-heck' title="Profiling utility"><code>++pi-heck</code></a>
2060−<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pi-noon' title="Sample trace"><code>++pi-noon</code></a>
2061−<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pi-mope' title="Add sample"><code>++pi-mope</code></a>
2062−<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pi-moth' title="Count sample"><code>++pi-moth</code></a>
2063−<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pi-mumm' title="Print sample"><code>++pi-mumm</code></a>
2064−<a class="tooltip" href='/docs/hoon/reference/stdlib/5f/#pi-tell' title="Produce dump"><code>++pi-tell</code></a>
2059+[`++pi-heck`](/docs/hoon/reference/stdlib/5f/#pi-heck)
2060+[`++pi-noon`](/docs/hoon/reference/stdlib/5f/#pi-noon)
2061+[`++pi-mope`](/docs/hoon/reference/stdlib/5f/#pi-mope)
2062+[`++pi-moth`](/docs/hoon/reference/stdlib/5f/#pi-moth)
2063+[`++pi-mumm`](/docs/hoon/reference/stdlib/5f/#pi-mumm)
2064+[`++pi-tell`](/docs/hoon/reference/stdlib/5f/#pi-tell)
content/docs/hoon/reference/zuse/table-of-contents.md+170−170
@@ -13,235 +13,235 @@ Can be navigated [alphabetically](#alphabetical) or [by section](#by-section).
1313
1414### a
1515
16−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#ardejs-softformat' title="Decode json (unit): Array as list"><code>++ar:dejs-soft:format</code></a>
17−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#ardejsformat' title="Decode json: Array as list"><code>++ar:dejs:format</code></a>
18−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#asdejsformat' title="Decode json: Array as set"><code>++as:dejs:format</code></a>
19−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#at-rawdejs-softformat' title="Decode json (unit): Array as tuple, raw"><code>++at-raw:dejs-soft:format</code></a>
20−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#at-rawdejsformat' title="Decode json: Array as tuple, raw"><code>++at-raw:dejs:format</code></a>
21−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#atdejs-softformat' title="Decode json (unit): Array as tuple"><code>++at:dejs-soft:format</code></a>
22−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#atdejsformat' title="Decode json: Array as tuple"><code>++at:dejs:format</code></a>
16+[`++ar:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#ardejs-softformat)
17+[`++ar:dejs:format`](/docs/hoon/reference/zuse/2d_6/#ardejsformat)
18+[`++as:dejs:format`](/docs/hoon/reference/zuse/2d_6/#asdejsformat)
19+[`++at-raw:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#at-rawdejs-softformat)
20+[`++at-raw:dejs:format`](/docs/hoon/reference/zuse/2d_6/#at-rawdejsformat)
21+[`++at:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#atdejs-softformat)
22+[`++at:dejs:format`](/docs/hoon/reference/zuse/2d_6/#atdejsformat)
2323
2424### b
2525
26−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#bodejs-softformat' title="Decode json (unit): Boolean"><code>++bo:dejs-soft:format</code></a>
27−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#bodejsformat' title="Decode json: Boolean"><code>++bo:dejs:format</code></a>
28−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#budejs-softformat' title="Decode json (unit): Boolean NOT"><code>++bu:dejs-soft:format</code></a>
29−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#budejsformat' title="Decode json: Boolean NOT"><code>++bu:dejs:format</code></a>
26+[`++bo:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#bodejs-softformat)
27+[`++bo:dejs:format`](/docs/hoon/reference/zuse/2d_6/#bodejsformat)
28+[`++bu:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#budejs-softformat)
29+[`++bu:dejs:format`](/docs/hoon/reference/zuse/2d_6/#budejsformat)
3030
3131### c
3232
33−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#cidejs-softformat' title="Decode json (unit): Maybe transform"><code>++ci:dejs-soft:format</code></a>
34−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#cidejsformat' title="Decode json: Maybe transform"><code>++ci:dejs:format</code></a>
35−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#cudejs-softformat' title="Decode json (unit): Transform"><code>++cu:dejs-soft:format</code></a>
36−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#cudejsformat' title="Decode json: Transform"><code>++cu:dejs:format</code></a>
33+[`++ci:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#cidejs-softformat)
34+[`++ci:dejs:format`](/docs/hoon/reference/zuse/2d_6/#cidejsformat)
35+[`++cu:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#cudejs-softformat)
36+[`++cu:dejs:format`](/docs/hoon/reference/zuse/2d_6/#cudejsformat)
3737
3838### d
3939
40−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#dadejs-softformat' title="Decode json (unit): UTC date"><code>++da:dejs-soft:format</code></a>
41−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#dankdejs-softformat' title="Decode json (unit): Tank"><code>++dank:dejs-soft:format</code></a>
42−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#dejs-softformat' title="Container arm for unitized JSON decoding reparsers"><code>++dejs-soft:format</code></a>
43−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#dejsformat' title="Container arm for JSON decoding reparsers"><code>++dejs:format</code></a>
44−<a class="tooltip" href='/docs/hoon/reference/zuse/2e_2-3/#de-jsonhtml' title="Parse JSON"><code>++de-json:html</code></a>
45−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#didejs-softformat' title="Decode json (unit): Millisecond date"><code>++di:dejs-soft:format</code></a>
46−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#didejsformat' title="Decode json: Millisecond date"><code>++di:dejs:format</code></a>
47−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#dudejsformat' title="Decode json: Second date"><code>++du:dejs:format</code></a>
40+[`++da:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#dadejs-softformat)
41+[`++dank:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#dankdejs-softformat)
42+[`++dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#dejs-softformat)
43+[`++dejs:format`](/docs/hoon/reference/zuse/2d_6/#dejsformat)
44+[`++de-json:html`](/docs/hoon/reference/zuse/2e_2-3/#de-jsonhtml)
45+[`++di:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#didejs-softformat)
46+[`++di:dejs:format`](/docs/hoon/reference/zuse/2d_6/#didejsformat)
47+[`++du:dejs:format`](/docs/hoon/reference/zuse/2d_6/#dudejsformat)
4848
4949### e
5050
51−<a class="tooltip" href='/docs/hoon/reference/zuse/2e_2-3/#en-jsonhtml' title="Parse JSON"><code>++en-json:html</code></a>
52−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#enjsformat' title="Container arm for JSON encoders"><code>++enjs:format</code></a>
51+[`++en-json:html`](/docs/hoon/reference/zuse/2e_2-3/#en-jsonhtml)
52+[`++enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#enjsformat)
5353
5454### f
5555
56−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#frondenjsformat' title="Encode json: Object from key-value pair"><code>++frond:enjs:format</code></a>
56+[`++frond:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#frondenjsformat)
5757
5858### j
5959
60−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#json-rnformat' title="Json to rn parser"><code>++json-rn:format</code></a>
60+[`++json-rn:format`](/docs/hoon/reference/zuse/2d_1-5/#json-rnformat)
6161
6262### m
6363
64−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#mudejs-softformat' title="Decode json (unit): True unit"><code>++mu:dejs-soft:format</code></a>
65−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#mudejsformat' title="Decode json: True unit"><code>++mu:dejs:format</code></a>
64+[`++mu:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#mudejs-softformat)
65+[`++mu:dejs:format`](/docs/hoon/reference/zuse/2d_6/#mudejsformat)
6666
6767### n
6868
69−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#nedejs-softformat' title="Decode json (unit): Number as real"><code>++ne:dejs-soft:format</code></a>
70−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#nedejsformat' title="Decode json: Number as real"><code>++ne:dejs:format</code></a>
71−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#nidejs-softformat' title="Decode json (unit): Number as integer"><code>++ni:dejs-soft:format</code></a>
72−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#nidejsformat' title="Decode json: Number as integer"><code>++ni:dejs:format</code></a>
73−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#nodejs-softformat' title="Decode json (unit): Number as knot"><code>++no:dejs-soft:format</code></a>
74−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#nodejsformat' title="Decode json: Number as knot"><code>++no:dejs:format</code></a>
75−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#nudejsformat' title="Decode json: Parse string as hex"><code>++nu:dejs:format</code></a>
76−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#numbenjsformat' title="Encode json: Number from unsigned"><code>++numb:enjs:format</code></a>
69+[`++ne:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#nedejs-softformat)
70+[`++ne:dejs:format`](/docs/hoon/reference/zuse/2d_6/#nedejsformat)
71+[`++ni:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#nidejs-softformat)
72+[`++ni:dejs:format`](/docs/hoon/reference/zuse/2d_6/#nidejsformat)
73+[`++no:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#nodejs-softformat)
74+[`++no:dejs:format`](/docs/hoon/reference/zuse/2d_6/#nodejsformat)
75+[`++nu:dejs:format`](/docs/hoon/reference/zuse/2d_6/#nudejsformat)
76+[`++numb:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#numbenjsformat)
7777
7878### o
7979
80−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#of-wainformat' title="Line list to cord"><code>++of-wain:format</code></a>
81−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#of-wallformat' title="Line list to tape"><code>++of-wall:format</code></a>
82−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#ofdejs-softformat' title="Decode json (unit): Object as frond"><code>++of:dejs-soft:format</code></a>
83−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#ofdejsformat' title="Decode json: Object as frond"><code>++of:dejs:format</code></a>
84−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#ojdejsformat' title="Decode json: Object as jug"><code>++oj:dejs:format</code></a>
85−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#omdejs-softformat' title="Decode json (unit): Object as map"><code>++om:dejs-soft:format</code></a>
86−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#omdejsformat' title="Decode json: Object as map"><code>++om:dejs:format</code></a>
87−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#opdejs-softformat' title="Decode json (unit): Parse keys of map"><code>++op:dejs-soft:format</code></a>
88−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#opdejsformat' title="Decode json: Parse keys of map"><code>++op:dejs:format</code></a>
89−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#ot-rawdejs-softformat' title="Decode json (unit): Object as list of units, raw"><code>++ot-raw:dejs-soft:format</code></a>
90−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#ot-rawdejsformat' title="Decode json: Object as tuple, raw"><code>++ot-raw:dejs:format</code></a>
91−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#otdejs-softformat' title="Decode json (unit): Object as tuple"><code>++ot:dejs-soft:format</code></a>
92−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#otdejsformat' title="Decode json: Object as tuple"><code>++ot:dejs:format</code></a>
93−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#ou-rawdejsformat' title="Decode json: Object of units, raw"><code>++ou-raw:dejs:format</code></a>
94−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#oudejsformat' title="Decode json: Object of units"><code>++ou:dejs:format</code></a>
80+[`++of-wain:format`](/docs/hoon/reference/zuse/2d_1-5/#of-wainformat)
81+[`++of-wall:format`](/docs/hoon/reference/zuse/2d_1-5/#of-wallformat)
82+[`++of:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#ofdejs-softformat)
83+[`++of:dejs:format`](/docs/hoon/reference/zuse/2d_6/#ofdejsformat)
84+[`++oj:dejs:format`](/docs/hoon/reference/zuse/2d_6/#ojdejsformat)
85+[`++om:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#omdejs-softformat)
86+[`++om:dejs:format`](/docs/hoon/reference/zuse/2d_6/#omdejsformat)
87+[`++op:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#opdejs-softformat)
88+[`++op:dejs:format`](/docs/hoon/reference/zuse/2d_6/#opdejsformat)
89+[`++ot-raw:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#ot-rawdejs-softformat)
90+[`++ot-raw:dejs:format`](/docs/hoon/reference/zuse/2d_6/#ot-rawdejsformat)
91+[`++ot:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#otdejs-softformat)
92+[`++ot:dejs:format`](/docs/hoon/reference/zuse/2d_6/#otdejsformat)
93+[`++ou-raw:dejs:format`](/docs/hoon/reference/zuse/2d_6/#ou-rawdejsformat)
94+[`++ou:dejs:format`](/docs/hoon/reference/zuse/2d_6/#oudejsformat)
9595
9696### p
9797
98−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#padejsformat' title="Decode json: String as path"><code>++pa:dejs:format</code></a>
99−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#pairsenjsformat' title="Encode json: Object from key-value pair list"><code>++pairs:enjs:format</code></a>
100−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#pathenjsformat' title="Encode json: String from path"><code>++path:enjs:format</code></a>
101−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#pedejs-softformat' title="Decode json (unit): Prefix"><code>++pe:dejs-soft:format</code></a>
102−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#pedejsformat' title="Decode json: Prefix"><code>++pe:dejs:format</code></a>
98+[`++pa:dejs:format`](/docs/hoon/reference/zuse/2d_6/#padejsformat)
99+[`++pairs:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#pairsenjsformat)
100+[`++path:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#pathenjsformat)
101+[`++pe:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#pedejs-softformat)
102+[`++pe:dejs:format`](/docs/hoon/reference/zuse/2d_6/#pedejsformat)
103103
104104### r
105105
106−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#redejs-softformat' title="Decode json (unit): Recursive reparser"><code>++re:dejs-soft:format</code></a>
106+[`++re:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#redejs-softformat)
107107
108108### s
109109
110−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#sadejs-softformat' title="Decode json (unit): String as tape"><code>++sa:dejs-soft:format</code></a>
111−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#sedejsformat' title="Decode json: String as tape"><code>++sa:dejs:format</code></a>
112−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#sddejsformat' title="Decode json: String @ud as date"><code>++sd:dejs:format</code></a>
113−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#sedejsformat' title="Decode json: String as aura"><code>++se:dejs:format</code></a>
114−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#sectenjsformat' title="Encode json: Seconds timestamp"><code>++sect:enjs:format</code></a>
115−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#shipenjsformat' title="Encode json: String from ship"><code>++ship:enjs:format</code></a>
116−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#sodejs-softformat' title="Decode json (unit): String as cord"><code>++so:dejs-soft:format</code></a>
117−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#sodejsformat' title="Decode json: String as cord"><code>++so:dejs:format</code></a>
118−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#sudejs-softformat' title="Decode json (unit): Parse string"><code>++su:dejs-soft:format</code></a>
119−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#sudejsformat' title="Decode json: Parse string"><code>++su:dejs:format</code></a>
110+[`++sa:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#sadejs-softformat)
111+[`++sa:dejs:format`](/docs/hoon/reference/zuse/2d_6/#sedejsformat)
112+[`++sd:dejs:format`](/docs/hoon/reference/zuse/2d_6/#sddejsformat)
113+[`++se:dejs:format`](/docs/hoon/reference/zuse/2d_6/#sedejsformat)
114+[`++sect:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#sectenjsformat)
115+[`++ship:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#shipenjsformat)
116+[`++so:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#sodejs-softformat)
117+[`++so:dejs:format`](/docs/hoon/reference/zuse/2d_6/#sodejsformat)
118+[`++su:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#sudejs-softformat)
119+[`++su:dejs:format`](/docs/hoon/reference/zuse/2d_6/#sudejsformat)
120120
121121### t
122122
123−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#tankenjsformat' title="Encode json: Tank as string array"><code>++tank:enjs:format</code></a>
124−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#tapeenjsformat' title="Encode json: String from tape"><code>++tape:enjs:format</code></a>
125−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#timeenjsformat' title="Encode json: Millisecond timestamp"><code>++time:enjs:format</code></a>
126−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#to-wainformat' title="Cord to line list"><code>++to-wain:format</code></a>
123+[`++tank:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#tankenjsformat)
124+[`++tape:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#tapeenjsformat)
125+[`++time:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#timeenjsformat)
126+[`++to-wain:format`](/docs/hoon/reference/zuse/2d_1-5/#to-wainformat)
127127
128128### u
129129
130−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#ufdejsformat' title="Decode json: Unit fall"><code>++uf:dejs:format</code></a>
131−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#uldejs-softformat' title="Decode json (unit): Null"><code>++ul:dejs-soft:format</code></a>
132−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#uldejsformat' title="Decode json: Null"><code>++ul:dejs:format</code></a>
133−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#undejsformat' title="Decode json: Unit need"><code>++un:dejs:format</code></a>
130+[`++uf:dejs:format`](/docs/hoon/reference/zuse/2d_6/#ufdejsformat)
131+[`++ul:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#uldejs-softformat)
132+[`++ul:dejs:format`](/docs/hoon/reference/zuse/2d_6/#uldejsformat)
133+[`++un:dejs:format`](/docs/hoon/reference/zuse/2d_6/#undejsformat)
134134
135135### w
136136
137−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#wallenjsformat' title="Encode json: String from wall"><code>++wall:enjs:format</code></a>
137+[`++wall:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#wallenjsformat)
138138
139139### z
140140
141−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#zadejs-softformat' title="Decode json (unit): Full unit pole"><code>++za:dejs-soft:format</code></a>
142−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#zadejsformat' title="Decode json: Full unit pole"><code>++za:dejs:format</code></a>
143−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#zldejs-softformat' title="Decode json (unit): Collapse unit list"><code>++zl:dejs-soft:format</code></a>
144−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#zldejsformat' title="Decode json: Collapse unit list"><code>++zl:dejs:format</code></a>
145−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#zmdejs-softformat' title="Decode json (unit): Collapse unit map"><code>++zm:dejs-soft:format</code></a>
146−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#zmdejsformat' title="Decode json: Collapse unit map"><code>++zm:dejs:format</code></a>
147−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#zpdejs-softformat' title="Decode json (unit): Unit tuple"><code>++zp:dejs-soft:format</code></a>
148−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#zpdejsformat' title="Decode json: Unit tuple"><code>++zp:dejs:format</code></a>
141+[`++za:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#zadejs-softformat)
142+[`++za:dejs:format`](/docs/hoon/reference/zuse/2d_6/#zadejsformat)
143+[`++zl:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#zldejs-softformat)
144+[`++zl:dejs:format`](/docs/hoon/reference/zuse/2d_6/#zldejsformat)
145+[`++zm:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#zmdejs-softformat)
146+[`++zm:dejs:format`](/docs/hoon/reference/zuse/2d_6/#zmdejsformat)
147+[`++zp:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#zpdejs-softformat)
148+[`++zp:dejs:format`](/docs/hoon/reference/zuse/2d_6/#zpdejsformat)
149149
150150## By Section
151151
152152### 2d (1-5): Formatting functions: Line lists and JSON encoding
153153
154−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#to-wainformat' title="Cord to line list"><code>++to-wain:format</code></a>
155−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#of-wainformat' title="Line list to cord"><code>++of-wain:format</code></a>
156−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#of-wallformat' title="Line list to tape"><code>++of-wall:format</code></a>
157−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#json-rnformat' title="Json to rn parser"><code>++json-rn:format</code></a>
158−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#enjsformat' title="Container arm for JSON encoders"><code>++enjs:format</code></a>
159−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#frondenjsformat' title="Encode json: Object from key-value pair"><code>++frond:enjs:format</code></a>
160−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#pairsenjsformat' title="Encode json: Object from key-value pair list"><code>++pairs:enjs:format</code></a>
161−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#tapeenjsformat' title="Encode json: String from tape"><code>++tape:enjs:format</code></a>
162−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#wallenjsformat' title="Encode json: String from wall"><code>++wall:enjs:format</code></a>
163−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#shipenjsformat' title="Encode json: String from ship"><code>++ship:enjs:format</code></a>
164−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#numbenjsformat' title="Encode json: Number from unsigned"><code>++numb:enjs:format</code></a>
165−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#sectenjsformat' title="Encode json: Seconds timestamp"><code>++sect:enjs:format</code></a>
166−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#timeenjsformat' title="Encode json: Millisecond timestamp"><code>++time:enjs:format</code></a>
167−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#pathenjsformat' title="Encode json: String from path"><code>++path:enjs:format</code></a>
168−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_1-5/#tankenjsformat' title="Encode json: Tank as string array"><code>++tank:enjs:format</code></a>
154+[`++to-wain:format`](/docs/hoon/reference/zuse/2d_1-5/#to-wainformat)
155+[`++of-wain:format`](/docs/hoon/reference/zuse/2d_1-5/#of-wainformat)
156+[`++of-wall:format`](/docs/hoon/reference/zuse/2d_1-5/#of-wallformat)
157+[`++json-rn:format`](/docs/hoon/reference/zuse/2d_1-5/#json-rnformat)
158+[`++enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#enjsformat)
159+[`++frond:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#frondenjsformat)
160+[`++pairs:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#pairsenjsformat)
161+[`++tape:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#tapeenjsformat)
162+[`++wall:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#wallenjsformat)
163+[`++ship:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#shipenjsformat)
164+[`++numb:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#numbenjsformat)
165+[`++sect:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#sectenjsformat)
166+[`++time:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#timeenjsformat)
167+[`++path:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#pathenjsformat)
168+[`++tank:enjs:format`](/docs/hoon/reference/zuse/2d_1-5/#tankenjsformat)
169169
170170### 2d (6): Formatting functions: JSON decoding
171171
172−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#dejsformat' title="Container arm for JSON decoding reparsers"><code>++dejs:format</code></a>
173−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#ardejsformat' title="Decode json: Array as list"><code>++ar:dejs:format</code></a>
174−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#asdejsformat' title="Decode json: Array as set"><code>++as:dejs:format</code></a>
175−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#atdejsformat' title="Decode json: Array as tuple"><code>++at:dejs:format</code></a>
176−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#at-rawdejsformat' title="Decode json: Array as tuple, raw"><code>++at-raw:dejs:format</code></a>
177−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#bodejsformat' title="Decode json: Boolean"><code>++bo:dejs:format</code></a>
178−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#budejsformat' title="Decode json: Boolean NOT"><code>++bu:dejs:format</code></a>
179−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#cidejsformat' title="Decode json: Maybe transform"><code>++ci:dejs:format</code></a>
180−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#cudejsformat' title="Decode json: Transform"><code>++cu:dejs:format</code></a>
181−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#didejsformat' title="Decode json: Millisecond date"><code>++di:dejs:format</code></a>
182−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#dudejsformat' title="Decode json: Second date"><code>++du:dejs:format</code></a>
183−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#mudejsformat' title="Decode json: True unit"><code>++mu:dejs:format</code></a>
184−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#nedejsformat' title="Decode json: Number as real"><code>++ne:dejs:format</code></a>
185−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#nidejsformat' title="Decode json: Number as integer"><code>++ni:dejs:format</code></a>
186−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#nodejsformat' title="Decode json: Number as knot"><code>++no:dejs:format</code></a>
187−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#nudejsformat' title="Decode json: Parse string as hex"><code>++nu:dejs:format</code></a>
188−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#ofdejsformat' title="Decode json: Object as frond"><code>++of:dejs:format</code></a>
189−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#otdejsformat' title="Decode json: Object as tuple"><code>++ot:dejs:format</code></a>
190−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#ot-rawdejsformat' title="Decode json: Object as tuple, raw"><code>++ot-raw:dejs:format</code></a>
191−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#oudejsformat' title="Decode json: Object of units"><code>++ou:dejs:format</code></a>
192−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#ou-rawdejsformat' title="Decode json: Object of units, raw"><code>++ou-raw:dejs:format</code></a>
193−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#ojdejsformat' title="Decode json: Object as jug"><code>++oj:dejs:format</code></a>
194−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#omdejsformat' title="Decode json: Object as map"><code>++om:dejs:format</code></a>
195−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#opdejsformat' title="Decode json: Parse keys of map"><code>++op:dejs:format</code></a>
196−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#padejsformat' title="Decode json: String as path"><code>++pa:dejs:format</code></a>
197−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#pedejsformat' title="Decode json: Prefix"><code>++pe:dejs:format</code></a>
198−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#sedejsformat' title="Decode json: String as tape"><code>++sa:dejs:format</code></a>
199−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#sddejsformat' title="Decode json: String @ud as date"><code>++sd:dejs:format</code></a>
200−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#sedejsformat' title="Decode json: String as aura"><code>++se:dejs:format</code></a>
201−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#sodejsformat' title="Decode json: String as cord"><code>++so:dejs:format</code></a>
202−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#sudejsformat' title="Decode json: Parse string"><code>++su:dejs:format</code></a>
203−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#ufdejsformat' title="Decode json: Unit fall"><code>++uf:dejs:format</code></a>
204−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#undejsformat' title="Decode json: Unit need"><code>++un:dejs:format</code></a>
205−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#uldejsformat' title="Decode json: Null"><code>++ul:dejs:format</code></a>
206−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#zadejsformat' title="Decode json: Full unit pole"><code>++za:dejs:format</code></a>
207−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#zldejsformat' title="Decode json: Collapse unit list"><code>++zl:dejs:format</code></a>
208−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#zpdejsformat' title="Decode json: Unit tuple"><code>++zp:dejs:format</code></a>
209−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_6/#zmdejsformat' title="Decode json: Collapse unit map"><code>++zm:dejs:format</code></a>
172+[`++dejs:format`](/docs/hoon/reference/zuse/2d_6/#dejsformat)
173+[`++ar:dejs:format`](/docs/hoon/reference/zuse/2d_6/#ardejsformat)
174+[`++as:dejs:format`](/docs/hoon/reference/zuse/2d_6/#asdejsformat)
175+[`++at:dejs:format`](/docs/hoon/reference/zuse/2d_6/#atdejsformat)
176+[`++at-raw:dejs:format`](/docs/hoon/reference/zuse/2d_6/#at-rawdejsformat)
177+[`++bo:dejs:format`](/docs/hoon/reference/zuse/2d_6/#bodejsformat)
178+[`++bu:dejs:format`](/docs/hoon/reference/zuse/2d_6/#budejsformat)
179+[`++ci:dejs:format`](/docs/hoon/reference/zuse/2d_6/#cidejsformat)
180+[`++cu:dejs:format`](/docs/hoon/reference/zuse/2d_6/#cudejsformat)
181+[`++di:dejs:format`](/docs/hoon/reference/zuse/2d_6/#didejsformat)
182+[`++du:dejs:format`](/docs/hoon/reference/zuse/2d_6/#dudejsformat)
183+[`++mu:dejs:format`](/docs/hoon/reference/zuse/2d_6/#mudejsformat)
184+[`++ne:dejs:format`](/docs/hoon/reference/zuse/2d_6/#nedejsformat)
185+[`++ni:dejs:format`](/docs/hoon/reference/zuse/2d_6/#nidejsformat)
186+[`++no:dejs:format`](/docs/hoon/reference/zuse/2d_6/#nodejsformat)
187+[`++nu:dejs:format`](/docs/hoon/reference/zuse/2d_6/#nudejsformat)
188+[`++of:dejs:format`](/docs/hoon/reference/zuse/2d_6/#ofdejsformat)
189+[`++ot:dejs:format`](/docs/hoon/reference/zuse/2d_6/#otdejsformat)
190+[`++ot-raw:dejs:format`](/docs/hoon/reference/zuse/2d_6/#ot-rawdejsformat)
191+[`++ou:dejs:format`](/docs/hoon/reference/zuse/2d_6/#oudejsformat)
192+[`++ou-raw:dejs:format`](/docs/hoon/reference/zuse/2d_6/#ou-rawdejsformat)
193+[`++oj:dejs:format`](/docs/hoon/reference/zuse/2d_6/#ojdejsformat)
194+[`++om:dejs:format`](/docs/hoon/reference/zuse/2d_6/#omdejsformat)
195+[`++op:dejs:format`](/docs/hoon/reference/zuse/2d_6/#opdejsformat)
196+[`++pa:dejs:format`](/docs/hoon/reference/zuse/2d_6/#padejsformat)
197+[`++pe:dejs:format`](/docs/hoon/reference/zuse/2d_6/#pedejsformat)
198+[`++sa:dejs:format`](/docs/hoon/reference/zuse/2d_6/#sedejsformat)
199+[`++sd:dejs:format`](/docs/hoon/reference/zuse/2d_6/#sddejsformat)
200+[`++se:dejs:format`](/docs/hoon/reference/zuse/2d_6/#sedejsformat)
201+[`++so:dejs:format`](/docs/hoon/reference/zuse/2d_6/#sodejsformat)
202+[`++su:dejs:format`](/docs/hoon/reference/zuse/2d_6/#sudejsformat)
203+[`++uf:dejs:format`](/docs/hoon/reference/zuse/2d_6/#ufdejsformat)
204+[`++un:dejs:format`](/docs/hoon/reference/zuse/2d_6/#undejsformat)
205+[`++ul:dejs:format`](/docs/hoon/reference/zuse/2d_6/#uldejsformat)
206+[`++za:dejs:format`](/docs/hoon/reference/zuse/2d_6/#zadejsformat)
207+[`++zl:dejs:format`](/docs/hoon/reference/zuse/2d_6/#zldejsformat)
208+[`++zp:dejs:format`](/docs/hoon/reference/zuse/2d_6/#zpdejsformat)
209+[`++zm:dejs:format`](/docs/hoon/reference/zuse/2d_6/#zmdejsformat)
210210
211211### 2d (7): Formatting functions: JSON decoding (unit)
212212
213−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#dejs-softformat' title="Container arm for unitized JSON decoding reparsers"><code>++dejs-soft:format</code></a>
214−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#ardejs-softformat' title="Decode json (unit): Array as list"><code>++ar:dejs-soft:format</code></a>
215−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#atdejs-softformat' title="Decode json (unit): Array as tuple"><code>++at:dejs-soft:format</code></a>
216−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#at-rawdejs-softformat' title="Decode json (unit): Array as tuple, raw"><code>++at-raw:dejs-soft:format</code></a>
217−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#bodejs-softformat' title="Decode json (unit): Boolean"><code>++bo:dejs-soft:format</code></a>
218−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#budejs-softformat' title="Decode json (unit): Boolean NOT"><code>++bu:dejs-soft:format</code></a>
219−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#cidejs-softformat' title="Decode json (unit): Maybe transform"><code>++ci:dejs-soft:format</code></a>
220−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#cudejs-softformat' title="Decode json (unit): Transform"><code>++cu:dejs-soft:format</code></a>
221−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#dadejs-softformat' title="Decode json (unit): UTC date"><code>++da:dejs-soft:format</code></a>
222−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#dankdejs-softformat' title="Decode json (unit): Tank"><code>++dank:dejs-soft:format</code></a>
223−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#didejs-softformat' title="Decode json (unit): Millisecond date"><code>++di:dejs-soft:format</code></a>
224−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#mudejs-softformat' title="Decode json (unit): True unit"><code>++mu:dejs-soft:format</code></a>
225−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#nedejs-softformat' title="Decode json (unit): Number as real"><code>++ne:dejs-soft:format</code></a>
226−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#nidejs-softformat' title="Decode json (unit): Number as integer"><code>++ni:dejs-soft:format</code></a>
227−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#nodejs-softformat' title="Decode json (unit): Number as knot"><code>++no:dejs-soft:format</code></a>
228−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#ofdejs-softformat' title="Decode json (unit): Object as frond"><code>++of:dejs-soft:format</code></a>
229−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#otdejs-softformat' title="Decode json (unit): Object as tuple"><code>++ot:dejs-soft:format</code></a>
230−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#ot-rawdejs-softformat' title="Decode json (unit): Object as list of units, raw"><code>++ot-raw:dejs-soft:format</code></a>
231−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#omdejs-softformat' title="Decode json (unit): Object as map"><code>++om:dejs-soft:format</code></a>
232−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#opdejs-softformat' title="Decode json (unit): Parse keys of map"><code>++op:dejs-soft:format</code></a>
233−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#pedejs-softformat' title="Decode json (unit): Prefix"><code>++pe:dejs-soft:format</code></a>
234−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#redejs-softformat' title="Decode json (unit): Recursive reparser"><code>++re:dejs-soft:format</code></a>
235−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#sadejs-softformat' title="Decode json (unit): String as tape"><code>++sa:dejs-soft:format</code></a>
236−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#sodejs-softformat' title="Decode json (unit): String as cord"><code>++so:dejs-soft:format</code></a>
237−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#sudejs-softformat' title="Decode json (unit): Parse string"><code>++su:dejs-soft:format</code></a>
238−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#uldejs-softformat' title="Decode json (unit): Null"><code>++ul:dejs-soft:format</code></a>
239−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#zadejs-softformat' title="Decode json (unit): Full unit pole"><code>++za:dejs-soft:format</code></a>
240−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#zldejs-softformat' title="Decode json (unit): Collapse unit list"><code>++zl:dejs-soft:format</code></a>
241−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#zpdejs-softformat' title="Decode json (unit): Unit tuple"><code>++zp:dejs-soft:format</code></a>
242−<a class="tooltip" href='/docs/hoon/reference/zuse/2d_7/#zmdejs-softformat' title="Decode json (unit): Collapse unit map"><code>++zm:dejs-soft:format</code></a>
213+[`++dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#dejs-softformat)
214+[`++ar:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#ardejs-softformat)
215+[`++at:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#atdejs-softformat)
216+[`++at-raw:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#at-rawdejs-softformat)
217+[`++bo:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#bodejs-softformat)
218+[`++bu:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#budejs-softformat)
219+[`++ci:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#cidejs-softformat)
220+[`++cu:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#cudejs-softformat)
221+[`++da:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#dadejs-softformat)
222+[`++dank:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#dankdejs-softformat)
223+[`++di:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#didejs-softformat)
224+[`++mu:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#mudejs-softformat)
225+[`++ne:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#nedejs-softformat)
226+[`++ni:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#nidejs-softformat)
227+[`++no:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#nodejs-softformat)
228+[`++of:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#ofdejs-softformat)
229+[`++ot:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#otdejs-softformat)
230+[`++ot-raw:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#ot-rawdejs-softformat)
231+[`++om:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#omdejs-softformat)
232+[`++op:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#opdejs-softformat)
233+[`++pe:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#pedejs-softformat)
234+[`++re:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#redejs-softformat)
235+[`++sa:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#sadejs-softformat)
236+[`++so:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#sodejs-softformat)
237+[`++su:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#sudejs-softformat)
238+[`++ul:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#uldejs-softformat)
239+[`++za:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#zadejs-softformat)
240+[`++zl:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#zldejs-softformat)
241+[`++zp:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#zpdejs-softformat)
242+[`++zm:dejs-soft:format`](/docs/hoon/reference/zuse/2d_7/#zmdejs-softformat)
243243
244244### 2e (2-3): Web text: JSON printing and parsing
245245
246−<a class="tooltip" href='/docs/hoon/reference/zuse/2e_2-3/#en-jsonhtml' title="Parse JSON"><code>++en-json:html</code></a>
247−<a class="tooltip" href='/docs/hoon/reference/zuse/2e_2-3/#de-jsonhtml' title="Parse JSON"><code>++de-json:html</code></a>
246+[`++en-json:html`](/docs/hoon/reference/zuse/2e_2-3/#en-jsonhtml)
247+[`++de-json:html`](/docs/hoon/reference/zuse/2e_2-3/#de-jsonhtml)
content/docs/system-overview/arvo.md+2−2
@@ -11,9 +11,9 @@ itself from over the network without downtime. The Arvo kernel proper is quite
1111simple -- it's only about 600 lines of code, excluding its various modules.
1212
1313The Urbit transition function is implemented in Arvo. Upon being 'poked' by Vere
14−with the pair of `&lt;input event, state>`, Arvo directs the event to the
14+with the pair of `<input event, state>`, Arvo directs the event to the
1515appropriate OS module. The result of each Vere 'poke' is a pair of
16−`&lt;output events, new state>`. Events are typed, and each has an explicit call-stack
16+`<output events, new state>`. Events are typed, and each has an explicit call-stack
1717structure indicating the event's source module in Arvo.
1818
1919For a more in-depth technical introduction, see [Arvo Overview](/docs/arvo/overview).
content/docs/userspace/dist/glob.md+1−1
@@ -43,7 +43,7 @@ foo
4343}
4444```
4545
46−<sup>Note: The mime byte-length and data are 0 in this example because it was made with empty dummy files.</sup>
46+Note: The mime byte-length and data are 0 in this example because it was made with empty dummy files.
4747
4848A glob may contain any number of files and folders in any kind of heirarchy. The one important thing is that an `index.html` file is present in its root. The `index.html` file is automatically served when the app is opened in the browser and will fail if it is missing.
4949
content/docs/userspace/dist/guide.md+17−4
@@ -194,10 +194,23 @@ We've grabbed an image to use in our "Hello world!" page. The next thing we need
194194In the editor, paste in the following HTML and save it:
195195
196196```html
197−&lt;!DOCTYPE html> &lt;html> &lt;head> &lt;style> div { text-align: center; }
198−&lt;/style> &lt;/head> &lt;title>Hello World&lt;/title> &lt;body> &lt;div>
199−&lt;h1>Hello World!&lt;/h1> &lt;img src="img/pot.svg" alt="pot" width="219"
200−height="196" /> &lt;/div> &lt;/body> &lt;/html>
197+<!DOCTYPE html>
198+<html>
199+ <head>
200+ <style>
201+ div {
202+ text-align: center;
203+ }
204+ </style>
205+ </head>
206+ <title>Hello World</title>
207+ <body>
208+ <div>
209+ <h1>Hello World!</h1>
210+ <img src="img/pot.svg" alt="pot" width="219" height="196" />
211+ </div>
212+ </body>
213+</html>
201214```
202215
203216Our `hello-glob` folder should now look like this:
content/docs/userspace/full-stack/7-react-setup.md+1−1
@@ -74,7 +74,7 @@ window.ship = "sampel-palnet";
7474```
7575
7676`sampel-palnet` will of course be replaced by the actual name of the ship. We
77−include this script by adding the following line to the `&lt;head>` section of
77+include this script by adding the following line to the `<head>` section of
7878`public/index.html`:
7979
8080```
content/docs/userspace/graph-store/data-structure-overview.md−9
@@ -12,9 +12,6 @@ Let's go through the type definitions of some of the most used types when workin
1212
1313Here's `sur/post.hoon`
1414
15−<details>
16− <summary> Code Listing (Click to Expand)</summary>
17−
1815```hoon
1916+$ index (list atom)
2017+$ uid [=resource =index]
@@ -57,8 +54,6 @@ Here's `sur/post.hoon`
5754 ==
5855```
5956
60−</details>
61−
6257### Index
6358
6459```hoon
@@ -156,9 +151,6 @@ The parts of a `post` that are actually hashed to obtain a value of type the ear
156151
157152Here's `sur/graph-store.hoon`
158153
159−<details>
160−<summary>Code Listing (Click To Expand)</summary>
161−
162154```hoon
163155+$ graph ((mop atom node) gth)
164156+$ marked-graph [p=graph q=(unit mark)]
@@ -230,7 +222,6 @@ Here's `sur/graph-store.hoon`
230222 ?(%no %self %yes)
231223```
232224
233−</details>
234225
235226### Graph, Node, and Related Objects
236227
content/docs/userspace/http-api-guide.md+15−15
@@ -147,7 +147,7 @@ import Urbit from '@urbit/http-api';
147147```
148148
149149Note that the examples in this guide are simple HTML documents with vanilla
150−Javascript in `&lt;script>` tags, so they use [unpkg.com](https://unpkg.com) to
150+Javascript in `<script>` tags, so they use [unpkg.com](https://unpkg.com) to
151151import `@urbit/http-api`. This is not typical, and is just done here for
152152purposes of simplicity.
153153
@@ -403,7 +403,7 @@ the page.
403403</html>
404404```
405405
406−### Subscribe and Unsubscribe {#subscribe}
406+### Subscribe and Unsubscribe {% #subscribe %}
407407
408408For subscribing to a particular path in an agent, the `Urbit` class in `http-api` includes a `subscribe` function.
409409The `subscribe` function takes six arguments in a object:
@@ -437,7 +437,7 @@ This example will, upon clicking the "Subscribe" button, subscribe to the
437437update it receives. You can test it by doing something like posting a message in
438438a chat. You can also unsubscribe by clicking the "Unsubscribe" button.
439439
440−```
440+````
441441<html>
442442 <head>
443443 <script src="https://unpkg.com/@urbit/http-api"></script>
@@ -445,7 +445,7 @@ a chat. You can also unsubscribe by clicking the "Unsubscribe" button.
445445 </head>
446446 <body>
447447 <button id="toggle" type="button" onClick="doSub()" >Subscribe</button>
448− <pre id="event"></pre>
448+ <pre id="event">```
449449 </body>
450450 <script>
451451 const api = new UrbitHttpApi.Urbit("");
@@ -478,7 +478,7 @@ a chat. You can also unsubscribe by clicking the "Unsubscribe" button.
478478 };
479479 </script>
480480</html>
481−```
481+````
482482
483483### Subscribe Once
484484
@@ -514,7 +514,7 @@ printing every `graph-store` update it receives, it will instead just print the
514514first one it receives and close the subscription. Additionally, it sets a five
515515second timeout, and prints an error message if it times out.
516516
517−```
517+````
518518<html>
519519 <head>
520520 <script src="https://unpkg.com/@urbit/http-api"></script>
@@ -522,7 +522,7 @@ second timeout, and prints an error message if it times out.
522522 </head>
523523 <body>
524524 <button type="button" onClick="doSub()" >Subscribe Once</button>
525− <pre id="event"></pre>
525+ <pre id="event">```
526526 </body>
527527 <script>
528528 const api = new UrbitHttpApi.Urbit("");
@@ -541,7 +541,7 @@ second timeout, and prints an error message if it times out.
541541 };
542542 </script>
543543</html>
544−```
544+````
545545
546546### Scries
547547
@@ -564,7 +564,7 @@ Upon pressing the "Scry Graphs" button, this example will scry the `graph-store`
564564agent's `/keys` endpoint for the list of graphs, and print the resulting JSON
565565data.
566566
567−```
567+````
568568<html>
569569 <head>
570570 <script src="https://unpkg.com/@urbit/http-api"></script>
@@ -572,7 +572,7 @@ data.
572572 </head>
573573 <body>
574574 <button id="scry" type="button" onClick="doScry()" >Scry Graphs</button>
575− <pre id="result"></pre>
575+ <pre id="result">```
576576 </body>
577577 <script>
578578 const api = new UrbitHttpApi.Urbit("");
@@ -584,7 +584,7 @@ data.
584584 }
585585 </script>
586586</html>
587−```
587+````
588588
589589### Thread
590590
@@ -608,7 +608,7 @@ mark conversion failed, the promise will fail.
608608This example takes a hoon expression (such as `(add 1 1)`), evalutes it with the
609609`graph-eval` thread in the `landscape` desk, and prints the result.
610610
611−```
611+````
612612<html>
613613 <head>
614614 <script src="https://unpkg.com/@urbit/http-api"></script>
@@ -617,8 +617,8 @@ This example takes a hoon expression (such as `(add 1 1)`), evalutes it with the
617617 <body>
618618 <input id="hoon" type="text" placeholder="Hoon to evaluate" />
619619 <button id="submit" type="button" onClick="runThread()" >Submit</button>
620− <pre id="expr"></pre>
621− <pre id="result"></pre>
620+ <pre id="expr">```
621+ <pre id="result">```
622622 </body>
623623 <script>
624624 document.getElementById("hoon")
@@ -646,7 +646,7 @@ This example takes a hoon expression (such as `(add 1 1)`), evalutes it with the
646646 };
647647 </script>
648648</html>
649−```
649+````
650650
651651### Delete Channel
652652
content/docs/userspace/threads/basics/bind.md+5−5
@@ -34,16 +34,16 @@ j
3434
3535## bind
3636
37−Bind by itself must be specialised like `(bind:m ,&lt;type>)` and it takes two arguments:
37+Bind by itself must be specialised like `(bind:m ,<type>)` and it takes two arguments:
3838
39−- The first argument is a function that returns the `form` of a strand which produces `&lt;type>`.
40−- The second argument is a gate whose sample is `&lt;type>` and which returns a `form`.
39+- The first argument is a function that returns the `form` of a strand which produces `<type>`.
40+- The second argument is a gate whose sample is `<type>` and which returns a `form`.
4141
42−Since you'll invariably use it in conjunction with micgal, the `&lt;type>` in `;< &lt;type> bind:m ...` will both specialise `bind` and specify the gate's sample.
42+Since you'll invariably use it in conjunction with micgal, the `<type>` in `;< <type> bind:m ...` will both specialise `bind` and specify the gate's sample.
4343
4444Bind calls the first function then, if it succeeded, calls the second gate with the result of the first as its sample. If the first function failed, it will instead just return an error message and not bother calling the next gate. So it's essentially "strand A then strand B".
4545
46−Since the second gate may itself contain another `;< &lt;type> bind:m ...`, you can see how this allows you to glue together an arbitrarily large pipeline, where subsequent gates depend on the previous ones.
46+Since the second gate may itself contain another `;< <type> bind:m ...`, you can see how this allows you to glue together an arbitrarily large pipeline, where subsequent gates depend on the previous ones.
4747
4848## strandio
4949
content/docs/userspace/threads/basics/output.md+1−1
@@ -4,7 +4,7 @@ weight = 4
44template = "doc.html"
55+++
66
7−A strand produces a `[(list card) &lt;response>]`. The first part is a list of cards to be sent off immediately, and `&lt;response>` is one of:
7+A strand produces a `[(list card) <response>]`. The first part is a list of cards to be sent off immediately, and `<response>` is one of:
88
99- `[%wait ~]`
1010- `[%skip ~]`
content/docs/userspace/threads/basics/summary.md+4−4
@@ -55,8 +55,8 @@ Now here's a quick recap of the main points covered:
5555
5656- is used to chain strands together like javascript promises
5757- is used in conjunction with micgal (`;<`)
58−- must be specialised to a type like `;< &lt;type> bind:m ...`
59−- takes two arguments. The first is a function that returns the `form` of a `strand` that produces `&lt;type>`. The second is a gate whose sample is `&lt;type>` and which returns a `form`.
58+- must be specialised to a type like `;< <type> bind:m ...`
59+- takes two arguments. The first is a function that returns the `form` of a `strand` that produces `<type>`. The second is a gate whose sample is `<type>` and which returns a `form`.
6060- calls the first and then, if it succeeded, calls the second with the result of the first as its sample.
6161
6262## Strand input
@@ -68,9 +68,9 @@ Now here's a quick recap of the main points covered:
6868
6969## Strand output
7070
71−- contains `[cards=(list card:agent:gall) &lt;response>]`
71+- contains `[cards=(list card:agent:gall) <response>]`
7272- `cards` are any cards to be sent immediately
73−- `&lt;response>` is something like `[%done value]`, `[%fail err]`, etc.
73+- `<response>` is something like `[%done value]`, `[%fail err]`, etc.
7474- `%done` will contain the result
7575- responses are only used internally to manage the flow of the thread and are not returned to subscribers.
7676
content/docs/vere/cryptography.md+2−2
@@ -17,7 +17,7 @@ moment, only libraries directly related to Ames are documented here, though we
1717note that there are jets for other cryptographic functions such as the [SHA
1818Hash Family](/docs/hoon/reference/stdlib/3d) as well.
1919
20−### Ed25519 {#ed}
20+### Ed25519 {% #ed %}
2121
2222Urbit implements [Ed25519](http://ed25519.cr.yp.to/) based on the SUPERCOP
2323"ref10" implementation. Additionally there is key exchanging and scalar addition
@@ -28,7 +28,7 @@ All code is pure ANSI C without any dependencies, except for the random seed
2828generation which uses standard OS cryptography APIs (CryptGenRandom on Windows,
2929`/dev/urandom` on nix).
3030
31−### AES-SIV {#aes}
31+### AES-SIV {% #aes %}
3232
3333The library we utilize for AES-SIV is an
3434[RFC5297](https://tools.ietf.org/html/rfc5297)-compliant C implementation of
content/events/2019-03-01-after-hours-ask-galen-anything.md+1−1
@@ -17,4 +17,4 @@ name = "Urbit"
1717
1818Afterwards, have a beer, connect with Urbit developers, fans, and friends IRL.
1919
20−Feel free to bring friends and share the primer. <a href="https://urbit.org/primer" class="linkified">https://urbit.org/primer</a>
20+Feel free to bring friends and share the primer. [https://urbit.org/primer](https://urbit.org/primer)
content/events/2020-04-03-urbit-os1-launch-party.md+4−4
@@ -36,12 +36,12 @@ Interested in contributing to Urbit? Sign up for Hoon School:
3636
3737Get the latest on Urbit:
3838
39−Blog: <a href="https://urbit.org/blog/" class="linkified">https://urbit.org/blog/</a>
39+Blog: [https://urbit.org/blog/](https://urbit.org/blog/)
4040
41−Urbit Twitter: <a href="https://twitter.com/urbit" class="linkified">https://twitter.com/urbit</a>
41+Urbit Twitter: [https://twitter.com/urbit](https://twitter.com/urbit)
4242
43−Urbit Github: <a href="https://github.com/urbit" class="linkified">https://github.com/urbit</a>
43+Urbit Github: [https://github.com/urbit](https://github.com/urbit)
4444
4545Still confused about what Urbit is?
4646
47−<a href="https://urbit.org/understanding-urbit/" class="linkified">https://urbit.org/understanding-urbit/</a>
47+[https://urbit.org/understanding-urbit/](https://urbit.org/understanding-urbit/)
content/events/2020-10-09-urbit-hosting-launch-event.md+9−5
@@ -20,14 +20,18 @@ We're going to do a live demo of Tlon's Urbit hosting solution, check out some o
2020
2121Since the OS 1 launch, back in April, we've been living on Urbit day to day. Urbit has gotten gotten a lot faster, more reliable and nicer to use. Most importantly, we've got an easy way for friends to come join us without running their own node. We're really excited to let people explore what's possible with Urbit and build communities without ever touching the command-line.
2222
23−Join the waitlist for hosting here: <a href="https://tlon.io/" class="linkified">https://tlon.io/</a>
23+Join the waitlist for hosting here: [https://tlon.io/](https://tlon.io/)
2424
2525---
2626
27−Got a group of friends who want to use Urbit together? We periodically give away blocks of planets and help people get set up. Apply for a community grant:<br/><a href="https://urbit.org/community/community-grants/" class="linkified">https://urbit.org/community/community-grants/</a>
27+Got a group of friends who want to use Urbit together? We periodically give away blocks of planets and help people get set up. Apply for a community grant: [https://urbit.org/community/community-grants/](https://urbit.org/community/community-grants/)
2828
29−Interested developing on Urbit? Hoon School is a community-run program to teach you the basics of the language and system. Sign up here:<br/><a href="https://hooniversity.org" class="linkified">https://hooniversity.org</a>
29+Interested developing on Urbit? Hoon School is a community-run program to teach you the basics of the language and system. Sign up here: [https://hooniversity.org](https://hooniversity.org)
3030
31−Mostly, you can find us on Urbit in the Urbit Community group. But you can also follow along here:<br/><a href="https://urbit.org/blog/" class="linkified">https://urbit.org/blog/</a><br/><a href="https://twitter.com/urbit" class="linkified">https://twitter.com/urbit</a><br/><a href="https://github.com/urbit" class="linkified">https://github.com/urbit</a>
31+Mostly, you can find us on Urbit in the Urbit Community group. But you can also follow along here: [https://urbit.org/blog/](https://twitter.com/urbit)
3232
33−And if you're still confused about what Urbit is, try these:<br/><a href="https://urbit.org/understanding-urbit/" class="linkified">https://urbit.org/understanding-urbit/</a>
33+[https://github.com/urbit](https://github.com/urbit)
34+
35+[https://urbit.org/blog/](https://urbit.org/blog)
36+
37+And if you're still confused about what Urbit is, try these: [https://urbit.org/understanding-urbit/](https://urbit.org/understanding-urbit/)
content/faq.md+43−44
@@ -7,7 +7,7 @@ hidetitle = "true"
77
88## Urbit
99
10−### What is Urbit? {#what-is-urbit}
10+### What is Urbit? {% #what-is-urbit %}
1111
1212Urbit reimagines the internet as a peer-to-peer network designed to stay that way. Previous attempts to "decentralize" the internet have only attempted to solve certain corners of the problem. Urbit proposes that only a new stack, built from the ground up as a tightly integrated system, can realize a great user experience for people using a peer-to-peer web.
1313
@@ -15,43 +15,43 @@ Combining a deterministic operating system ([Urbit OS](#what-is-arvo) / Arvo) an
1515
1616The connected world anticipated by Urbit is a much friendlier one, much like the early Internet, where collegial discussion and collaboration was the norm. Problems that are unsolvable without large-scale political centralization in our current internet – data breaches, spam, fake reviews, malware-spreading, harassment – become tractable when individuals control their computing again. You have one login for everything. You own and control all of your software and all of your data by default. Software is designed around the friendships, families, communities, and organizations you're already a part of – not the other way around.
1717
18−### How can I contribute to Urbit? {#contribute}
18+### How can I contribute to Urbit? {% #contribute %}
1919
2020We encourage outside contributors to become a part of the project. The best way to do this is to check out [Urbit](https://github.com/urbit) on GitHub, look at the pinned repositories, and check out our [Contributing](/docs/development/develop) guide. After you've gotten familiar with the system, feel free to open issues and make pull requests.
2121
22−### Who is building Urbit? {#who-builds-urbit}
22+### Who is building Urbit? {% #who-builds-urbit %}
2323
2424[Tlon](https://tlon.io), a San Francisco-based company, is the primary developer of Urbit, along with [various independent developers](https://github.com/urbit/urbit/graphs/contributors) and [urbit.live](https://urbit.live).
2525
2626## Urbit ID
2727
28−### What is Urbit ID? {#what-is-urbit-id}
28+### What is Urbit ID? {% #what-is-urbit-id %}
2929
3030Urbit ID is the identity system utilized by Urbit, which associates to each [ship](/docs/glossary/ship) a public and private key used to establish encrypted connections between one another and to guard private data. For [planets](/docs/glossary/planet), [stars](/docs/glossary/star), and [galaxies](/docs/glossary/galaxy), this is achieved with a set of Ethereum smart contracts called [Azimuth](#what-is-azimuth). Keys for [moons](/docs/glossary/moon) and [comets](/docs/glossary/comet) are handled within Urbit.
3131
32−### What are stars, galaxies, and planets? {#stars-galaxies-planets}
32+### What are stars, galaxies, and planets? {% #stars-galaxies-planets %}
3333
3434Urbit IDs come in three classes: galaxies, stars, and planets. The length of an identity’s name will tell you its class. Galaxies are 8-bit and have names like `~mul`. Galaxies issue 16-bit stars (`~dacmul`), which can themselves issue 32-bit planets (`~laptel-holfur`).
3535
3636Planets are intended for everyday use by individuals, and there are 4.3 billion of them (two to the 32nd power). Stars and galaxies, on the other hand, are meant to act as network infrastructure: on the [Urbit OS](#what-is-arvo) network they provide routing and are responsible for distributing software updates.
3737
38−### How can I spend less to get a planet? {#gas-prices}
38+### How can I spend less to get a planet? {% #gas-prices %}
3939
4040Using Ethereum has become much more expensive since Urbit ID first launched. To rectify this, Tlon has created a system referred to as [naive rollups](/docs/glossary/rollups), or "layer 2". By reducing the size of transactions, batching them together, and moving computation off-chain to your urbit, it is now possible to perform Urbit ID transactions free of charge and without any prior knowledge of blockchains, cryptocurrency, or Ethereum. This is easily done using [Bridge](/docs/glossary/bridge), our web interface for managing your Urbit ID.
4141
42−### What is Azimuth? {#what-is-azimuth}
42+### What is Azimuth? {% #what-is-azimuth %}
4343
4444[Azimuth](/docs/glossary/azimuth) is what we call the set of Ethereum contracts that make up a general-purpose decentralized PKI ("public key infrastructure") utilized by Urbit ID. It keeps a record of which Ethereum addresses own which Urbit planets, stars, and galaxies, as well as the public keys associated with those ships.
4545
4646It's also kind of a [cool astronomical concept](https://en.wikipedia.org/wiki/Azimuth).
4747
48−### How many planets, stars, and galaxies are active? {#how-many-planets-stars-galaxies}
48+### How many planets, stars, and galaxies are active? {% #how-many-planets-stars-galaxies %}
4949
5050The raw data on most Urbit ID / Azimuth events that have occurred can be found [on the Azimuth website](https://azimuth.network/stats/events.txt). We’re currently working on generalized tooling for viewing these events.
5151
5252You can also inspect and execute functions in the [azimuth.eth](https://etherscan.io/address/azimuth.eth#code) contract on Etherscan.
5353
54−### What are comets and moons? {#comets-moons}
54+### What are comets and moons? {% #comets-moons %}
5555
5656In addition to the three classes of identities mentioned above, there are two other kinds of Urbit [ship](/docs/glossary/ship)s that are _not_ registered in the Urbit ID / Azimuth contracts.
5757
@@ -59,7 +59,7 @@ In addition to the three classes of identities mentioned above, there are two ot
5959
6060[Comets](/docs/glossary/comet) are 128 bits and have no parents. They can be launched by anyone for free. Since their identity is not maintained on the blockchain, they will likely not be trusted by default by others on the [Urbit OS](#what-is-arvo) network, though you shouldn't have any problem until the network grows much larger. They have long, hard-to-memorize names, like `~racmus-mollen-fallyt-linpex-watres-sibbur-modlux-rinmex`.
6161
62−### What is a `@p`? Why is my username generated for me? {#what-is-patp}
62+### What is a `@p`? Why is my username generated for me? {% #what-is-patp %}
6363
6464A `@p` ([pronounced](/docs/hoon/hoon-school/hoon-syntax#reading-hoon-aloud) _pat-pee_) is a name like `~zod` or `~lodleb-ritrul` composed of pronounceable, three-letter phonemic elements like `zod`, `lod`, `leb`, `rit` and `rul`. Shorter names, such as `~zod` and `~marzod`, are assigned to [ship](/docs/glossary/ship)s with special duties on the [Arvo](#what-is-arvo) network galaxies and stars, respectively. Longer names like `~palfun-foslup` are identities for typical users.
6565
@@ -69,41 +69,41 @@ Your name is generated for you as a solution to [Zooko's triangle](https://en.wi
6969
7070Regardless, you can always choose to set your nickname in [Landscape](#what-is-landscape), so if you wish for a different name to be displayed then you have the freedom to do so.
7171
72−### Can I change my `@p`? {#change-my-patp}
72+### Can I change my `@p`? {% #change-my-patp %}
7373
7474Nope. There is a 1:1 mapping between name and identity. Think of your `@p` sort of like a phone number. It's just a random synthetic name that doesn't leak any personal information about you.
7575
76−### How do I get an identity? {#get-an-identity}
76+### How do I get an identity? {% #get-an-identity %}
7777
7878The easiest way is to find a friend who can give you one. They're out there — just ask around. You'll have a good chance of meeting one if you join Urbit Community, the default group for new [ship](/docs/glossary/ship)s at `~bitbet-bolbel/urbit-community`, as a [comet](/docs/glossary/comet) and contribute pleasantly to the conversation.
7979
8080Or, if you must, try an ERC-721 (NFT) exchange (Google or Twitter should help you with this). This will probably involve a purchase and a transfer to an Ethereum address that you own. We recommend using [Bridge](/docs/glossary/bridge), available at [https://bridge.urbit.org](https://bridge.urbit.org), to access the address that the identity is transferred to.
8181
82−### How do I transfer an identity to someone else? {#transfer-identity}
82+### How do I transfer an identity to someone else? {% #transfer-identity %}
8383
8484Access the Ethereum address that holds the identity you wish to transfer via [Bridge](https://bridge.urbit.org).
8585
86−### What is the best way to access my Urbit ID? {#access-azimuth}
86+### What is the best way to access my Urbit ID? {% #access-azimuth %}
8787
8888We recommended using [Bridge](https://bridge.urbit.org) for all Urbit ID-related operations. It’s great for managing your identities, as well as for viewing information about identities you don’t own.
8989
9090Be careful about using online versions of Bridge not hosted on urbit.org. Since Bridge touches your private keys, it can also steal them.
9191
92−### Why aren't there more planets? {#more-planets}
92+### Why aren't there more planets? {% #more-planets %}
9393
94−Urbit is designed to be as simple as possible. The sponsorship tree for Urbit ID simply expands by squaring the size of the last tier. That is, there are <span class="mono">2<sup>8</sup> (256)</span> [galaxies](/docs/glossary/galaxy), <span class="mono">(2<sup>8</sup>)<sup>2</sup> = 2<sup>16</sup> (~65K)</span> [stars](/docs/glossary/star), <span class="mono">(2<sup>16</sup>)<sup>2</sup> = 2<sup>32</sup> (~4B)</span> [planets](/docs/glossary/planet). There are <span class="mono">2<sup>64</sup></span> [moons](/docs/glossary/moon) — but moons are tethered to their planet, unlike stars and planets.
94+Urbit is designed to be as simple as possible. The sponsorship tree for Urbit ID simply expands by squaring the size of the last tier. That is, there are <span class="mono">2^8^ (256)</span> [galaxies](/docs/glossary/galaxy), <span class="mono">(2^8^)^2^ = 2^16^ (~65K)</span> [stars](/docs/glossary/star), <span class="mono">(2^16^)^2^ = 2^32^ (~4B)</span> [planets](/docs/glossary/planet). There are <span class="mono">2^64^</span> [moons](/docs/glossary/moon) — but moons are tethered to their planet, unlike stars and planets.
9595
96−This pattern exists because it’s a simple way to enforce the scarcity of addresses and build a friendly network. When a tier of the address space begins to be populated, we start populating the next tier down. When Urbit nears the limit of <span class="mono">2<sup>32</sup> (4B)</span> planets, we’ll figure out a way to populate the <span class="mono">2<sup>64</sup></span> moons. The galaxies that govern the Urbit ID contracts can always vote to upgrade them — and we expect that they will.
96+This pattern exists because it’s a simple way to enforce the scarcity of addresses and build a friendly network. When a tier of the address space begins to be populated, we start populating the next tier down. When Urbit nears the limit of <span class="mono">2^32^ (4B)</span> planets, we’ll figure out a way to populate the <span class="mono">2^64^</span> moons. The galaxies that govern the Urbit ID contracts can always vote to upgrade them — and we expect that they will.
9797
98−The problem with populating the moons now is that <span class="mono">2<sup>64</sup></span> is a _really, really big_ number. We’ll need some way of differentiating between humans and their devices (to prevent devices turning into rogue botnets). But that’s a hard problem, and we prefer to start with the simplest possible solution before solving hard problems. The current scheme works. Once we need to update it, we’ll figure it out.
98+The problem with populating the moons now is that <span class="mono">2^64^</span> is a _really, really big_ number. We’ll need some way of differentiating between humans and their devices (to prevent devices turning into rogue botnets). But that’s a hard problem, and we prefer to start with the simplest possible solution before solving hard problems. The current scheme works. Once we need to update it, we’ll figure it out.
9999
100100The number of addresses is in a sort of 'Goldilocks zone' for preventing spam. Too many addresses will result in them being very cheap and thus spammers can just acquire more once they get blocked. Too few addresses and they end up too expensive for the average user. The technical term for what the finite address space bestows upon the network is [Sybil resistance](https://en.wikipedia.org/wiki/Sybil_attack), a very important property for any decentralized network.
101101
102−It’s also worth noting that, while there are almost 8B people on Earth, there are almost certainly not 8B internet users. Facebook has about 2.5B users, Apple has about 1B. Urbit has a long way to go before we get close to <span class="mono">2<sup>32</sup></span>.
102+It’s also worth noting that, while there are almost 8B people on Earth, there are almost certainly not 8B internet users. Facebook has about 2.5B users, Apple has about 1B. Urbit has a long way to go before we get close to <span class="mono">2^32^</span>.
103103
104104(For more background on why Urbit ID is the way it is, read [this](/understanding-urbit/urbit-id/).)
105105
106−### I have a galaxy or star with lockup conditions. How does this work? {#lockup-conditions}
106+### I have a galaxy or star with lockup conditions. How does this work? {% #lockup-conditions %}
107107
108108There are two kinds of release schemes for locked up assets: linear and conditional.
109109
@@ -117,8 +117,7 @@ Linear release is the simplest: your stars will be released linearly over a peri
117117
118118Conditional release is a bit more complicated. If your stars are in conditional lockup, they're likely divided over three so-called tranches. Each of these unlocks only after a unique condition is met. Since it's difficult to verify things about the real world using smart contracts, the [Galactic Senate](/docs/glossary/senate) verifies that they've been met. Once the Senate marks a condition for a tranche as cleared, it starts releasing linearly over the period of a year.
119119
120−
121−### How secure is Urbit right now? {#how-secure-is-urbit}
120+### How secure is Urbit right now? {% #how-secure-is-urbit %}
122121
123122We consider some parts of Urbit to be secure, while other parts still need some work and external auditing. For technical details on Urbit's cryptosystems, see the [documentation](/docs/system-overview/cryptography).
124123
@@ -136,7 +135,7 @@ Thus, while Urbit is probably more secure and private than most digital communic
136135
137136## Urbit Grants
138137
139−### What are the different types of grants? {#grants-1}
138+### What are the different types of grants? {% #grants-1 %}
140139
141140There are three ways to receive a [grant of stars](https://grants.urbit.org/) for your contribution to the Urbit ecosystem.
142141
@@ -144,69 +143,69 @@ There are three ways to receive a [grant of stars](https://grants.urbit.org/) fo
144143- You can apply to claim a **Bounty.** Bounties are requests for work created by Tlon that are claimable by the public, with a predetermined number of stars as the reward.
145144- The **Gifts** program, which is Tlon’s informal way of rewarding contributions that don’t fall into the above categories. There is no way to apply for a gift.
146145
147−### How do I get a gift? {#grants-2}
146+### How do I get a gift? {% #grants-2 %}
148147
149148Make useful and substantial contributions to Urbit. These can be contributions to the project itself, or they can be outside tools that aren’t part of the Urbit codebase. There’s no formal system for determining who gets a gift; it’s at the discretion of employees at Tlon. Nothing is guaranteed, but you can get an idea for what kinds of contributions results in gifts by looking at the [gifts history](https://grants.urbit.org/history).
150149
151−### How often are gifts awarded? {#grants-3}
150+### How often are gifts awarded? {% #grants-3 %}
152151
153152Gifts are awarded semiannually.
154153
155−### Do gifts follow a set size? {#grants-31}
154+### Do gifts follow a set size? {% #grants-31 %}
156155
157156Gifts do follow a structure. A gift can be in one of three categories of sizes: Gold, Silver, or Bronze. Gold gifts award the most stars, Bronze gifts award the least. These categories don't correspond to a set number of stars being awarded. That number will likely change as the project matures and star values increase. That's why you see many more stars being awarded as the earliest gifts in the [history section.](https://grants.urbit.org/history)
158157
159−### What happens if a user does not complete a proposal but meets some milestones? {#grants-4}
158+### What happens if a user does not complete a proposal but meets some milestones? {% #grants-4 %}
160159
161160You must complete the proposal to be guaranteed to receive the star grant. Partial star payouts can be negotiated for incomplete work, but such payouts are at the discretion of Tlon.
162161
163162However, either party may terminate a proposal on seven days’ written notice. In such a scenario, you may be paid pro rata for any portion of the proposal that has been completed.
164163
165−### Do star rewards from grants have lockup conditions? {#grant-5}
164+### Do star rewards from grants have lockup conditions? {% #grant-5 %}
166165
167166No.
168167
169−### Do I have to pay taxes on stars? {#grant-6}
168+### Do I have to pay taxes on stars? {% #grant-6 %}
170169
171170Yes. In the United States, stars are considered to be income. If you are American, we need your W-9 before we can pay out your stars. If you’re not an American, you don’t need to get us any forms, but you do need to personally follow the relevant tax laws in your jurisdiction.
172171
173−### Can I create a bounty? {#grants-7}
172+### Can I create a bounty? {% #grants-7 %}
174173
175174No. Bounties are only created by Tlon, but we draw inspiration for bounties from various sources, including the community. If you want to pitch a project, use the Proposals system.
176175
177−### How are proposals approved? {#grants-8}
176+### How are proposals approved? {% #grants-8 %}
178177
179178The manager of the Grants program approves them after consulting with the relevant members of the engineering team. This proposal can be accepted, rejected, or accepted with changes by Tlon. The proposal’s star payout can also be adjusted.
180179
181−### If I win a proposal, do I have an exclusive claim on the project? {#grants-9}
180+### If I win a proposal, do I have an exclusive claim on the project? {% #grants-9 %}
182181
183182You have a claim to the reward of the project as long as milestones are met to the satisfaction of Tlon. However, Tlon may allow another developer to work on the same project in parallel, for a separate reward.
184183
185−### Will milestones be embedded in a smart contract? {#grants-10}
184+### Will milestones be embedded in a smart contract? {% #grants-10 %}
186185
187186No.
188187
189−### Does reputation play a role in the assessment of grants? {#grants-11}
188+### Does reputation play a role in the assessment of grants? {% #grants-11 %}
190189
191190Yes. We consider this to be a feature.
192191
193−### I completed a proposal. When will I receive payment? {#grants-12}
192+### I completed a proposal. When will I receive payment? {% #grants-12 %}
194193
195194We will pay you within a 30-day window.
196195
197−### Can I see the proposals of others that have been accepted? {#grants-13}
196+### Can I see the proposals of others that have been accepted? {% #grants-13 %}
198197
199198Yes. Check out our [proposals page.](https://grants.urbit.org/proposals)
200199
201−### How do I safely store my stars? {#grants-14}
200+### How do I safely store my stars? {% #grants-14 %}
202201
203202We recommend storing each star in its own Ethereum wallet. The private keys to these wallets should be stored on physical media that is not connected to a networked computer. Redundancies don’t hurt!
204203
205−### Can I delegate a bounty or proposal to someone else? {#grants-15}
204+### Can I delegate a bounty or proposal to someone else? {% #grants-15 %}
206205
207206No, not unless explicitly authorized by Tlon.
208207
209−### Do I need to sign a contract? {#grants-16}
208+### Do I need to sign a contract? {% #grants-16 %}
210209
211210After you are approved to work on a bounty or a proposal, you will be sent a contract that you'll need to sign. You don't need to sign a contract to receive a gift, though.
212211
@@ -226,7 +225,7 @@ Note that these paraphrased points are just for summarization purposes. The lang
226225
227226## Miscellaneous
228227
229−### Who is Curtis? {#who-is-curtis}
228+### Who is Curtis? {% #who-is-curtis %}
230229
231230Urbit started back in 2002 as Curtis Yarvin’s personal project. Curtis developed the original prototype for Urbit and, separately, wrote a blog on history and politics under the pen name ‘Mencius Moldbug’.
232231
@@ -238,13 +237,13 @@ Curtis laid the foundation for Urbit by delivering its first prototype but, sinc
238237
239238The community of people who build Urbit have widely varied ways of thinking and looking at the world, but they all share two things: the desire to build neutral infrastructure for all people and to think from first principles about hard problems. We welcome spirited debate and disagreement as a primary tool for refining our work. Successful infrastructure, we think, serves all people — no matter their background, culture, or worldview.
240239
241−### Why do you use Ethereum? {#why-eth}
240+### Why do you use Ethereum? {% #why-eth %}
242241
243242In 2019 (when [Azimuth](#what-is-azimuth) was launched), Ethereum was the most widely deployed, most secure, and best documented general purpose blockchain, and it remains so today. Using Ethereum is a practical engineering choice. It’s the best way to bootstrap real cryptographic ownership. We’re not specifically interested in Ethereum one way or the other.
244243
245244One day we’d really like the Urbit ID registry to be hosted on [Urbit OS](#what-is-arvo) itself. But the first challenge is getting Urbit OS to be completely secure.
246245
247−### Why is Hoon so weird? {#why-hoon}
246+### Why is Hoon so weird? {% #why-hoon %}
248247
249248There are things about Urbit that are weird by design, and some that are weird because we haven’t gotten around to cleaning them up. [Hoon](/docs/glossary/hoon), for the most part, is weird by design, but there are a few things about it we’d like to clean up. For a complete description of why we created Hoon, see the [Hoon overview](/docs/hoon/overview).
250249
@@ -256,13 +255,13 @@ The right way to think about Hoon is as the ‘C of Urbit’. It’s a bare bone
256255
257256Another option is to treat [Urbit as an API](/docs/arvo/eyre/external-api-ref), which allows one to use common languages such as Python and Javascript to build userspace programs. For now this option is not as powerful as Hoon, but there is still a lot that a developer without the time or inclination to learn Hoon can do.
258257
259−### What is the point of Nock? {#why-nock}
258+### What is the point of Nock? {% #why-nock %}
260259
261260The primary technical reason it is difficult for the individual to run a personal server is that modern computing architectures are not deterministic. What solves a problem for one person is not guaranteed to work on another person's computer, even if they are using identical hardware. [Nock](/docs/glossary/nock) solves this problem. It provides a single computing foundation for the whole network, so that difficult issues that arise when running a server need only to be solved once and the solution is guaranteed to work for everyone on the network.
262261
263262It’s true that Nock, without jets, is slow. With the ability to call out to a native function, it’s not so bad. This is done by our runtime, [Vere](/docs/glossary/vere), a Nock interpreter written in C.
264263
265−### Can I host my Urbit with someone else? {#why-hosting}
264+### Can I host my Urbit with someone else? {% #why-hosting %}
266265
267266Yes, [Tlon](/blog/hosting-the-future) and [a few others](/blog/providers) began [accepting signups](https://tlon.io) to provide hosting service in 2020. Under this arrangement, Tlon does all the work of setting up cloud infrastructure and getting your planet up and running, making getting started with Urbit as simple as signing up for an ordinary online service.
268267
content/getting-started/cli.md+14−55
@@ -7,10 +7,9 @@ tag = "additional"
77
88If you're a power user, you can run the Urbit virtual machine directly using the command line. Choose the code for your operating system and run the commands in your terminal.
99
10−<div id="os" class="os">
11− <input type="radio" id="macos" name="os" checked>
12− <label for="macos">MacOS</label>
13− <div class="tab">
10+{% tabs %}
11+
12+{% tab label="MacOS" %}
1413
1514```bash
1615mkdir ~/urbit
@@ -20,11 +19,9 @@ tar zxvf ./darwin.tgz --strip=1
2019~/urbit/urbit
2120```
2221
23− </div>
22+{% /tab %}
2423
25− <input type="radio" id="linux" name="os">
26− <label for="linux">Linux</label>
27− <div class="tab">
24+{% tab label="Linux" %}
2825
2926```shell
3027mkdir ~/urbit
@@ -41,11 +38,9 @@ sudo apt-get install libcap2-bin
4138sudo setcap 'cap_net_bind_service=+ep' ~/urbit/urbit
4239```
4340
44−</div>
41+{% /tab %}
4542
46− <input type="radio" id="windows" name="os">
47− <label for="windows">Windows</label>
48− <div class="tab">
43+{% tab label="Windows" %}
4944
5045```winbatch
5146mkdir %USERPROFILE%\urbit
@@ -57,8 +52,9 @@ tar zxvf .\windows.tgz --strip=1
5752
5853> Windows 10 build 17063 and later includes the familiar `curl` and `tar` command-line tools.
5954
60−</div>
61−</div>
55+{% /tab %}
56+
57+{% /tabs %}
6258
6359If successful, you will see a block of output beginning with the line:
6460
@@ -66,7 +62,7 @@ If successful, you will see a block of output beginning with the line:
6662Urbit: a personal server operating function
6763```
6864
69−### Booting a free identity {#comet}
65+### Booting a free identity {% #comet %}
7066
7167There are two parts to Urbit: an **ID** and an **Operating System**.
7268
@@ -134,7 +130,7 @@ At the moment, the most common way to use Urbit is by launching apps like Groups
134130
135131## Next Steps
136132
137−### Updating your comet {#updating}
133+### Updating your comet {% #updating %}
138134
139135Urbit comes with a recent release of the Urbit OS, but automatic updates of the `%base` desk (which contains the kernel of the OS) are not enabled by default for Comets. Many comets are used only once and thrown away, so it would be wasteful to update every single comet as soon as it boots. If you plan to use your comet for more than a quick test, you'll probably want to ensure you're running the latest version of the OS.
140136
@@ -147,7 +143,7 @@ kiln: activated install into %base from [~samzod %kids]
147143kiln: downloading update for %base from [~samzod %kids]
148144```
149145
150−### Read More about the Dojo {#the-dojo}
146+### Read More about the Dojo {% #the-dojo %}
151147
152148The dojo is Urbit's command line. You can use it to control your ship, or to execute arbitrary code. Check out the links below for more information.
153149
@@ -155,47 +151,10 @@ The dojo is Urbit's command line. You can use it to control your ship, or to exe
155151- [Basic Hoon](/docs/tutorials/hoon/hoon-school/setup)
156152- [Glossary Entry](/docs/glossary/dojo)
157153
158−### Purchase a Permanent Identity {#boot-your-planet}
154+### Purchase a Permanent Identity {% #boot-your-planet %}
159155
160156You can continue using this comet indefinitely. There are currently few differences between using a comet-level identity and a planet-level one. However, some groups will not allow comets entry in order to maintain a certain level of quality, and changes may be made in the future that further devalue comets. They will always, however, be able to access the basic functions of the network.
161157
162158A comet also comes with a long and fairly unmemorable name whereas a planet has a short name and a "sigil" (avatar) associated with it that makes it more identifiable on the network. You may notice all this within the first few minutes of using Urbit.
163159
164160[For details of how to purchase a planet, visit this page](/getting-started/get-planet).
165−
166−<style>
167− .os {
168− display: flex;
169− flex-wrap: wrap;
170− }
171− .os label {
172− order: -1;
173− padding: .5rem;
174− min-width: 70px;
175− text-align: center;
176− cursor: pointer;
177− }
178− .os input[type="radio"] {
179− display: none;
180− }
181− .os .tab {
182− display: none;
183− margin-top: 1rem;
184− width: 100%;
185− max-width: 100%;
186− }
187− .os .tab p:first-child {
188− margin-top: 0;
189− }
190− .os .tab p:last-child {
191− margin-bottom: 0;
192− }
193− .os input[type='radio']:checked + label {
194− font-weight: bold;
195− background-color: rgba(244,243,241,1);
196− border-radius: 0.5em;
197− }
198− .os input[type='radio']:checked + label + .tab {
199− display: block;
200−}
201−</style>
content/getting-started/desktop.md+26−66
@@ -8,19 +8,18 @@ weight = 1
88
99Port is a desktop GUI application that allows you to spin up, access, and manage your Urbit ships without any knowledge of the command line or Urbit binary.
1010
11−<div id="port-os" class="os">
12− <input type="radio" id="port-macos" name="port-os" checked>
13− <label for="port-macos">MacOS</label>
14− <div class="tab">
15− <p>To install <strong>Port</strong> on MacOS simply download and open the <code>.dmg</code> file.</p>
16− <a href="https://github.com/urbit/port/releases/latest/download/Port.dmg" class="button-lg bg-green-400 text-white" style="width: 12rem;">
17− Download Port
18− </a>
19− </div>
20−
21− <input type="radio" id="port-linux" name="port-os">
22− <label for="port-linux">Linux</label>
23− <div class="tab">
11+{% tabs %}
12+
13+{% tab label="MacOS" %}
14+
15+To install **Port** on MacOS, simply download and open the `.dmg` file.
16+
17+{% button label="Download Port" link="https://github.com/urbit/port/releases/latest/download/Port.dmg" color="bg-green-400 text-white" %}
18+{% /button %}
19+
20+{% /tab %}
21+
22+{% tab label="Linux" %}
2423
2524We use `snap` so that **Port** can stay updated automatically. If you already have `snap` installed, simply run:
2625
@@ -30,57 +29,18 @@ sudo snap install port
3029
3130Or to install `snap` for your distribution, snapcraft provides [installation instructions](https://snapcraft.io/docs/installing-snapd).
3231
33− </div>
34−
35− <input type="radio" id="port-windows" name="port-os">
36− <label for="port-windows">Windows</label>
37− <div class="tab">
38− <p>To install <strong>Port</strong> on Windows simply download and open the <code>.exe</code> file.</p>
39− <a href="https://github.com/urbit/port/releases/latest/download/PortSetup.exe" class="button-lg bg-green-400 text-white" style="width: 12rem;">
40− Download Port
41− </a>
42− <p><small>
43− Note: The Windows version is newly released and is not yet code signed so you will have to click through a prompt warning you about running it. If you simply click <code>more info</code> -> <code>run anyway</code> it will run.
44− </small></p>
45− </div>
46−</div>
47−
48−<style>
49− .os {
50− display: flex;
51− flex-wrap: wrap;
52− }
53− .os label {
54− order: -1;
55− padding: .5rem;
56− min-width: 70px;
57− text-align: center;
58− cursor: pointer;
59− }
60− .os input[type="radio"] {
61− display: none;
62− }
63− .os .tab {
64− display: none;
65− margin-top: 1rem;
66− width: 100%;
67− max-width: 100%;
68− }
69− .os .tab p:first-child {
70− margin-top: 0;
71− }
72− .os .tab p:last-child {
73− margin-bottom: 0;
74− }
75− .os input[type='radio']:checked + label {
76− font-weight: bold;
77− background-color: rgba(244,243,241,1);
78− border-radius: 0.5em;
79− }
80− .os input[type='radio']:checked + label + .tab {
81− display: block;
82−}
83−</style>
32+{% /tab %}
33+
34+{% tab label="Windows" %}
35+
36+To install **Port** on Windows, simply download and open the `.exe` file.
37+
38+{% button label="Download Port" link="https://github.com/urbit/port/releases/latest/download/PortSetup.exe" color="bg-green-400 text-white" %}
39+{% /button %}
40+
41+{% /tab %}
42+
43+{% /tabs %}
8444
8545### 2. Boot a comet
8646
@@ -96,7 +56,7 @@ Once that's finished, click **Launch Ship into Urbit** and you'll be on the netw
9656
9757![](https://media.urbit.org/site/getting-started/Desktop-app-2.jpg)
9858
99−<div className="bg-wall-100 p-7 rounded-xl markdown-callout">
59+{% callout %}
10060
10161**Want to combine the simplicity of Port with a permanent Urbit ID?**
10262
@@ -107,7 +67,7 @@ Port will boot your Urbit in a few minutes!
10767
10868For more information on getting a planet, see our [Getting an Urbit ID](/guides/getting-an-urbit-id) guide.
10969
110−</div>
70+{% /callout %}
11171
11272### Next steps
11373
content/getting-started/get-planet.md+18−34
@@ -17,7 +17,7 @@ There are a few ways to get your own planet:
1717- Purchasing a planet, including hosting, from a hosting provider
1818- Manually setting up and hosting a planet purchased from a third party marketplace
1919
20−### Hosting Providers {#hosting-providers}
20+### Hosting Providers {% #hosting-providers %}
2121
2222Hosting providers will often sell you a planet and run it for you. This option is very simple but will probably cost a regular fee.
2323
@@ -43,38 +43,28 @@ Layer 2 planets do not require any crypto wallet management, but are at present
4343Don’t worry, both types work the same on the network.
4444
4545Here are a few of the places where you can buy planets:
46−
47−<div style="display: flex;padding-top: 2rem;">
48−
49−<div class="column">
50−
51−**L1 Planet Markets**
52−
53−- [Urbitex](https://urbitex.io)
54−- [Urbit.live](https://urbit.live)
55−- [Urbit.me](https://urbit.me)
56−
57−</div>
58−
59−<div class="column">
60−
61−**L2 Planet Markets**
62−
63−- [azimuth.shop](https://azimuth.shop)
64−- [\_networked subject](https://subject.network)
65−- [~mocbel house](https://mocbel.house)
66−- [Wexpert Systems](https://wexpert.systems)
67−
68−</div>
69−</div>
70−
71−<div class="rounded-xl bg-wall-100" style="padding: 2rem; margin-top: 4rem;">
46+{% table .w-full .my-4 %}
47+* L1 Planet Markets
48+* L2 Planet Markets
49+---
50+*
51+ - [Urbitex](https://urbitex.io)
52+ - [Urbit.live](https://urbit.live)
53+ - [Urbit.me](https://urbit.me)
54+*
55+ - [azimuth.shop](https://azimuth.shop)
56+ - [\_networked subject](https://subject.network)
57+ - [~mocbel house](https://mocbel.house)
58+ - [Wexpert Systems](https://wexpert.systems)
59+{% /table %}
60+
61+{% callout %}
7262
7363**Layer 2 for planets**
7464
7565Learn more about [layer 2 for planets](/using/id/layer-2-for-planets) in the User's Manual page on the topic.
7666
77−</div>
67+{% /callout %}
7868
7969### Next steps
8070
@@ -87,9 +77,3 @@ Read the [Server setup](/getting-started/server) guide to learn how to get it se
8777Or, follow the instructions of a [hosting provider](/getting-started/hosted) and set up your planet there.
8878
8979Remember, your planet is yours and you can always change how you run your urbit in the future.
90−
91−<style>
92− .column {
93− flex-basis: 50%;
94− }
95−</style>
content/getting-started/installing-applications.md+1−1
@@ -37,5 +37,5 @@ After selecting the “picture” app, a pane will open that shows some informat
3737Soon you’ll have a new application tile on your home screen that will let you upload and display a picture to your home screen.
3838
3939![](https://media.urbit.org/site/additional-guides/Installing-apps-3.jpg)
40−<br><br>
40+
4141![](https://media.urbit.org/site/additional-guides/Installing-apps-4.jpg)
content/getting-started/server.md+14−57
@@ -18,7 +18,7 @@ Visit the instructions for [launching a temporary comet with Port](/getting-star
1818
1919There are many markets and individuals selling planets such as [azimuth.shop](https://azimuth.shop), [Networked Subject](https://subject.network), and [Wexpert Systems](https://wexpert.systems) for Ethereum, Bitcoin, and USD respectively.
2020
21−<div className="bg-wall-100 p-7 rounded-xl markdown-callout">
21+{% callout %}
2222
2323**Layer 1 vs Layer 2 planet purchasing**
2424
@@ -26,8 +26,7 @@ The websites listed in B) sell Layer 2 (L2) planets -- which means they avoid Et
2626
2727For this reason we generally advise using a L2 planet market, unless you are interested in a very rare sigil or a particular planet name.
2828
29−</div>
30−
29+{% /callout %}
3130### 2. Claim your planet
3231
3332An invitation to claim your planet comes in one of two forms.
@@ -40,14 +39,13 @@ The second, only recently made available through our [L2 solution](/using/id/lay
4039
4140Clicking a link to activate a planet on Bridge will take you to page which will generate a Master Ticket for you. Follow the instructions which will prompt you to download a copy of your Passport - your Master Ticket, management proxy, and keyfile. Store your Master Ticket and management proxy somewhere safe, hold on to the keyfile, and proceed to the next step.
4241
43−<div className="bg-wall-100 p-7 rounded-xl markdown-callout">
42+{% callout %}
4443
4544**Claiming L1 planets**
4645
4746If you’ve purchased an L1 planet, you won’t need to claim it because you already own it as an NFT. Simply log into Bridge using Metamask or your wallet of choice.
4847
49−</div>
50−
48+{% /callout %}
5149### 3. Use Bridge to get your keyfile
5250
5351Now that you have your planet, you can create your keyfile (eg. `sample-palnet.key`), which is the cryptographic signature required to encrypt and decrypt messages on Urbit's P2P network.
@@ -69,10 +67,9 @@ You may also want to see the cloud hosting guide for additional details like set
6967
7068Download Urbit with the following commands:
7169
72−<div id="os" class="os">
73− <input type="radio" id="macos" name="os" checked>
74− <label for="macos">MacOS</label>
75− <div class="tab">
70+{% tabs %}
71+
72+{% tab label="MacOS" %}
7673
7774```bash
7875mkdir ~/urbit
@@ -82,11 +79,9 @@ tar zxvf ./darwin.tgz --strip=1
8279~/urbit/urbit
8380```
8481
85− </div>
82+{% /tab %}
8683
87− <input type="radio" id="linux" name="os">
88− <label for="linux">Linux</label>
89− <div class="tab">
84+{% tab label="Linux" %}
9085
9186```shell
9287mkdir ~/urbit
@@ -103,11 +98,9 @@ sudo apt-get install libcap2-bin
10398sudo setcap 'cap_net_bind_service=+ep' ~/urbit/urbit
10499```
105100
106−</div>
101+{% /tab %}
107102
108− <input type="radio" id="windows" name="os">
109− <label for="windows">Windows</label>
110− <div class="tab">
103+{% tab label="Windows" %}
111104
112105```winbatch
113106mkdir %USERPROFILE%\urbit
@@ -119,8 +112,9 @@ tar zxvf .\windows.tgz --strip=1
119112
120113> Windows 10 build 17063 and later includes the familiar `curl` and `tar` command-line tools.
121114
122−</div>
123−</div>
115+{% /tab %}
116+
117+{% /tabs %}
124118
125119Next, transfer `your-keyfile.key` to your server using scp or an FTP client, then move it to the `~/urbit` directory you created in the last step.
126120
@@ -165,40 +159,3 @@ Open up the Urbit CLI again if it's not still running, and enter +code. The outp
165159### Next steps
166160
167161Learn how to [get around your urbit](/getting-started/getting-around).
168−
169−<style>
170− .os {
171− display: flex;
172− flex-wrap: wrap;
173− }
174− .os label {
175− order: -1;
176− padding: .5rem;
177− min-width: 70px;
178− text-align: center;
179− cursor: pointer;
180− }
181− .os input[type="radio"] {
182− display: none;
183− }
184− .os .tab {
185− display: none;
186− margin-top: 1rem;
187− width: 100%;
188− max-width: 100%;
189− }
190− .os .tab p:first-child {
191− margin-top: 0;
192− }
193− .os .tab p:last-child {
194− margin-bottom: 0;
195− }
196− .os input[type='radio']:checked + label {
197− font-weight: bold;
198− background-color: rgba(244,243,241,1);
199− border-radius: 0.5em;
200− }
201− .os input[type='radio']:checked + label + .tab {
202− display: block;
203−}
204−</style>
content/grants/a-network-enabled-spatial-database-and-demonstration-app.md+5−8
@@ -68,14 +68,6 @@ This proposal has grown out of a previous bounty which called for Open Street Ma
6868- Poast will be minimally landscape integrated, insofar is it can be launched from a tile and follow landscape styling.
6969- For this milestone only a minimal set of features will be included to allow for creating, sharing, and viewing of Poastcards.
7070
71−##### Footnotes
72−
73−[^1]:
74− The very readable spec for geojson can be found here http://geojson.org. An overview of GeoJSON summarizing
75− it's advantages and limitations can be found here https://macwright.com/2015/03/23/geojson-second-bite.html
76−
77−[^2]: A mature spatial store would include spatial indexes and provide spatial queries, however for the objectives of this proposal basic spatial spatial documents storage and retrieval can be achieved without spatial indexing. Each spatial document is treated as its own entity, and has limited querying beyond fetching and inspecting the data structure. However this is enough that it can easily be splatted on a map. Spatial indexing of geometries (or parent features/feature collections), is a sensible next step, which would allow many more use cases but is not in scope for this proposal.
78−[^3]: It may be possible to store styling info within the spatial documents, there are at least two GeoJSON style storage conventions, but nothing standardised (see discussion here https://gis.stackexchange.com/questions/22474/geojson-styling-information). Neither of these are part of the GeoJSON standard and appear to be not used much in the wild. There are formats such as KML and GeoPackage which have styling support, but these are also more complex formats.
7971
8072##### About Me
8173
@@ -95,3 +87,8 @@ A spatial store, spatial types, simple demo landscape app
95872 stars
9688A network enabled spatial store, for sharing spatial data in urbit.
9789A rich demostration app, for sharing spatial data, images and text.
90+
91+
92+[^1]: The very readable spec for geojson can be found here http://geojson.org. An overview of GeoJSON summarizing its advantages and limitations can be found here https://macwright.com/2015/03/23/geojson-second-bite.html
93+[^2]: A mature spatial store would include spatial indexes and provide spatial queries, however for the objectives of this proposal basic spatial spatial documents storage and retrieval can be achieved without spatial indexing. Each spatial document is treated as its own entity, and has limited querying beyond fetching and inspecting the data structure. However this is enough that it can easily be splatted on a map. Spatial indexing of geometries (or parent features/feature collections), is a sensible next step, which would allow many more use cases but is not in scope for this proposal.
94+[^3]: It may be possible to store styling info within the spatial documents, there are at least two GeoJSON style storage conventions, but nothing standardised (see discussion here https://gis.stackexchange.com/questions/22474/geojson-styling-information). Neither of these are part of the GeoJSON standard and appear to be not used much in the wild. There are formats such as KML and GeoPackage which have styling support, but these are also more complex formats.
content/grants/content-saver.md+1−1
@@ -33,7 +33,7 @@ The file should strip the content out of HTML and save it into the Markdown form
3333
3434- Do not begin work until your request to claim this bounty is accepted. We will assign a designer to work with you on the interface.
3535- Do not begin work until your request to claim this bounty is accepted. We will assign a designer to work with you on the interface.
36−- Submit your code as a PR to the [urbit](github.com/urbit/urbit] repository.
36+- Submit your code as a PR to the [urbit](github.com/urbit/urbit) repository.
3737- You have 90 days from the time of approval to complete this bounty.
3838
3939## Milestones
content/groups/~ladtem-filmyr/urbit-ny-week.md+37−76
@@ -11,11 +11,9 @@ participant_range = "100+"
1111
1212Join this group on Urbit for event locations.
1313
14−<div class="box">
15−
1614## Thursday, May 19, 2022
1715
18−<div class="entry">
16+
1917
2018**The Scrying Philosopher (Salon)**
2119
@@ -25,39 +23,35 @@ Lower Manhattan ([RSVP](https://docs.google.com/forms/d/e/1FAIpQLSeY84O65omPNvc1
2523
2624Contact: [`~lagrev-nocfep`](https://urbit.org/ids/~lagrev-nocfep)
2725
28−</div>
2926
30−<div class="entry">
27+
28+
3129
3230**Dimes Square (the play) Live!**
3331
34329PM
3533
36−<div class="blackout"></div>
34+<div class="blackout"/>
3735
3836Contact: [`~librex-dozryc`](https://urbit.org/ids/~librex-dozryc)
3937
40−</div>
41−
42−</div>
4338
44−<div class="box">
4539
4640## Friday, May 20, 2022
4741
48−<div class="entry">
42+
4943
5044**Wet Brain Afternoon Tea**
5145
5246TBA (PM)
5347
54−<div class="blackout"></div>
48+<div class="blackout"/>
5549
5650Contact: [`~napmer-rilnut`](https://urbit.org/ids/~napmer-rilnut)
5751
58−</div>
5952
60−<div class="entry">
53+
54+
6155
6256**Mars Review of Books**
6357
@@ -65,169 +59,136 @@ Issue I Launch Party
6559
66609:30PM
6761
68−<div class="blackout"></div>
62+<div class="blackout"/>
6963
7064Contact: [`~librex-dozryc`](https://urbit.org/ids/~librex-dozryc)
7165
72−</div>
73−
74−</div>
75−
76−<div class="box">
77−
7866## Saturday, May 21, 2022
7967
80−<div class="entry">
81−
8268**The Combine DAO Launch Party**
8369
8470Noon
8571
86−<div class="blackout"></div>
72+<div class="blackout"/>
8773
8874Contact: [`~poldec-tonteg`](https://urbit.org/ids/~poldec-tonteg)
8975
90−</div>
91−
92−<div class="entry">
9376
9477**Tlon on the Private Island**
9578
96793PM-8PM
9780
98−<div class="blackout"></div>
81+<div class="blackout"/>
9982
10083Contact: Christine or [rsvp@tlon.io](mailto:rsvp@tlon.io)
10184
102−</div>
103−
104−<div class="entry">
10585
10686**ERA 2 (Tlon Rave)**
10787
108889PM-4AM
10989
110−<div class="blackout"></div>
90+<div class="blackout"/>
11191
11292Contact: [~dapryc-tilryn](https://urbit.org/ids/~dapryc-tilryn) or rsvp@tlon.io
11393
114−</div>
115−
116−<div class="entry">
117−
11894**Tirrel Party**
11995
12096Night Time
12197
122−<div class="blackout"></div>
98+<div class="blackout"/>
12399
124100Contact: [`~pindet-timmut`](https://urbit.org/ids/~pindet-timmut)
125101
126−</div>
127−
128−<div class="entry">
129−
130102**Sophon x Idolate x Dusko Peter Teal Party**
131103
1321049PM
133105
134−<div class="blackout"></div>
106+<div class="blackout"/>
135107
136108Contact: [`~tasset-norlux`](https://urbit.org/ids/~tasset-norlux)
137109
138−</div>
139−</div>
140−
141−<div class="box">
142−
143110## Sunday, May 22, 2022
144111
145−<div class="entry">
146−
147112**Networked Spirituality (Holium)**
148113
14911411AM
150115
151−<div class="blackout"></div>
116+<div class="blackout"/>
152117
153118Contact: [`~fasnut-famden`](https://urbit.org/ids/~fasnut-famden)
154119
155−</div>
156−
157−<div class="entry">
158−
159120**Informal Urmetica Lodge brunch**
160121
161122Noon
162123
163−<div class="blackout"></div>
124+<div class="blackout"/>
164125
165126Contact: [`~todset-partug`](https://urbit.org/ids/~todset-partug)
166127
167−</div>
168128
169−<div class="entry">
129+
130+
170131
171132**Urmetica Initiation**
172133
1731342 PM
174135
175−<div class="blackout"></div>
136+<div class="blackout"/>
176137
177138Contact: [`~poldec-tonteg`](https://urbit.org/ids/~poldec-tonteg)
178139
179−</div>
180140
181−<div class="entry">
141+
142+
182143
183144**Innocent Garden Party**
184145
1851465PM - 9PM
186147
187−<div class="blackout"></div>
148+<div class="blackout"/>
188149
189150Contact: [`~hatryx-lastud`](https://urbit.org/ids/~hatryx-lastud)
190151
191−</div>
192152
193−<div class="entry">
153+
154+
194155
195156**No Agency x Urbit**
196157
19715810PM
198159
199−<div class="blackout"></div>
160+<div class="blackout"/>
200161
201162Contact: [`~marrys-sapbyt`](https://urbit.org/ids/~marrys-sapbyt) / rsvp@noagency.nyc
202163
203−</div>
204−</div>
205−<BR>
164+
165+
166+
206167<H2>EXTRA</H2>
207168
208−<div class="box">
169+
209170
210171## Monday, May 23, 2022
211172
212−<div class="entry">
173+
213174
214175**Flatline Black Lake (Outskirts)**
215176
21617710AM
217178
218−<div class="blackout"></div>
179+<div class="blackout"/>
219180
220181Contact: [`~hatryx-lastud`](https://urbit.org/ids/~hatryx-lastud)
221182
222−</div>
223183
224−</div>
225184
226−<div class="box">
185+
186+
187+
227188
228189## Thursday, May 26, 2022
229190
230−<div class="entry">
191+
231192
232193**Merde!**
233194
@@ -237,8 +198,8 @@ Contact: [`~hatryx-lastud`](https://urbit.org/ids/~hatryx-lastud)
237198
238199[Star for Auction](https://event.auctria.com/b9db22be-4245-42dc-8032-02275a0fea19/a780d600ec2e11e9ae081db830846aa5?2bd25550ec3411e98fdeb3a273cf08d8%2FcurrentPage=2&2bd25550ec3411e98fdeb3a273cf08d8%2FselectedItem=ed2b191c-ad38-4fc6-9cb5-eda5c87ffee5)
239200
240−</div>
241−</div>
201+
202+
242203
243204<style>
244205.box {
content/privacy.md+2−2
@@ -3,7 +3,7 @@ title = "Privacy Policy"
33template = "page_indiced.html"
44+++
55
6−## Scope of this Privacy Policy {#scope}
6+## Scope of this Privacy Policy {% #scope %}
77
88Tlon Corporation ('Tlon,' 'we,' 'our,' and/or 'us') values the privacy of individuals who use Urbit software, our websites, and related services (collectively, our 'Services'). This privacy policy (the 'Privacy Policy') explains how we collect, use, and share information from users of our Services ('Users'). By using our Services, you agree to the collection, use, disclosure, and procedures this Privacy Policy describes. Beyond the Privacy Policy, your use of our Services is also subject to our Terms of Service.
99
@@ -47,7 +47,7 @@ _On the Blockchain._ If you purchase address space, we may publish information a
4747
4848_Vendors and Service Providers._ We may share any information we receive with vendors and service providers retained in connection with the provision of the Service.
4949
50−_Analytics Partners._ We use analytics services such as Google Analytics to collect and process certain analytics data. These services may also collect information regarding your use of other websites, apps, and online resources. You can learn about Google's practices by going to <a href="https://www.google.com/policies/privacy/partners/">https://www.google.com/policies/privacy/partners/</a>, and opt out of them by downloading the Google Analytics opt-out browser add-on, available at <a href="https://tools.google.com/dlpage/gaoptout">https://tools.google.com/dlpage/gaoptout</a>.
50+_Analytics Partners._ We use analytics services such as Google Analytics to collect and process certain analytics data. These services may also collect information regarding your use of other websites, apps, and online resources. You can learn about Google's practices by going to [https://www.google.com/policies/privacy/partners/](https://www.google.com/policies/privacy/partners/), and opt out of them by downloading the Google Analytics opt-out browser add-on, available at [https://tools.google.com/dlpage/gaoptout](https://tools.google.com/dlpage/gaoptout).
5151
5252_As Required By Law and Similar Disclosures._ We may access, preserve, and disclose your information if we believe doing so is required or appropriate to (a) comply with law enforcement requests and legal process, such as a court order or subpoena; (b) respond to your requests; or (c) protect your, our or others' rights, property, or safety. For the avoidance of doubt, the disclosure of your information may occur if you post any objectionable content on or through the Service.
5353
content/understanding-urbit/roadmap.md−10
@@ -24,16 +24,12 @@ Bringing together many different things in one place is something only a general
2424
2525As Urbit matures, other killer digital environments may emerge—but Landscape is the app we need if we want to move away from the world of MEGACORP software and onto a secure, distraction-free network of our own.
2626
27−<br>
28−
2927![A Landscape](https://storage.googleapis.com/media.urbit.org/tlon/landscape.png)
3028
3129Today, we pour all of our focus into making Landscape a comfortable place for digital communities to call home, starting with our own. This effort forces us to mature the entire stack, from the interpreter to the interface.
3230
3331Let’s walk through the next few phases of Landscape to get a sense of where we are and where we’re headed.
3432
35−<br>
36−
3733![The current state of Landscape/OS1](https://storage.googleapis.com/media.urbit.org/site/understanding-urbit/uu-interface-3.png)
3834
3935### Today: Landscape OS 1.N
@@ -48,8 +44,6 @@ Our initial goal was just to get ourselves living on Urbit everyday. We achieved
4844
4945OS 1 was a huge step forward. Let’s talk about what’s next.
5046
51−<br>
52−
5347![A speculative interface for Landscape S2](https://storage.googleapis.com/media.urbit.org/site/understanding-urbit/uu-interface-4.png)
5448
5549## Late 2020: Landscape S2
@@ -68,8 +62,6 @@ We know that getting onto the network can be difficult for less technical users.
6862
6963We’re planning to share the hosted version of S2 with a few small communities to test it out and put it through the paces. If you’re curious, [let us know](https://tlon.io).
7064
71−<br>
72−
7365![A speculative payments interface](https://storage.googleapis.com/media.urbit.org/site/understanding-urbit/uu-roadmap-4.jpg)
7466
7567## Early 2021: Landscape S3
@@ -82,8 +74,6 @@ Perhaps most importantly, Landscape 3 will be backed by a fully audited networki
8274
8375Landscape inherits the benefits of Urbit itself: simplicity, durability, and a real sense of ownership. These come out of the box, from the beginning, but supporting a fully-featured interface makes a lot of demands of a new stack. By Landscape 3 our interface and infrastructure will have matured to the point that it can be confidently held up against alternatives.
8476
85−<br>
86−
8777![A landscape](https://storage.googleapis.com/media.urbit.org/site/understanding-urbit/uu-roadmap-5.jpg)
8878
8979## 2021 and beyond
content/understanding-urbit/urbit-id.md+2−2
@@ -31,7 +31,7 @@ Since the Urbit ID registry is live and deployed you can even [look at the chain
3131
3232Each Urbit ID is really just a number. From that number we generate a pronounceable name and a visually identifiable sigil. `~dalwel-fadrun` is `3,509,632,436`, for example.
3333
34−Urbit IDs are distributed by a sponsorship tree. At the top of the tree are 2<sup>8</sup> (256) galaxies. Each galaxy issues 2<sup>8</sup> stars, making a total of 2<sup>16</sup> (65K). Stars then each can issue 2<sup>16</sup> planets, making for 2<sup>32</sup> (~4B). As you might expect, each planet issues 2<sup>32</sup> moons.
34+Urbit IDs are distributed by a sponsorship tree. At the top of the tree are 2^8^ (256) galaxies. Each galaxy issues 2^8^ stars, making a total of 2^16^ (65K). Stars then each can issue 2^16^ planets, making for 2^32^ (~4B). As you might expect, each planet issues 2^32^ moons.
3535
3636You can also call stars ‘infrastructure nodes’ and galaxies ‘governance nodes’, since those are more descriptive names for their roles. Stars help route packets, kind of like an ISP. And galaxies are a bit like DNS root servers or ICANN members. The difference, of course, is that Urbit IDs are owned cryptographically by many different people and accrue reputation independently.
3737
@@ -41,7 +41,7 @@ And that's it. It's a simple system. What's important is why it is the way it is
4141
4242At a high level, there are three important things to understand about the overall Urbit ID system design.
4343
44−First, scarcity: there are only 2<sup>32</sup> (~4B) Urbit IDs, so they cost something. Since they cost something, people are less likely to use them to spam or abuse the network. When you meet a stranger with an Urbit ID, you know they have some skin in the game (even without leaking personal data in either direction). That said, each Urbit ID is purely pseudonymous, so `~dalwel-fadrun` for example, is proof of some stake in the network, but not much more.
44+First, scarcity: there are only 2^32^ (~4B) Urbit IDs, so they cost something. Since they cost something, people are less likely to use them to spam or abuse the network. When you meet a stranger with an Urbit ID, you know they have some skin in the game (even without leaking personal data in either direction). That said, each Urbit ID is purely pseudonymous, so `~dalwel-fadrun` for example, is proof of some stake in the network, but not much more.
4545
4646Second, decentralization: Urbit IDs are distributed by a sponsorship tree. Each sponsor issues a fixed number of addresses. Since there are lots of sponsors, there are lots of ways to get an Urbit ID — not just one central authority. Once you get one, it’s yours forever.
4747
content/updates/2020-07-27-update.md−2
@@ -28,8 +28,6 @@ We’re also working on delivering a new, keyboard-oriented, searchable navigati
2828
2929We’re also beginning to plan our next slate of work: we are preparing to make the leap to the OS2 codebase, and it involves quite a bit of research, but it’ll arrive sooner than you think…
3030
31−<br>
32−
3331Reminder: Hoon School begins August 1
3432
3533[Hooniversity](https://hooniversity.org/) is the new home of Hoon School run by `~rabsef-bicrym` and `~risruc-habteb`. To enroll, visit hooniversity.org or email join@hooniversity.org
content/using/id/hd-wallet.md+10−13
@@ -7,7 +7,7 @@ template = "doc.html"
77This document explains what the [Urbit HD wallet](/docs/glossary/hdwallet) is
88and how to use it.
99
10−### What is the Urbit HD Wallet? {#urbit-hd-wallet}
10+### What is the Urbit HD Wallet? {% #urbit-hd-wallet %}
1111
1212The [Urbit Hierarchical Deterministic (HD) Wallet](/docs/glossary/hdwallet) is a
1313custom Ethereum wallet based on BIP39 and BIP44 – the same underlying technology
@@ -21,10 +21,9 @@ you shouldn't have to worry about this: you can simply think of your "master
2121ticket" as the password to your Urbit ID. If you're operating a star or galaxy,
2222the Urbit HD Wallet allows you to implement a multi-tier key custody scheme.
2323
24−If you're interested, you can read the spec here: [Urbit HD Wallet Spec (UP
25−8)](https://github.com/urbit/proposals/blob/master/008-urbit-hd-wallet).
24+If you're interested, you can read the spec here: [Urbit HD Wallet Spec (UP 8)](https://github.com/urbit/proposals/blob/master/008-urbit-hd-wallet).
2625
27−### What is a master ticket? {#master-ticket}
26+### What is a master ticket? {% #master-ticket %}
2827
2928The "master ticket" is the cryptographic seed from which your other Urbit ID keys are
3029derived. It should be treated like a master password: **you should never share
@@ -38,7 +37,7 @@ hosted version of Bridge.
3837If you're operating a planet, you can use your master ticket to authenticate
3938with Bridge.
4039
41−### What is an ownership address? {#ownership-address}
40+### What is an ownership address? {% #ownership-address %}
4241
4342An ownership address is an Ethereum address that owns one or more of your Urbit
4443IDs. The Urbit Wallet Generator creates one [Urbit HD
@@ -47,11 +46,11 @@ identities. Using the ownership key associated with your ownership address, you
4746can transfer identities to other people, meaning that it’s very important to
4847store securely.
4948
50−### What are proxies? {#proxies}
49+### What are proxies? {% #proxies %}
5150
5251See [Proxies](/using/id/proxies).
5352
54−### What are seeds? {#seeds}
53+### What are seeds? {% #seeds %}
5554
5655All Ethereum key-pairs in the Urbit wallet system, including
5756[proxies](/docs/glossary/proxies), are produced by 128-bit cryptographically
@@ -60,10 +59,9 @@ of an Ethereum wallet and are yours alone. An ownership key pair is derived from
6059an ownership seed and, likewise, the various proxy key pairs are generated from
6160their respective proxy seeds.
6261
63−For detailed information see the [Urbit HD Wallet Spec (UP
64−8)](https://github.com/urbit/proposals/blob/master/008-urbit-hd-wallet).
62+For detailed information see the [Urbit HD Wallet Spec (UP 8)](https://github.com/urbit/proposals/blob/master/008-urbit-hd-wallet).
6563
66−### What does it mean to “set public keys”? {#set-public-keys}
64+### What does it mean to “set public keys”? {% #set-public-keys %}
6765
6866This means registering the public keys of your identity's encryption and
6967authentication key pairs (together known as "networking keys") with Urbit ID /
@@ -75,13 +73,13 @@ You want to reset these keys if they are compromised, or if your ship has sunk.
7573This is of little practical significance today, but resetting your networking
7674keys resets your relationship with other ships on the network.
7775
78−### What do I do if I want to own multiple identities? {#multiple-points}
76+### What do I do if I want to own multiple identities? {% #multiple-points %}
7977
8078We recommend using a different HD Wallet for each identity. You are able to
8179assign any number of identities to a single Ethereum address, however, since
8280they are just ERC-721 tokens.
8381
84−### How should I take care of my Urbit HD Wallet? {#custody}
82+### How should I take care of my Urbit HD Wallet? {% #custody %}
8583
8684Urbit IDs have accompanying security realities that must be taken seriously. The
8785responsibility for keeping cryptographic assets safe rests fully with the party
@@ -161,4 +159,3 @@ exposes a much larger attack surface to malicious actors.
161159
162160For all of these reasons, if you use Tier 3 methods, use them only for the
163161storage of low-value secrets.
164−
content/using/id/overview.md+50−187
@@ -7,160 +7,49 @@ template = "doc.html"
77
88![](https://media.urbit.org/site/posts/essays/pki-maze.png)
99
10−A public key infrastructure (PKI) is a system for binding a set of keys to a
11−name. Sometimes a small amount of metadata is included.
12−
13−Existing PKIs include PGP-style ["web of
14−trust"](https://en.wikipedia.org/wiki/Web_of_trust), [SSL
15−certificates](https://en.wikipedia.org/wiki/Certificate_authority),
16−[ZeroTier](https://www.zerotier.com/lf-announcement/),
17−[Keybase](https://keybase.io/), [OpenID](https://openid.net/what-is-openid/),
18−[Mozilla
19−Persona](https://developer.mozilla.org/en-US/docs/Archive/Mozilla/Persona), and
20−[Login with Google](https://developers.google.com/identity). These take unique
21−approaches to the problem and have achieved some degree of success, but none
22−provide globally consistent, permanent, and completely self-owned identities.
23−Exhaustive exploration and categorization is unfortunately out of scope for this
24−post, so we'll just describe Urbit's approach to achieving these properties in
25−our PKI.
26−
27−In Urbit, a "name" is often called a "[ship](/docs/glossary/ship)" or an "address" because we use the
28−metadata in the PKI to make names routable. The total data is two 256-bit
29−asymmetric keys, a cryptographic suite number (to allow changing crypto
30−algorithms), the revision number of the key, and the name of a ship that will
31−route for it. This sums to less than 128 bytes of data.
32−
33−Each PKI trades off various properties. We chose a tripartite system so that
34−appropriate choices can be made for different use cases. Here, we explore the
35−various properties we chose by following a series of binary choices -- the idea
36−maze.
37−
38−There are two sorts of PKI: either you can change your keys or not. If you
39−cannot, then your name is impermanent, for no one can keep a set of keys secure
40−forever. Even if your opsec never fails, eventually your crypto algorithms may
41−be compromised.
42−
43−However, if you sacrifice the ability to change your keys, you can have a very
44−nice property: self-attesting keys. If your name is a hash of your public key
45−information, then no other source of information is required to verify you are
46−who you say you are. This is a useful property since it requires no coordination
47−at all. Many things are impermanent, especially during development. It also
48−provides a way to try out the network without obtaining a permanent address.
49−
50−This is our first stop in the idea maze. We call this sort of name a "[comet](/docs/glossary/comet)". A
51−comet's name is a 128-bit human-readable hash of its public keys.
52−
53−However, Urbit is yours and it's forever. You shouldn't have to change your name
54−every time you change your keys. So, we go back and take the other choice as well: you
55−must be able to change your keys.
56−
57−<a name="0"></a>
58−To change keys, you must sign a message with the old keys revoking them and
59−supplying the new ones<sup><a href="#f0">[0]</a></sup>. The question
60−is what happens if the old keys also sign a second set of new keys. This could
61−happen if an attacker obtained your old keys after the fact. This is important
62−because one of the reasons to be able to change your keys is to invalidate the
63−old ones so that they have no power.
64−
65−We have two options again: the PKI may be globally consistent or not. To be
66−globally consistent means that if you believe a name is bound to a set of keys,
67−then nobody on the network will disagree.
68−
69−If you don't require global consistency, you may sign this message and send it
70−to all your neighbors, and they pass it on, and hopefully it gets to most of the
71−network quickly. However, if one of those ships receives two contradictory
72−versions of this message, the only thing it can do is trust the first one it
73−heard, which may be different than what someone else heard. Thus, this is
74−pairwise consistent but globally inconsistent. This is essentially how the
75−pre-blockchain [Ames](/docs/glossary/ames) network worked, though key changes were not actually
76−implemented. Because global consistency is a valuable property, we looked at
77−other options.
78−
79−For a globally consistent PKI that allows you to revoke keys, you need to be
80−able to distinguish between two cryptographically valid messages to determine
81−which was signed first. The dual problem could be solved easily — you can prove
82−a message is signed after another by including the signature of the first in the
83−second. This is equivalent to reading out a newspaper headline to prove a
84−message was recorded after a given day.
85−
86−The problem of proving that one message was sent before any later ones
87−inverts the problem. You can solve this with newspapers by placing the message
88−in the text of the newspaper. While reading a newspaper requires no
89−central party, writing one does. For a long time, this sort of message was
90−always handled by a central party. SSL revocations are managed by a few central
91−parties. When you buy property, it's not sufficient to have the previous owner
92−sign the title — this must be entered into a central land registry. Otherwise,
93−the owner may sell their property to multiple people and there would be no way
94−to determine who is the new owner. With the land registry, all you need to do is
95−ask the registry which sale happened first, and that's the one that counts.
96−
97−<a name="1"></a>
98−Again, Urbit is yours and it's forever. Trusting central registries
99−jeopardizes both. The keen reader will notice that the problem of determining
100−which key rotation happened first is exactly the double-spend problem that
101−Satoshi solved with his proof of work algorithm for Bitcoin. His first block
102−famously includes a newspaper headline to prove he didn't mine the block before
103−that date. In a beautiful duality, his own algorithm proves that he didn't mine
104−it after that date.<sup><a href="#f1">[1]</a></sup>
105−
106−Some argue that blockchain is only good for money. This is myopic and is
107−generally based on the experience that its most valuable application so far has
108−been money. The deeper problem that the blockchain cryptographic primitive
109−allows one to solve a previously impossible task: prove that one message was
110−signed before another without a central party. Blockchain was discovered by
111−someone trying to create digital money, and he needed that primitive, but that
112−doesn't mean that's all it's good for.
113−
114−<a name="2"></a>
115−Thus, we store our PKI data on a blockchain for our second kind of name:
116−[planets](/docs/glossary/planet). A planet is a 32-bit address which has key
117−information stored on the blockchain.<sup><a href="#f2">[2]</a></sup>
118−The owner of a planet may broadcast new PKI data by adding it to the
119−blockchain. Any later messages by the old keys will be rejected, and everyone
120−on the network will listen to the blockchain for key data. Thus, we have global
121−consistency, permanence, and self sovereignty. We know of no other solution
122−that can provide these properties.
123−
124−<a name="3"></a>
125−While small individually, the aggregate PKI data for all nodes on the
126−network may become very large. This is not an issue for comets because nobody
127−needs to store comet keys except for those which they're talking with, and even
128−those can be garbage-collected and re-requested and verified. For planets, there
129−is a canonical set of keys, and somebody must store that. There are about
130−2<sup>32</sup>, or 4 billion planets. If the PKI data is about 100 bytes for
131−each planet, this is about 400 GB of data. This may be more than most users wish
132−to store, but it's small enough that it would be very cheap for someone to host
133−this data for many users<sup><a href="#f3">[3]</a></sup>.
134−
135−This information is currently stored directly on the Ethereum 1.0 blockchain,
136−but as is well understood in blockchain circles this approach will not scale
137−beyond a certain point. This moment came to be sometime in 2020. In reaction to
138−this state of affairs, Tlon developed a "layer 2" scaling solution known as
139−[naive rollups](/docs/glossary/rollups). This allows users to submit compressed
140−PKI transactions to Ethereum as batches and compute the resulting change in PKI
141−state locally, dramatically reducing gas costs to the point that Tlon offers a
142−free-to-use public "roller" which aggregates transactions and submits them as a
143−batch.
144−
145−Of course, 4 billion is not enough addresses for every device on the planet today,
146−much less in a few decades. So, we apply our maxim of re-examining our choices
147−at each level for each use case. Examining the idea maze above, we cannot use
148−the blockchain option for everything since the data is too big. However, it's
149−not actually necessary for each of your devices to have its own self-sovereign
150−identity separate from your planet. So we choose the option of using a central
151−registry: your own planet.
152−
153−We allocate 4 billion "moons" to each of those planets. A moon is a 64-bit
154−address whose 32-bit suffix is its planet. Your planet can easily store the keys
155−for its own moons, and anyone who needs to talk to your moons can ask you for
156−the keys.
157−
158−This is the sense in which moons are true ships: they're permanent names and you
159−own them completely, as long as you own the planet. But they're not
160−independent ships — their keys can always be revoked by their planet.
161−
162−To create a sane network, we require global consistency for all our names. There
163−are three other properties; pick any two:
10+A public key infrastructure (PKI) is a system for binding a set of keys to a name. Sometimes a small amount of metadata is included.
11+
12+Existing PKIs include PGP-style ["web of trust"](https://en.wikipedia.org/wiki/Web_of_trust), [SSL certificates](https://en.wikipedia.org/wiki/Certificate_authority), [ZeroTier](https://www.zerotier.com/lf-announcement/), [Keybase](https://keybase.io/), [OpenID](https://openid.net/what-is-openid/), [Mozilla Persona](https://developer.mozilla.org/en-US/docs/Archive/Mozilla/Persona), and [Login with Google](https://developers.google.com/identity). These take unique approaches to the problem and have achieved some degree of success, but none provide globally consistent, permanent, and completely self-owned identities. Exhaustive exploration and categorization is unfortunately out of scope for this post, so we'll just describe Urbit's approach to achieving these properties in our PKI.
13+
14+In Urbit, a "name" is often called a "ship" or an "address" because we use the metadata in the PKI to make names routable. The total data is two 256-bit asymmetric keys, a cryptographic suite number (to allow changing crypto algorithms), the revision number of the key, and the name of a ship that will route for it. This sums to less than 128 bytes of data.
15+
16+Each PKI trades off various properties. We chose a tripartite system so that appropriate choices can be made for different use cases. Here, we explore the various properties we chose by following a series of binary choices -- the idea maze.
17+
18+There are two sorts of PKI: either you can change your keys or not. If you cannot, then your name is impermanent, for no one can keep a set of keys secure forever. Even if your opsec never fails, eventually your crypto algorithms may be compromised.
19+
20+However, if you sacrifice the ability to change your keys, you can have a very nice property: self-attesting keys. If your name is a hash of your public key information, then no other source of information is required to verify you are who you say you are. This is a useful property since it requires no coordination at all. Many things are impermanent, especially during development. It also provides a way to try out the network without obtaining a permanent address.
21+
22+This is our first stop in the idea maze. We call this sort of name a "comet". A comet's name is the 128-bit hash of its public keys.
23+
24+However, Urbit is yours and it's forever. You shouldn't have to change your name every time you change your keys. So, we go back and take the other choice: you must be able to change your keys.
25+
26+To change keys, you must sign a message with the old keys revoking them and supplying the new ones[^0]. The question is what happens if the old keys also sign a second set of new keys. This could happen if an attacker obtained your old keys after the fact. This is important because one of the reasons to be able to change your keys is to invalidate the old ones so that they have no power.
27+
28+We have two options again: the PKI may be globally consistent or not. To be globally consistent means that if you believe a name is bound to a set of keys, then nobody on the network will disagree.
29+
30+If you don't require global consistency, you may sign this message and send it to all your neighbors, and they pass it on, and hopefully it gets to most of the network quickly. However, if one of those ships receives two contradictory versions of this message, the only thing it can do is trust the first one it heard, which may be different than what someone else heard. Thus, this is pairwise consistent but globally inconsistent. This is essentially how the pre-blockchain Ames network worked, though key changes were not actually implemented. Because global consistency is a valuable property, we looked at other options.
31+
32+For a globally consistent PKI that allows you to revoke keys, you need to be able to distinguish between two cryptographically valid messages to determine which was signed first. The dual problem could be solved easily — you can prove a message is signed after another by including the signature of the first in the second. This is equivalent to reading out a newspaper headline to prove a message was recorded after a given day.
33+
34+However, the problem of proving one message was sent before any later ones inverts the problem. You can solve this with newspapers by placing the message in the text of the newspaper. However, while reading a newspaper requires no central party, writing one does. For a long time, this sort of message was always handled by a central party. SSL revocations are managed by a few central parties. When you buy property, it's not sufficient to have the previous owner sign the title — this must be entered into a central land registry. Otherwise, the owner may sell their property to multiple people and there would be no way to determine who is the new owner. With the land registry, all you need to do is ask the registry which sale happened first, and that's the one that counts.
35+
36+However, Urbit is yours and it's forever. Trusting central registries jeopardizes both. The keen reader will notice that the problem of determining which key rotation happened first is exactly the double-spend problem that Satoshi solved with his proof of work algorithm for Bitcoin. His first block famously includes a newspaper headline to prove he didn't mine the block before that date. In a beautiful duality, his own algorithm proves that he didn't mine it after that date.[^1]
37+
38+Some argue that blockchain is only good for money. This is myopic and is generally based on the experience that its most valuable application so far has been money. However, blockchain is a cryptographic primitive to do what was previously impossible: prove that one message was signed before another without a central party. Blockchain was discovered by someone trying to create digital money, and he needed that primitive, but that doesn't mean that's all it's good for.
39+
40+Thus, we store our PKI data on a blockchain for our second kind of name: planets. A planet is a 32-bit address which has key information stored on the blockchain.[^2] The owner of a planet may broadcast new PKI data by adding it to the blockchain. Any later messages by the old keys will be rejected, and everyone on the network will listen to the blockchain for key data. Thus, we have global consistency, permanence, and self sovereignty. We know of no other solution that can provide these properties.
41+
42+However, while small individually, the aggregate PKI data for all nodes on the network may become very large. This is not an issue for comets because nobody needs to store comet keys except for those which they're talking with, and even those can be garbage-collected and re-requested and verified. For planets, there is a canonical set of keys, and somebody must store that. There are about 2^32^, or 4 billion planets. If the PKI data is about 100 bytes for each planet, this is about 400 GB of data. This may be more than most users wish to store, but it's small enough that it would be very cheap for someone to host this data for many users[^3].
43+
44+This information is currently stored directly on the Ethereum 1.0 blockchain, but as is well understood in blockchain circles this approach will not scale beyond a certain point. Many chains are pursing designs that allow the users of the smart contracts to store locally the data associated with the contracts they care about and only commit hashes to the chain. We expect there to be several viable options for this by the time our scaling needs exceed what's provided by Ethereum 1.0. This will free us from the cost of hosting the PKI data on all Ethereum nodes, but the data must still be stored somewhere. Any service that could handle such a large amount of data would inherently centralize the network.
45+
46+However, 4 billion is not enough addresses for every device on the planet today, much less in a few decades. So, we apply our maxim of re-examining our choices at each level for each use case. Examining the idea maze above, we cannot use the blockchain option for everything since the data is too big. However, it's not actually necessary for each of your devices to have its own self-sovereign identity separate from your planet. So we choose the option of using a central registry: your own planet.
47+
48+We allocate 4 billion "moons" to each of those planets. A moon is a 64-bit address whose 32-bit suffix is its planet. Your planet can easily store the keys for its own moons, and anyone who needs to talk to your moons can ask you for the keys.
49+
50+This is the sense in which moons are true ships: they're permanent names and you own them completely, as long as you own the planet. However, they're not independent ships — their keys can always be revoked by their planet.
51+
52+To create a sane network, we require global consistency for all our names. There are three other properties; pick any two:
16453
16554- Comets are impermanent, self sovereign, and plentiful.
16655
@@ -168,36 +57,10 @@ are three other properties; pick any two:
16857
16958- Moons are permanent, not self sovereign, and plentiful.
17059
171−<a name="4"></a>
172−Fancifully, comets are wayward celestial bodies that are great for testing and
173−miscellaneous low-value things that won't last for long. Planets are where you
174−can build a home and shape it into anything you want it to be. People can always
175−find your planet; it's not going anywhere. Moons are useful for special
176−purposes, like storage, heavy industry, and anything else you might want to do
177−off-planet.<sup><a href="#f4">[4]</a></sup>
178−
179−
180−<a name="f0" href="#0">[0]</a>: Or the equivalent with a hierarchical key
181−structure. In practice, you want to have a master key which signs a junior key
182−for everyday use. You use the master key to rotate the junior key.
183−
184−<a name="f1" href="#1">[1]</a>: More strictly: it proves that he didn't mine it
185−after the other blocks currently on the Bitcoin blockchain. It only gives an
186−ordering within the chain, not a literal timestamp.
187−
188−<a name="f2" href="#2">[2]</a>: In addition to planets, there are stars and
189−galaxies. From a PKI perspective they're treated exactly like planets, but on
190−the network they provide infrastructure services like routing.
191−
192−<a name="f3" href="#3">[3]</a>: In practice, this will likely be an included
193−service by your sponsoring star. It could be a separate service, but it will be
194−very cheap because it's a commodity and the "cost of production" is very cheap.
195−At any rate, it should never rise above the capital cost of a 400GB hard drive.
196−
197−<a name="f4" href="#4">[4]</a>: To extend the metaphor, stars are a
198−neighborhood to live in -- they're easier for other planets to see, so when
199−they want to send you a message they look for your star first. If they don't
200−even know where your star is, they can certainly find your star's galaxy, and
201−that will be enough to locate the star. Of course, if your star is not
202−providing satisfactory service, you can take your planet and move to another
203−star.
60+Fancifully, comets are wayward celestial bodies that are great for testing and miscellaneous low-value things that won't last for long. Planets are where you can build a home and shape it into anything you want it to be. People can always find your planet; it's not going anywhere. Moons are useful for special purposes, like storage, heavy industry, and anything else you might want to do off-planet.[^4]
61+
62+[^0]: Or the equivalent with a hierarchical key structure. In practice, you want to have a master key which signs a junior key for everyday use. You use the master key to rotate the junior key.
63+[^1]: More strictly: it proves that he didn't mine it after the other blocks currently on the Bitcoin blockchain. It only gives an ordering within the chain, not a literal timestamp.
64+[^2]: In addition to planets, there are stars and galaxies. From a PKI perspective they're treated exactly like planets, but on the network they provide infrastructure services like routing.
65+[^3]: In practice, this will likely be an included service by your sponsoring star. It could be a separate service, but it will be very cheap because it's a commodity and the "cost of production" is very cheap. At any rate, it should never rise above the capital cost of a 400GB hard drive.
66+[^4]: To extend the metaphor, stars are a neighborhood to live in -- they're easier for other planets to see, so when they want to send you a message they look for your star first. If they don't even know where your star is, they can certainly find your star's galaxy, and that will be enough to locate the star. Of course, if your star is not providing satisfactory service, you can take your planet and move to another star.
content/using/id/using-bridge.md+1−1
@@ -73,7 +73,7 @@ Click `Generate ->`, which will download a keyfile onto your machine.
7373
7474With that keyfile in hand, you can now exit Bridge and continue to the guide to [install the Urbit binary](/getting-started/).
7575
76−### Escaping your sponsor {#escaping-your-sponsor}
76+### Escaping your sponsor {% #escaping-your-sponsor %}
7777
7878As a planet or star, it behooves you to be sponsored by an active star or galaxy,
7979respectively. If your sponsor isn't suiting your needs, you can escape to a
content/using/os/basics.md+10−10
@@ -134,7 +134,7 @@ On startup, urbit tries to bind to `localhost:80`. If you're already running som
134134
135135Once running, you can sign into your ship’s web interface from `http://localhost` (if bound to port `80`), `http://localhost:8080` (if bound to port `8080`), or `https://your-urbit.arvo.network` if you've set up DNS.
136136
137−## Moons {#moons}
137+## Moons {% #moons %}
138138
139139Planets can spawn moons, which are conceptually meant for connected devices: phones, smart TVs, digital thermostats. The basic idea is that your planet runs permanently in a data center somewhere, while moons run on all your devices. Each planet can issue ~4 billion (`2^32`) moons.
140140
@@ -178,21 +178,23 @@ To cycle the keys of a moon without a factory reset, run:
178178
179179You can then run `|rekey` on the moon with the key given by the above command as the argument.
180180
181−### Maintaining Moons Through A Breach {#restoring-moons}
181+### Maintaining Moons Through A Breach {% #restoring-moons %}
182182
183183Moons are [always subordinate to the ship that issued them](/docs/glossary/moon). Their PKI is sent around the network by their parent planet/star/galaxy. As such, if the sponsor planet/star/galaxy of a moon breaches, other urbits on the network who were not aware of the moon prior to the breach (knew its PKI information) will not be able to reach the old moon. Moons can, however, be preserved over the breach of their sponsor and re-added to `jael`. The following guide assumes you are on `[life=n rift=1]` where `n` can be any life #. If you've previously breached your moon and want to preserve it, you'll need to modify the instructions to include setting the appropriate rift using `|moon-breach` from `hood`.
184184
185185To add an existing moon to `jael` on a breached planet, you'll need the following:
186186
187− - Your moon's current life # `+keys ~sampel-monler-dozzod-dozzod` (run on the moon) _and_;
188− - Your moon's sponsor's understanding of your moon's current life (same command, run on the sponsor).
189− - Your moon's existing keyfile or key-string (`@uw`) _or_ the result of `pub:ex:(nol:nu:crub:crypto .^(@uv %j /=vein=/<life # of moon, per moon, here>))` _and_;
190− - Your moon's sponsor's understanding of your moon's existing public key `pass:.^([@ud pass=@uw ~] %j /=deed=/~sampel-monler-dozzod-dozzod/<life # of moon per sponsor here>)`.
187+- Your moon's current life # `+keys ~sampel-monler-dozzod-dozzod` (run on the moon) _and_;
188+- Your moon's sponsor's understanding of your moon's current life (same command, run on the sponsor).
189+- Your moon's existing keyfile or key-string (`@uw`) _or_ the result of `pub:ex:(nol:nu:crub:crypto .^(@uv %j /=vein=/<life # of moon, per moon, here>))` _and_;
190+- Your moon's sponsor's understanding of your moon's existing public key `pass:.^([@ud pass=@uw ~] %j /=deed=/~sampel-monler-dozzod-dozzod/<life # of moon per sponsor here>)`.
191191
192192If you only have they keyfile or key-string from your moon's last boot, you'll need to derive the `pass` value from that using
193+
193194```
194195pub:ex:(nol:nu:crub:crypto key:(seed:jael:l (cue <your @uw keyfile contents or key-string contents here>)))
195196```
197+
196198This should produce a long `@ud`.
197199
198200Once you have all of the requisite elements, you can perform the following on the moon's sponsor:
@@ -203,9 +205,7 @@ Once you have all of the requisite elements, you can perform the following on th
203205
204206Eventually, the PKI will populate through the network w/ the correct life #, reconnecting your previously orphaned moon. You can speed this up by `|hi ~zod` and `|hi ~sampel-monler-dozzod-dozzod`-ing from the moon and sponsor, respectively (replace with the appropriate ship names).
205207
206−
207−
208−## Escaping A Sponsor {#escape}
208+## Escaping A Sponsor {% #escape %}
209209
210210To use the network as a planet or star, you must be sponsored by an active star
211211or galaxy, respectively. If your sponsor isn't suiting your needs, you can
@@ -218,7 +218,7 @@ escape to a different one. This can be done with
218218You can check your ship's _life_ and _rift_ number by running `+keys our` in
219219dojo. You can inspect another ship's life and rift number by running `+keys ~sampel-palnet`. For information on what life and rift are, see [Life and Rift](/docs/azimuth/life-and-rift).
220220
221−## DNS setup {#dns-setup}
221+## DNS setup {% #dns-setup %}
222222
223223We have a system that lets you request a domain name for your ship in the form of `ship.arvo.network`, where `ship` is your ship's name minus the `~`. This allows users to access their ships remotely using Landscape, our graphical web interface. Stars and planets follow the same DNS request process, and galaxies have their own requirements. Moons and comets are not supported.
224224
content/using/os/messaging.md+3−2
@@ -63,7 +63,8 @@ In order to see messages in `:chat-cli` you may need to do the following in Dojo
6363```
6464:chat-cli %connect
6565```
66− ### Creating and managing chats {#chat-management}
66+
67+### Creating and managing chats {% #chat-management %}
6768
6869As mentioned before, any urbit can host any number of chats. Existing chats can be deleted or modified with various commands. All commands in this section should be sent from the `chat-cli>` prompt.
6970
@@ -72,6 +73,7 @@ As mentioned before, any urbit can host any number of chats. Existing chats can
7273Syntax: `;create [type] /name +`, where `+` represents an optional glyph.
7374
7475Creates and joins a chat, where `[type]` is any of the following:
76+
7577- `channel`: public chat. Has a blacklist for write control.
7678- `village`: invite-only chat.
7779- `journal`: publicly readable, invite-only for writing.
@@ -192,7 +194,6 @@ There are a few special-purpose "glyphs":
192194- `|` - Informational messages
193195- `*` - Posts to a target you don't have a glyph binding for
194196
195−
196197### Configuration
197198
198199#### Set audience
content/using/os/ship-troubleshooting.md+6−6
@@ -18,7 +18,7 @@ If your issue is not covered here, please check out our [Troubleshooting Knowled
1818- [Booting issues](#booting-issues)
1919- [Crashing issues](#crashing-issues)
2020
21−## Best Practices {#best-practices}
21+## Best Practices {% #best-practices %}
2222
2323An 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.
2424
@@ -68,7 +68,7 @@ The command takes two arguments, and comes in the form of `|knob %error-tag %lev
6868
6969So for example, to silence all Ames packet-related errors, try `|knob %hole %hush`.
7070
71−### Perform a factory reset. {#factory-reset}
71+### Perform a factory reset. {% #factory-reset %}
7272
7373A factory reset is when a ship tells the rest of the network to treat it as though the ship was just started for the first time again. Any ongoing or outstanding communication is forgotten and connections are reestablished from scratch.
7474
@@ -88,7 +88,7 @@ regularly. You may do so by entering `|code %reset` into dojo. Doing this
8888will prevent [Bridge](/docs/glossary/bridge) from being able to derive your code,
8989meaning you will only be able to check it from dojo in the future.
9090
91−## Operation Issues {#operation-issues}
91+## Operation Issues {% #operation-issues %}
9292
9393### My urbit is frozen
9494
@@ -104,7 +104,7 @@ This happens when your Dojo is waiting on a request, such as an HTTP request. Yo
104104
105105Since 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.
106106
107−## Connectivity Issues {#connectivity-issues}
107+## Connectivity Issues {% #connectivity-issues %}
108108
109109### I can't communicate with anyone
110110
@@ -156,7 +156,7 @@ The above commands work if you have the wrong keys of other ships. If other ship
156156This is usually the result of deleting your pier and starting your ship again. To fix
157157this, you must perform a [factory reset](#factory-reset).
158158
159−## Booting Issues {#booting-issues}
159+## Booting Issues {% #booting-issues %}
160160
161161### My ship booted for the first time, but it turned into a comet instead of my planet or star
162162
@@ -166,7 +166,7 @@ You may have used the wrong arguments when booting your ship for the first time.
166166
167167This 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`.
168168
169−## Crashing Issues {#crashing-issues}
169+## Crashing Issues {% #crashing-issues %}
170170
171171### I got a `bail` error and my ship crashed
172172
lib/lib.js−2
@@ -1,5 +1,3 @@
1−import remark from "remark";
2−import html from "remark-html";
31import fs from "fs";
42import { join, parse } from "path";
53import matter from "gray-matter";
next.config.js+2−45
@@ -1,47 +1,4 @@
1−const withTM = require("next-transpile-modules")([
2− "remark-parse",
3− "remark-gfm",
4− "remark-rehype",
5− "rehype-stringify",
6− "rehype-raw",
7− "micromark-core-commonmark",
8− "micromark-extension-gfm",
9− "micromark-util-combine-extensions",
10− "micromark-util-chunked",
11− "micromark-util-character",
12− "micromark-util-sanitize-uri",
13− "micromark-util-encode",
14− "micromark-util-classify-character",
15− "micromark-util-resolve-all",
16− "micromark-util-subtokenize",
17− "micromark-util-normalize-identifier",
18− "micromark-util-html-tag-name",
19− "micromark-util-decode-numeric-character-reference",
20− "micromark-util-decode-string",
21− "micromark-factory-destination",
22− "micromark-factory-label",
23− "micromark-factory-space",
24− "micromark-factory-title",
25− "micromark-factory-whitespace",
26− "mdast-util-gfm",
27− "ccount",
28− "mdast-util-find-and-replace",
29− "hast-util-raw",
30− "hast-util-from-parse5",
31− "hast-util-to-parse5",
32− "hast-util-parse-selector",
33− "hast-to-hyperscript",
34− "hastscript",
35− "unist-util-visit-parents",
36− "unist-util-is",
37− "vfile-location",
38− "web-namespaces",
39− "mdast-util-to-markdown",
40− "mdast-util-from-markdown",
41− "markdown-table",
42−]);
43−
44−module.exports = withTM({
1+module.exports = {
452 reactStrictMode: false,
463 // target: 'serverless',
474 webpack: (config, { isServer }) => {
@@ -66,4 +23,4 @@ module.exports = withTM({
6623 // }
6724 return config;
6825 },
69−});
26+};
package-lock.json+1551−4641

This diff is too big to show here.

package.json+6−11

This diff is too big to show here.

pages/applications/[[...application]].js+6−3

This diff is too big to show here.

pages/audits.js+2−2

This diff is too big to show here.

pages/bitcoin-wallet.js+2−2

This diff is too big to show here.

pages/blog/[slug].js+4−8

This diff is too big to show here.

pages/coinmarketcap.js+2−2

This diff is too big to show here.

pages/community/[[...slug]].js+5−9

This diff is too big to show here.

pages/docs/[[...slug]].js+4−9

This diff is too big to show here.

pages/events.js+1−8

This diff is too big to show here.

pages/events/[slug].js+4−12

This diff is too big to show here.

pages/faq.js+2−3

This diff is too big to show here.

pages/getting-started/[[...slug]].js+3−6

This diff is too big to show here.

pages/grants/[slug].js+4−12

This diff is too big to show here.

pages/grants/apprenticeships.js+2−16

This diff is too big to show here.

pages/grants/bounties.js+2−17

This diff is too big to show here.

pages/grants/proposals.js+2−16

This diff is too big to show here.

pages/groups/[[...group]].js+6−4

This diff is too big to show here.

pages/ids/[id].js+6−3

This diff is too big to show here.

pages/index.js−25

This diff is too big to show here.

pages/media/[slug].js+3−8

This diff is too big to show here.

pages/privacy.js+2−2

This diff is too big to show here.

pages/terms-of-service.js+2−3

This diff is too big to show here.

pages/understanding-urbit/[[...slug]].js+4−8

This diff is too big to show here.

pages/updates.js−2

This diff is too big to show here.

pages/updates/[slug].js+4−15

This diff is too big to show here.

pages/using/[[...slug]].js+4−8

This diff is too big to show here.

pages/voting-instructions.js+2−3

This diff is too big to show here.

patches/@markdoc+markdoc+0.1.2.patchnew file+1409

This diff is too big to show here.

styles/globals.css+6−2

This diff is too big to show here.

styles/markdown.css+17−3

This diff is too big to show here.