File.Pi
module type READ = sig ... end
module type WRITE = sig ... end
type Resource.pi +=
| Read : ('t, (module READ with type t = 't), [> ro_ty ]) Resource.pi
| Write : ('t, (module WRITE with type t = 't), [> rw_ty ]) Resource.pi
val ro : (module READ with type t = 't) -> ('t, ro_ty) Resource.handler
val rw : (module WRITE with type t = 't) -> ('t, rw_ty) Resource.handler