Module type Base__Monad_intf.Basic_indexed
Indexed monad, in the style of Atkey. The second and third parameters are composed across all computation. To see this more clearly, you can look at the type of bind:
val bind : ('a, 'i, 'j) t -> f:('a -> ('b, 'j, 'k) t) -> ('b, 'i, 'k) tand isolate some of the type variables to see their individual behaviors:
val bind : 'a             -> f:('a ->  'b           ) ->  'b
val bind :      'i, 'j    ->               'j, 'k     ->     'i, 'kFor more information on Atkey-style indexed monads, see:
      Parameterised Notions of Computation
      Robert Atkey
      http://bentnib.org/paramnotions-jfp.pdf