From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Sebastian Tennant Newsgroups: gmane.lisp.guile.user Subject: Placement of defines Date: Thu, 18 Dec 2008 17:00:35 +0000 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1229619901 26036 80.91.229.12 (18 Dec 2008 17:05:01 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 18 Dec 2008 17:05:01 +0000 (UTC) To: guile-user@gnu.org Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Thu Dec 18 18:06:06 2008 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 1LDMIt-0004Ut-T3 for guile-user@m.gmane.org; Thu, 18 Dec 2008 18:04:52 +0100 Original-Received: from localhost ([127.0.0.1]:51345 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LDMHh-00006f-49 for guile-user@m.gmane.org; Thu, 18 Dec 2008 12:03:37 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LDMEa-0007PZ-MH for guile-user@gnu.org; Thu, 18 Dec 2008 12:00:24 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LDMEZ-0007P7-Pk for guile-user@gnu.org; Thu, 18 Dec 2008 12:00:24 -0500 Original-Received: from [199.232.76.173] (port=50137 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LDMEZ-0007P4-LT for guile-user@gnu.org; Thu, 18 Dec 2008 12:00:23 -0500 Original-Received: from main.gmane.org ([80.91.229.2]:50678 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 1LDMEZ-0008Ox-7C for guile-user@gnu.org; Thu, 18 Dec 2008 12:00:23 -0500 Original-Received: from list by ciao.gmane.org with local (Exim 4.43) id 1LDMEW-000319-Rn for guile-user@gnu.org; Thu, 18 Dec 2008 17:00:20 +0000 Original-Received: from vps203.linuxvps.org ([91.186.7.203]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 18 Dec 2008 17:00:20 +0000 Original-Received: from sebyte by vps203.linuxvps.org with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 18 Dec 2008 17:00:20 +0000 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 42 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: vps203.linuxvps.org User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/22.2 (gnu/linux) Cancel-Lock: sha1:cc/jykidid1u0Mj1KJBjlwxDWjg= X-detected-operating-system: by monty-python.gnu.org: GNU/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:7011 Archived-At: Hi all, Having read this interesting thread: http://sourceware.org/ml/guile/1999-08/msg00118.html I understand that internal definitions may not occur anywhere other than at the beginning of the body of the enclosing expression, which explains why this works: ((lambda (x) (define bar x) (display bar)) "foo\n") while this doesn't: ((lambda (x) (set! x "baz\n") (define bar x) (display bar)) "foo\n") Firstly, perhaps this could/should be mentioned in the manual? (info "(guile) Internal Definitions") currently reads: "A `define' form which appears inside the body of a `lambda', `let', `let*', `letrec' or equivalent expression is called an "internal definition"." May I suggest this reads: "`Define' forms may only appear at the beginning of the body of a `lambda', `let', `let*', `letrec' or equivalent expression, and when they do they constitute what are known as "internal definitions"." or words to that effect. Secondly, there is some talk in the above-mentioned thread of an extension to R5RS Scheme that allows define forms to occur anywhere within the body of the enclosing expression, making for much more readable code. The thread is approx 8.5 years old now, and I was just wondering why the extension never made it into Guile, the readable code argument being a pretty compelling one IMHO. Sebastian