sig
  val curry : ('a * '-> 'c) -> '-> '-> 'c
  val uncurry : ('-> '-> 'c) -> 'a * '-> 'c
  external id : '-> 'a = "%identity"
  val const : '-> '-> 'a
  val compose : ('-> 'b) -> ('-> 'a) -> '-> 'b
  val ( % ) : ('-> 'b) -> ('-> 'a) -> '-> 'b
  val flip : ('-> '-> 'c) -> '-> '-> 'c
  val defer : ('-> 'b) -> '-> '-> 'b
end