@@ -5,6 +5,56 @@ template = "doc.html"
5aliases = ["docs/reference/hoon-expressions/rune/zap/"]
5aliases = ["docs/reference/hoon-expressions/rune/zap/"]
10+Produce the Hoon AST of an expression.
41+This produces the [`$hoon`](/docs/hoon/reference/stdlib/4o#hoon) AST of
42+expression `q`. The first argument, `p`, is always an example of the `$hoon`
43+type, typically just the `*hoon` bunt value, and is used for type inference. The
44+reason for `p` is just to handle transitions if the `$hoon` type changes.
50+[%cltr p=~[[%sand p=%ud q=1] [%sand p=%ud q=1]]]
53+[%cncl p=[%wing p=~[%add]] q=~[[%sand p=%ud q=1] [%sand p=%ud q=1]]]
8## `!>` "zapgar"
58## `!>` "zapgar"
10Wrap a noun in its type (form a [`vase`](/docs/hoon/reference/stdlib/4o#vase)).
60Wrap a noun in its type (form a [`vase`](/docs/hoon/reference/stdlib/4o#vase)).
@@ -118,6 +168,63 @@ nest-fail
173+Wrap a noun in its type (raw).
177+Two arguments, fixed.
199+[%zpmc p=hoon q=hoon]
204+This wraps the product of `q` in its inferred type. It's a raw version of
205+[`!>`](#-zapgar). Unlike zapgar, `q` is not given a `p` face and its type
206+information is not stripped to a raw noun.
208+The first field, `p`, must be an example of the
209+[`$type`](/docs/hoon/reference/stdlib/4o#type) type, typically just `*type` (the
210+bunt of `$type`). The `p` argument is just so transitions can be handled if the
211+`$type` type changes.
213+It's unlikely you'd use this rune directly; [`!>`](#-zapgar) is much more
121## `!=` "zaptis"
228## `!=` "zaptis"
123Make the Nock formula for a Hoon expression.
230Make the Nock formula for a Hoon expression.