summaryrefslogtreecommitdiff
path: root/math/util.ml
blob: ece0160540dbbfad7c2931d3c46d679cf795a6d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
(* vim: set sw=8 ts=8 et: *)

(* TODO document *)
let mapjoin f l = (List.fold_left (fun a b -> a ^ (f b)) "" l)

(* TODO document *)
let mapjoine e f = function
    [] -> ""
  | h::t -> (List.fold_left (fun a b -> a ^ e ^ (f b)) (f h) t)

(* Exception used by open_out_unless_exists below *)
exception FileAlreadyExists

(* Wrapper which raise an exception when output path already exist *)
let open_out_unless_exists path =
    if Sys.file_exists path
    then raise FileAlreadyExists
    else open_out path

(* *)
let run_in_other_directory tmppath cmd =
    let prevdir = Sys.getcwd () in(
        Sys.chdir tmppath;
        let retval = Sys.command cmd in
            (Sys.chdir prevdir; retval)
    )