@@ -18,27 +18,29 @@ large functions. Don't worry about them for a little while.
1818 $@ $? %noun
1919 %void
2020 ==
21− $% [$atom p=term q=(unit @)]
22− [$cell p=type q=type]
23− [$core p=type q=coil]
24− [$face p=$@(term tune) q=type]
25− [$fork p=(set type)]
26− [$hint p=(pair type note) q=type]
27− [$hold p=type q=hoon]
21+ $% [%atom p=term q=(unit @)]
22+ [%cell p=type q=type]
23+ [%core p=type q=coil]
24+ [%face p=$@(term tune) q=type]
25+ [%fork p=(set type)]
26+ [%hint p=(pair type note) q=type]
27+ [%hold p=type q=hoon]
2828 ==
2929::
30−+$ coil $: p=[p=(unit term) q=poly r=vair]
31− q=type
32− r=[p=seminoun q=(map term tome)]
30++$ coil $: p=garb :: name, wet=dry, vary
31+ q=type :: context
32+ r=(pair seminoun (map term tome)) :: chapters
33+ == ::
3334::
35++$ garb (trel (unit term) poly vair) :: core
3436+$ poly ?(%wet %dry)
35−+$ vair ?($gold $iron $lead $zinc)
37++$ vair ?(%gold %iron %lead %zinc)
3638+$ tome (pair what (map term hoon))
37−+$ tune
38− $~ [~ ~]
39− $: p=(map term (unit hoon))
40− q=(list hoon)
41− ==
39++$ tune :: complex
40+ $~ [~ ~] ::
41+ $: p=(map term (unit hoon)) :: aliases
42+ q=(list hoon) :: bridges
43+ == ::
4244```
4345
4446If you compare this to the basic `type`, you'll see that we've
@@ -66,8 +68,9 @@ the payload the core was compiled with is `q.q`.
6668
6769In the Bertrand Meyer tradition of type theory, there are two
6870forms of polymorphism: variance and genericity. In Hoon this
69−choice is per core, hence the `poly` label in `coil`: it can be either `%wet` or `%dry`. Dry polymorphism relies on variance; wet
70−polymorphism relies on genericity.
71+choice is per core, hence the `poly` label in `p.q`: it can be either `%wet`
72+or `%dry`. Dry polymorphism relies on variance; wet polymorphism relies on
73+genericity.
7174
7275### Dry arms
7376
@@ -188,13 +191,13 @@ of secret superpowers for hacking the namespace. Remember that
188191Hoon doesn't have anything like a symbol table; to resolve a
189192limb, we just search the type depth-first.
190193
191−If a name is in the `p.p` map, it's an alias. (An alias is defined using the
194+If a name is in the `p.p` `map`, it's an alias. (An alias is defined using the
192195`=*` rune.) The map contains a `(unit hoon)`; if the unit is full, the name
193196resolves to that hoon (compiled against the `q` type). If the unit is empty,
194197the name is blocked / skipped (see [limb](@/docs/hoon/reference/limbs/limb.md) for what
195198this means).
196199
197−If a name is in the `q.p` map, it's a bridge. (A bridge is defined using the
200+If a name is the `q.p` `term`, it's a bridge. (A bridge is defined using the
198201`=,` rune.) When we search for a name, we also compile the bridge, and check
199202if the name resolves against the bridge product. If so, we use it.
200203