or we can evaluate the `Y` pump, `(\x.prefac(xx))(\x.prefac(xx))`, to
produce another copy of `prefac`. If we postpone evaluting the
`isZero` test, we'll pump out copy after copy of `prefac`, and never
realize that we've bottomed out in the recursion. But if we adopt a
or we can evaluate the `Y` pump, `(\x.prefac(xx))(\x.prefac(xx))`, to
produce another copy of `prefac`. If we postpone evaluting the
`isZero` test, we'll pump out copy after copy of `prefac`, and never
realize that we've bottomed out in the recursion. But if we adopt a