F_classes.module



(*
   Historical baggage. Use these F classes only within a class - never 
expose them outside a class boundary.

	These are high-performance workhorse Sather classes,
FLIST, FMAP, FSET and FQSET which use amortised doubling.  The "F"
prefix denotes fast. They have slightly awkward interfaces requiring 
writebacks, i.e.
    myset := myset.insert(foo);

Although this appears to be a value-oriented interface, the 'myset'
returned may actually be the same as the 'myset' on the right side (in
fact, it usually will be.)  This is done for absolute speed (the 'F'
stands for 'fast'.)  We suggest that they be avoided by novices and
should certainly not be used in class interfaces (i.e. their use
should be intra-class).

*)

--  Many of these have no single abstraction
--  and contain all kinds of routines that may be useful in different
--  circumstances.

    flist.sa -has flist.sa FLIST 
    fmap.sa -has fmap.sa FMAP 
    fset.sa -has fset.sa FSET -- Representation switching version of FSET
    orig_fset.sa -has orig_fset.sa ORIG_FSET   -- Original FSET
    fqset.sa -has fqset.sa FQSET 
    fmultimap.sa -has fmultimap.sa FMULTIMAP 
    fgap_list.sa -has fgap_list.sa FGAP_LIST 

    flist_test.sa -has flist_test.sa TEST_FLIST
    fset_test.sa -has fset_test.sa TEST_FSET
    orig_fset_test.sa -has orig_fset_test.sa TEST_ORIG_FSET
    fmap_test.sa -has fmap_test.sa TEST_FMAP	
    fmultimap_test.sa -has fmultimap_test.sa TEST_FMULTIMAP
    fgap_list_test.sa -has fgap_list_test.sa TEST_FGAP_LIST