hack_parallel

Parallel and shared memory library
Library hack_parallel.hack_core
Module Hack_monad
module type Basic = sig ... end
module type Infix = sig ... end
module type S = sig ... end
module Make (M : Basic) : S with type 'a t := 'a M.t
module type Basic2 = sig ... end

Multi parameter monad. The second parameter get unified across all the computation. This is used to encode monads working on a multi parameter data structure like (('a,'b result)).

module type Infix2 = sig ... end

Same as Infix, except the monad type has two arguments. The second is always just passed through.

module type S2 = sig ... end

The same as S except the monad type has two arguments. The second is always just passed through.

module Check_S2_refines_S (X : S) : S2 with type ('a, 'd) t = 'a X.t
module Make2 (M : Basic2) : S2 with type ('a, 'd) t := ( 'a, 'd ) M.t