functor (P : PARAM->
  sig
    val run : (unit -> 'a) -> unit
    val run1 : ('-> 'b) -> '-> unit
    val run2 : ('-> '-> 'c) -> '-> '-> unit
    val run3 : ('-> '-> '-> 'd) -> '-> '-> '-> unit
    val set_exn_handler : (exn -> unit) -> unit
    val active : unit -> bool
    val stop : unit -> unit
    module Fut :
      sig
        type 'a t
        type 'a future = 'CCPool.Make.Fut.t
        val return : '-> 'CCPool.Make.Fut.t
        val fail : exn -> 'CCPool.Make.Fut.t
        val make : (unit -> 'a) -> 'CCPool.Make.Fut.t
        val make1 : ('-> 'b) -> '-> 'CCPool.Make.Fut.t
        val make2 : ('-> '-> 'c) -> '-> '-> 'CCPool.Make.Fut.t
        val get : 'CCPool.Make.Fut.t -> 'a
        val state : 'CCPool.Make.Fut.t -> 'CCPool.state
        val is_done : 'CCPool.Make.Fut.t -> bool
        val on_success : 'CCPool.Make.Fut.t -> ('-> unit) -> unit
        val on_failure : 'CCPool.Make.Fut.t -> (exn -> unit) -> unit
        val on_finish :
          'CCPool.Make.Fut.t -> ('CCPool.state -> unit) -> unit
        val flat_map :
          ('-> 'CCPool.Make.Fut.t) ->
          'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
        val and_then :
          'CCPool.Make.Fut.t ->
          (unit -> 'CCPool.Make.Fut.t) -> 'CCPool.Make.Fut.t
        val sequence_a :
          'CCPool.Make.Fut.t array -> 'a array CCPool.Make.Fut.t
        val map_a :
          ('-> 'CCPool.Make.Fut.t) ->
          'a array -> 'b array CCPool.Make.Fut.t
        val sequence_l :
          'CCPool.Make.Fut.t list -> 'a list CCPool.Make.Fut.t
        val map_l :
          ('-> 'CCPool.Make.Fut.t) ->
          'a list -> 'b list CCPool.Make.Fut.t
        val choose_a : 'CCPool.Make.Fut.t array -> 'CCPool.Make.Fut.t
        val choose_l : 'CCPool.Make.Fut.t list -> 'CCPool.Make.Fut.t
        val map : ('-> 'b) -> 'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
        val map_async :
          ('-> 'b) -> 'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
        val app :
          ('-> 'b) CCPool.Make.Fut.t ->
          'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
        val app_async :
          ('-> 'b) CCPool.Make.Fut.t ->
          'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
        val sleep : float -> unit CCPool.Make.Fut.t
        module Infix :
          sig
            val ( >>= ) :
              'CCPool.Make.Fut.t ->
              ('-> 'CCPool.Make.Fut.t) -> 'CCPool.Make.Fut.t
            val ( >> ) :
              'CCPool.Make.Fut.t ->
              (unit -> 'CCPool.Make.Fut.t) -> 'CCPool.Make.Fut.t
            val ( >|= ) :
              'CCPool.Make.Fut.t -> ('-> 'b) -> 'CCPool.Make.Fut.t
            val ( <*> ) :
              ('-> 'b) CCPool.Make.Fut.t ->
              'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
          end
        val ( >>= ) :
          'CCPool.Make.Fut.t ->
          ('-> 'CCPool.Make.Fut.t) -> 'CCPool.Make.Fut.t
        val ( >> ) :
          'CCPool.Make.Fut.t ->
          (unit -> 'CCPool.Make.Fut.t) -> 'CCPool.Make.Fut.t
        val ( >|= ) :
          'CCPool.Make.Fut.t -> ('-> 'b) -> 'CCPool.Make.Fut.t
        val ( <*> ) :
          ('-> 'b) CCPool.Make.Fut.t ->
          'CCPool.Make.Fut.t -> 'CCPool.Make.Fut.t
      end
  end