Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.mixmin.net!eweka.nl!hq-usenetpeers.eweka.nl!xlned.com!feeder3.xlned.com!newsfeed.xs4all.nl!newsfeed2.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: UNSURE 0.268 X-Spam-Level: ** X-Spam-Evidence: '*H*': 0.55; '*S*': 0.09; 'alain': 0.09; 'subject:while': 0.09; 'python': 0.11; 'language.': 0.14; 'choice,': 0.16; 'feasible': 0.16; 'fine.': 0.16; 'subject:recursion': 0.16; 'essential': 0.16; 'programming': 0.22; 'header:User-Agent:1': 0.23; 'header:In-Reply-To:1': 0.27; 'idea': 0.28; 'point': 0.28; 'function': 0.29; '(like': 0.30; "i'm": 0.30; 'received:192.168.1.3': 0.31; "can't": 0.35; 'scheme': 0.36; 'done': 0.36; 'should': 0.36; 'behind': 0.37; 'clear': 0.37; 'implement': 0.38; 'to:addr:python-list': 0.38; 'fact': 0.38; 'to:addr:python.org': 0.39; 'everybody': 0.60; 'full': 0.61; 'show': 0.63; 'more': 0.64; 'here': 0.66; '*and*': 0.84; 'pardon': 0.84; 'received:195.238': 0.84; 'received:195.238.6': 0.84; 'received:belgacom.be': 0.84; 'received:isp.belgacom.be': 0.84; 'dynamics': 0.91; 'notion': 0.91; 'procedural': 0.91; 'was:': 0.91 X-Belgacom-Dynamic: yes X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApMBAAT1UlJbtpUq/2dsb2JhbAANTMI4gnmBNYMaAQEEOEARCyEWDwkDAgECAUUTCAKvbYoLiRSPWBaEDQOYAZUm Date: Mon, 07 Oct 2013 19:57:36 +0200 From: Antoon Pardon User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130922 Icedove/17.0.9 MIME-Version: 1.0 To: python-list@python.org Subject: Re: Tail recursion to while iteration in 2 easy steps References: <87had0axxy.fsf@dpt-info.u-strasbg.fr> <524C80B6.3010204@unistra.fr> <87li292wnt.fsf@dpt-info.u-strasbg.fr> <878uy52ea0.fsf@dpt-info.u-strasbg.fr> In-Reply-To: <878uy52ea0.fsf@dpt-info.u-strasbg.fr> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Mailman-Approved-At: Mon, 07 Oct 2013 22:14:51 +0200 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 23 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1381176893 news.xs4all.nl 15932 [2001:888:2000:d::a6]:38352 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:56325 Op 07-10-13 19:15, Alain Ketterlin schreef: >> I want to consider here what it would mean to concretely implement the >> abstract notion 'disallow rebinding of function names' and show what >> would be behind calling the idea 'not feasible'. > > Again, I'm more concerned about the function than about the name. > > And the fact that "disallow rebinding of function names" is not feasible > in Python is a design choice, not an essential characteristic of every > programming language. > > That's fine. My point was: you can't at the same time have full > dynamicity *and* procedural optimizations (like tail call opt). > Everybody should be clear about the trade-off. Your wrong. Full dynamics is not in contradiction with tail call optimisation. Scheme has already done it for years. You can rebind names to other functions in scheme and scheme still has working tail call optimisatiosn. -- Antoon Pardon