(no commit message)
[lambda.git] / assignment2.mdwn
index 066f1b1..f0e8a09 100644 (file)
@@ -1,3 +1,6 @@
+For these assignments, you'll probably want to use a "lambda calculator" to check your work. This accepts any grammatical lambda expression and reduces it to normal form, when possible. See the page on [[using the programming languages]] for instructions and links about setting this up.
+
+
 More Lambda Practice
 --------------------
 
@@ -30,6 +33,33 @@ Reduce to beta-normal forms:
 <LI>`(\x y z. x z (y z)) (\u v. u)`
 </OL>
 
+Combinatory Logic
+-----------------
+
+Reduce the following forms, if possible:
+
+1.   Kxy
+2.   KKxy
+3.   KKKxy
+4.   SKKxy
+5.   SIII
+6.   SII(SII)
+
+* Give Combinatory Logic combinators that behave like our boolean functions.
+  You'll need combinators for true, false, neg, and, or, and xor.
+
+Using the mapping specified in the lecture notes,
+translate the following lambda terms into combinatory logic:
+
+1.   \x.x
+2.   \xy.x
+3.   \xy.y
+4.   \xy.yx
+5.   \x.xx
+6.   \xyz.x(yz)
+
+*  For each translation, how many I's are there?  Give a rule for 
+   describing what each I corresponds to in the original lambda term.
 
 Lists and Numbers
 -----------------