@@ -7,15 +7,13 @@
8# `%= "centis"`
8# `%= "centis"`
10−`[%cnts p=wing q=(list (pair wing hoon))]`: take a wing with changes.
10+`[%cnts p=wing q=(list (pair wing hoon))]`: resolve a wing with changes.
12## Produces
12## Produces
14−`p`, modified by the change list `q`.
14+Product of resolution to `p`, modified by the change list `q`.
16−If `p` resolves to a leg, `q` is a list of changes to that leg.
16+If `p` resolves to a leg, `q` is a list of changes to that leg. The modified leg is returned. If `p` resolves to an arm, `q` is a list of changes to the core containing that arm. The arm is computed with the modified core as the subject, and the product is returned.
17−If `p` resolves to an arm, `q` is a list of changes to the core
18−containing that arm. We compute the arm on the modified core.
@@ -26,20 +24,21 @@ Irregular: `foo(x 1, y 2, z 3)` is `%=(foo x 1, y 2, z 3)`.
26## Discussion
24## Discussion
28Note that `p` is a wing, not just any expression. Knowing that a function
26Note that `p` is a wing, not just any expression. Knowing that a function
29−call `(foo bar)` involves making `foo`, replacing its sample
27+call `(foo baz)` involves making `foo`, replacing its sample
30−at slot `+6` with `bar`, and taking the `$` limb, you might think
28+at slot `+6` with `baz`, and resolving to the `$` limb, you might think
31−`(foo bar)` would mean `%=(foo +6 bar)`.
29+`(foo baz)` would mean `%=(foo +6 baz)`.
33−But it's actually `=+(foo =>(%=(+2 +6 bar) $))`. Even if `foo` is
31+But it's actually `=+(foo =>(%=(+2 +6 baz) $))`. Even if `foo` is
34a wing, we would just be mutating `+6` within the core that defines the
32a wing, we would just be mutating `+6` within the core that defines the
35`foo` arm. Instead we want to modify the *product* of `foo` -- the gate
33`foo` arm. Instead we want to modify the *product* of `foo` -- the gate
36-- so we have to pin it into the subject.
34-- so we have to pin it into the subject.
38Here's that again in tall form:
36Here's that again in tall form: