Add new rule in .gitignore.
Exercise 2.1 - improve "make-rat" to cope adequately with signs.

Nothing interesting.
Exercise 2.2 - "midpoint-segment".

Just more "aliasing" of "cons", "car" and "cdr".
Exercise 2.3 - rectangle representation and abstraction barriers.

Interesting, I'm not sure if I got this right, but I'll watch the
video lectures for more insight. I tend to like the second
implementation more than the first, since it's looking more simple - I
think that the procedures to reproduce the corners of the rectangle
out of it's two side will be more complex, than the ones, that create
the sides out of the opposite corners.
Exercise 2.4 - "home made" cons, car and cdr.

This was quite easy, yet awesome. We don't need special syntax, or
some other kind of special treatment, to get data structures, we only
need procedures. Made my day! (my night, actually)

I'm not sure about the "verify" part. I can't think what else could I
do, than just show the evaluation of the expressions.
Exercise 2.5 - "cons", "car" and "cdr" for nonnegative integers.

This exercise may look rather familiar, if you have attended
university courses like "Logic programming" and "Computability and
complexity".

I also think that there is a more clever way to write "car" and "cdr"
than mine. I'm eager to see other solutions.
Exercise 2.6 - Church numerals.

The only comment can be "What kind of sorcery is this?"
Exercise 2.7 - "upper-bound" and "lower-bound" for intervals

I'm in doubt about this one. Just another exercise for "aliasing"
"car" and "cdr"?
Exercise 2.8 - "sub-interval"

I'm not sure if I got this right.
Exercise 2.9 - width of interval.

Nothing interesting here, we are just making procedure, that would be
used in the next execise.
Exercise 2.10 - fix "div-interval".
Exercise 2.11 - split "mul-interval" into 9 cases.

This was interesting, but I am not sure how this improves the
procedure? 4 comparisons are cheaper than 2 multiplications?
Exercise 2.12 - "make-center-percent"

It's cool how you can define different "representations" of one object
just by defining new interface to it. Here we have
"make-center-percent", which uses "make-center-width", which uses
"make-interval". So, although the actual representation is the same (a
pair of numbers), it looks like we have 3 different representations. I
suppose this is "abstraction with data".

It's also worth noting the rounding errors, ("Close enough" :-) ),
maybe this will have something to do with the next exercises.
Exercise 2.13 - formula for percentage tolerance of the product of
intervals.

I will skip this one for now.
Exercise 2.14 - show that Lem is right.

I'll skip this one too, also 2.15 and 2.16.
Exercise 2.17 - "last-pair".
Exersice 2.18 - "reverse"

If you traverse a list using an iterative process, you can easily
reverse the list. Seems an interesting consequence from the different
behaviours of the differents types of processes.
Exercise 2.19 - "change-count" with lists.

I think that, while the order of the coin values is not significant,
if the coins are given in descending order, there will be fewer
operations, because the amount will become negative faster. It's still
has an exponential order of growth, though.
Exercise 2.20 - "same-parity"

Yet another list traversal exercise.

Racket becomes more and more annoying with it's R5RS support. It
doesn't have an "error" procedure, it doesn't have "nil"...
Exercise 2.21 - "square-list"

It's very pleasing to see the expressiveness of "map". :)