SICP 2.59