sig   type 'a t = 'Language.t   val string : string -> string EDSL.t   val int : int -> int EDSL.t   val bool : bool -> bool EDSL.t   val call : string EDSL.t list -> unit EDSL.t   val exec : string list -> unit EDSL.t   val getenv : string EDSL.t -> string EDSL.t   val setenv : var:string EDSL.t -> string EDSL.t -> unit EDSL.t   val ( &&& ) : bool EDSL.t -> bool EDSL.t -> bool EDSL.t   val ( ||| ) : bool EDSL.t -> bool EDSL.t -> bool EDSL.t   val not : bool EDSL.t -> bool EDSL.t   val ( =$= ) : string EDSL.t -> string EDSL.t -> bool EDSL.t   val ( <$> ) : string EDSL.t -> string EDSL.t -> bool EDSL.t   val returns : 'EDSL.t -> value:int -> bool EDSL.t   module Bool :     sig       val to_string : bool EDSL.t -> string EDSL.t       val of_string : string EDSL.t -> bool EDSL.t     end   val succeeds : 'EDSL.t -> bool EDSL.t   val file_exists : string EDSL.t -> bool EDSL.t   module Integer :     sig       val to_string : int EDSL.t -> string EDSL.t       val of_string : string EDSL.t -> int EDSL.t       val bin_op :         int EDSL.t ->         [ `Div | `Minus | `Mod | `Mult | `Plus ] -> int EDSL.t -> int EDSL.t       val add : int EDSL.t -> int EDSL.t -> int EDSL.t       val ( + ) : int EDSL.t -> int EDSL.t -> int EDSL.t       val sub : int EDSL.t -> int EDSL.t -> int EDSL.t       val ( - ) : int EDSL.t -> int EDSL.t -> int EDSL.t       val mul : int EDSL.t -> int EDSL.t -> int EDSL.t       val ( * ) : int EDSL.t -> int EDSL.t -> int EDSL.t       val div : int EDSL.t -> int EDSL.t -> int EDSL.t       val ( / ) : int EDSL.t -> int EDSL.t -> int EDSL.t       val modulo : int EDSL.t -> int EDSL.t -> int EDSL.t       val ( mod ) : int EDSL.t -> int EDSL.t -> int EDSL.t       val cmp :         [ `Eq | `Ge | `Gt | `Le | `Lt | `Ne ] ->         int EDSL.t -> int EDSL.t -> bool EDSL.t       val eq : int EDSL.t -> int EDSL.t -> bool EDSL.t       val ne : int EDSL.t -> int EDSL.t -> bool EDSL.t       val lt : int EDSL.t -> int EDSL.t -> bool EDSL.t       val le : int EDSL.t -> int EDSL.t -> bool EDSL.t       val ge : int EDSL.t -> int EDSL.t -> bool EDSL.t       val gt : int EDSL.t -> int EDSL.t -> bool EDSL.t       val ( = ) : int EDSL.t -> int EDSL.t -> bool EDSL.t       val ( <> ) : int EDSL.t -> int EDSL.t -> bool EDSL.t       val ( < ) : int EDSL.t -> int EDSL.t -> bool EDSL.t       val ( <= ) : int EDSL.t -> int EDSL.t -> bool EDSL.t       val ( >= ) : int EDSL.t -> int EDSL.t -> bool EDSL.t       val ( > ) : int EDSL.t -> int EDSL.t -> bool EDSL.t     end   val list : 'EDSL.t list -> 'a list EDSL.t   val list_append : 'a list EDSL.t -> 'a list EDSL.t -> 'a list EDSL.t   val list_iter :     'a list EDSL.t -> f:((unit -> 'EDSL.t) -> unit EDSL.t) -> unit EDSL.t   val list_to_string :     'a list EDSL.t -> f:('EDSL.t -> string EDSL.t) -> string EDSL.t   val list_of_string :     string EDSL.t -> f:(string EDSL.t -> 'EDSL.t) -> 'a list EDSL.t   val output_as_string : unit EDSL.t -> string EDSL.t   val feed : string:string EDSL.t -> unit EDSL.t -> unit EDSL.t   val ( >> ) : string EDSL.t -> unit EDSL.t -> unit EDSL.t   val string_concat : string EDSL.t list -> string EDSL.t   val string_concat_list : string list EDSL.t -> string EDSL.t   val nop : unit EDSL.t   val if_then_else : bool EDSL.t -> unit EDSL.t -> unit EDSL.t -> unit EDSL.t   val if_then : bool EDSL.t -> unit EDSL.t -> unit EDSL.t   val seq : unit EDSL.t list -> unit EDSL.t   val loop_while : bool EDSL.t -> body:unit EDSL.t -> unit EDSL.t   val if_seq :     t:unit EDSL.t list -> ?e:unit EDSL.t list -> bool EDSL.t -> unit EDSL.t   val switch :     [ `Case of bool EDSL.t * unit EDSL.t | `Default of unit EDSL.t ] list ->     unit EDSL.t   val case :     bool EDSL.t ->     unit EDSL.t list -> [> `Case of bool EDSL.t * unit EDSL.t ]   val default : unit EDSL.t list -> [> `Default of unit EDSL.t ]   val make_switch :     (bool Language.t * unit Language.t) list ->     default:unit Language.t -> unit Language.t   type fd_redirection   val to_fd : int EDSL.t -> int EDSL.t -> EDSL.fd_redirection   val to_file : int EDSL.t -> string EDSL.t -> EDSL.fd_redirection   val with_redirections :     unit EDSL.t -> EDSL.fd_redirection list -> unit EDSL.t   val write_output :     ?stdout:string EDSL.t ->     ?stderr:string EDSL.t ->     ?return_value:string EDSL.t -> unit EDSL.t -> unit EDSL.t   val write_stdout : path:string EDSL.t -> unit EDSL.t -> unit EDSL.t   val pipe : unit EDSL.t list -> unit EDSL.t   val ( ||> ) : unit EDSL.t -> unit EDSL.t -> unit EDSL.t   val printf : string EDSL.t -> string EDSL.t list -> unit EDSL.t   val eprintf : string EDSL.t -> string EDSL.t list -> unit EDSL.t   val fail : unit EDSL.t   val with_signal :     ?signal_name:string ->     catch:unit EDSL.t -> (unit EDSL.t -> unit EDSL.t) -> unit EDSL.t   val with_failwith :     ((message:string Language.t -> return:int Language.t -> unit Language.t) ->      unit Language.t) ->     unit Language.t   type file =       < append : string EDSL.t -> unit EDSL.t; delete : unit EDSL.t;         get : string EDSL.t; path : string EDSL.t;         set : string EDSL.t -> unit EDSL.t >   val tmp_file : ?tmp_dir:string EDSL.t -> string -> EDSL.file   module Command_line :     sig       type 'a cli_option = {         switches : string list;         doc : string;         default : 'a;       }       type _ option_spec =           Opt_flag :             bool EDSL.t EDSL.Command_line.cli_option -> bool EDSL.t                                                         EDSL.Command_line.option_spec         | Opt_string :             string EDSL.t EDSL.Command_line.cli_option -> string EDSL.t                                                           EDSL.Command_line.option_spec       and (_, _) cli_options =           Opt_end : string -> ('a, 'a) EDSL.Command_line.cli_options         | Opt_cons : 'EDSL.Command_line.option_spec *             ('a, 'b) EDSL.Command_line.cli_options -> ('-> 'a, 'b)                                                       EDSL.Command_line.cli_options       module Arg :         sig           val string :             ?default:string EDSL.t ->             doc:string ->             string list -> string EDSL.t EDSL.Command_line.option_spec           val flag :             ?default:bool EDSL.t ->             doc:string ->             string list -> bool EDSL.t EDSL.Command_line.option_spec           val ( & ) :             'EDSL.Command_line.option_spec ->             ('b, 'c) EDSL.Command_line.cli_options ->             ('-> 'b, 'c) EDSL.Command_line.cli_options           val usage : string -> ('a, 'a) EDSL.Command_line.cli_options         end       val parse :         ('a, unit EDSL.t) EDSL.Command_line.cli_options ->         (anon:string list EDSL.t -> 'a) -> unit EDSL.t     end   module Magic : sig val unit : string -> unit EDSL.t end end