(* ========================================================================= *) (* FINITE SETS IMPLEMENTED WITH RANDOMLY BALANCED TREES *) (* Copyright (c) 2004 Joe Leslie-Hurd, distributed under the BSD License *) (* ========================================================================= *)
structureSet :> Set = struct
(* ------------------------------------------------------------------------- *) (* A type of finite sets. *) (* ------------------------------------------------------------------------- *)
type ('elt,'a) map = ('elt,'a) Map.map;
datatype'elt set = Set of ('elt,unit) map;
(* ------------------------------------------------------------------------- *) (* Converting to and from maps. *) (* ------------------------------------------------------------------------- *)
fun dest (Set m) = m;
fun mapPartial f = let fun mf (elt,()) = f elt in
fn Set m => Map.mapPartial mf m end;
funmap f = let fun mf (elt,()) = f elt in
fn Set m => Map.map mf m end;
fun domain m = Set (Map.transform (fn _ => ()) m);
fun subset (Set m1) (Set m2) = Map.subsetDomain m1 m2;
fun disjoint (Set m1) (Set m2) = Map.disjointDomain m1 m2;
(* ------------------------------------------------------------------------- *) (* Converting to and from lists. *) (* ------------------------------------------------------------------------- *)
fun transform f = let fun inc (x,l) = f x :: l in
foldr inc [] end;
fun readIterator iter = let val (elt,()) = Map.readIterator iter in
elt end;
fun advanceIterator iter = Map.advanceIterator iter;
end
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.16Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.