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.user,gmane.lisp.guile.devel Subject: Re: Injecting variables into closures. Date: Thu, 29 Nov 2007 17:02:13 +0100 Message-ID: <87mysxca62.fsf@chbouib.org> References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1196352272 31452 80.91.229.12 (29 Nov 2007 16:04:32 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 29 Nov 2007 16:04:32 +0000 (UTC) Cc: guile-devel@gnu.org To: guile-user@gnu.org Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Thu Nov 29 17:04:39 2007 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1IxlsT-0004V7-Fe for guile-user@m.gmane.org; Thu, 29 Nov 2007 17:04:37 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IxlsD-0001OF-Kg for guile-user@m.gmane.org; Thu, 29 Nov 2007 11:04:21 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IxlrV-00011h-I2 for guile-user@gnu.org; Thu, 29 Nov 2007 11:03:37 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IxlrO-0000wf-VL for guile-user@gnu.org; Thu, 29 Nov 2007 11:03:35 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IxlrO-0000wW-PI for guile-user@gnu.org; Thu, 29 Nov 2007 11:03:30 -0500 Original-Received: from main.gmane.org ([80.91.229.2] helo=ciao.gmane.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1IxlrN-0006Y6-Om for guile-user@gnu.org; Thu, 29 Nov 2007 11:03:30 -0500 Original-Received: from list by ciao.gmane.org with local (Exim 4.43) id 1Ixlr2-00066h-3r for guile-user@gnu.org; Thu, 29 Nov 2007 16:03:08 +0000 Original-Received: from adh419.fdn.fr ([80.67.176.9]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 29 Nov 2007 16:03:08 +0000 Original-Received: from ludo by adh419.fdn.fr with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 29 Nov 2007 16:03:08 +0000 X-Injected-Via-Gmane: http://gmane.org/ Original-Followup-To: gmane.lisp.guile.user Original-Lines: 26 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: adh419.fdn.fr X-URL: http://www.laas.fr/~lcourtes/ X-PGP-Key-ID: 0xEB1F5364 X-PGP-Key: http://www.laas.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 821D 815D 902A 7EAB 5CEE D120 7FBA 3D4F EB1F 5364 X-OS: i486-pc-linux-gnu User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux) Cancel-Lock: sha1:glNv6vmv2sMOpWv9vhkNyqmOUcY= X-detected-kernel: by monty-python.gnu.org: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.user:6307 gmane.lisp.guile.devel:6902 Archived-At: Hi, "Kjetil S. Matheussen" writes: > By the way. I'm quite surprised the environments consist > of linked lists. Wouldn't it be much faster using hash > tables instead? Perhaps the variables are cached or something? Yes, variable references are "cached" ("memoized") so that actual variable lookup occurs only once. So, for instance, in the following piece of code: (let ((x 1)(y 2)) (foo y)) the reference to "y" in "(foo y)" is replaced by an "iloc" that says "this is a reference to the second variable in the first frame". When that iloc is encountered, the variable's value is fetched by doing (roughly) two `list-ref's: one to get the frame and then one to get the variable within the frame. Clearly, a vector-like data structure (i.e., with O(1) access to individual elements) would help here. Thanks, Ludovic. _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://lists.gnu.org/mailman/listinfo/guile-user