sicp 3-28 and 3-29