Sicp 2.2.1