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/smlnj-lib/Util/ord-map-sig.sml
ViewVC logotype

Annotation of /sml/trunk/src/smlnj-lib/Util/ord-map-sig.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 290 - (view) (download)

1 : monnier 2 (* ord-map-sig.sml
2 :     *
3 :     * COPYRIGHT (c) 1996 by AT&T Research. See COPYRIGHT file for details.
4 :     *
5 :     * Abstract signature of an applicative-style finite maps (dictionaries)
6 :     * structure over ordered monomorphic keys.
7 :     *)
8 :    
9 :     signature ORD_MAP =
10 :     sig
11 :    
12 :     structure Key : ORD_KEY
13 :    
14 :     type 'a map
15 :    
16 :     val empty : 'a map
17 :     (* The empty map *)
18 :    
19 : monnier 289 val isEmpty : 'a map -> bool
20 :     (* Return true if and only if the map is empty *)
21 :    
22 : monnier 29 val insert : 'a map * Key.ord_key * 'a -> 'a map
23 :     val insert' : ((Key.ord_key * 'a) * 'a map) -> 'a map
24 :     (* Insert an item. *)
25 : monnier 2
26 :     val find : 'a map * Key.ord_key -> 'a option
27 :     (* Look for an item, return NONE if the item doesn't exist *)
28 :    
29 :     val remove : 'a map * Key.ord_key -> 'a map * 'a
30 :     (* Remove an item, returning new map and value removed.
31 :     * Raises LibBase.NotFound if not found.
32 :     *)
33 :    
34 : monnier 289 val first : 'a map -> 'a option
35 :     val firsti : 'a map -> (Key.ord_key * 'a) option
36 :     (* return the first item in the map (or NONE if it is empty) *)
37 :    
38 : monnier 2 val numItems : 'a map -> int
39 :     (* Return the number of items in the map *)
40 :    
41 :     val listItems : 'a map -> 'a list
42 :     val listItemsi : 'a map -> (Key.ord_key * 'a) list
43 :     (* Return an ordered list of the items (and their keys) in the map.
44 :     *)
45 :    
46 :     val collate : ('a * 'a -> order) -> ('a map * 'a map) -> order
47 :     (* given an ordering on the map's range, return an ordering
48 :     * on the map.
49 :     *)
50 :    
51 :     val unionWith : ('a * 'a -> 'a) -> ('a map * 'a map) -> 'a map
52 :     val unionWithi : (Key.ord_key * 'a * 'a -> 'a) -> ('a map * 'a map) -> 'a map
53 :     (* return a map whose domain is the union of the domains of the two input
54 :     * maps, using the supplied function to define the map on elements that
55 :     * are in both domains.
56 :     *)
57 :    
58 :     val intersectWith : ('a * 'b -> 'c) -> ('a map * 'b map) -> 'c map
59 :     val intersectWithi : (Key.ord_key * 'a * 'b -> 'c) -> ('a map * 'b map) -> 'c map
60 :     (* return a map whose domain is the intersection of the domains of the
61 :     * two input maps, using the supplied function to define the range.
62 :     *)
63 :    
64 :     val app : ('a -> unit) -> 'a map -> unit
65 :     val appi : ((Key.ord_key * 'a) -> unit) -> 'a map -> unit
66 :     (* Apply a function to the entries of the map in map order. *)
67 :    
68 :     val map : ('a -> 'b) -> 'a map -> 'b map
69 :     val mapi : (Key.ord_key * 'a -> 'b) -> 'a map -> 'b map
70 :     (* Create a new map by applying a map function to the
71 :     * name/value pairs in the map.
72 :     *)
73 :    
74 :     val foldl : ('a * 'b -> 'b) -> 'b -> 'a map -> 'b
75 :     val foldli : (Key.ord_key * 'a * 'b -> 'b) -> 'b -> 'a map -> 'b
76 :     (* Apply a folding function to the entries of the map
77 :     * in increasing map order.
78 :     *)
79 :    
80 :     val foldr : ('a * 'b -> 'b) -> 'b -> 'a map -> 'b
81 :     val foldri : (Key.ord_key * 'a * 'b -> 'b) -> 'b -> 'a map -> 'b
82 :     (* Apply a folding function to the entries of the map
83 :     * in decreasing map order.
84 :     *)
85 :    
86 :     val filter : ('a -> bool) -> 'a map -> 'a map
87 :     val filteri : (Key.ord_key * 'a -> bool) -> 'a map -> 'a map
88 :     (* Filter out those elements of the map that do not satisfy the
89 :     * predicate. The filtering is done in increasing map order.
90 :     *)
91 :    
92 :     val mapPartial : ('a -> 'b option) -> 'a map -> 'b map
93 :     val mapPartiali : (Key.ord_key * 'a -> 'b option) -> 'a map -> 'b map
94 :     (* map a partial function over the elements of a map in increasing
95 :     * map order.
96 :     *)
97 :    
98 :     end (* ORD_MAP *)

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