Annotation of researchv10no/cmd/sml/src/util/intset.sml, revision 1.1.1.1

1.1       root        1: (* Copyright 1989 by AT&T Bell Laboratories *)
                      2: structure Intset : sig type intset
                      3:                        val new : unit -> intset
                      4:                        val add : intset -> int -> unit
                      5:                        val rem : intset -> int -> unit
                      6:                        val mem : intset -> int -> bool
                      7:                   end =
                      8: 
                      9: struct
                     10:   val p = 211
                     11:   type intset = int list array
                     12:   fun new () = array(p,nil : int list)
                     13:   fun add a i = let val index = i mod p in update(a,index,i::(a sub index)) end
                     14:   fun mem a i = exists (fn j => j=i) (a sub (i mod p))
                     15:   fun rem a i = let fun f (j::r) = if i=j then f r else j :: f r
                     16:                      | f nil = nil
                     17:                    val index = i mod p
                     18:                 in update(a,index, f(a sub index))
                     19:                end
                     20: (*
                     21:   type intset = unit Intmap.intmap
                     22:   exception NO
                     23:   fun new () =  Intmap.new(32, NO)
                     24:   fun add a i = Intmap.add a (i,())
                     25:   fun mem a i = (Intmap.map a i; true) handle NO => false
                     26:   fun rem a i = Intmap.rem a i
                     27: *)
                     28: end
                     29: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.