# 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`](/hoon/stdlib/4b.md#trip) converts from `$cord` to `$tape`, and [`+crip`](/hoon/stdlib/4b.md#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`](/hoon/stdlib/3c.md#year), [`+yore`](/hoon/stdlib/3c.md#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">>
```

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.urbit.org/hoon/stdlib/2q.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
