on master help sign in
Merge pull request #1085 from urbit/alias-not-macro

=* deferred expression

commitd0f5630576f2a97d792ec3552360ef49b017fbe1 authorpoprox <51337059+drbeefsupreme@users.noreply.github.com> dateThu 16 Sep 2021, 16:07 (5 years ago) parent2337d137d8e171
2 files changed+11−5
content/docs/hoon/reference/rune/tis.md+9−3 lib/glossary.js+2−2
content/docs/hoon/reference/rune/tis.md+9−3
@@ -423,11 +423,11 @@ Regular: **running**.
423423
424424### `=*` "tistar"
425425
426−`[%tstr p=term q=hoon r=hoon]`: define a macro.
426+`[%tstr p=term q=hoon r=hoon]`: define a deferred expression.
427427
428428##### Produces
429429
430−`r`, compiled with a subject in which `p` is a macro for `q`.
430+`r`, compiled with a subject in which `p` is a deferred expression for `q`.
431431
432432##### Syntax
433433
@@ -435,7 +435,13 @@ Regular: **3-fixed**.
435435
436436##### Discussion
437437
438−The difference between macroing and pinning is that pinning changes the subject, but for macroing the subject noun stays the same. The macro'd expression, `q`, is recorded in the type information of `p`. `q` is calculated every time you use the `p` macro.
438+`=*` assigns a name to an expression that will be evaluated in each place the
439+name is dereferenced. This allows you to "write" through it to the original
440+subject `axis`. `q` is recorded in the type information of `p`, and `q` is
441+calculated every time you use `p`.
442+
443+This rune has some similarities with macros, and some similarities with aliases,
444+but it is not really either.
439445
440446##### Examples
441447
lib/glossary.js+2−2
@@ -193,8 +193,8 @@ export const glossary = [
193193 name: "tistar",
194194 symbol: "=*",
195195 usage: "Subject Modification",
196− slug: "/docs/hoon/reference/rune/tis/#-tistar",
197− desc: "<code>[%tstr p=term q=hoon r=hoon]</code>: define an alias.",
196+ slug: "/docs/hoon/reference/rune/tis/#tistar",
197+ desc: "<code>[%tstr p=term q=hoon r=hoon]</code>: define a deferred expression.",
198198 },
199199 {
200200 name: "tiswut",