homework practice for SICP