What is so special about the SICP eval-apply loop? What is so enlightening about it?