+(* Allow only safe functions from Filename. *)
+module Filename : sig
+ val current_dir_name : string
+ val parent_dir_name : string
+ val concat : string -> string -> string
+ val is_relative : string -> bool
+ val is_implicit : string -> bool
+ val check_suffix : string -> string -> bool
+ val chop_suffix : string -> string -> string
+ val chop_extension : string -> string
+ val basename : string -> string
+ val dirname : string -> string
+ val quote : string -> string
+end = struct include Filename end
+
+(* Allow only safe functions from Char. *)
+module Char : sig
+ external code : char -> int = "%identity"
+ val chr : int -> char
+ val escaped : char -> string
+ val lowercase : char -> char
+ val uppercase : char -> char
+ type t = char
+ val compare: t -> t -> int
+end = struct include Char end
+
+(* Allow only safe functions from Array. *)
+module Array : sig
+ external length : 'a array -> int = "%array_length"
+ external get : 'a array -> int -> 'a = "%array_safe_get"
+ external set : 'a array -> int -> 'a -> unit = "%array_safe_set"
+ external make : int -> 'a -> 'a array = "caml_make_vect"
+ external create : int -> 'a -> 'a array = "caml_make_vect"
+ val init : int -> (int -> 'a) -> 'a array
+ val make_matrix : int -> int -> 'a -> 'a array array
+ val create_matrix : int -> int -> 'a -> 'a array array
+ val append : 'a array -> 'a array -> 'a array
+ val concat : 'a array list -> 'a array
+ val sub : 'a array -> int -> int -> 'a array
+ val copy : 'a array -> 'a array
+ val fill : 'a array -> int -> int -> 'a -> unit
+ val blit : 'a array -> int -> 'a array -> int -> int -> unit
+ val to_list : 'a array -> 'a list
+ val of_list : 'a list -> 'a array
+ val iter : ('a -> unit) -> 'a array -> unit
+ val map : ('a -> 'b) -> 'a array -> 'b array
+ val iteri : (int -> 'a -> unit) -> 'a array -> unit
+ val mapi : (int -> 'a -> 'b) -> 'a array -> 'b array
+ val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b array -> 'a
+ val fold_right : ('b -> 'a -> 'a) -> 'b array -> 'a -> 'a
+ val sort : ('a -> 'a -> int) -> 'a array -> unit
+ val stable_sort : ('a -> 'a -> int) -> 'a array -> unit
+ val fast_sort : ('a -> 'a -> int) -> 'a array -> unit
+end = struct include Array end
+
+(* Set and Map. *)
+module StringSet = Set.Make(String)
+module StringMap = Map.Make(String)
+