From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Xue Fuqiao Newsgroups: gmane.emacs.help Subject: Re: About the macro expander Date: Mon, 4 Feb 2013 08:10:00 +0800 Organization: The Church of Emacs Message-ID: <20130204081000.b003185a1159b5fa1f290aae@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1359936621 25499 80.91.229.3 (4 Feb 2013 00:10:21 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 4 Feb 2013 00:10:21 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Feb 04 01:10:40 2013 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1U29dq-00069x-Qd for geh-help-gnu-emacs@m.gmane.org; Mon, 04 Feb 2013 01:10:34 +0100 Original-Received: from localhost ([::1]:38739 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U29dY-0004jL-Az for geh-help-gnu-emacs@m.gmane.org; Sun, 03 Feb 2013 19:10:16 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:43154) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U29dS-0004jG-6p for help-gnu-emacs@gnu.org; Sun, 03 Feb 2013 19:10:12 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U29dQ-0003uL-5l for help-gnu-emacs@gnu.org; Sun, 03 Feb 2013 19:10:09 -0500 Original-Received: from mail-pa0-f45.google.com ([209.85.220.45]:41094) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U29dP-0003rN-F5 for help-gnu-emacs@gnu.org; Sun, 03 Feb 2013 19:10:08 -0500 Original-Received: by mail-pa0-f45.google.com with SMTP id kl14so335040pab.32 for ; Sun, 03 Feb 2013 16:10:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:date:from:to:subject:message-id:organization:x-mailer :mime-version:content-type:content-transfer-encoding; bh=cQjbD4EI3vIshEnNeEPH8r01VB1lxHt3xxy3h/wCW6g=; b=DNFl+ZVZFrhj8UEmK5eqgKE7Q9nxO9br+nFOeVqUgijwB4leyE6rehQukfVd6qRAi/ SKO++rS9EWYRGs8TV+w0b00gl+x+AubiJz1P8rtSzNbi+Z8nAHms0/LCjMh235aC4Gze qoUQXikELiXL6cJUUuBHySjE+qcok4WNz1CthaeQUeEg7sSK9lFc4G3PTmcdtxWa/CTx QolLp9tjs58OCqkI+q4gBY4YA1tSqRK3q3o7dgGJu7HrkhVFgB9GUSM6uvilO7S2eS8d 3zrIlLvUKDYHD+XxVK9bAQchEZrS7s2KdHbP8rgXn12JGEPWTS/xQQVH+EX8H5qskFvb rmnA== X-Received: by 10.69.1.7 with SMTP id bc7mr49793779pbd.22.1359936606297; Sun, 03 Feb 2013 16:10:06 -0800 (PST) Original-Received: from Emacs ([49.118.21.177]) by mx.google.com with ESMTPS id wh4sm15993222pbc.18.2013.02.03.16.10.03 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 03 Feb 2013 16:10:05 -0800 (PST) X-Mailer: Sylpheed 3.2.0 (GTK+ 2.24.13; x86_64-pc-linux-gnu) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 209.85.220.45 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:88934 Archived-At: > and again: > > (cons t (cons t (cons t (list-of-length 0)))) > > and again: > > (cons t (cons t (cons t nil))) About this step, why does the 'null be expanded to nil? I know that the type symbol `null' represents the symbol `nil' in `cl-typep', thus `(cl-typep OBJECT 'null)' is equivalent to `(null OBJECT)'. But other than that, `null' should be a function, which returns t if OBJECT is nil. > When trying to understand what (require 'cl) is about, what it aims for, > you can have a look at: > http://www.lispworks.com/documentation/HyperSpec/Front/index.htm > and Practical Common Lisp http://www.gigamonkeys.com/book/ > and http://cliki.net/ Thanks for your information, but I think CLHS and Practical Common Lisp is too long. And in many ways, they are incompatible with `cl-lib' in Emacs, such as the `equal' predicate does not distinguish between IEEE floating-point plus and minus zero, and the second argument of `cl-check-type' is treated differently, etc. -- Best regards, Xue Fuqiao. http://www.emacswiki.org/emacs/XueFuqiao