sig
  val ( |! ) : 'a -> ('a -> 'b) -> 'b
  val const : 'a -> 'b -> 'a
  external ignore : 'a -> unit = "%ignore"
  val non : ('a -> bool) -> 'a -> bool
  val forever : (unit -> unit) -> exn
  external id : 'a -> 'a = "%identity"
  val compose : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b
  val flip : ('a -> 'b -> 'c) -> 'b -> 'a -> 'c
end