From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Drew Adams" Newsgroups: gmane.emacs.devel Subject: datatypes in Elisp Info: mention "things" for which there is no "thing" datatype - e.g. faces Date: Thu, 23 Jun 2005 09:00:24 -0700 Message-ID: NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1119542979 3838 80.91.229.2 (23 Jun 2005 16:09:39 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Thu, 23 Jun 2005 16:09:39 +0000 (UTC) Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Jun 23 18:09:29 2005 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by ciao.gmane.org with esmtp (Exim 4.43) id 1DlUFk-0004vE-SA for ged-emacs-devel@m.gmane.org; Thu, 23 Jun 2005 18:08:33 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DlUMb-0000cf-W1 for ged-emacs-devel@m.gmane.org; Thu, 23 Jun 2005 12:15:38 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DlUE0-0004Qk-ID for emacs-devel@gnu.org; Thu, 23 Jun 2005 12:06:48 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DlUDm-0004JB-Uz for emacs-devel@gnu.org; Thu, 23 Jun 2005 12:06:36 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DlUDi-0004HV-VU for emacs-devel@gnu.org; Thu, 23 Jun 2005 12:06:27 -0400 Original-Received: from [141.146.126.231] (helo=agminet04.oracle.com) by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24) (Exim 4.34) id 1DlUBG-00066Q-TR for emacs-devel@gnu.org; Thu, 23 Jun 2005 12:03:55 -0400 Original-Received: from agminet04.oracle.com (localhost [127.0.0.1]) by agminet04.oracle.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id j5NG0Q3E012005 for ; Thu, 23 Jun 2005 11:00:27 -0500 Original-Received: from rgmsgw300.us.oracle.com (rgmsgw300.us.oracle.com [138.1.186.49]) by agminet04.oracle.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id j5NG0PYO011950 for ; Thu, 23 Jun 2005 11:00:26 -0500 Original-Received: from rgmsgw300.us.oracle.com (localhost [127.0.0.1]) by rgmsgw300.us.oracle.com (Switch-3.1.4/Switch-3.1.0) with ESMTP id j5NG0Oi9001303 for ; Thu, 23 Jun 2005 10:00:25 -0600 Original-Received: from dradamslap (dradams-lap.us.oracle.com [130.35.177.126]) by rgmsgw300.us.oracle.com (Switch-3.1.4/Switch-3.1.0) with SMTP id j5NG0OwD001296 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO) for ; Thu, 23 Jun 2005 10:00:24 -0600 Original-To: "Emacs-Devel" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.6604 (9.0.2911.0) X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1506 Importance: Normal X-Brightmail-Tracker: AAAAAQAAAAI= X-Whitelist: TRUE 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:39372 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:39372 The Elisp Info on Lisp Data Types is presented near the beginning of the manual, as it is important, basic information. Reading this info, I see no mention of `face'; `face' is not a datatype. A face is (`type-of') either a symbol or a vector. Fair enough; some of the "kinds of things", such as `face', that we reference casually are not themselves datatypes. But I wonder if perhaps something about this shouldn't be mentioned in the Info section on datatypes - perhaps mentioning `face' as an example of something you might in some ways be inclined to think of as a datatype but that Emacs treats differently from a type. Point out, in particular, that not everything that has what might look like a type predicate is a datatype - e.g. `facep'. Readers can get the impression when reading the section on datatypes that it covers all of the standard "things" we manipulate in Emacs Lisp. Looking at the list of type predicates, a reader would never guess that faces even exist, yet they are important things that we manipulate everyday. There is no `face' type, but there are faces. It might help to add a short explanation of this, including mention of predicates like `facep' that look like, but are not really, type predicates. What I'm suggesting is: 1) Mention that we sometimes speak casually of some things as if they were of a particular abstract type, when there is no such type. Make readers aware that when we speak of some things, like `buffer' and `function', there are corresponding datatypes, and when we speak of other things, like `face', there is no corresponding (`face') datatype. This is not obvious, and it's not obvious which things, like `function', correspond to a datatype and which, like `face', do not - there is nothing in the predicate names `functionp' and `facep' that provides a clue. (And functions, like faces, come in more than one form. It's not obvious why `function' is considered an abstract datatype with representations as diverse as lambda expression, keystroke command, and primitive, yet symbol and vector are not considered the representations of an abstract `face' datatype.) 2) Cross-reference the discussions of some of the important "non-types", such as `face'. A reader of the datatypes section and the list of type predicates would be helped by being made aware that there are also other (non-primitive) kinds of things that we manipulate, and the reader should be able to link to the doc of such important things as faces. Obviously, there is no limit to the "kinds of things" that can exist that have no corresponding datatype of the same name. The point is just to mention that 1) such things can exist, and 2) `face', in particular, is one (and cross-reference the face doc). Finally, I'm ignorant: Just why is `face' not treated similarly to `function' - why isn't `face' a datatype? If the answer expresses a general rule, then perhaps that rule should also be included in the doc, to clarify things.