From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Save `nil' from the mutant void, preserve the truth of falsehood, prevent the falsehood of truth Date: Tue, 14 Sep 2010 13:14:51 +0200 Message-ID: References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1284462908 15553 80.91.229.12 (14 Sep 2010 11:15:08 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 14 Sep 2010 11:15:08 +0000 (UTC) Cc: emacs-devel@gnu.org To: MON KEY Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Sep 14 13:15:06 2010 Return-path: Envelope-to: ged-emacs-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 1OvTTb-0005Rn-C8 for ged-emacs-devel@m.gmane.org; Tue, 14 Sep 2010 13:15:03 +0200 Original-Received: from localhost ([127.0.0.1]:60724 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OvTTa-0001hl-4s for ged-emacs-devel@m.gmane.org; Tue, 14 Sep 2010 07:15:02 -0400 Original-Received: from [140.186.70.92] (port=54982 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OvTTU-0001he-Ta for emacs-devel@gnu.org; Tue, 14 Sep 2010 07:14:58 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OvTTS-0000oj-VU for emacs-devel@gnu.org; Tue, 14 Sep 2010 07:14:56 -0400 Original-Received: from impaqm4.telefonica.net ([213.4.138.4]:13889) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OvTTS-0000oC-Ls for emacs-devel@gnu.org; Tue, 14 Sep 2010 07:14:54 -0400 Original-Received: from IMPmailhost3.adm.correo ([10.20.102.124]) by IMPaqm4.telefonica.net with bizsmtp id 6awb1f00T2h2L9m3QbEtkT; Tue, 14 Sep 2010 13:14:53 +0200 Original-Received: from ceviche.home ([88.9.43.80]) by IMPmailhost3.adm.correo with BIZ IMP id 6bEs1f0061jmqUg1jbEsS2; Tue, 14 Sep 2010 13:14:53 +0200 X-Brightmail-Tracker: AAAAAA== X-TE-authinfo: authemail="monnier$movistar.es" |auth_email="monnier@movistar.es" X-TE-AcuTerraCos: auth_cuTerraCos="cosuitnetc01" Original-Received: by ceviche.home (Postfix, from userid 20848) id E674566233; Tue, 14 Sep 2010 13:14:51 +0200 (CEST) In-Reply-To: (MON KEY's message of "Tue, 14 Sep 2010 01:11:09 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:130122 Archived-At: >> In source code, they are. [...] > No doubt this is true for "top-level" shared/circular structure. > But what of lisp source code that evaluates to the non-preferred format? If it's the result of some evaluation, then it's not source code any more. >>> Indeed, they are quite prevalent in byte-code files and the language >>> would be hamstrung without them. >> Which language? > The one comprised of s-expressions Printed for Read to Evaluate ad nauseam. sexpressions are just a syntax for data. For code you need an additional layer of syntax which decides which s-expression mean what. I.e. Elisp is not just "any S-expression" but a particular subset. >> Note that AFAIC .el and .elc files use 2 different languages. > Is there a know non-lisp interpreter for the non-lisp one? There is "Lisp interpreter for the byte-code", just like there is no Lisp interpreter for assembly code. A Lisp interpreter interprets Lisp, by definition. And byte-code is not Lisp, even if it was designed specifically as the output of a byte-compiler whose input is Lisp. >>> No, the argument to `unintern' can be a symbol or string. >> Who cares, it's still not a boolean. > So would you agree then that where `fboundp' shouldn't take a boolean neither > should `unitern'? I'm not sure what you mean. Among other things it's very unclear what you mean by "shouldn't" and by "take a boolean". >>>> - calling unintern without an obarray arg is a bad idea. >>> Yeah, > This elision conveniently ignores my caveats w/re the current use value of > Emacs "other" obarrays... I've just installed a change in emacs-23 which makes the obarray arg mandatory (well, old uses still work, but the byte-compiler will complain about them). >> So: why do you do it? > Why do i do what, unintern? To unintern a symbol of course :P > More specifically, redefining button-types and faces are good uses. If you need to unintern them to do that, it's a bug. >>> Yeah, but again there is the weird corner case of interning the 0 >>> length string. >> What's weird about it? > Whats not? > (identity (intern "")) > ;=> > (put (identity (intern-soft "")) > (identity (intern-soft "")) > (identity (intern-soft ""))) > ;=> > (get (identity (intern-soft "")) > (identity (intern-soft ""))) > ;=> > (setq 0len (symbol-plist (identity (intern-soft "")))) > ;=> ( ) > (symbol-value '0len) > => ( ) > (car (symbol-value '0len)) > => > More specifically, what is the utility? None of this seems weird at all. The only problem I see is that we don't have a valid printed (and readable) representation for it. Stefan