sig
  external ( |! ) : '-> ('-> 'b) -> 'b = "%revapply"
  external ( |> ) : '-> ('-> 'b) -> 'b = "%revapply"
  val const : '-> '-> 'a
  external ignore : '-> unit = "%ignore"
  val non : ('-> bool) -> '-> bool
  val forever : (unit -> unit) -> exn
  val apply_n_times : n:int -> ('-> 'a) -> '-> 'a
  external id : '-> 'a = "%identity"
  val compose : ('-> 'c) -> ('-> 'b) -> '-> 'c
  val flip : ('-> '-> 'c) -> '-> '-> 'c
  module Abstract :
    sig
      type 'a t = 'Fn.Abstract.t
      val fn : ('-> 'b) -> ('-> 'b) t
      val app : ('-> 'b) t -> '-> 'b
    end
end