From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andy Wingo Newsgroups: gmane.lisp.guile.devel Subject: Re: guile and elisp Date: Sat, 27 Mar 2010 17:54:24 +0100 Message-ID: References: <20100327130750.GA9026@fibril.netris.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: dough.gmane.org 1269709040 29713 80.91.229.12 (27 Mar 2010 16:57:20 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 27 Mar 2010 16:57:20 +0000 (UTC) Cc: guile-devel To: Mark H Weaver Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sat Mar 27 17:57:16 2010 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.69) (envelope-from ) id 1NvZJy-0005Up-Un for guile-devel@m.gmane.org; Sat, 27 Mar 2010 17:57:15 +0100 Original-Received: from localhost ([127.0.0.1]:33997 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NvZJy-00028x-F3 for guile-devel@m.gmane.org; Sat, 27 Mar 2010 12:57:14 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NvZIt-0000fr-FD for guile-devel@gnu.org; Sat, 27 Mar 2010 12:56:07 -0400 Original-Received: from [140.186.70.92] (port=43366 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NvZIr-0000dE-L2 for guile-devel@gnu.org; Sat, 27 Mar 2010 12:56:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1NvZIp-0004AD-Nn for guile-devel@gnu.org; Sat, 27 Mar 2010 12:56:05 -0400 Original-Received: from a-pb-sasl-quonix.pobox.com ([208.72.237.25]:41168 helo=sasl.smtp.pobox.com) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1NvZIp-0004A2-Kf for guile-devel@gnu.org; Sat, 27 Mar 2010 12:56:03 -0400 Original-Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTP id 80EFCA5735; Sat, 27 Mar 2010 12:56:01 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=sasl; bh=UcK/oPHavS69x9eM2CxeJr1QQwY=; b=MBLAE+ rVTszn7zey3t0Lw1Byj7glMR7EYmfIRWr6CQiAT9+1JN8wKdPR/RC2WJ6VXVGxE4 XVtNa/pZSL7OXChyIEAELumuCGs16mnxkW3D8pMDs/O5t+97u9d6GqonQIZUCJgm Af7SyCYN95aBJt+hbj2vHWDTGA5h+nmg9nxuQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; q=dns; s=sasl; b=tq8x3IjD2ovvIjBc/aO+9llDPflV7Ut5 JKtjov+P5/AIRBLn5OQmd7OHxMoW6PKZ32+29YeC3MrS+YAWMwtFg7ENYBuXAGlV /MI52Fh1eJChpuCjQSPbgf0yGrbD9OeECE6K5/ywd2Ssc/RruM17wL/pf6tlJakL 1feZKFe5JTA= Original-Received: from a-pb-sasl-quonix. (unknown [127.0.0.1]) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTP id 6A990A5734; Sat, 27 Mar 2010 12:56:00 -0400 (EDT) Original-Received: from unquote (unknown [82.123.111.19]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by a-pb-sasl-quonix.pobox.com (Postfix) with ESMTPSA id C7CD5A5732; Sat, 27 Mar 2010 12:55:58 -0400 (EDT) In-Reply-To: <20100327130750.GA9026@fibril.netris.org> (Mark H. Weaver's message of "Sat, 27 Mar 2010 09:07:51 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.92 (gnu/linux) X-Pobox-Relay-ID: 9F09783A-39C1-11DF-BB9F-D033EE7EF46B-02397024!a-pb-sasl-quonix.pobox.com X-detected-operating-system: by eggs.gnu.org: Solaris 10 (beta) 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:10092 Archived-At: Hi Mark, Thanks for the mail. A couple of brief reactions: On Sat 27 Mar 2010 14:07, Mark H Weaver writes: > I think it's very important that we choose a path which can > potentially lead to clean semantics somewhere down the road in a > future guile-emacs universe with finely intermixed scheme and lisp > code (and other languages for that matter). Yes. And I would put this even stronger, that if Scheme and Elisp were mixed now, that our solution should have clean semantics, without the need to migrate elisp. > So what is the path to clean semantics that I'd like to make available > to future generations of guile-emacs? I'd like it to be possible to > gradually convert instances of nil to either #f or '(), with the goal > of eventually deprecating nil altogether. We can think of this > process as "annotating" otherwise ambiguous values, so that non-lisp > languages know how to treat them. To enable that, we must be able > convert any instance of nil to #f or '() without breaking existing > lisp code. Hm, not sure if I follow; and in any case I'm not sure that modifying existing Elisp code should really be on the table. But your next point is interesting: > The [E]Lisp equality predicates, and the associated hash tables, > alists, etc, should not distinguish boolean-false and end-of-list (and > here's the important point) regardless of where the values being > compared/hashed came from. Good point, that Scheme's equal? (and assoc, and hash-ref) can treat #f and nil as distinct, but Elisp's equalp can treat them as equivalent. Thus we don't introduce any intransitivity into the language. > In addition, we might want to consider some kind of hacks to > automatically annotate data in various places. We could provide > procedures such as "canonicalize-boolean" which converts nil to #f, > and "canonicalize-list" which converts nil to '() and mutates any nil > in the CDRs to '(). We could, but I'm not sure I see the need: if Scheme's equal? treats nil, #f, and '() as distinct, why bother? (As in: what inconsistencies or problems does this approach create?) I'm not sure (I keep saying "not sure", and I'm really not :) that *value* or *identity* is the way to solve this problem. To me the question is more of *property* -- is this value false, is it equal? to another, is it a boolean, etc. Thoughts? Andy -- http://wingolog.org/