SICP solutions.