From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: ludo@gnu.org (Ludovic =?iso-8859-1?Q?Court=E8s?=) Newsgroups: gmane.lisp.guile.devel Subject: Re: Eval, tail calls, (current-module), and backward compatibility Date: Wed, 18 Jan 2012 22:18:56 +0100 Message-ID: <878vl4vhdr.fsf@gnu.org> References: <87lip70zz7.fsf@netris.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: dough.gmane.org 1326921565 14781 80.91.229.12 (18 Jan 2012 21:19:25 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 18 Jan 2012 21:19:25 +0000 (UTC) To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Wed Jan 18 22:19:20 2012 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Rncue-0005oJ-Ne for guile-devel@m.gmane.org; Wed, 18 Jan 2012 22:19:20 +0100 Original-Received: from localhost ([::1]:52890 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rncue-00056L-9g for guile-devel@m.gmane.org; Wed, 18 Jan 2012 16:19:20 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:33645) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rncub-00056C-Rs for guile-devel@gnu.org; Wed, 18 Jan 2012 16:19:18 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RncuW-0005wB-AL for guile-devel@gnu.org; Wed, 18 Jan 2012 16:19:17 -0500 Original-Received: from lo.gmane.org ([80.91.229.12]:58690) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RncuV-0005w5-VC for guile-devel@gnu.org; Wed, 18 Jan 2012 16:19:12 -0500 Original-Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1RncuT-0005i8-TT for guile-devel@gnu.org; Wed, 18 Jan 2012 22:19:09 +0100 Original-Received: from reverse-83.fdn.fr ([80.67.176.83]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 18 Jan 2012 22:19:09 +0100 Original-Received: from ludo by reverse-83.fdn.fr with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 18 Jan 2012 22:19:09 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 35 Original-X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: reverse-83.fdn.fr X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 29 =?iso-8859-1?Q?Niv=F4se?= an 220 de la =?iso-8859-1?Q?R=E9volution?= X-PGP-Key-ID: 0xEA52ECF4 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 83C4 F8E5 10A3 3B4C 5BEA D15D 77DD 95E2 EA52 ECF4 X-OS: x86_64-unknown-linux-gnu User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.90 (gnu/linux) Cancel-Lock: sha1:W4lU01jU3RnN0OZYmbNvtrLDJsw= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 80.91.229.12 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:13566 Archived-At: Hi Mark, Mark H Weaver skribis: > The problem is that `eval' uses dynamic-wind to temporarily set > (current-module) during the dynamic extent of the expansion and > evaluation of its form. Excuse my ignorance, but where is this? :-) What I see doesn’t seem to correspond to this description: (('apply (f args)) (apply (eval f env) (eval args env))) > Can we fix this? > > Ideally, I think that `eval' should set (current-module) during > expansion, but _not_ during evaluation. Then it can be properly tail > recursive. However, some code out there might depend on the existing > behavior, so I guess we can't change this, at least not in 2.0. Bummer. Why? How does 1.8’s CEVAL behave? It would be good to have test cases written against 1.8 that illustrate the behavior of (current-module) in different contexts. Then we could see whether/how the same behavior can be achieved in 2.0. WDYT? Thanks, Ludo’.