From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: MON KEY Newsgroups: gmane.emacs.devel Subject: symbol equality --cl-rest-- help-function-arglist member vs member* and also equal, eql, and eq Date: Mon, 21 Dec 2009 20:16:56 -0500 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: ger.gmane.org 1261444640 17197 80.91.229.12 (22 Dec 2009 01:17:20 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 22 Dec 2009 01:17:20 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Dec 22 02:17:13 2009 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.50) id 1NMtNB-0008Rs-2s for ged-emacs-devel@m.gmane.org; Tue, 22 Dec 2009 02:17:13 +0100 Original-Received: from localhost ([127.0.0.1]:60415 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NMtNA-0003xt-MW for ged-emacs-devel@m.gmane.org; Mon, 21 Dec 2009 20:17:12 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NMtN4-0003x0-D9 for emacs-devel@gnu.org; Mon, 21 Dec 2009 20:17:06 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NMtN0-0003vJ-TV for emacs-devel@gnu.org; Mon, 21 Dec 2009 20:17:06 -0500 Original-Received: from [199.232.76.173] (port=40053 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NMtN0-0003vG-OT for emacs-devel@gnu.org; Mon, 21 Dec 2009 20:17:02 -0500 Original-Received: from mail-yw0-f202.google.com ([209.85.211.202]:38992) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NMtN0-00037p-GJ for emacs-devel@gnu.org; Mon, 21 Dec 2009 20:17:02 -0500 Original-Received: by ywh40 with SMTP id 40so6008096ywh.26 for ; Mon, 21 Dec 2009 17:16:56 -0800 (PST) Original-Received: by 10.150.239.16 with SMTP id m16mr12163404ybh.289.1261444616686; Mon, 21 Dec 2009 17:16:56 -0800 (PST) X-Google-Sender-Auth: f4e22c52cc81a803 X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) 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:118763 Archived-At: Why do symbol equality tests/comparisons with --cl-rest-- and `help-function-arglist' be so freaky? The only references I can find to --cl-rest-- in non-byte-compiled code are in: `cl-do-arglist' -> cl-macs.el' `cl-macroexpand-all' -> cl-extra.el Is there a reason for the following behavior that I'm missing or is this a bug (of some sort)? ;;; ============================== (defun* test-cl-rest (arg1 arg2 &key arg-key) arg-key) (test-cl-rest nil nil :arg-key "bubba") ;=> "bubba" (help-function-arglist 'test-cl-rest) ;=> (arg1 arg2 &rest --cl-rest--) (member '&rest (help-function-arglist 'test-cl-rest)) ;=> (&rest --cl-rest--) (member '--cl-rest-- (help-function-arglist 'test-cl-rest)) ;=> nil (cadr (member '&rest (help-function-arglist 'test-cl-rest))) ;=> --cl-rest-- (cadr (member* '&rest '(bubba &rest --cl-rest--))) ;=> --cl-rest-- ;; member & member (equal (cadr (member '&rest (help-function-arglist 'test-cl-rest))) (cadr (member '&rest (help-function-arglist 'test-cl-rest)))) ;=> t ;; member* & member* (equal (cadr (member* '&rest '(bubba &rest --cl-rest--))) (cadr (member* '&rest '(bubba &rest --cl-rest--)))) ;=> t ;; member & member* (equal (cadr (member '&rest (help-function-arglist 'test-cl-rest))) (cadr (member* '&rest (help-function-arglist 'test-cl-rest)))) ;=> t ;; member of arg list (equal '--cl-rest-- (cadr (member '&rest (help-function-arglist 'test-cl-rest)))) ;=> nil ;; member* of arg list (equal '--cl-rest-- (cadr (member* '&rest (help-function-arglist 'test-cl-rest)))) ;=> nil ;; member same symbol new list (member '--cl-rest-- (member '&rest '(bubba &rest --cl-rest--))) ;=> (--cl-rest--) ;; member* same symbol new list (member* '--cl-rest-- (member* '&rest '(bubba &rest --cl-rest--))) ;=> (--cl-rest--) ;; member same symbol new list (equal '--cl-rest-- (car (member '--cl-rest-- (member '&rest '(bubba &rest --cl-rest--))))) ;=> t ;; member* same symbol new list (equal '--cl-rest-- (car (member* '--cl-rest-- (member* '&rest '(bubba &rest --cl-rest--))))) ;=> t ;; member (let (a) (setq a (member '&rest (help-function-arglist 'test-cl-rest))) (equal '--cl-rest-- (cadr a))) ;=> nil ;; member* (let (a) (setq a (cadr (member* '&rest (help-function-arglist 'test-cl-rest)))) (equal '--cl-rest-- a)) ;=> nil (let (c) (mapc #'(lambda (y) (when (or (eq y '--cl-rest) (eql y '--cl-rest--) (equal y '--cl-rest--)) (push y c ))) (help-function-arglist 'test-cl-rest)) c) ;=> nil (equal (car '(--cl-rest--)) (car '(--cl-rest--))) ;=> t (eql (car '(--cl-rest--)) (car '(--cl-rest--))) ;=> t (eq (car '(--cl-rest-- 666)) (cadr '(666 --cl-rest--))) ;=> t ;; memq/member (memq '--cl-rest-- (member '&rest (help-function-arglist 'test-cl-rest))) ;=> nil ;; memql/member (memql '--cl-rest-- (member '&rest (help-function-arglist 'test-cl-rest))) ;=> nil ;; memq/member* (memq '--cl-rest-- (member* '&rest (help-function-arglist 'test-cl-rest))) => nil ;; memq/member* (memql '--cl-rest-- (member* '&rest (help-function-arglist 'test-cl-rest))) => nil ;; memql/member same-symbol new list (memql '--cl-rest-- (member '&rest '(bubba &rest --cl-rest--))) ;=> (--cl-rest--) ;; memq same-symbol new list (memq '--cl-rest-- '(arg1 arg2 &rest --cl-rest-- bubba)) ;=> (--cl-rest-- bubba) ;; member* (memql (cadr (member* '&rest '(bubba &rest --cl-rest--))) (help-function-arglist 'test-cl-rest)) ;=> nil ;;; ============================== s_P