@@ -7,7 +7,8 @@ aliases = ["docs/reference/hoon-expressions/irregular/"]
8##### Reading guide
8##### Reading guide
10+Headings contain runes, phonetics and tokens. Description contains a link to the
10−Headings contain runes, phonetics and tokens. Description contains a link to the docs and a short description of the rune. Both regular (R) and irregular (I) forms are given.
11+docs and a short description of the rune. Both regular and irregular forms are given.
12Want to `Ctrl-f` to find out the meaning of something weird you saw? Search for `\symbol`. ie `\?` or `\=`. It'll show you to the irregular forms that uses that symbol.
13Want to `Ctrl-f` to find out the meaning of something weird you saw? Search for `\symbol`. ie `\?` or `\=`. It'll show you to the irregular forms that uses that symbol.
@@ -20,16 +21,18 @@ Anything Nock can do, Hoon can do also.
20[docs](@/docs/hoon/reference/rune/dot.md#dotlus) \\+
21[docs](@/docs/hoon/reference/rune/dot.md#dotlus) \\+
21`[%dtls p=atom]`: increment an atom with Nock 4.
22`[%dtls p=atom]`: increment an atom with Nock 4.
23−R: `.+(p)`
24+Regular: `.+(p)`
26### .= dottis
28### .= dottis
28[docs](@/docs/hoon/reference/rune/dot.md#dottis) \\=
30[docs](@/docs/hoon/reference/rune/dot.md#dottis) \\=
29`[%dtts p=hoon q=hoon]`: test for equality with Nock 5.
31`[%dtts p=hoon q=hoon]`: test for equality with Nock 5.
31−R: `.=(p q)`
33+Regular: `.=(p q)`
34## ; mic (make)
37## ; mic (make)
@@ -40,8 +43,9 @@ Miscellaneous useful macros.
40[docs](@/docs/hoon/reference/rune/mic.md#miccol) \\:
43[docs](@/docs/hoon/reference/rune/mic.md#miccol) \\:
41`[%mccl p=hoon q=(list hoon)]`: call a binary function as an n-ary function.
44`[%mccl p=hoon q=(list hoon)]`: call a binary function as an n-ary function.
43−R: `;:(p q)`
46+Regular: `;:(p q)`
46## : col (cells)
50## : col (cells)
@@ -52,8 +56,9 @@ The cell runes.
52[docs](@/docs/hoon/reference/rune/col.md#colhep) \\[\\]\\^\\+\\\`\\~
56[docs](@/docs/hoon/reference/rune/col.md#colhep) \\[\\]\\^\\+\\\`\\~
53`[%clhp p=hoon q=hoon]`: construct a cell (2-tuple).
57`[%clhp p=hoon q=hoon]`: construct a cell (2-tuple).
55−R: `:-(p q)`
59+Regular: `:-(p q)`
59 [a b] ==> :-(a b)
64 [a b] ==> :-(a b)
@@ -75,8 +80,9 @@ Flow hoons change the subject. All non-flow hoons (except cores) pass the subjec
75[docs](@/docs/hoon/reference/rune/tis.md#tisgal) \\:
80[docs](@/docs/hoon/reference/rune/tis.md#tisgal) \\:
76`[%tsgl p=hoon q=hoon]`: compose two hoons, inverted.
81`[%tsgl p=hoon q=hoon]`: compose two hoons, inverted.
78−R: `=<(p q)`
83+Regular: `=<(p q)`
81## | bar (core)
87## | bar (core)
@@ -101,24 +107,27 @@ The invocation family of runes.
101[docs](@/docs/hoon/reference/rune/cen.md#centis) \\(\\)
107[docs](@/docs/hoon/reference/rune/cen.md#centis) \\(\\)
102`[%cnts p=wing q=(list (pair wing hoon))]`: take a wing with changes.
108`[%cnts p=wing q=(list (pair wing hoon))]`: take a wing with changes.
104−R: `%=(p a 1)`
110+Regular: `%=(p a 1)`
107### %~ censig
114### %~ censig
109[docs](@/docs/hoon/reference/rune/cen.md#censig) \\~
116[docs](@/docs/hoon/reference/rune/cen.md#censig) \\~
110`[%cnsg p=wing q=hoon r=hoon]`: call with multi-armed door.
117`[%cnsg p=wing q=hoon r=hoon]`: call with multi-armed door.
112−R: `%~(p q r)`
119+Regular: `%~(p q r)`
121+Irregular: `~(p q r)`
115### %- cenhep
123### %- cenhep
117[docs](@/docs/hoon/reference/rune/cen.md#cenhep) \\(\\)
125[docs](@/docs/hoon/reference/rune/cen.md#cenhep) \\(\\)
118`[%cnhp p=hoon q=hoon]`: call a gate (function).
126`[%cnhp p=hoon q=hoon]`: call a gate (function).
120−R: `%-(p q)`
128+Regular: `%-(p q)`
123Note: `(p)` becomes `$:p` (`=<($ p)`), which behaves as you would expect (func call w/o args).
132Note: `(p)` becomes `$:p` (`=<($ p)`), which behaves as you would expect (func call w/o args).
@@ -131,16 +140,18 @@ A mold is a gate (function) that helps us build simple and rigorous data structu
131[docs](@/docs/hoon/reference/rune/buc.md#bucwut) \\?
140[docs](@/docs/hoon/reference/rune/buc.md#bucwut) \\?
132`[%bcwt p=(list model)]`: mold which normalizes a general union.
141`[%bcwt p=(list model)]`: mold which normalizes a general union.
134−R: `$?(p)`
143+Regular: `$?(p)`
137### $_ buccab
147### $_ buccab
139[docs](@/docs/hoon/reference/rune/buc.md#buccab) \\_
149[docs](@/docs/hoon/reference/rune/buc.md#buccab) \\_
140`[%bccb p=value]`: mold which normalizes to an example.
150`[%bccb p=value]`: mold which normalizes to an example.
142−R: `$_(p)`
152+Regular: `$_(p)`
145## ? wut (test)
156## ? wut (test)
@@ -151,44 +162,67 @@ Hoon has the usual branches and logical tests.
151[docs](@/docs/hoon/reference/rune/wut.md#wutzap) \\!
162[docs](@/docs/hoon/reference/rune/wut.md#wutzap) \\!
152`[%wtzp p=hoon]`: logical not.
163`[%wtzp p=hoon]`: logical not.
154−R: `?!(p)`
165+Regular: `?!(p)`
157### ?& wutpam
169### ?& wutpam
159[docs](@/docs/hoon/reference/rune/wut.md#wutpam) \\&
171[docs](@/docs/hoon/reference/rune/wut.md#wutpam) \\&
160`[%wtpm p=(list hoon)]`: logical and.
172`[%wtpm p=(list hoon)]`: logical and.
162−R: `?&(p)`
174+Regular: `?&(p)`
165### ?| wutbar
178### ?| wutbar
167[docs](@/docs/hoon/reference/rune/wut.md#wutbar) \\|
180[docs](@/docs/hoon/reference/rune/wut.md#wutbar) \\|
168`[%wtbr p=(list hoon)]`: logical or.
181`[%wtbr p=(list hoon)]`: logical or.
170−R: `?|(p)`
183+Regular: `?|(p)`
173## ^ ket (cast)
187## ^ ket (cast)
175Lets us adjust types without violating type constraints.
189Lets us adjust types without violating type constraints.
193+[docs](@/docs/hoon/reference/ket.md#ketcol) \\,
194+`[%ktcl p=spec]`: mold gate for type `p`.
177### ^- kethep
200### ^- kethep
179[docs](@/docs/hoon/reference/rune/ket.md#kethep) \\\`
202[docs](@/docs/hoon/reference/rune/ket.md#kethep) \\\`
180`[%kthp p=model q=value]`: typecast by mold.
203`[%kthp p=model q=value]`: typecast by mold.
182−R: `^-(p q)`
205+Regular: `^-(p q)`
207+Irregular: `` `p`q ``
211+[docs](@/docs/hoon/reference/rune/ket.md#kettar) \\*
212+`[%kttr p=spec]`: produce bunt value of mold.
185### ^= kettis
218### ^= kettis
187[docs](@/docs/hoon/reference/rune/ket.md#kettis) \\=
220[docs](@/docs/hoon/reference/rune/ket.md#kettis) \\=
188`[%ktts p=toga q=value]`: name a value.
221`[%ktts p=toga q=value]`: name a value.
190−R: `^=(p q)`
223+Regular: `^=(p q)`
193## Miscellaneous
227## Miscellaneous