Commit | Line | Data |
---|---|---|
7f918cf1 CE |
1 | (* ML-Yacc Parser Generator (c) 1989 Andrew W. Appel, David R. Tarditi *) |
2 | ||
3 | signature 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 | ||
32 | signature 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 | ||
46 | signature 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; |