From ... From: Erik Naggum Subject: Re: Lisp is *SLOW* Date: 1997/08/04 Message-ID: <3079704731964042@naggum.no>#1/1 X-Deja-AN: 262320962 References: <5puscn$e0h$1@cdn-news.telecom.com.au> <33CA6A40.7A44@capital.net> <33D8F4C2.117B@capital.net> <5rdea4$l8g$1@nic.wat.hookup.net> <33E25677.38A7@capital.net> <33E5F4CE.1897@nortel.com> <86rac9532d.fsf@g.pet.cam.ac.uk> <33E608B9.79CF@nspmpolaroid.com> mail-copies-to: never Organization: Naggum Software; +47 8800 8879; http://www.naggum.no Newsgroups: comp.lang.lisp,comp.programming,comp.lang.c++ * Mukesh Prasad | 2) Recursion is indeed inherently more expensive, otherwise | the whole field of "elimination of tail recursion" | would have been un-necessary. this is obviously false. function calls have always been expensive, and will continue to be. if a tail call could universally be replaced with a jump, be that to itself or to any other function, much would be saved in performance. designing a language and implementing calling conventions such that this is possible is actually very hard work. e.g., C blew it, and therefore C++. Scheme focused on this aspect from very early on, and tail-call merging has been a standard feature in Lisp compilers a long time. since C blew it so disastrously, it's no wonder it took the C community so long to get it right. we should also not ignore the fact that the Free Software Foundation and GNU project is led by people with extensive experience from the Lisp world. since I live in an un contaminated world, without MS bugs or problems, could somebody who has already been exposed to MS tell us whether their compilers for C or C++ do tail-call merging? that could be instructive. #\Erik -- 404 Give me a URL I cannot refuse.