But it's a rookie mistake to quail before complicated types. You should
be no more intimiated by complex types than by a linguistic tree with
deeply embedded branches: complex structure created by repeated
application of simple rules.
But it's a rookie mistake to quail before complicated types. You should
be no more intimiated by complex types than by a linguistic tree with
deeply embedded branches: complex structure created by repeated
application of simple rules.
+[This would be a good time to try to build your own term for the types
+just given. Doing so (or attempting to do so) will make the next
+paragraph much easier to follow.]
+
As usual, we need to unpack the `u` box. Examine the type of `u`.
As usual, we need to unpack the `u` box. Examine the type of `u`.
-This time, `u` will only deliver up its contents if we give `u` as an
-argument a function expecting an `'a` and a `'b`. `u` will fold that function over its type `'a` members, and that's how we'll get the `'a`s we need. Thus:
+This time, `u` will only deliver up its contents if we give `u` an
+argument that is a function expecting an `'a` and a `'b`. `u` will
+fold that function over its type `'a` members, and that's how we'll get the `'a`s we need. Thus: