As we said, the predecessor and the extract-tail functions are harder to define. We'll just give you one implementation of these, so that you'll be able to test and evaluate lambda-expressions using them in Scheme or OCaml.
<pre><code>predecesor ≡ (\shift n. n shift (make-pair zero junk) get-second) (\pair. pair (\fst snd. make-pair (successor fst) fst))
+
extract-tail ≡ (\shift lst. lst shift (make-pair empty junk) get-second) (\hd pair. pair (\fst snd. make-pair (make-list hd fst) fst))</code></pre>
The `junk` is what you get back if you evaluate:
less-than-or-equal two one ~~> false
less-than-or-equal two two ~~> true
-You'll need to make use of the predecessor function, but it's not important to understand how the implementation we gave above works. You can treat it as a black box.
+You'll need to make use of the predecessor function, but it's not essential to understand how the implementation we gave above works. You can treat it as a black box.
</OL>