Notes on "Structure and Interpretation of Computer Programs"