index 2b6b300..cc535c2 100644 (file)
@@ -26,7 +26,8 @@ In Racket, these can be defined like this:
(define true (lambda (t) (lambda (f) t)))
(define false (lambda (t) (lambda (f) f)))

-*  Define a "neg" operator that negates "true" and "false".
+    8. Define a "neg" operator that negates "true" and "false".
+
Expected behavior:

(((neg true) 10) 20)
@@ -37,19 +38,23 @@ evaluates to 20, and

evaluates to 10.

-*  Define an "and" operator.
+    9. Define an "and" operator.
+
+    10. Define an "xor" operator.

-*  Define an "xor" operator. (If you haven't seen this term before, here's a truth table:
+(If you haven't seen this term before, here's a truth table:

-       true xor true = false
-       true xor false = true
-       false xor true = true
-       false xor false = false
+    true xor true = false
+    true xor false = true
+    false xor true = true
+    false xor false = false

)

-*  Inspired by our definition of boolean values, propose a data structure
-capable of representing one of the two values "black" or "white". If we have
+    11. Inspired by our definition of boolean values, propose a data structure
+        capable of representing one of the two values "black" or "white".
+
+If we have
one of those values, call it a black-or-white-value, we should be able to
write: