Make_indexed.XIndexed 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