From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Mark H Weaver Newsgroups: gmane.lisp.guile.devel Subject: Re: upcoming patches Date: Tue, 20 Oct 2009 12:47:27 -0400 Message-ID: <20091020164727.GC3779@fibril.netris.org> References: <87aazo74zd.fsf@ossau.uklinux.net> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1256057279 31142 80.91.229.12 (20 Oct 2009 16:47:59 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 20 Oct 2009 16:47:59 +0000 (UTC) Cc: Andy Wingo , guile-devel To: Neil Jerram Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Tue Oct 20 18:47:49 2009 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1N0HsB-0008Ln-3f for guile-devel@m.gmane.org; Tue, 20 Oct 2009 18:47:47 +0200 Original-Received: from localhost ([127.0.0.1]:59453 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N0HsA-0004zL-Jl for guile-devel@m.gmane.org; Tue, 20 Oct 2009 12:47:46 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1N0Hs6-0004yS-TO for guile-devel@gnu.org; Tue, 20 Oct 2009 12:47:42 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N0Hs2-0004xc-Tn for guile-devel@gnu.org; Tue, 20 Oct 2009 12:47:42 -0400 Original-Received: from [199.232.76.173] (port=49239 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N0Hs2-0004xZ-OD for guile-devel@gnu.org; Tue, 20 Oct 2009 12:47:38 -0400 Original-Received: from world.peace.net ([204.107.200.8]:54760) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1N0Hs2-0007zb-4v for guile-devel@gnu.org; Tue, 20 Oct 2009 12:47:38 -0400 Original-Received: from localhost ([127.0.0.1] helo=fibril.netris.org ident=hope0) by world.peace.net with esmtp (Exim 4.69) (envelope-from ) id 1N0Hrt-0001sA-TL; Tue, 20 Oct 2009 12:47:30 -0400 Content-Disposition: inline In-Reply-To: <87aazo74zd.fsf@ossau.uklinux.net> X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:9536 Archived-At: Andy wrote: > 2) Make sure Mark's patch is in Neil wrote: > Have I missed this? I _think_ I'm still waiting for Mark's updated > patch... Sorry for being so slow on this. I had a lot of free time with I first submitted the patch, but have been busier since then. If someone wants to make a new patch from my "cube of lisp booleans" post, that would be fine with me. The biggest block is that I'm intimidated by the prospect of looking at every use of scm_is_{false,true,null} in the tree and deciding which of the new predicates should be used. I expect that the vast majority could be left alone without introducing new bugs, but I can't be sure without checking each one. Also, since writing the first patch, I've had some second thoughts about whether this approach to #nil is the correct one. I'm primarily concerned with the problem of equality predicates, which from the lisp point of view should treat #nil as equal to both '() and #f. How will this interact with collections (e.g. hash tables and alists, or even simple lists used as sets) which use lists as keys? If lisp adds an element to such a collection, scheme won't be able to find it, and vice versa. I see the potential for many subtle bugs to go unnoticed. I think a case can be made that we need three new equality predicates which treat #nil, '(), and #f as the same value, three new types of hash tables, three new sets of association list functions, etc. Although I'm sure the Emacs community would never agree, I'm tempted to suggest that the best solution is for Emacs to meet us half way, by making end-of-list and boolean false distinct values, although '() would still be considered false by conditionals from within lisp. Having different notions of "falseness" in the two languages does not pose a serious problem, but I do not see a robust way of dealing with lisp's failure to distinguish end-of-list and boolean false. Apologies if these thoughts are half-baked. Part of the problem is that I've not had enough time to fully evaluate these issues, and I feel paralyzed since I don't like any of the available options. Thoughts? Mark