finish SICP 1.1