cl: List Functions

 
 10.1 List Functions
 ===================
 
 This section describes a number of simple operations on lists, i.e.,
 chains of cons cells.
 
  -- Function: cl-caddr x
      This function is equivalent to ‘(car (cdr (cdr X)))’.  Likewise,
      this package defines all 24 ‘cXXXr’ functions where XXX is up to
      four ‘a’s and/or ‘d’s.  All of these functions are ‘setf’-able, and
      calls to them are expanded inline by the byte-compiler for maximum
      efficiency.
 
  -- Function: cl-first x
      This function is a synonym for ‘(car X)’.  Likewise, the functions
      ‘cl-second’, ‘cl-third’, ..., through ‘cl-tenth’ return the given
      element of the list X.
 
  -- Function: cl-rest x
      This function is a synonym for ‘(cdr X)’.
 
  -- Function: cl-endp x
      This function acts like ‘null’, but signals an error if ‘x’ is
      neither a ‘nil’ nor a cons cell.
 
  -- Function: cl-list-length x
      This function returns the length of list X, exactly like ‘(length
      X)’, except that if X is a circular list (where the CDR-chain forms
      a loop rather than terminating with ‘nil’), this function returns
      ‘nil’.  (The regular ‘length’ function would get stuck if given a
      circular list.  See also the ‘safe-length’ function.)
 
  -- Function: cl-list* arg &rest others
      This function constructs a list of its arguments.  The final
      argument becomes the CDR of the last cell constructed.  Thus,
      ‘(cl-list* A B C)’ is equivalent to ‘(cons A (cons B C))’, and
      ‘(cl-list* A B nil)’ is equivalent to ‘(list A B)’.
 
  -- Function: cl-ldiff list sublist
      If SUBLIST is a sublist of LIST, i.e., is ‘eq’ to one of the cons
      cells of LIST, then this function returns a copy of the part of
      LIST up to but not including SUBLIST.  For example, ‘(cl-ldiff x
      (cddr x))’ returns the first two elements of the list ‘x’.  The
      result is a copy; the original LIST is not modified.  If SUBLIST is
      not a sublist of LIST, a copy of the entire LIST is returned.
 
  -- Function: cl-copy-list list
      This function returns a copy of the list LIST.  It copies dotted
      lists like ‘(1 2 . 3)’ correctly.
 
  -- Function: cl-tree-equal x y &key :test :test-not :key
      This function compares two trees of cons cells.  If X and Y are
      both cons cells, their CARs and CDRs are compared recursively.  If
      neither X nor Y is a cons cell, they are compared by ‘eql’, or
      according to the specified test.  The ‘:key’ function, if
      specified, is applied to the elements of both trees.  See
      Sequences.