SCM Repository
View of /sml/branches/FLINT/src/comp-lib/intset.sml
Parent Directory
|
Revision Log
Revision 418 -
(download)
(annotate)
Fri Sep 3 23:51:27 1999 UTC (21 years, 7 months ago) by monnier
File size: 1023 byte(s)
Fri Sep 3 23:51:27 1999 UTC (21 years, 7 months ago) by monnier
File size: 1023 byte(s)
version 110.20
(* Copyright 1989 by AT&T Bell Laboratories *) (* replaced with int-binary-set.sml new == fn () => empty add s x == add(s,x) rmv s x == delete(s,x) mem s x == member(s,x) *) structure Intset : sig type intset val new : unit -> intset val add : intset -> int -> unit val rmv : intset -> int -> unit val mem : intset -> int -> bool end = struct open Array List infix 9 sub val p = 211 type intset = int list array fun new () = array(p,nil : int list) fun add a i = let val index = i mod p in update(a,index,i::(a sub index)) end fun mem a i = exists (fn j => j=i) (a sub (i mod p)) fun rmv a i = let fun f (j::r) = if i=j then f r else j :: f r | f nil = nil val index = i mod p in update(a,index, f(a sub index)) end (* type intset = unit Intmap.intmap exception NO fun new () = Intmap.new(32, NO) fun add a i = Intmap.add a (i,()) fun mem a i = (Intmap.map a i; true) handle NO => false fun rmv a i = Intmap.rem a i *) end
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |