sig
  module Computation :
    sig
      type ('a, 'c) t
      val create :
        worker:('a -> 'b) ->
        master:('a * 'c -> 'b -> ('a * 'c) list) ->
        ('a, 'c) Functory.Network.Same.Computation.t
      val add_worker :
        ('a, 'c) Functory.Network.Same.Computation.t ->
        Functory.Network.worker -> unit
      val add_task :
        ('a, 'c) Functory.Network.Same.Computation.t -> 'a * 'c -> unit
      val remove_worker :
        ('a, 'c) Functory.Network.Same.Computation.t ->
        Functory.Network.worker -> unit
      val one_step :
        ?timeout:float ->
        ('a, 'c) Functory.Network.Same.Computation.t -> unit
      val status :
        ('a, 'c) Functory.Network.Same.Computation.t ->
        Functory.Network.computation_status
      val clear : ('a, 'c) Functory.Network.Same.Computation.t -> unit
      val kill : ('a, 'c) Functory.Network.Same.Computation.t -> unit
    end
  val compute :
    worker:('a -> 'b) ->
    master:('a * 'c -> 'b -> ('a * 'c) list) -> ('a * 'c) list -> unit
  module Worker : sig val compute : Functory.Network.worker_type end
  val map : f:('a -> 'b) -> 'a list -> 'b list
  val map_local_fold :
    f:('a -> 'b) -> fold:('c -> 'b -> 'c) -> 'c -> 'a list -> 'c
  val map_remote_fold :
    f:('a -> 'b) -> fold:('c -> 'b -> 'c) -> 'c -> 'a list -> 'c
  val map_fold_ac :
    f:('a -> 'b) -> fold:('b -> 'b -> 'b) -> 'b -> 'a list -> 'b
  val map_fold_a :
    f:('a -> 'b) -> fold:('b -> 'b -> 'b) -> 'b -> 'a list -> 'b
end