(define false (lambda (t) (lambda (f) f)))
* 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.
* 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
Here are some defintions in Racket:
(define make-pair (lambda (fst) (lambda (snd) (lambda (f) ((f fst) snd)))))
- (define get-first (lamda (fst) (lambda (snd) fst)))
- (define get-second (lamda (fst) (lambda (snd) snd)))
+ (define get-first (lambda (fst) (lambda (snd) fst)))
+ (define get-second (lambda (fst) (lambda (snd) snd)))
Now we can write: