https://github.com/ieure/sicp/issues/7