Subject: Re: [LISP Beginner] Recursion Problem
From: Erik Naggum <erik@naggum.net>
Date: Sun, 11 Nov 2001 19:44:00 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3214496638428058@naggum.net>

* Ingo Rohlfs <irohlfs@irohlfs.de>
| What I'm doing wrong?

  Basically, using recursion for this problem, which is only confusing
  yourself and wasting a lot of space.  This is a shot with a _much_ more
  powerful technique, iteration, using loop, which is very good for this
  kind of problem.  (Some would tell you that since it is possible to get
  lost in loop, you should not even try it.  Ignore them and trust your own
  ability to recognize when you are about to get lost.  The same is true of
  recursion, when you get lost in it, it is unsuited for the task.  Some
  people, especially those overexposed to Scheme, never seem to grasp this.)

(defun get-elements (sequence)
  (loop
   for start = 0 then (1+ end)
   for end = (position #\Space sequence :start start)
   collect (subseq sequence start end)
   until (not end)))

///
-- 
  Norway is now run by a priest from the fundamentalist Christian People's
  Party, the fifth largest party representing one eighth of the electorate.
-- 
  Carrying a Swiss Army pocket knife in Oslo, Norway, is a criminal offense.