this is the Exercise of Structure and Interpretation of Computer Programs