let values m = fold (fun _ v vs -> v :: vs) m []
end
+module IntMap = struct
+ include Map.Make (struct type t = int let compare = compare end)
+ let keys m = fold (fun k _ ks -> k :: ks) m []
+ let values m = fold (fun _ v vs -> v :: vs) m []
+end
+
module StringSet = Set.Make (String)
+let (//) = Filename.concat
+
let rec filter_map f = function
| [] -> []
| x :: xs ->