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