

                                                                  scan-alist
                                                                  scan-plist
                                                                   scan-hash

    FUNCTION
SCAN-ALIST ALIST &optional (TEST #'EQL)                          [Function]
SCAN-PLIST PLIST                                                 [Function]
SCAN-HASH TABLE                                                  [Function]

    Package
    series

    DESCRIPTION

When given an association list, a property list, or a hash table
(respectively), each of these functions produces two outputs:  a series of
keys K and a series of the corresponding values V.  Each key in the input
appears exactly once in the output, even if it appears more than once in
the input.  (The TEST argument of SCAN-ALIST specifies the equality test
between keys; it defaults to EQL.)  The two outputs have the same length.
Each V[j] is the value returned by the appropriate accessing function
(CDR-of-ASSOC, GETF, or GETHASH, respectively) when given K[j].  SCAN-ALIST
and SCAN-PLIST scan keys in the order they appear in the underlying
structure.  SCAN-HASH scans keys in no particular order.

(SCAN-PLIST '(A 1 B 3)) => #Z(A B) AND #Z(1 3) 
(SCAN-ALIST '((A . 1) NIL (A . 3) (B . 2))) 
 => #Z(A B) AND #Z(1 2)


     SEE ALSO
     about-series
     about-generators

;Copyright 1989 by the Massachusetts Institute of Technology,
;Cambridge, Massachusetts.

;Permission to use, copy, modify, and distribute this software and its
;documentation for any purpose and without fee is hereby granted,
;provided that this copyright and permission notice appear in all
;copies and supporting documentation, and that the name of M.I.T. not
;be used in advertising or publicity pertaining to distribution of the
;software without specific, written prior permission. M.I.T. makes no
;representations about the suitability of this software for any
;purpose.  It is provided "as is" without express or implied warranty.

;    M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
;    ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
;    M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
;    ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
;    WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
;    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
;    SOFTWARE.



