Subject: Re: Midfunction Recursion
From: Erik Naggum <>
Date: 23 Oct 2002 22:11:37 +0000
Newsgroups: comp.lang.lisp
Message-ID: <>

* Nils Goesche
| It has always been my impression that designers of languages which don't
| support iteration sufficiently, like Scheme which has only the awkward
| `do', do so quite deliberately in order to force people into the tail
| recursive style.

  I think `do´ is pretty strong as far as support for iteration goes.  At
  least it supports multi-variable sequential and parallel stepping, which
  is /far/ better than most of the languages that should have had good
  support for iteration because they are misdesigned as far as function
  calls are concerned, such as by not having multiple value return.

  However, when you encourage people to use recursion, the iteration
  support does not evolve.  People who tried to make improvements in the
  iteration department would be encouraged to use recursion, instead.

  Since recursion cannot evolve as a linguistic element, either, what you
  get is a stagnant language that requires more code and "patterns" to get
  things done.  E.g., collecting values while traversing a list.

  There are many ways to the same target, but finding the minimal set of
  operations necessary to accomplish it is far more important than whether
  you use an iterative or a tail-recursive or even recursive algorithm.  It
  appears to me that the focus on tail recursion forces people to play with
  loaded dice.

Erik Naggum, Oslo, Norway

Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.