Subject: Re: Why learn Lisp From: Erik Naggum <erik@naggum.no> Date: 28 Aug 2002 01:49:03 +0000 Newsgroups: comp.lang.lisp Message-ID: <3239488143669200@naggum.no> * Thomas Stegen CES2000 | One "problem" is that recursion is often used and I do not have that much | training in reading recursive functions. But my guess is that this is a | trivial problem which will disappear with time :) Heh. Probably not. Recursion can be extremely hard to understand if you look too closely at it. E.g., the simple factorial function is hard to read if you try to think about what actually happens to 10! and you try to work out the recursive calls in your head. What you need to do with recursive functions is figure out the problem as composed of sub-problems that are just like itself. For instance, an iterative tree traversal function will do a lot of work to remember past nodes, while a recursive version can work on a single node at a time and completely hide the fact that the call stack holds all the information that the iterative version would have to allocate explicit memory to hold. So-called tail-recursive problems are only simple decompositions into itself without any new information in each step and it makes little sense to use this idiom even when you want to train yourself to think recursively, because the whole point with recursive functions is that the call stack contains useful information and tail-recursive functions only use the function call paradigm to express iteration. -- 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.