Selected Exercises from A Structure and Interpretation of Computer Programs in Haskell