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