(no commit message)
[lambda.git] / assignment1.mdwn
index bbb393b..ef1c561 100644 (file)
@@ -41,6 +41,7 @@ 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
@@ -83,8 +84,8 @@ To extract the first element of a pair p, you write:
 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:
 
@@ -110,7 +111,8 @@ instead of:
 However, the latter is still what's going on under the hood.
 
 
-13. Define a "swap" function that reverses the elements of a pair.
+* Define a "swap" function that reverses the elements of a pair.
+
 Expected behavior:
 
         (define p ((make-pair 10) 20))
@@ -120,27 +122,27 @@ Expected behavior:
 Write out the definition of swap in Racket.
 
 
-14. Define a "dup" function that duplicates its argument to form a pair
+* Define a "dup" function that duplicates its argument to form a pair
 whose elements are the same.
 Expected behavior:
 
         ((dup 10) get-first) ; evaluates to 10
         ((dup 10) get-second) ; evaluates to 10
 
-15. Define a "sixteen" function that makes
+* Define a "sixteen" function that makes
 sixteen copies of its argument (and stores them in a data structure of
 your choice).
 
-16. Inspired by our definition of ordered pairs, propose a data structure capable of representing ordered tripes. That is,
+* Inspired by our definition of ordered pairs, propose a data structure capable of representing ordered tripes. That is,
 
         (((make-triple M) N) P)
 
 should return an object that behaves in a reasonable way to serve as a triple. In addition to defining the make-triple function, you have to show how to extraxt elements of your triple. Write a get-first-of-triple function, that does for triples what get-first does for pairs. Also write get-second-of-triple and get-third-of-triple functions.
 
-17. Write a function second-plus-third that when given to your triple, returns the result of adding the second and third members of the triple.
+* Write a function second-plus-third that when given to your triple, returns the result of adding the second and third members of the triple.
 
 You can help yourself to the following definition:
 
     (define add (lambda (x) (lambda (y) (+ x y))))
 
-18. [Super hard, unless you have lots of experience programming] Write a function that reverses the order of the elements in a list.
+* [Only attempt this if you're feeling frisky, it's super hard unless you have lots of experience programming] Write a function that reverses the order of the elements in a list.