The procedures in this section test specific properties of lists.
#t if obj is a proper list, or
otherwise. This is the same as the core
list? (see List Predicates).
A proper list is a list which ends with the empty list
the usual way. The empty list
() itself is a proper list too.
(proper-list? '(1 2 3)) ⇒ #t (proper-list? '()) ⇒ #t
#t if obj is a circular list, or
A circular list is a list where at some point the
back to a previous pair in the list (either the start or some later
point), so that following the
cdrs takes you around in a
circle, with no end.
(define x (list 1 2 3 4)) (set-cdr! (last-pair x) (cddr x)) x ⇒ (1 2 3 4 3 4 3 4 ...) (circular-list? x) ⇒ #t
#t if obj is a dotted list, or
A dotted list is a list where the
cdr of the last pair is not
the empty list
(). Any non-pair obj is also considered a
dotted list, with length zero.
(dotted-list? '(1 2 . 3)) ⇒ #t (dotted-list? 99) ⇒ #t
It will be noted that any Scheme object passes exactly one of the
above three tests
dotted-list?. Non-lists are
dotted-list?, finite lists
dotted-list?, and infinite
#t if lst is the empty list
otherwise. If something else than a proper or circular list is passed
as lst, an error is signalled. This procedure is recommended
for checking for the end of a list in contexts where dotted lists are
#t is obj is not a pair,
This is shorthand notation
(not (pair? obj)) and is
supposed to be used for end-of-list checking in contexts where dotted
lists are allowed.
#t if all argument lists are equal,
List equality is determined by testing whether all lists have the same
length and the corresponding elements are equal in the sense of the
equality predicate elt=. If no or only one list is given,
#t is returned.