+one pronoun requires layering the monad. (Jacobson provides some
+special combinators, but we can make do with the ingredients already
+defined.)
+
+Let's take the following sentence as our target, with the obvious
+binding relationships:
+
+<pre>
+ John believes Mary said he thinks she's cute.
+ | | | |
+ | |---------|---------|
+ | |
+ |-----------------------|
+</pre>
+
+It will be convenient to
+have a counterpart to the lift operation that combines a monadic
+functor with a non-monadic argument:
+
+<pre>
+ let g f v = ap (unit f) v;;
+ let g2 u a = ap u (unit a);;
+</pre>
+
+As a first step, we'll bind "she" by "Mary":
+
+<pre>
+believes (z said (g2 (g thinks (g cute she)) she) mary) john
+
+~~> believes (said (thinks (cute mary) he) mary) john
+</pre>
+
+As usual, there is a trail of *g*'s leading from the pronoun up to the
+*z*. Next, we build a trail from the other pronoun ("he") to its
+binder ("John").
+
+<pre>
+believes
+ said
+ thinks (cute she) he
+ Mary
+ John
+
+believes
+ z said
+ (g2 ((g thinks) (g cute she))) he
+ Mary
+ John
+
+z believes
+ (g2 (g (z said)
+ (g (g2 ((g thinks) (g cute she)))
+ he))
+ Mary)
+ John
+</pre>
+
+In the first interation, we build a chain of *g*'s and *g2*'s from the
+pronoun to be bound ("she") out to the level of the first argument of
+*said*.
+
+In the second iteration, we treat the entire structure as ordinary
+functions and arguments, without "seeing" the monadic region. Once
+again, we build a chain of *g*'s and *g2*'s from the currently
+targeted pronoun ("he") out to the level of the first argument of
+*believes*. (The new *g*'s and *g2*'s are the three leftmost).
+
+<pre>
+z believes (g2 (g (z said) (g (g2 ((g thinks) (g cute she))) he)) mary) john
+
+~~> believes (said (thinks (cute mary) john) mary) john
+</pre>