emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Predicate for true lists


From: Basil L. Contovounesios
Subject: Re: Predicate for true lists
Date: Sat, 07 Jul 2018 18:04:28 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

Eli Zaretskii <address@hidden> writes:

>> Cc: address@hidden, address@hidden
>> From: Paul Eggert <address@hidden>
>> Date: Sat, 7 Jul 2018 01:41:38 -0700
>> 
>> Eli Zaretskii wrote:
>> > the documentation still doesn't say that 'length' signals
>> > an error for anything that is not a sequence, which is what
>> > proper-list-p is relying on.
>> 
>> The proposed implementation of proper-list-p does not rely on such a signal, 
>
> That's not my reading of the implementation:
>
>    (and (listp object) (ignore-errors (length object)))
>                         ^^^^^^^^^^^^^

The call to 'length' is wrapped in 'ignore-errors' in order to catch the
errors signalled in 'Flength' by 'FOR_EACH_TAIL' (in case of
circularity) and 'CHECK_LIST_END' (in case of dottedness).  'length'
shouldn't signal a 'wrong-type-argument' for a non-sequence argument
because it is only called on objects which satisfy 'listp':

    (and (listp object) (ignore-errors (length object)))
         ^^^^^^^^^^^^^^

Having said that, would something like the following documentation
change be welcome, for completeness?

>From 430d858d3617a11a5130a3344a131b5ab976e818 Mon Sep 17 00:00:00 2001
From: "Basil L. Contovounesios" <address@hidden>
Date: Sat, 7 Jul 2018 17:52:26 +0300
Subject: [PATCH] Fix (length NON-SEQUENCE) documentation

For discussion, see thread starting at
https://lists.gnu.org/archive/html/emacs-devel/2018-07/msg00171.html.

* doc/lispref/sequences.texi (Sequence Functions): Mention that
'length' signals a 'wrong-type-argument' also when given a
non-sequencep argument.
---
 doc/lispref/sequences.texi | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index 59faf2b4f1..e16674db04 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -71,13 +71,14 @@ Sequence Functions
 @cindex list length
 @cindex vector length
 @cindex sequence length
address@hidden bool-vector length
 @cindex char-table length
 @anchor{Definition of length}
 This function returns the number of elements in @var{sequence}.  If
address@hidden is a dotted list, a @code{wrong-type-argument} error is
-signaled; if it is a circular list, a @code{circular-list} error is
-signaled.  For a char-table, the value returned is always one more
-than the maximum Emacs character code.
address@hidden does not satisfy @code{sequencep} or is a dotted list,
+a @code{wrong-type-argument} error is signaled; if it is a circular
+list, a @code{circular-list} error is signaled.  For a char-table, the value
+returned is always one more than the maximum Emacs character code.
 
 @xref{Definition of safe-length}, for the related function @code{safe-length}.
 
-- 
2.18.0

-- 
Basil

reply via email to

[Prev in Thread] Current Thread [Next in Thread]