1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
open Base
module type S = sig
type t [@@deriving sexp]
include Comparable.S with type t := t
include Stringable.S with type t := t
val create : int -> (unit -> t) Staged.t
end
module Int = struct
include Int
let create starts_at =
let uid = ref starts_at in
Staged.stage (fun () ->
let ret = !uid in
Int.incr uid;
ret)
;;
end