Source file qcheck_ops.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

 module type S = sig
   type 'a t_let
   val (let+) : 'a t_let -> ('a -> 'b) -> 'b t_let
   val (and+) : 'a t_let -> 'b t_let -> ('a * 'b) t_let
   val (let*) : 'a t_let -> ('a -> 'b t_let) -> 'b t_let
   val (and*) : 'a t_let -> 'b t_let -> ('a * 'b) t_let
 end
 module Make(X:sig
  type 'a t
  val (>|=) : 'a t -> ('a -> 'b) -> 'b t
  val monoid_product : 'a t -> 'b t -> ('a * 'b) t
  val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
  end) : S with type 'a t_let = 'a X.t = struct
    type 'a t_let = 'a X.t
    let (let+) = X.(>|=)
    let (and+) = X.monoid_product
    let (let*) = X.(>>=)
    let (and*) = X.monoid_product
end[@@inline]