let with_sys_chdir : (string, dir_abstract) withres =
{
cons =
(fun new_dir ->
M.catch
(fun () ->
let old_dir = Sys.getcwd () in
let () = Sys.chdir new_dir in M.return old_dir)
M.error);
fin =
(fun old_dir ->
M.catch (fun () -> M.return (Sys.chdir old_dir)) M.error);
}