X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?a=blobdiff_plain;f=assignment1.mdwn;h=bfaafdc0acae1d1cad18d6bfdf36c927ba2ded0a;hb=567ca6641f7c2f470cd0003e32efeab52ab9c9c9;hp=cc535c2bc24edca5bb2b46f0e152f2a0dce3956b;hpb=96bd066e0d1adcd0cacb08a55b6aa6c20541952a;p=lambda.git diff --git a/assignment1.mdwn b/assignment1.mdwn index cc535c2b..bfaafdc0 100644 --- a/assignment1.mdwn +++ b/assignment1.mdwn @@ -26,22 +26,20 @@ In Racket, these can be defined like this: (define true (lambda (t) (lambda (f) t))) (define false (lambda (t) (lambda (f) f))) - 8. Define a "neg" operator that negates "true" and "false". - +* Define a "neg" operator that negates "true" and "false". Expected behavior: - (((neg true) 10) 20) + (((neg true) 10) 20) evaluates to 20, and - (((neg false) 10) 20) + (((neg false) 10) 20) evaluates to 10. - 9. Define an "and" operator. - - 10. Define an "xor" operator. +* Define an "and" operator. +* Define an "xor" operator. (If you haven't seen this term before, here's a truth table: true xor true = false @@ -51,9 +49,8 @@ evaluates to 10. ) - 11. Inspired by our definition of boolean values, propose a data structure - capable of representing one of the two values "black" or "white". - +* 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: @@ -65,7 +62,7 @@ if-white, depending on which of the black-or-white values we started with. Give a definition for each of "black" and "white". (Do it in both lambda calculus and also in Racket.) -12. Now propose a data structure capable of representing one of the three values +* Now propose a data structure capable of representing one of the three values "red" "green" or "blue," based on the same model. (Do it in both lambda calculus and also in Racket.)