sicp ex 2.33-2.39