Subject: Re: Midfunction Recursion From: Erik Naggum <email@example.com> Date: 23 Oct 2002 22:11:37 +0000 Newsgroups: comp.lang.lisp Message-ID: <firstname.lastname@example.org> * 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.