(p get-first) ; will evaluate to 10
(p get-second) ; will evaluate to 20
-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'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. (Of course, in the untyped lambda calculus, absolutely *everything* is a function: functors, arguments, abstracts, redexes, values---everything.)
If you like, you can disguise what's going on like this:
(define add (lambda (x) (lambda (y) (+ x y))))
-* [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.
+* 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.]