functor (X : sig type t end->   sig     type 'a t = X.t -> 'a     val return : '-> 'CCFun.Monad.t     val ( >|= ) : 'CCFun.Monad.t -> ('-> 'b) -> 'CCFun.Monad.t     val ( >>= ) :       'CCFun.Monad.t -> ('-> 'CCFun.Monad.t) -> 'CCFun.Monad.t   end