DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(guile.info.gz) Dictionary Types

Info Catalog (guile.info.gz) Association Lists and Hash Tables (guile.info.gz) Association Lists
 
 22.7.1 Dictionary Types
 -----------------------
 
 A "dictionary" object is a data structure used to index information in
 a user-defined way.  In standard Scheme, the main aggregate data types
 are lists and vectors.  Lists are not really indexed at all, and
 vectors are indexed only by number (e.g. `(vector-ref foo 5)').  Often
 you will find it useful to index your data on some other type; for
 example, in a library catalog you might want to look up a book by the
 name of its author.  Dictionaries are used to help you organize
 information in such a way.
 
    An "association list" (or "alist" for short) is a list of key-value
 pairs.  Each pair represents a single quantity or object; the `car' of
 the pair is a key which is used to identify the object, and the `cdr'
 is the object's value.
 
    A "hash table" also permits you to index objects with arbitrary
 keys, but in a way that makes looking up any one object extremely fast.
 A well-designed hash system makes hash table lookups almost as fast as
 conventional array or vector references.
 
    Alists are popular among Lisp programmers because they use only the
 language's primitive operations (lists, "car", "cdr" and the equality
 primitives).  No changes to the language core are necessary.
 Therefore, with Scheme's built-in list manipulation facilities, it is
 very convenient to handle data stored in an association list.  Also,
 alists are highly portable and can be easily implemented on even the
 most minimal Lisp systems.
 
    However, alists are inefficient, especially for storing large
 quantities of data.  Because we want Guile to be useful for large
 software systems as well as small ones, Guile provides a rich set of
 tools for using either association lists or hash tables.
 
Info Catalog (guile.info.gz) Association Lists and Hash Tables (guile.info.gz) Association Lists
automatically generated byinfo2html