+[At this point, some of you will recall the discussion in the first
+class concerning the conception of functions as sets of ordered pairs.
+The problem, as you will recall, was that in the untyped lambda
+calculus, we wanted a function to be capable of taking itself as an
+argument. For instance, we wanted to be able to apply the identity
+function to itself. And since the identity function always returns
+its argument unchanged, the value it should return in that case is
+itself:
+
+ (\x.x)(\x.x) ~~> (\x.x)
+
+If we conceive of a function as a set of ordered pairs, we would start
+off like this:
+
+ 1 -> 1
+ 2 -> 2
+ 3 -> 3
+ ...
+ [1 -> 1, 2 -> 2, 3 -> 3, ..., [1 -> 1, 2 -> 2, 3 -> 3, ...,
+
+Eventually, we would get to the point where we want to say what the
+identity function itself gets mapped to. But in order to say that, we
+need to write down the identity function in the argument position as a
+set of ordered pairs. The need to insert a copy of the entire
+function definition inside of a copy of the entire function definition
+inside of... is the same problem as the need to insert a complete
+graph of the identity function inside of the graph for the identity function.]
+