sig
  module Make :
    functor (Bsml : Bsmlsig.BSML) ->
      sig
        val shift : int -> 'a Bsml.par -> 'a Bsml.par
        val shift_right : 'a Bsml.par -> 'a Bsml.par
        val shift_left : 'a Bsml.par -> 'a Bsml.par
        val totex : 'a Bsml.par -> (int -> 'a) Bsml.par
        val total_exchange : 'a Bsml.par -> 'a list Bsml.par
        exception Scatter
        val scatter :
          ('a -> int -> 'b option) -> int -> 'a Bsml.par -> 'b 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 -> 'a Bsml.par -> (int -> 'a option) Bsml.par
        val gather_list : int -> 'a Bsml.par -> 'a list Bsml.par
        exception Bcast
        val bcast_direct : int -> 'a Bsml.par -> 'a Bsml.par
        val bcast_totex_gen :
          ('a -> int -> 'b option) ->
          ((int -> 'b) -> 'c) -> int -> 'a Bsml.par -> 'c 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 -> 'a Bsml.par -> 'a Bsml.par
        val scan_direct : ('a -> 'a -> 'a) -> 'a Bsml.par -> 'a Bsml.par
        val scan_logp : ('a -> 'a -> 'a) -> 'a Bsml.par -> 'a Bsml.par
        val scan_wide :
          (('a -> 'a -> 'a) -> 'a Bsml.par -> 'a Bsml.par) ->
          (('a -> 'a -> 'a) -> 'b -> 'b) ->
          ('b -> 'a) ->
          (('a -> 'a) -> 'b -> 'b) ->
          ('a -> 'a -> 'a) -> 'b Bsml.par -> 'b Bsml.par
        val scan_wide_direct :
          (('a -> 'a -> 'a) -> 'b -> 'b) ->
          ('b -> 'a) ->
          (('a -> 'a) -> 'b -> 'b) ->
          ('a -> 'a -> 'a) -> 'b Bsml.par -> 'b Bsml.par
        val scan_wide_logp :
          (('a -> 'a -> 'a) -> 'b -> 'b) ->
          ('b -> 'a) ->
          (('a -> 'a) -> 'b -> 'b) ->
          ('a -> 'a -> 'a) -> 'b Bsml.par -> 'b Bsml.par
        val scan_list_direct :
          ('a -> 'a -> 'a) -> 'a list Bsml.par -> 'a list Bsml.par
        val scan_list_logp :
          ('a -> 'a -> 'a) -> 'a list Bsml.par -> 'a list Bsml.par
        val scan_array_direct :
          ('a -> 'a -> 'a) -> 'a array Bsml.par -> 'a array Bsml.par
        val scan_array_logp :
          ('a -> 'a -> 'a) -> 'a array Bsml.par -> 'a array Bsml.par
        val fold_direct : ('a -> 'a -> 'a) -> 'a Bsml.par -> 'a Bsml.par
        val fold_wide :
          (('a -> 'a -> 'a) -> 'a Bsml.par -> 'a Bsml.par) ->
          (('a -> 'a -> 'a) -> 'b -> 'a) ->
          ('a -> 'a -> 'a) -> 'b Bsml.par -> 'a Bsml.par
        val fold_logp : ('a -> 'a -> 'a) -> 'a Bsml.par -> 'b Bsml.par
        val fold_list_direct :
          ('a -> 'a -> 'a) -> 'a list Bsml.par -> 'a Bsml.par
        val fold_list_logp :
          ('a -> 'a -> 'a) -> 'a list Bsml.par -> 'b Bsml.par
        val fold_array_direct :
          ('a -> 'a -> 'a) -> 'a array Bsml.par -> 'b Bsml.par
        val fold_array_logp :
          ('a -> 'a -> 'a) -> 'a array Bsml.par -> 'b Bsml.par
      end
end