Module Switch

type 'a shared =
| Shared of 'a
| Single of 'a
type ('a, 'ctx) t_store = {
act_get : unit -> 'a array;
act_get_shared : unit -> 'a shared array;
act_store : 'ctx -> 'a -> int;
act_store_shared : 'ctx -> 'a -> int;
}
exception Not_simple
module type Stored = sig ... end
module type CtxStored = sig ... end
module CtxStore (A : CtxStored) : sig ... end
module Store (A : Stored) : sig ... end
module type S = sig ... end
module Make (Arg : S) : sig ... end