Containers.module



--------------------------->  GNU Sather - module  <---------------------------
-- Copyright (C) 1994 by International Computer Science Institute            --
-- This file is part of the GNU Sather package. It is free software; you may --
-- redistribute  and/or modify it under the terms of the  GNU General Public --
-- License (GPL)  as  published  by the  Free  Software  Foundation;  either --
-- version 2 of the license, or (at your option) any later version.          --
-- This  program  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/GPL for more details.        --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to   <--------------

(*

CONTAINER CLASSES

These data types can hold other objects.  They are all built up
out of more primitive Sather classes in Base.

The most important of these is ARRAY.  It extends the built-in array
providing class AREF and provides facilities for sorting, printing,
interating, and so forth.  The Sather language also allows a special
array-constructing literal syntax:
     | a, b, c |
ARRAY2 and ARRAY3 provide multiple dimensions and are built using AREF
with multiplicative indexing.

The TUP classes make it convenient to construct tuples of other types.
The TUP classes are value classes, so they are efficient; there is no
heap management involved in their implementation.  Because of Sathers
type inference, their construction can usually be acheived with:
    #(first, second)
The TUP classes "do the right thing" automatically with respect to
equality and hash values.

There are three types of container classes 
	- abstract interfaces      (such as $RO_SET{T} and $SET{T})
	- concrete implementations (such as H_SET, LH_SET and SET)
	- algorithm classes (collections of stateless algorithm functions)

*)

-- Container Hierarchy
    ContainersArrays.module
    ContainersDispensers.module
    ContainersMaps.module
    ContainersLists.module	
    ContainersSets.module
    ContainersF_classes.module
    ContainersBags.module

    container.sa -has container.sa $CONTAINER -- Container abstraction
    container_alg.sa -has container_alg.sa CONTAINER_ALG
    tup.sa -has tup.sa TUP 
    next.sa -has next.sa $NEXT NEXT
	    
    hashtab.sa -has hashtab.sa DYNAMIC_BUCKET_TABLE DYNAMIC_DATABUCKET_TABLE 
				BUCKET DATABUCKET

    tup_test.sa -has tup_test.sa TUP_TEST