11Old type, same as the new `type`.
32This is the type used in `%brcb` (`|_` door) `hoon` type for `+*` alias arms.
37+$ alas (list (pair term hoon))
46This is the same as `@`.
70By convention, a short name for a category of atom. `aura` is circularly
71defined, with `@ta` being the `aura` of the ASCII subset commonly used in urbit.
81See also: [`+$base`](#base), aura reference
94A base type that nouns are built from. A `base` is either a noun, atom with
95aura, cell, boolean, null, or an empty set.
101 $@ $? %noun :: any noun
107 [%atom p=aura] :: atom
117[%tsbr p=[%base p=%cell] q=[%zpzp ~]]
126An atom or some `hoon`.
131+$ woof $@(@ [~ p=hoon])
140> `woof`[~ %base p=%cell]
153Jet hint information that must be present in the body of a `~/` or `~%` rune. A
154`chum` can optionally contain a kelvin version, jet vendor, and version number.
159+$ chum $? lef=term :: jet name
160 [std=term kel=@] :: kelvin version
161 [ven=term pro=term kel=@] :: vendor and product
162 [ven=term pro=term ver=@ kel=@] :: all of the above
172> (ream '~/(%lob.314 !!)')
173[%sgfs p=[std=%lob kel=314] q=[%zpzp ~]]
180Tuple of core information
182Variance `p`, subject type `q`, and `r`: optional compiled nock, and arms. Used
183as an intermediate step during compilation and converted to a core.
188+$ coil $: p=garb :: name, wet=dry, vary
190 r=(pair seminoun (map term tome)) :: chapters
200A triple of an optional name, polarity (wet/dry), and variance (`%iron`, etc).
205+$ garb (trel (unit term) poly vair)
214Whether a core is wet or dry.
226Cases of arms by variance model.
231+$ foot $% [%dry p=hoon] :: dry arm, geometric
232 [%wet p=hoon] :: wet arm, generic
242Used for documentation.
247+$ link :: lexical segment
248 $% [%chat p=term] :: |chapter
249 [%cone p=aura q=atom] :: %constant
250 [%frag p=term] :: .leg
251 [%funk p=term] :: +arm
261Summary and details for documentation.
266+$ crib [summary=cord details=(list sect)]
278+$ help [links=(list link) =crib]
287Reference into subject by tree address or name.
292+$ limb $@ term :: wing element
293 $% [%& p=axis] :: by geometry
294 [%| p=@ud q=(unit term)] :: by name
302[%wing p=~[[%.n p=2 q=[~ %$]]]]
335+$ onyx (list (pair type foot))
350 $% [%& p=type] :: leg
351 [%| p=axis q=(set [p=type q=foot])] :: arm
361A `(pair ? cord)`. If `%.y` it's prose and if `%.n` it's code. Used in
376A [`$vein`](#vein) and a [`$opal`](#opal).
381+$ palo (pair vein opal)
388%hoon, %type, %nock or %tank
410+$ pock (pair axis nock)
422+$ port (each palo (pair type nock))
429Structure definition AST.
434+$ spec :: structure definition
436 $% [%base p=base] :: base type
437 [%dbug p=spot q=spec] :: set debug
438 [%leaf p=term q=@] :: constant atom
439 [%like p=wing q=(list wing)] :: reference
440 [%loop p=term] :: hygienic reference
441 [%made p=(pair term (list term)) q=spec] :: annotate synthetic
442 [%make p=hoon q=(list spec)] :: composed spec
443 [%name p=term q=spec] :: annotate simple
444 [%over p=wing q=spec] :: relative to subject
446 [%bcgr p=spec q=spec] :: $>, filter: require
447 [%bcbc p=spec q=(map term spec)] :: $$, recursion
448 [%bcbr p=spec q=hoon] :: $|, verify
449 [%bccb p=hoon] :: $_, example
450 [%bccl p=[i=spec t=(list spec)]] :: $:, tuple
451 [%bccn p=[i=spec t=(list spec)]] :: $%, head pick
452 [%bcdt p=spec q=(map term spec)] :: $., read-write core
453 [%bcgl p=spec q=spec] :: $<, filter: exclude
454 [%bchp p=spec q=spec] :: $-, function core
455 [%bckt p=spec q=spec] :: $^, cons pick
456 [%bcls p=stud q=spec] :: $+, standard
457 [%bcfs p=spec q=(map term spec)] :: $/, write-only core
458 [%bcmc p=hoon] :: $;, manual
459 [%bcpm p=spec q=hoon] :: $&, repair
460 [%bcsg p=hoon q=spec] :: $~, default
461 [%bctc p=spec q=(map term spec)] :: $`, read-only core
462 [%bcts p=skin q=spec] :: $=, name
463 [%bcpt p=spec q=spec] :: $@, atom pick
464 [%bcwt p=[i=spec t=(list spec)]] :: $?, full pick
465 [%bczp p=spec q=(map term spec)] :: $!, opaque core
475> `spec`[%bccl ~[leaf+ud+1 leaf+ud+2]]
476[%bccl p=[i=[%leaf p=%ud q=1] t=~[[%leaf p=%ud q=2]]]]
489 $% [%| p=wing q=tent r=(list spec)] :: ~(p q r...)
490 [%& p=(list wing)] :: a.b:c.d
500This is used when compiling `?-` expressions and similar.
506 $% [%& p=(unit term) q=wing] :: simple wing
507 [%| p=(unit term) q=hoon] :: named wing
517This type is used for faces and similar by the compiler.
523 $@ =term :: name/~[term %none]
524 $% [%base =base] :: base match
525 [%cell =skin =skin] :: pair
526 [%dbug =spot =skin] :: trace
527 [%leaf =aura =atom] :: atomic constant
528 [%help =help =skin] :: describe
529 [%name =term =skin] :: apply label
530 [%over =wing =skin] :: relative to
531 [%spec =spec =skin] :: cast to
532 [%wash depth=@ud] :: strip faces
542This type is used by the compiler for the contents of arms in cores.
547+$ tome (pair what (map term hoon))
556Describes the structure of a noun.
561+$ tope :: topographic type
562 $@ $? %& :: cell or atom
565 (pair tope tope) :: cell
584Container core for internally-used XML structure types. XML structure types
585you'd typically use directly are defined in [Standard Library section
5865e](/docs/hoon/reference/stdlib/5e).
601Either a tape element or interpolated hoon expression in an XML attribute.
606+$ beer $@(char [~ p=hoon])
615XML tag name and optional namespace.
620+$ mane $@(@tas [@tas @tas])
629> (en-xml:html ;foo_bar;)
632> `manx:hoot`;foo_bar;
633[g=[n=[%foo %bar] a=~] c=~]
635> `mane:hoot`n.g:`manx`;foo_bar;
638> `mane:hoot`n.g:`manx:hoot`;foo;
648An XML element which may contain text, attributes, and other elements.
650`g` is a [`$marx:hoot`](#marxhoot) (a tag) and `c` is a
651[`$marl:hoot`](#marlhoot) (its contents).
656+$ manx $~([[%$ ~] ~] [g=marx c=marl])
668> (en-xml:html `manx:hoot`;foo;)
684 c=~[[g=[n=%$ a=~[[n=%$ v="abc"]]] c=~]]
690 c=~[[g=[n=%$ a=~[[n=%$ v="hello"]]] c=~]]
698"<foo><bar>abc</bar><baz><xxx>hello</xxx></baz></foo>"
707A list of XML nodes - maybe with interpolation and recursion. See
708[`$tuna:hoot`](#tunahoot).
728 [g=[n=%foo a=~] c=~[[g=[n=%$ a=~[[n=%$ v=~['a' 'b' 'c']]]] c=~]]]
729 [g=[n=%bar a=~] c=~[[g=[n=%$ a=~[[n=%$ v=~['d' 'e' 'f']]]] c=~]]]
739"<baz><foo>abc</foo><bar>def</bar></baz>"
746Dynamic XML attributes
748A list of atributes for an XML tag. For each list item, `n` is a
749[`$mane:hoot`](#manehoot) (an attribute name with optional namespace) and `v` is
750a `(list beer:hoot)` (the attribute itself, maybe with interpolated hoon).
755+$ mart (list [n=mane v=(list beer)])
764> `manx:hoot`;foo.bar;
765[g=[n=%foo a=~[[n=%class v=~['b' 'a' 'r']]]] c=~]
767> `mart:hoot`a.g:`manx:hoot`;foo.bar;
768~[[n=%class v=~['b' 'a' 'r']]]
770> (en-xml:html ;foo.bar;)
771"<foo class=\"bar\"></foo>"
780An XML tag with optional attributes. `n` is a [`$mane:hoot`](#manehoot) (the tag
781name with optional namespace) and `a` is a [`$mart:hoot`](marthoot) (any XML
787+$ marx $~([%$ ~] [n=mane a=mart])
793> `manx:hoot`;foo.bar;
794[g=[n=%foo a=~[[n=%class v=~['b' 'a' 'r']]]] c=~]
796> `marx:hoot`g:`manx:hoot`;foo.bar;
797[n=%foo a=~[[n=%class v=~['b' 'a' 'r']]]]
799> (en-xml:html ;foo.bar;)
800"<foo class=\"bar\"></foo>"
809If `%.y`, a [`$manx:hoot`](#manxhoot) (single XML node). If `%.n`, a
810[`$marl:hoot`](#marlhoot) (list of XML nodes).
815+$ mare (each manx marl)
822[%.y p=[g=[n=%$ a=~] c=~]]
824> `mare:hoot`[%.y ;foo.bar;]
825[%.y p=[g=[n=%foo a=~[[n=%class v=~['b' 'a' 'r']]]] c=~]]
827> `mare:hoot`[%.n ~[;foo.bar; ;baz;]]
828[%.n p=~[[g=[n=%foo a=~[[n=%class v=~['b' 'a' 'r']]]] c=~] [g=[n=%baz a=~] c=~]]]
835Interpolation or nodes
837If `%.y`, a [`$tuna:hoot`](#tunahoot). If `%.n`, a [`$marl:hoot`](#marlhoot).
842+$ maru (each tuna marl)
851Kinds of nodes. Either an ordinary [`$manx:hoot`](#manxhoot), or else a plain tape, a
852[`$marl:hoot`](#marlhoot), or a function call.
860 $: ?(%tape %manx %marl %call)
871See the [Rune section](/docs/hoon/reference/rune) of the Hoon reference for
872details of what many of these relate to.
879 $^ [p=hoon q=hoon] ::
881 [%$ p=axis] :: simple leg
883 [%base p=base] :: base spec
884 [%bust p=base] :: bunt base
885 [%dbug p=spot q=hoon] :: debug info in trace
886 [%eror p=tape] :: assembly error
887 [%hand p=type q=nock] :: premade result
888 [%note p=note q=hoon] :: annotate
889 [%fits p=hoon q=wing] :: underlying ?=
890 [%knit p=(list woof)] :: assemble string
891 [%leaf p=(pair term @)] :: symbol spec
892 [%limb p=term] :: take limb
893 [%lost p=hoon] :: not to be taken
894 [%rock p=term q=*] :: fixed constant
895 [%sand p=term q=*] :: unfixed constant
896 [%tell p=(list hoon)] :: render as tape
897 [%tune p=$@(term tune)] :: minimal face
898 [%wing p=wing] :: take wing
899 [%yell p=(list hoon)] :: render as tank
900 [%xray p=manx:hoot] :: ;foo; templating
902 [%brbc sample=(lest term) body=spec] :: |$
903 [%brcb p=spec q=alas r=(map term tome)] :: |_
904 [%brcl p=hoon q=hoon] :: |:
905 [%brcn p=(unit term) q=(map term tome)] :: |%
907 [%brkt p=hoon q=(map term tome)] :: |^
909 [%brsg p=spec q=hoon] :: |~
910 [%brtr p=spec q=hoon] :: |*
911 [%brts p=spec q=hoon] :: |=
912 [%brpt p=(unit term) q=(map term tome)] :: |@
915 [%clcb p=hoon q=hoon] :: :_ [q p]
916 [%clkt p=hoon q=hoon r=hoon s=hoon] :: :^ [p q r s]
917 [%clhp p=hoon q=hoon] :: :- [p q]
918 [%clls p=hoon q=hoon r=hoon] :: :+ [p q r]
919 [%clsg p=(list hoon)] :: :~ [p ~]
920 [%cltr p=(list hoon)] :: :* p as a tuple
921 :: :::::: invocations
922 [%cncb p=wing q=(list (pair wing hoon))] :: %_
923 [%cndt p=hoon q=hoon] :: %.
924 [%cnhp p=hoon q=hoon] :: %-
925 [%cncl p=hoon q=(list hoon)] :: %:
926 [%cntr p=wing q=hoon r=(list (pair wing hoon))] :: %*
927 [%cnkt p=hoon q=hoon r=hoon s=hoon] :: %^
928 [%cnls p=hoon q=hoon r=hoon] :: %+
929 [%cnsg p=wing q=hoon r=(list hoon)] :: %~
930 [%cnts p=wing q=(list (pair wing hoon))] :: %=
932 [%dtkt p=spec q=hoon] :: .^ nock 11
933 [%dtls p=hoon] :: .+ nock 4
934 [%dttr p=hoon q=hoon] :: .* nock 2
935 [%dtts p=hoon q=hoon] :: .= nock 5
936 [%dtwt p=hoon] :: .? nock 3
937 :: :::::: type conversion
938 [%ktbr p=hoon] :: ^| contravariant
939 [%ktdt p=hoon q=hoon] :: ^. self-cast
940 [%ktls p=hoon q=hoon] :: ^+ expression cast
941 [%kthp p=spec q=hoon] :: ^- structure cast
942 [%ktpm p=hoon] :: ^& covariant
943 [%ktsg p=hoon] :: ^~ constant
944 [%ktts p=skin q=hoon] :: ^= label
945 [%ktwt p=hoon] :: ^? bivariant
946 [%kttr p=spec] :: ^* example
947 [%ktcl p=spec] :: ^: filter
949 [%sgbr p=hoon q=hoon] :: ~| sell on trace
950 [%sgcb p=hoon q=hoon] :: ~_ tank on trace
951 [%sgcn p=chum q=hoon r=tyre s=hoon] :: ~% general jet hint
952 [%sgfs p=chum q=hoon] :: ~/ function j-hint
953 [%sggl p=$@(term [p=term q=hoon]) q=hoon] :: ~< backward hint
954 [%sggr p=$@(term [p=term q=hoon]) q=hoon] :: ~> forward hint
955 [%sgbc p=term q=hoon] :: ~$ profiler hit
956 [%sgls p=@ q=hoon] :: ~+ cache=memoize
957 [%sgpm p=@ud q=hoon r=hoon] :: ~& printf=priority
958 [%sgts p=hoon q=hoon] :: ~= don't duplicate
959 [%sgwt p=@ud q=hoon r=hoon s=hoon] :: ~? tested printf
960 [%sgzp p=hoon q=hoon] :: ~! type on trace
961 :: :::::: miscellaneous
962 [%mcts p=marl:hoot] :: ;= list templating
963 [%mccl p=hoon q=(list hoon)] :: ;: binary to nary
964 [%mcfs p=hoon] :: ;/ [%$ [%$ p ~] ~]
965 [%mcgl p=spec q=hoon r=hoon s=hoon] :: ;< bind
966 [%mcsg p=hoon q=(list hoon)] :: ;~ kleisli arrow
967 [%mcmc p=spec q=hoon] :: ;; normalize
968 :: :::::: compositions
969 [%tsbr p=spec q=hoon] :: =| push bunt
970 [%tscl p=(list (pair wing hoon)) q=hoon] :: =: q w= p changes
971 [%tsfs p=skin q=hoon r=hoon] :: =/ typed variable
972 [%tsmc p=skin q=hoon r=hoon] :: =; =/(q p r)
973 [%tsdt p=wing q=hoon r=hoon] :: =. r with p as q
974 [%tswt p=wing q=hoon r=hoon s=hoon] :: =? conditional =.
975 [%tsgl p=hoon q=hoon] :: =< =>(q p)
976 [%tshp p=hoon q=hoon] :: =- =+(q p)
977 [%tsgr p=hoon q=hoon] :: => q w=subject p
978 [%tskt p=skin q=wing r=hoon s=hoon] :: =^ state machine
979 [%tsls p=hoon q=hoon] :: =+ q w=[p subject]
980 [%tssg p=(list hoon)] :: =~ hoon stack
981 [%tstr p=(pair term (unit spec)) q=hoon r=hoon] :: =* new style
982 [%tscm p=hoon q=hoon] :: =, overload p in q
983 :: :::::: conditionals
984 [%wtbr p=(list hoon)] :: ?| loobean or
985 [%wthp p=wing q=(list (pair spec hoon))] :: ?- pick case in q
986 [%wtcl p=hoon q=hoon r=hoon] :: ?: if=then=else
987 [%wtdt p=hoon q=hoon r=hoon] :: ?. ?:(p r q)
988 [%wtkt p=wing q=hoon r=hoon] :: ?^ if p is a cell
989 [%wtgl p=hoon q=hoon] :: ?< ?:(p !! q)
990 [%wtgr p=hoon q=hoon] :: ?> ?:(p q !!)
991 [%wtls p=wing q=hoon r=(list (pair spec hoon))] :: ?+ ?- w=default
992 [%wtpm p=(list hoon)] :: ?& loobean and
993 [%wtpt p=wing q=hoon r=hoon] :: ?@ if p is atom
994 [%wtsg p=wing q=hoon r=hoon] :: ?~ if p is null
995 [%wthx p=skin q=wing] :: ?# if q matches p
996 [%wtts p=spec q=wing] :: ?= if q matches p
997 [%wtzp p=hoon] :: ?! loobean not
999 [%zpcm p=hoon q=hoon] :: !,
1000 [%zpgr p=hoon] :: !>
1001 [%zpgl p=spec q=hoon] :: !<
1002 [%zpmc p=hoon q=hoon] :: !;
1003 [%zpts p=hoon] :: !=
1004 [%zppt p=(list wing) q=hoon r=hoon] :: !@
1005 [%zpwt p=$@(p=@ [p=@ q=@]) q=hoon] :: !?
1016> `hoon`(ream '|=([a=@ b=@] [b a])')
1021 [ i=[%bcts p=term=%a q=[%base p=[%atom p=~.]]]
1022 t=~[[%bcts p=term=%b q=[%base p=[%atom p=~.]]]]
1025 q=[%cltr p=~[[%wing p=~[%b]] [%wing p=~[%a]]]]
1035Associative list of `term` `hoon`, used in jet hint processing.
1040+$ tyre (list [p=term q=hoon]) ::
1047List of 'maybe' hoons
1049List of `unit` `hoon`, or gaps left to be inferred, in `path` parsing. When you
1050use a path such as `/=base=/gen/code` the path is in fact a `tyke`, where the
1051`=` are inferred from your current path.
1056+$ tyke (list (unit hoon))
1065See the [Nock documentation](/docs/nock/definition) for details.
1070+$ nock $^ [p=nock q=nock] :: autocons
1071 $% [%1 p=*] :: constant
1072 [%2 p=nock q=nock] :: compose
1073 [%3 p=nock] :: cell test
1074 [%4 p=nock] :: increment
1075 [%5 p=nock q=nock] :: equality test
1076 [%6 p=nock q=nock r=nock] :: if, then, else
1077 [%7 p=nock q=nock] :: serial compose
1078 [%8 p=nock q=nock] :: push onto subject
1079 [%9 p=@ q=nock] :: select arm and fire
1080 [%10 p=[p=@ q=nock] q=nock] :: edit
1081 [%11 p=$@(@ [p=@ q=nock]) q=nock] :: hint
1082 [%12 p=nock q=nock] :: grab data from sky
1083 [%0 p=@] :: axis select
1093> (nock !=([+(.) 20]))
1094[p=[%4 p=[%0 p=1]] q=[%1 p=20]]
1103Used for documentation.
1108+$ note :: type annotation
1109 $% [%help p=help] :: documentation
1110 [%know p=stud] :: global standard
1111 [%made p=term q=(unit (list wing))] :: structure
1125 $@ $? %noun :: any nouns
1128 $% [%atom p=term q=(unit @)] :: atom / constant
1129 [%cell p=type q=type] :: ordered pair
1130 [%core p=type q=coil] :: object
1131 [%face p=$@(term tune) q=type] :: namespace
1132 [%fork p=(set type)] :: union
1133 [%hint p=(pair type note) q=type] :: annotation
1134 [%hold p=type q=hoon] :: lazy evaluation
1141> `type`[%cell [%atom %ud ~] [%atom %ud ~]]
1151An intermediate Nock computation result. Similar to a
1152[`$toon`](/docs/hoon/reference/stdlib/3g#toon) but without a rendered stack
1158+$ tony :: ++tone done right
1159 $% [%0 p=tine q=*] :: success
1160 [%1 p=(set)] :: blocks
1161 [%2 p=(list [@ta *])] :: error ~_s
1174+$ tine :: partial noun
1176 $% [%& p=tine q=tine] :: half-blocked
1177 [%| p=(set)] :: fully blocked
1190+$ tool $@(term tune)
1204 $: p=(map term (unit hoon)) :: aliases
1205 q=(list hoon) :: bridges
1229Typed data. A `$vase` is used wherever typed data is explicitly worked with.
1244[#t/[@ud @ud] q=[2 2]]
1256Same as a [`$vase`](#vase).
1270Covariant, contravariant, invariant, bivariant.
1275+$ vial ?(%read %rite %both %free)
1286- `%gold` - invariant payload.
1287- `%iron` - contravariant sample.
1288- `%lead` - bivariant sample.
1289- `%zinc` - covariant sample.
1291See the Hoon School lesson on [type
1292polymorphism](/docs/hoon/hoon-school/type-polymorphism) for more details.
1297+$ vair ?(%gold %iron %lead %zinc)
1311+$ vein (list (unit axis))
1320Used in documentation.
1338 $: lab=(unit term) :: label
1339 boy=(unit (pair cord (list sect))) :: body
1340 def=(map term (pair cord (list sect))) :: definitions
1341 use=(set term) :: defs used
1354+$ what (unit (pair cord (list sect)))
1363Address in subject. A `$wing` is a path to a value in the subject. A
1364term alone is the trivial case of a `$wing`.
1376[%wing p=~[%a [%.y p=3] %c]]
1378> (wing +:(ream 'a.+.c'))
1386Abstract identity of resource awaited
1399Internal interpreter result
1431 $: mon=moan :: sample count
1432 hit=(map term @ud) :: hit points
1433 cut=(map path hump) :: cut points
1441Profiling: sample metric
1446+$ moan :: sample metric
1447 $: fun=@ud :: samples in C
1448 noc=@ud :: samples in nock
1449 glu=@ud :: samples in glue
1450 mal=@ud :: samples in alloc
1451 far=@ud :: samples in frag
1452 coy=@ud :: samples in copy
1453 euq=@ud :: samples in equal
1467 $: mon=moan :: sample count
1468 out=(map path @ud) :: calls out of
1469 inn=(map path @ud) :: calls into
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