SICP elisp implementation