some programs written when learning SICP