sig
  type t = string
  val to_string : CCMonadIO.File.t -> string
  val make : string -> CCMonadIO.File.t
  val exists : CCMonadIO.File.t -> bool CCMonadIO.io
  val is_directory : CCMonadIO.File.t -> bool CCMonadIO.io
  val remove : CCMonadIO.File.t -> unit CCMonadIO.io
  val read_dir :
    ?recurse:bool ->
    CCMonadIO.File.t -> CCMonadIO.File.t CCMonadIO.Seq.t CCMonadIO.io
  val walk :
    CCMonadIO.File.t ->
    ([ `Dir | `File ] * CCMonadIO.File.t) CCMonadIO.Seq.t CCMonadIO.io
end