-If you're bothered by having the pair to the left and the function that operates on it come second, think about why it's being done this way: the pair is a package that takes a function for operating on its elements as an argument, and returns the result of operating on its elemens with that function. In other words, the pair is also a function.
-
-If you like, you can disguise what's going on like this:
-
- (define lifted-get-first (lambda (p) (p get-first)))
- (define lifted-get-second (lambda (p) (p get-second)))
-
-Now you can write:
-
- (lifted-get-first p)
-
-instead of:
-
- (p get-first)
-
-However, the latter is still what's going on under the hood.
-
-
-13. 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.
-
-
-14. 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
-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,
-
- (((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.
-
-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.