sig
  module Make :
    functor (Bsml : Bsmlsig.BSML->
      sig
        val shift : int -> 'Bsml.par -> 'Bsml.par
        val shift_right : 'Bsml.par -> 'Bsml.par
        val shift_left : 'Bsml.par -> 'Bsml.par
        val totex : 'Bsml.par -> (int -> 'a) Bsml.par
        val total_exchange : 'Bsml.par -> 'a list Bsml.par
        exception Scatter
        val scatter :
          ('-> int -> 'b option) -> int -> 'Bsml.par -> 'Bsml.par
        val scatter_list : int -> 'a list Bsml.par -> 'a list Bsml.par
        val scatter_array : int -> 'a array Bsml.par -> 'a array Bsml.par
        val scatter_string : int -> string Bsml.par -> string Bsml.par
        exception Gather
        val gather : int -> 'Bsml.par -> (int -> 'a option) Bsml.par
        val gather_list : int -> 'Bsml.par -> 'a list Bsml.par
        exception Bcast
        val bcast_direct : int -> 'Bsml.par -> 'Bsml.par
        val bcast_totex_gen :
          ('-> int -> 'b option) ->
          ((int -> 'b) -> 'c) -> int -> 'Bsml.par -> 'Bsml.par
        val bcast_totex_list : int -> 'a list Bsml.par -> 'a list Bsml.par
        val bcast_totex_array : int -> 'a array Bsml.par -> 'a array Bsml.par
        val bcast_totex_string : int -> string Bsml.par -> string Bsml.par
        val bcast_totex : int -> 'Bsml.par -> 'Bsml.par
        val scan_direct : ('-> '-> 'a) -> 'Bsml.par -> 'Bsml.par
        val scan_logp : ('-> '-> 'a) -> 'Bsml.par -> 'Bsml.par
        val scan_wide :
          (('-> '-> 'a) -> 'Bsml.par -> 'Bsml.par) ->
          (('-> '-> 'a) -> '-> 'b) ->
          ('-> 'a) ->
          (('-> 'a) -> '-> 'b) ->
          ('-> '-> 'a) -> 'Bsml.par -> 'Bsml.par
        val scan_wide_direct :
          (('-> '-> 'a) -> '-> 'b) ->
          ('-> 'a) ->
          (('-> 'a) -> '-> 'b) ->
          ('-> '-> 'a) -> 'Bsml.par -> 'Bsml.par
        val scan_wide_logp :
          (('-> '-> 'a) -> '-> 'b) ->
          ('-> 'a) ->
          (('-> 'a) -> '-> 'b) ->
          ('-> '-> 'a) -> 'Bsml.par -> 'Bsml.par
        val scan_list_direct :
          ('-> '-> 'a) -> 'a list Bsml.par -> 'a list Bsml.par
        val scan_list_logp :
          ('-> '-> 'a) -> 'a list Bsml.par -> 'a list Bsml.par
        val scan_array_direct :
          ('-> '-> 'a) -> 'a array Bsml.par -> 'a array Bsml.par
        val scan_array_logp :
          ('-> '-> 'a) -> 'a array Bsml.par -> 'a array Bsml.par
        val fold_direct : ('-> '-> 'a) -> 'Bsml.par -> 'Bsml.par
        val fold_wide :
          (('-> '-> 'a) -> 'Bsml.par -> 'Bsml.par) ->
          (('-> '-> 'a) -> '-> 'a) ->
          ('-> '-> 'a) -> 'Bsml.par -> 'Bsml.par
        val fold_logp : ('-> '-> 'a) -> 'Bsml.par -> 'Bsml.par
        val fold_list_direct :
          ('-> '-> 'a) -> 'a list Bsml.par -> 'Bsml.par
        val fold_list_logp :
          ('-> '-> 'a) -> 'a list Bsml.par -> 'Bsml.par
        val fold_array_direct :
          ('-> '-> 'a) -> 'a array Bsml.par -> 'Bsml.par
        val fold_array_logp :
          ('-> '-> 'a) -> 'a array Bsml.par -> 'Bsml.par
      end
end