9Biblical names in hoon are primarily aliases for the compiler.
14 ++ abel typo :: original sin: type
30By convention, a short name for a category of atom. `++aura` is
31circularly defined, with `@ta` being the `++aura` of the ASCII subset
32commonly used in urbit.
37 ++ aura ,@ta :: atom format
42See also: `++base`, aura reference
55A base type that nouns are built from. A `++base` is either a noun, cell,
56boolean or null labelled with an aura.
61 ++ base ?([%atom p=aura] %noun %cell %bean %null) :: axils, @ * ^ ? ~
71 [%tsbr p=[%axil p=%cell] q=[%zpzp ~]]
74 [%tsbr p=[%axil p=[%atom p=~.t]] q=[%zpzp ~]]
76 [%tsbr p=[%axil p=%bean] q=[%zpzp ~]]
85Used to build tapes internally.
90 ++ beer $|(@ [~ p=hoon]) :: simple embed
98 > `beer`[~ (ream 'lan')]
99 [~ p=[%cnzz p=~[%lan]]]
106XML interpolation cases
113 ++ beet $| @ :: advanced embed
114 $% [%a p=hoon] :: take tape
115 [%b p=hoon] :: take manx
116 [%c p=hoon] :: take marl
117 [%d p=hoon] :: take $+(marl marl)
118 [%e p=hoon q=(list tuna)] :: element literal
128Jet hint information that must be present in the body of a `~/` or `~%`
129rune. A `++chum` can optionally contain a kelvin version, jet vendor,
130and `"{major}.{minor}"` version number.
135 ++ chum $? lef=term :: jet name
136 [std=term kel=@] :: kelvin version
137 [ven=term pro=term kel=@] :: vendor and product
138 [ven=term pro=term ver=@ kel=@] :: all of the above
144XX there's a ++chum in zuse that's politely causing this not to work
150 > (ream '~/(%lob.314 !!)')
151 [%sgfs p=[std=%lob kel=314] q=[%zpzp ~]]
158Tuple of core information
160Variance `p`, subject type `q`, and `q`: optional compiled nock, and arms. Used as an
161intermediate step within Section 2fB. Converted by `++core` to %core type.
166 ++ coil $: p=?(%gold %iron %lead %zinc) :: core type
168 r=[p=?(~ ^) q=(map term foot)] ::
176Cases of arms by variance model.
178`%ash` arms are `dry` and geometric.
183 ++ foot $% [%ash p=hoon] :: dry arm, geometric
184 [%elm p=hoon] :: wet arm, generic
185 [%oak ~] :: XX not used
186 [%yew p=(map term foot)] :: XX not used
192See also: `++ap`, `++ut`
198 > (ream '|% ++ $ foo --')
199 [%brcn p={[p=%$ q=[%ash p=[%cnzz p=~[%foo]]]]}]
200 > +<+:(ream '|% ++ $ foo --')
202 > (foot +<+:(ream '|% ++ $ foo --'))
203 [%ash p=[%cnzz p=~[%foo]]]
204 > (foot +<+:(ream '|% +- $ foo --'))
205 [%elm p=[%cnzz p=~[%foo]]]
213 ++ limb $|(term $%([%& p=axis] [%| p=@ud q=term])) ::
218Reference into subject by name/axis
220See also: section 2fC-2fD
224 [%cnzz p=~[[%.n p=2 q=%$]]]
225 > (limb &2:(ream '^^$'))
227 > (limb &2:(ream '^^^$'))
240 ++ line ,[p=[%leaf p=aura q=@] q=tile] :: %kelp case
246 > (ream '$%([1 a] [%2 b])')
251 [ i=[p=[%leaf p=~.ud q=1] q=[%herb p=[%cnzz p=~[%a]]]]
252 t=~[[p=[%leaf p=~.ud q=2] q=[%herb p=[%cnzz p=~[%b]]]]]
256 > &3:(ream '$%([1 a] [%2 b])')
257 p=[p=[%leaf p=%ud q=1] q=[%herb p=[%cnzz p=~[%a]]]]
258 > (line &3:(ream '$%([1 a] [%2 b])'))
259 [p=[%leaf p=~.ud q=1] q=[%herb p=[%cnzz p=~[%a]]]]
267 ++ metl ?(%gold %iron %zinc %lead) :: core variance
278Virtual machine. See Nock.
283 ++ nock $& [p=nock q=nock] :: autocons
284 [%3 p=nock] :: cell test
285 [%4 p=nock] :: increment
286 [%5 p=nock q=nock] :: equality test
287 [%6 p=nock q=nock r=nock] :: if, then, else
288 [%7 p=nock q=nock] :: serial compose
289 [%8 p=nock q=nock] :: push onto subject
290 [%9 p=@ q=nock] :: select arm and fire
291 [%10 p=?(@ [p=@ q=nock]) q=nock] :: hint
292 [%11 p=nock] :: grab data from sky
301 > (nock !=([+(.) 20]))
302 [p=[%4 p=[%0 p=1]] q=[%1 p=20]]
310 ++ null ,~ :: null, nil, etc
327Type and location of core-shaped thing? XX Compiler Internals
335 [%| p=axis q=(list ,[p=type q=foot])] ::
344 [p=0 q=[%.y p=%void]]
353A restricted text atom for canonical atom syntaxes. The prefix is `~.`.
354There are no escape sequences except `~~`, which means `~`, and `~-`,
355which means `_`. `-` and `.` encode themselves. No other characters
356besides numbers and lowercase letters are permitted.
361 ++ span ,@ta :: text-atom (ASCII)
397A `++wing` or `++hoon`.
399 > (ream '=+ a=4 ?-(a @ ~)')
401 p=[%ktts p=p=%a q=[%dtzy p=%ud q=4]]
405 q=~[[p=[%axil p=[%atom p=~.]] q=[%bczp p=%null]]]
408 > (ream '=+ a=4 ?-(4 @ ~)')
410 p=[%ktts p=p=%a q=[%dtzy p=%ud q=4]]
413 p=[%.n p=~ q=[%dtzy p=%ud q=4]]
414 q=~[[p=[%axil p=[%atom p=~.]] q=[%bczp p=%null]]]
425A face, or tree of faces. A `++toga` is applied to anything assigned
428XX move to `++ut` and rune doc (for \^= examples)
433 ++ toga :: face control
434 [2 p=toga q=toga] :: cell toga
444 [%ktts p=p=%a q=[%dtzy p=%ud q=1]]
447 > (ream '[a b]=[1 2 3]')
450 q=[%cltr p=~[[%dtzy p=%ud q=1] [%dtzy p=%ud q=2] [%dtzy p=%ud q=3]]]
455 > (ream '[a ~]=[1 2 3]')
457 p=[%2 p=p=%a q=[%0 ~]]
458 q=[%cltr p=~[[%dtzy p=%ud q=1] [%dtzy p=%ud q=2] [%dtzy p=%ud q=3]]]
466Intermediate Nock computation result
468Similar to `++toon`, but stack trace is not yet rendered.
473 ++ tone $% [%0 p=*] :: success
479 > (mink [[20 21] 0 3] ,~)
482 > (mink [[0] !=(.^(cy//=main/1))] ,~)
483 [%1 p=~[[31.075 1.685.027.454 1.852.399.981 49 0]]]
484 > (path [31.075 1.685.027.454 1.852.399.981 49 0])
487 > (mink [[1 2] !=(~|(%hi +(.)))] ,~)
488 [%2 p=~[[~.yelp 26.984]]]
489 > (mink [[1 2] !=(!:(+(.)))] ,~)
496 \/159.445.990.350.374.058.574.398.238.344.143.957.205.628.479.572.65\/
522 [%d p=hoon] :: dynamic list
523 [%e p=hoon q=(list tuna)] :: element
524 [%f p=(list tuna)] :: subflow
530Leaf %a contains plain-text, %b an empty tag, %c a static list, %d a
531dynamic list, %e a full node element containing a hoon and a list of
532tuna, and %f is a empty node.
542List of `++hoon`s. In `:*`, for example, your contents is
548 ++ tusk (list hoon) ::
555 [%cltr p=~[[%dtzy p=%ud q=1] [%dtzy p=%ud q=2] [%dtzy p=%ud q=3]]]
556 > (tusk +:(ream '[1 2 3]'))
557 ~[[%dtzy p=%ud q=1] [%dtzy p=%ud q=2] [%dtzy p=%ud q=3]]
566An expression, or AST.
568See Rune section of Hoon reference
576List of `++unit` `++hoon`, or gaps left to be inferred, in `++path`
577parsing. When you use a path such as `/=main=/pub/src/doc` the path is in fact
578a `++tyke`, where the `=` are inferred from your current path.
583 ++ tyke (list (unit hoon)) ::
589 > (scan "/==as=" porc:vast)
590 [0 ~[~ ~ [~ [%dtzy p=%tas q=29.537]] ~]]
591 > `tyke`+:(scan "/==as=" porc:vast)
592 ~[~ ~ [~ [%dtzy p=%tas q=29.537]] ~]
601Pointer for `++type`. `++typo` preserves the previous `++type` in your
607 ++ typo type :: old type
612See also: `++seem`, `++vise`, `++type`
620Associative list of `++term` `++hoon`, used in jet hint processing.
625 ++ tyre (list ,[p=term q=hoon]) ::
632Typed data. A `++vase` is used wherever typed data is explicitly worked
638 ++ vase ,[p=type q=*] :: type-value pair
645 [p=[%cube p=0 q=[%atom p=%n]] q=0]
654Used to convert from previously-typed data during reboot.
659 ++ vise ,[p=typo q=*] :: old vase
664See also: `++typo`, `++seer`
671 ++ wing (list limb) ::
674Address in subject. A `++wing` is a path to a value in the subject. A
675term alone is the trivial case of a `++wing`.
681 [%cnzz p=~[%a [%.y p=3] %c]]
682 > (wing +:(ream 'a.+.c'))
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list