let satisfies_identity_law f arg =
  ((f &gt;=&gt; empty) arg) (fun value1 -&gt; begin
    (f arg) (fun value2 -&gt; Printf.printf &quot;%B\n&quot; (value1 = value2))
  end);;
val satisfies_identity_law : ('a -&gt; 'b io) -&gt; 'a -&gt; unit = &lt;fun&gt;

# let satisfies_associative_law f g h arg =
  ((f &gt;=&gt; (g &gt;=&gt; h)) arg) (fun value1 -&gt; begin
    (((f &gt;=&gt; g) &gt;=&gt; h) arg) (fun value2 -&gt; Printf.printf &quot;%B\n&quot; (value1 = value2))
  end);;
val satisfies_associative_law :
