Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/comp-lib/intset.sml
ViewVC logotype

Annotation of /sml/trunk/src/comp-lib/intset.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 89 - (view) (download)

1 : monnier 89 (* 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 rmv : intset -> int -> unit
6 :     val mem : intset -> int -> bool
7 :     end =
8 :    
9 :     struct
10 :     open Array List
11 :     infix 9 sub
12 :    
13 :     val p = 211
14 :     type intset = int list array
15 :     fun new () = array(p,nil : int list)
16 :     fun add a i = let val index = i mod p in update(a,index,i::(a sub index)) end
17 :     fun mem a i = exists (fn j => j=i) (a sub (i mod p))
18 :     fun rmv a i = let fun f (j::r) = if i=j then f r else j :: f r
19 :     | f nil = nil
20 :     val index = i mod p
21 :     in update(a,index, f(a sub index))
22 :     end
23 :     (*
24 :     type intset = unit Intmap.intmap
25 :     exception NO
26 :     fun new () = Intmap.new(32, NO)
27 :     fun add a i = Intmap.add a (i,())
28 :     fun mem a i = (Intmap.map a i; true) handle NO => false
29 :     fun rmv a i = Intmap.rem a i
30 :     *)
31 :     end
32 :    
33 :    
34 :     (*
35 :     * $Log: intset.sml,v $
36 :     * Revision 1.1.1.1 1998/04/08 18:39:14 george
37 :     * Version 110.5
38 :     *
39 :     *)

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0