Examples and exercises from the Structure and Interpretation of Computer Programs