-instead of:
-
- (p get-first)
-
-However, the latter is still what's going on under the hood.
-
-
-<OL start=13>
-<LI>Define a `swap` function that reverses the elements of a pair.
-
-Expected behavior:
-
- (define p ((make-pair 10) 20))
- ((p swap) get-first) ; evaluates to 20
- ((p swap) get-second) ; evaluates to 10
-
-Write out the definition of swap in Racket.
-
-
-<LI>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
-
-<LI>Define a `sixteen` function that makes
-sixteen copies of its argument (and stores them in a data structure of
-your choice).
-
-<LI>Inspired by our definition of ordered pairs, propose a data structure capable of representing ordered triples. 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 extract 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.
-
-<LI>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))))
-
-<!-- Write a function that reverses the order of the elements in a list. [Only attempt this problem if you're feeling frisky, it's super hard unless you have lots of experience programming.] -->
-
-</OL>
+* Write a function `reverse` that returns the reverse of a sequence. Thus, `reverse [1, 2, 3, 4]` should evaluate to `[4, 3, 2, 1]`.