Steven D'Aprano wrote: > On Wed, 14 Sep 2005 12:23:00 -0700, Paul Rubin wrote:
>>Every serious FP language implementation optimizes tail calls and thus >>using recursion instead of iteration doesn't cost any stack space and >>it probably generates the exact same machine code. > > > Are you saying that the recursion done by "serious" languages is a fake? > That it is actually implemented behind the scenes by iteration? > > It seems to me that if recursion and iteration produce "the exact same > machine code", the argument for preferring recursion over iteration is > gutted. Well, in such a way we can discuss for eternity... Please, distinguish between the high-level algorithm formulation, and what computer does under the carpet. The recursion - as put forward by functionalists is a conceptual way of thinking. With passing of new parameters without explicitly updating the variables to which the old ones are assigned. Without loop control variables, nor looping constructs. You don't reassign your variables, you avoid the side-effects. The programs are often clearer and safer, less error-prone. Now, the ugly world of basic computing at the assembly level is imperative, not functional (within standard architectures). The registers ARE reassigned. The stack must be explicitly handled, etc. You *SEE* explicitly the iterative structures. The point of functionalists is that one should avoid that, and leave those nasty things to the compiler. That's all. Your final conclusion is for me rather inacceptable. It is not the machine code which matters, but human effort [provided you spent sufficient time to be fluent in *good* recursive programming of complex tasks.] Jerzy Karczmarczuk -- http://mail.python.org/mailman/listinfo/python-list