title: Scheme and Lisp best practices: recursion yes for Scheme, no for Lisp?
body: <p>As I understand -- and I'm here to be corrected if wrong -- good Scheme practice is to do anything requiring looping, repeating with recursion, and, furthermore, overflow won't be a problem because tail-recursion is built-in. Lisp, however, doesn't have protection from overflow, hence, all the loop iterative macros (<code>loop</code>, <code>while</code>, etc). And so in real-world Lisp you usually don't use recursion, while Scheme wants it all but exclusively.</p>
  
  <p>If my assumptions are true, is there a way to be "pure" with Lisp and not risk overflow? Or is this too much swimming against the stream to use recursion in Lisp? I recall from <em>The Little Schemer</em> how they give you a thorough workout with recursion. And there was an earlier edition called <em>The Little Lisper</em>. Did it give you the same recursion workout in Lisp? And then <em>Land of Lisp</em> left me confused about whether loops or recursion was "best practice."</p>
  
  <p>What I'm trying to do is decide whether to use Racket inside of Emacs Org-mode or just use built-in Elisp for beginner students. I want students to stay as purely functional as possible, e.g., I don't want to explain the very new and difficult topic of recursion, then say "Oh, but we won't be using it..."</p>