@@ -72,12 +72,12 @@ polymorphism relies on genericity.
72### Dry arms
72### Dry arms
74For a dry arm, we apply the Liskov substitution principle: we
74For a dry arm, we apply the Liskov substitution principle: we
75−ask, "can we use any `p` as if it was a `q.q`"? This is the same
75+ask, "can we use any `p` as if it was a `q.q`?" This is the same
76test as in `:cast` or any type comparison (`nest`). Intuitively,
76test as in `:cast` or any type comparison (`nest`). Intuitively,
77−we ask: is the new payload compatible with the old payload?
77+we ask: "is the new payload compatible with the old payload?"
79For a core `a`, if `p.a` fits in `q.q.a`, we can use arms on the
79For a core `a`, if `p.a` fits in `q.q.a`, we can use arms on the
80−core. The product of an dry arm whose twig is `b` is always
80+core. The product of a dry arm whose twig is `b` is always
81defined as `{$hold a(p q.q.a, p.q %gold) b}`.
81defined as `{$hold a(p q.q.a, p.q %gold) b}`.
83In other words, the subject of the arm computation is the
83In other words, the subject of the arm computation is the
@@ -89,7 +89,7 @@ call in most languages.
90Dry polymorphism works by substituting cores. Typically, the
90Dry polymorphism works by substituting cores. Typically, the
91the programmer uses one core as an interface definition, then
91the programmer uses one core as an interface definition, then
92−replace it with another core which does something useful.
92+replaces it with another core which does something useful.
94For core `b` to nest within core `a`, the batteries of `a` and
94For core `b` to nest within core `a`, the batteries of `a` and
95`b` must have the same tree shape, and the product of each `b`
95`b` must have the same tree shape, and the product of each `b`
@@ -108,7 +108,7 @@ is gold; a gold core can be cast or converted to any metal, and
108any metal can be cast or converted to lead.
108any metal can be cast or converted to lead.
110A gold core `a` has a read-write payload; another core `b` that
110A gold core `a` has a read-write payload; another core `b` that
111−nests within it (ie, can be substituted for it) must be a gold
111+nests within it (i.e., can be substituted for it) must be a gold
112core whose payload is mutually compatible (`+3.a` nests in `+3.b`,
112core whose payload is mutually compatible (`+3.a` nests in `+3.b`,
113`+3.b` nests in `+3.a`). Hence, *invariant*.
113`+3.b` nests in `+3.a`). Hence, *invariant*.
@@ -128,8 +128,8 @@ nests within `+6.a`. Hence, *covariant*.
129### Wet arms
129### Wet arms
131−For a wet arm, we ask: suppose this core was actually compiled
131+For a wet arm, we ask: "suppose this core was actually compiled
132−using `p` instead of `q.q`? Would the Nock formula we generated
132+using `p` instead of `q.q`?" Would the Nock formula we generated
133for `q.q` actually work for a `p` payload?
133for `q.q` actually work for a `p` payload?
135A wet arm with twig `b` in core `a` produces the span `{$hold a
135A wet arm with twig `b` in core `a` produces the span `{$hold a