# 2q: Molds and Mold-Builders

## `$axis` <a href="#axis" id="axis"></a>

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` <a href="#bean" id="bean"></a>

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` <a href="#flag" id="flag"></a>

Boolean.

Same as [`$bean`](#bean).

#### Source

```hoon
+$  flag  ?
```

***

## `$char` <a href="#char" id="char"></a>

Character.

A single `@t` character.

#### Source

```hoon
+$  char  @t
```

#### Examples

```
> *char
''
```

```
> `char`'a'
'a'
```

***

## `$cord` <a href="#cord" id="cord"></a>

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`](https://docs.urbit.org/hoon/4b#trip) converts from `$cord` to `$tape`, and [`+crip`](https://docs.urbit.org/hoon/4b#crip) converts from `$tape` to `$cord`.

***

## `$byts` <a href="#byts" id="byts"></a>

Bytes, least-significant 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` <a href="#date" id="date"></a>

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`](https://docs.urbit.org/hoon/3c#year), [`+yore`](https://docs.urbit.org/hoon/3c#yore)

***

## `$knot` <a href="#knot" id="knot"></a>

URL-safe path element text.

An `$atom` type that only permits lower-case letters, numbers, and four special characters: hyphen, tilde, underscore and period.

#### Source

```hoon
+$  knot  @ta
```

#### Examples

```
> *knot
~.
```

```
> `@ta`105
~.i
```

***

## `$noun` <a href="#noun" id="noun"></a>

Any `$noun`.

#### Source

```hoon
+$  noun  *
```

#### Examples

```
> *noun
0
```

```
> `noun`'foo'
7.303.014
```

```
> `noun`"foo"
[102 111 111 0]
```

***

## `$path` <a href="#path" id="path"></a>

Like a 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` <a href="#stud" id="stud"></a>

Standard name.

#### Source

```hoon
+$  stud                    ::  standard name
          $@  mark=@tas     ::  auth=urbit
          $:  auth=@tas     ::  standards authority
              type=path     ::  standard label
          ==                ::
```

***

## `$tang` <a href="#tang" id="tang"></a>

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` <a href="#tank" id="tank"></a>

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` <a href="#tape" id="tape"></a>

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` <a href="#tour" id="tour"></a>

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` <a href="#tarp" id="tarp"></a>

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` <a href="#term" id="term"></a>

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` <a href="#wain" id="wain"></a>

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` <a href="#wall" id="wall"></a>

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">>
```

***
