sig
  val general : ('-> 'b) -> '-> 'b
  val ident : ('-> 'b) -> '-> 'b
  val unit : (unit -> 'a) -> unit -> 'a
end