34 val default_node: key * 'a -> 'a T -> 'a T |
33 val default_node: key * 'a -> 'a T -> 'a T |
35 val del_nodes: key list -> 'a T -> 'a T (*exception UNDEF*) |
34 val del_nodes: key list -> 'a T -> 'a T (*exception UNDEF*) |
36 val is_edge: 'a T -> key * key -> bool |
35 val is_edge: 'a T -> key * key -> bool |
37 val add_edge: key * key -> 'a T -> 'a T |
36 val add_edge: key * key -> 'a T -> 'a T |
38 val del_edge: key * key -> 'a T -> 'a T |
37 val del_edge: key * key -> 'a T -> 'a T |
39 val merge: ('a * 'a -> bool) -> 'a T * 'a T -> 'a T (*exception DUPS*) |
38 val merge: ('a * 'a -> bool) -> 'a T * 'a T -> 'a T (*exception DUP*) |
40 val join: (key -> 'a * 'a -> 'a) (*exception DUP/SAME*) -> |
39 val join: (key -> 'a * 'a -> 'a) (*exception DUP/SAME*) -> |
41 'a T * 'a T -> 'a T (*exception DUPS*) |
40 'a T * 'a T -> 'a T (*exception DUP*) |
42 val irreducible_paths: 'a T -> key * key -> key list list |
41 val irreducible_paths: 'a T -> key * key -> key list list |
43 val all_paths: 'a T -> key * key -> key list list |
42 val all_paths: 'a T -> key * key -> key list list |
44 exception CYCLES of key list list |
43 exception CYCLES of key list list |
45 val add_edge_acyclic: key * key -> 'a T -> 'a T (*exception CYCLES*) |
44 val add_edge_acyclic: key * key -> 'a T -> 'a T (*exception CYCLES*) |
46 val add_deps_acyclic: key * key list -> 'a T -> 'a T (*exception CYCLES*) |
45 val add_deps_acyclic: key * key list -> 'a T -> 'a T (*exception CYCLES*) |
76 (* graphs *) |
75 (* graphs *) |
77 |
76 |
78 datatype 'a T = Graph of ('a * (key list * key list)) Table.table; |
77 datatype 'a T = Graph of ('a * (key list * key list)) Table.table; |
79 |
78 |
80 exception DUP = Table.DUP; |
79 exception DUP = Table.DUP; |
81 exception DUPS = Table.DUPS; |
|
82 exception UNDEF = Table.UNDEF; |
80 exception UNDEF = Table.UNDEF; |
83 exception SAME = Table.SAME; |
81 exception SAME = Table.SAME; |
84 |
82 |
85 val empty = Graph Table.empty; |
83 val empty = Graph Table.empty; |
86 fun keys (Graph tab) = Table.keys tab; |
84 fun keys (Graph tab) = Table.keys tab; |