There are no need for signatures of IO_Lwt and IO_Direct, so there are
- IO_Pure -- no Lwt, no -threads, no exceptions handling
- IO_Direct -- IO via OCaml's Pervasives + Unix + Sys + Thread modules
IO_Lwt and IO_Direct must match all the signatures contained in IO_Types.
+ "bind" function has signature "('a -> m 'b) -> m 'a -> m 'b".
+Note, that ">>=" is not "bind", and we should name this function
+anyhow. Let's name it "bind_rev".
+ But for performance reasons we can't always do
+ "let bind_rev m f = bind f m"
+ , so it's up to you, how the bind and bind_rev will be implemented:
+one using another or independently.