Import Upstream version 20180207
[hcoop/debian/mlton.git] / mlyacc / src / utils.sig
CommitLineData
7f918cf1
CE
1(* ML-Yacc Parser Generator (c) 1989 Andrew W. Appel, David R. Tarditi *)
2
3signature ORDSET =
4 sig
5 type set
6 type elem
7 exception Select_arb
8 val app : (elem -> unit) -> set -> unit
9 and card: set -> int
10 and closure: set * (elem -> set) -> set
11 and difference: set * set -> set
12 and elem_eq: (elem * elem -> bool)
13 and elem_gt : (elem * elem -> bool)
14 and empty: set
15 and exists: (elem * set) -> bool
16 and find : (elem * set) -> elem option
17 and fold: ((elem * 'b) -> 'b) -> set -> 'b -> 'b
18 and insert: (elem * set) -> set
19 and is_empty: set -> bool
20 and make_list: set -> elem list
21 and make_set: (elem list -> set)
22 and partition: (elem -> bool) -> (set -> set * set)
23 and remove: (elem * set) -> set
24 and revfold: ((elem * 'b) -> 'b) -> set -> 'b -> 'b
25 and select_arb: set -> elem
26 and set_eq: (set * set) -> bool
27 and set_gt: (set * set) -> bool
28 and singleton: (elem -> set)
29 and union: set * set -> set
30 end
31
32signature TABLE =
33 sig
34 type 'a table
35 type key
36 val size : 'a table -> int
37 val empty: 'a table
38 val exists: (key * 'a table) -> bool
39 val find : (key * 'a table) -> 'a option
40 val insert: ((key * 'a) * 'a table) -> 'a table
41 val make_table : (key * 'a ) list -> 'a table
42 val make_list : 'a table -> (key * 'a) list
43 val fold : ((key * 'a) * 'b -> 'b) -> 'a table -> 'b -> 'b
44 end
45
46signature HASH =
47 sig
48 type table
49 type elem
50
51 val size : table -> int
52 val add : elem * table -> table
53 val find : elem * table -> int option
54 val exists : elem * table -> bool
55 val empty : table
56 end;