Up
# Module T2

### Signature

##
include Core_kernel.Std.Invariant.S2 with type
('a, 'b)
t :=
('a, 'b)
t

We use a phantom type to distinguish between throttles, which have
`max_concurrent_jobs >= 1`

, and sequencers, which have `max_concurrent_jobs = 1`

. All
operations are available on both. We make the distinction because it is sometimes
useful to know from the type of a throttle that it is a sequencer and that at most one
job can be running at a time.

val
sexp_of_t : ('a -> Sexplib.Sexp.t) -> ('kind -> Sexplib.Sexp.t) -> ('a, 'kind) t -> Sexplib.Sexp.t