+++ title = "2q: Molds and Mold-Builders" weight = 20 template = "doc.html" +++ ## `+$axis` Tree address A Nock axis inside a noun. After the leading 1, in binary, a `1` signfies right and `0` left. #### Source ```hoon +$ axis @ ``` #### Examples ``` > =axis `axis`7 > axis 7 > `@ub`axis 0b111 > =noun [[4 5] [6 14 15]] > .*(noun [0 axis]) [14 15] ``` --- ## `+$bean` Boolean `0`, `&`, or `%.y` are true, and `1`, `|`, and `%.n` are false. Note 1 is false and 0 is true. This is sometimes referred to as "loobean". #### Source ```hoon +$ bean ? ``` #### Examples ``` > *bean %.y ``` ``` > `bean`& %.y ``` ``` > `bean`| %.n ``` --- ## `+$flag` Boolean Same as [$bean](#bean). #### Source ```hoon +$ flag ? ``` --- ## `+$char` Character A single `@t` character. #### Source ```hoon +$ char @t ``` #### Examples ``` > *char '' ``` ``` > `char`'a' 'a' ``` --- ## `+$cord` UTF-8 text One of Hoon's two string types (the other being `tape`). A cord is an atom of UTF-8 text. #### Source ```hoon +$ cord @t ``` #### Examples ``` > *cord '' > `@ux`'foobar' 0x7261.626f.6f66 > `@t`97 'a' > `@`'urbit' 499.984.265.845 > `@t`499.984.265.845 'urbit' ``` #### Discussion Aura `@t` designates a Unicode atom, little-endian: the first character in the text is the least-significant byte. [`trip`](/docs/hoon/reference/stdlib/4b#trip) converts from `cord` to `tape`, and [`crip`](/docs/hoon/reference/stdlib/4b#crip) converts from `tape` to `cord`. --- ## `+$byts` bytes, LSB first An atom `dat` with its byte-length specified in `wid`. This is to handle leading zeros that are typically ignored. #### Source ```hoon +$ byts [wid=@ud dat=@] ``` #### Examples ``` > *byts [wid=0 dat=0] ``` ``` > =a `byts`[4 2] > a [wid=4 dat=2] > `@ux`(rev 3 a) 0x200.0000 ``` --- ## `+$date` Parsed date A boolean designating AD or BC, a year atom, a month atom, and a `tarp`, which is a day atom and a time. #### Source ```hoon +$ date [[a=? y=@ud] m=@ud t=tarp] ``` #### Examples ``` > *date [[a=%.y y=0] m=0 t=[d=0 h=0 m=0 s=0 f=~]] > `date`(yore ~2014.6.6..21.09.15..0a16) [[a=%.y y=2.014] m=6 t=[d=6 h=21 m=9 s=15 f=~[0xa16]]] > now ~2018.5.25..17.55.15..9ad8 ``` #### Discussion See also: [`year`](/docs/hoon/reference/stdlib/3c#year), [`yore`](/docs/hoon/reference/stdlib/3c#yore) --- ## `+$knot` ASCII text An atom type that only permits ASCII characters. #### Source ```hoon +$ knot @ta ``` #### Examples ``` > *knot ~. > `@ta`105 ~.i ``` --- ## `+$noun` Any noun #### Source ```hoon +$ noun * ``` #### Examples ``` > *noun 0 ``` ``` > `noun`'foo' 7.303.014 ``` ``` > `noun`"foo" [102 111 111 0] ``` --- ## `+$path` Like unix path A path is a list of [`$knot`](#knot). #### Source ```hoon +$ path (list knot) ``` #### Examples ``` > *path / ``` ``` > `path`"foo" /f/o/o ``` ``` > `path`[~.foo ~.bar ~.baz ~] /foo/bar/baz ``` --- ## `+$stud` Standard name #### Source ```hoon +$ stud :: standard name $@ mark=@tas :: auth=urbit $: auth=@tas :: standards authority type=path :: standard label == :: ``` --- ## `+$tang` Bottom-first error A list of [`tank`](#tank)s. It's for printing types and bottom-up printing of stack traces. #### Source ```hoon +$ tang (list tank) ``` #### Examples ``` > *tang ~ ``` ``` > %- %- slog ^- tang :~ 'foo' leaf+"bar" [%palm ["|" "(" "!" ")"] leaf+"foo" leaf+"bar" leaf+"baz" ~] [%rose [" " "[" "]"] leaf+"foo" leaf+"bar" leaf+"baz" ~] == foo bar (!foo|bar|baz) [foo bar baz] ~ ~ ``` --- ## `+$tank` Formatted print tree A `tank` is one of four cases: - just a `cord`. - `%leaf` is just a `tape`. - `%palm` is a list of `tank` delimited by the strings in `p`, with back-steps at new lines. - `%rose` is a list of `tank` delimited by the strings in `p` without back-steps at new lines. #### Source ```hoon +$ tank $~ leaf/~ $@ cord $% [%leaf p=tape] [%palm p=(qual tape tape tape tape) q=(list tank)] [%rose p=(trel tape tape tape) q=(list tank)] == ``` #### Examples ``` > *tank [%leaf p=""] ``` ``` > ~(ram re 'foobar') "foobar" ``` ``` > ~(ram re leaf+"foo") "foo" ``` ``` > ~(ram re [%palm ["|" "(" "!" ")"] leaf+"foo" leaf+"bar" leaf+"baz" ~]) "(!foo|bar|baz)" ``` ``` > ~(ram re [%rose [" " "[" "]"] leaf+"foo" leaf+"bar" leaf+"baz" ~]) "[foo bar baz]" ``` --- ## `+$tape` List of characters One of Hoon's two string types, the other being [`+cord`](#cord). A tape is a list of `@tD`. #### Source ```hoon +$ tape (list @tD) ``` #### Examples ``` > *tape "" > `tape`"foobar" "foobar" >`(list @t)`"foobar" <|f o o b a r|> >`(list @tD)`"foobar" "foobar" > `(list @)`"foobar" ~[102 111 111 98 97 114] ``` --- ## `+$tour` UTF-32 clusters A `tour` is a list of UTF-32 characters. #### Source ```hoon +$ tour (list @c) ``` #### Examples ``` > *tour ~ ``` ``` > `tour`(tuba "foobar") ~[~-f ~-o ~-o ~-b ~-a ~-r] ``` --- ## `+$tarp` Parsed time The time component of a `date`: day, hour, minute, second and a list of `@ux` for precision. #### Source ```hoon +$ tarp [d=@ud h=@ud m=@ud s=@ud f=(list @ux)] ``` #### Examples ``` > *tarp [d=0 h=0 m=0 s=0 f=~] > (yell now) [d=106.751.991.821.625 h=22 m=58 s=10 f=~[0x44ff]] > `tarp`(yell ~2014.6.6..21.09.15..0a16) [d=106.751.991.820.172 h=21 m=9 s=15 f=~[0xa16]] > (yell ~d20) [d=20 h=0 m=0 s=0 f=~] ``` --- ## `+$term` Hoon constant A restricted text atom for Hoon constants. The only characters permitted are lowercase ASCII letters, `-`, and `0-9`, the latter two of which cannot be the first character. The syntax for `@tas` is the text itself, always preceded by `%`. The empty `@tas` has a special syntax, `$`. #### Source ```hoon +$ term @tas ``` #### Examples ``` > *term %$ > *%term %term > %dead-fish9 %dead-fish9 > -:!>(%dead-fish9) #t/%dead-fish9 > -:!>(`@tas`%dead-fish9) #t/@tas ``` --- ## `+$wain` List of strings A list of `cord`s. A `wain` is used instead of a single `cord` with `\n`. #### Source ```hoon +$ wain (list cord) ``` #### Examples ``` > *wain <||> > `wain`/som/del/rok <|som del rok|> ``` --- ## `+$wall` List of list of characters A list of `tape`s. `wall` is used instead of a single `tape` with `\n`. #### Source ```hoon +$ wall (list tape) ``` #### Examples ``` > *wall <<>> > `wall`(wash [0 20] leaf+<(bex 256)>) << "\\/115.792.089.237.\\/" " 316.195.423.570." " 985.008.687.907." " 853.269.984.665." " 640.564.039.457." " 584.007.913.129." " 639.936" "\\/ \\/" >> ``` ---