diff options
Diffstat (limited to '')
-rw-r--r-- | src/Identifiers.ml | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/Identifiers.ml b/src/Identifiers.ml index dfcbb631..825b4ad9 100644 --- a/src/Identifiers.ml +++ b/src/Identifiers.ml @@ -20,6 +20,8 @@ module type Id = sig val fresh_stateful_generator : unit -> generator ref * (unit -> id) + val mk_stateful_generator : generator -> generator ref * (unit -> id) + val incr : id -> id (* TODO: this should be stateful! - but we may want to be able to duplicate @@ -103,8 +105,8 @@ module IdGen () : Id = struct let id = incr id in id - let fresh_stateful_generator () = - let g = ref 0 in + let mk_stateful_generator g = + let g = ref g in let fresh () = let id = !g in g := incr id; @@ -112,6 +114,8 @@ module IdGen () : Id = struct in (g, fresh) + let fresh_stateful_generator () = mk_stateful_generator 0 + let fresh gen = (gen, incr gen) let to_string = string_of_int |