dwww Home | Manual pages | Find package

Misc(3o)                         OCaml library                        Misc(3o)

NAME
       Misc - Miscellaneous useful types and functions

Module
       Module   Misc

Documentation
       Module Misc
        : sig end

       Miscellaneous useful types and functions

       Warning: this module is unstable and part of Compiler_libs .

       val fatal_error : string -> 'a

       val fatal_errorf : ('a, Format.formatter, unit, 'b) format4 -> 'a

       exception Fatal_error

       val  try_finally  :  ?always:(unit  -> unit) -> ?exceptionally:(unit ->
       unit) -> (unit -> 'a) -> 'a

       try_finally work ~always ~exceptionally is designed to run code in work
       that  may fail with an exception, and has two kind of cleanup routines:
       always , that must be run after any execution of  the  function  (typi-
       cally,  freeing  system  resources), and exceptionally , that should be
       run only if work or always failed with an exception (typically, undoing
       user-visible  state  changes that would only make sense if the function
       completes correctly). For example:

             let objfile = outputprefix ^ ".cmo" in
             let oc = open_out_bin objfile in
             Misc.try_finally
               (fun () ->
                  bytecode
                  ++ Timings.(accumulate_time (Generate sourcefile))
                      (Emitcode.to_file oc modulename objfile);
                  Warnings.check_fatal ())
               ~always:(fun () -> close_out oc)
               ~exceptionally:(fun _exn -> remove_file objfile);

       If exceptionally fail with an exception, it is propagated as usual.

       If always or exceptionally use exceptions internally  for  control-flow
       but do not raise, then try_finally is careful to preserve any exception
       backtrace coming from work or always for easier debugging.

       val reraise_preserving_backtrace : exn -> (unit -> unit) -> 'a

       reraise_preserving_backtrace e f is (f (); raise  e)  except  that  the
       current backtrace is preserved, even if f uses exceptions internally.

       val map_end : ('a -> 'b) -> 'a list -> 'b list -> 'b list

       val map_left_right : ('a -> 'b) -> 'a list -> 'b list

       val for_all2 : ('a -> 'b -> bool) -> 'a list -> 'b list -> bool

       val replicate_list : 'a -> int -> 'a list

       val list_remove : 'a -> 'a list -> 'a list

       val split_last : 'a list -> 'a list * 'a

       type ref_and_value =
        | R : 'a ref * 'a -> ref_and_value

       val protect_refs : ref_and_value list -> (unit -> 'a) -> 'a

       protect_refs  l  f temporarily sets r to v for each R (r, v) in l while
       executing f . The previous contents of the references is restored  even
       if f raises an exception, without altering the exception backtrace.

       module Stdlib : sig end

       val find_in_path : string list -> string -> string

       val find_in_path_rel : string list -> string -> string

       val find_in_path_uncap : string list -> string -> string

       val remove_file : string -> unit

       val expand_directory : string -> string -> string

       val split_path_contents : ?sep:char -> string -> string list

       val create_hashtable : int -> ('a * 'b) list -> ('a, 'b) Hashtbl.t

       val copy_file : in_channel -> out_channel -> unit

       val copy_file_chunk : in_channel -> out_channel -> int -> unit

       val string_of_file : in_channel -> string

       val  output_to_file_via_temporary  :  ?mode:open_flag list -> string ->
       (string -> out_channel -> 'a) -> 'a

       val protect_writing_to_file : filename:string -> f:(out_channel ->  'a)
       -> 'a

       Open  the  given  filename  for  writing  (in  binary  mode),  pass the
       out_channel to the given function, then close the channel. If the func-
       tion raises an exception then filename will be removed.

       val log2 : int -> int

       val align : int -> int -> int

       val no_overflow_add : int -> int -> bool

       val no_overflow_sub : int -> int -> bool

       val no_overflow_mul : int -> int -> bool

       val no_overflow_lsl : int -> int -> bool

       module Int_literal_converter : sig end

       val chop_extensions : string -> string

       val search_substring : string -> string -> int -> int

       val  replace_substring  :  before:string  ->  after:string -> string ->
       string

       val rev_split_words : string -> string list

       val get_ref : 'a list ref -> 'a list

       val set_or_ignore : ('a -> 'b option) -> 'b option ref -> 'a -> unit

       val fst3 : 'a * 'b * 'c -> 'a

       val snd3 : 'a * 'b * 'c -> 'b

       val thd3 : 'a * 'b * 'c -> 'c

       val fst4 : 'a * 'b * 'c * 'd -> 'a

       val snd4 : 'a * 'b * 'c * 'd -> 'b

       val thd4 : 'a * 'b * 'c * 'd -> 'c

       val for4 : 'a * 'b * 'c * 'd -> 'd

       module LongString : sig end

       val edit_distance : string -> string -> int -> int option

       edit_distance a b cutoff computes the edit distance between  strings  a
       and  b  .  To  help  efficiency, it uses a cutoff: if the distance d is
       smaller than cutoff , it returns Some d , else None .

       The distance algorithm currently used is Damerau-Levenshtein:  it  com-
       putes  the  number  of insertion, deletion, substitution of letters, or
       swapping of adjacent letters to go from one word to the other. The par-
       ticular algorithm may change in the future.

       val spellcheck : string list -> string -> string list

       spellcheck env name takes a list of names env that exist in the current
       environment and an erroneous name , and returns a list  of  suggestions
       taken  from  env  , that are close enough to name that it may be a typo
       for one of them.

       val did_you_mean : Format.formatter -> (unit -> string list) -> unit

       did_you_mean ppf get_choices hints that the user may have meant one  of
       the option returned by calling get_choices . It does nothing if the re-
       turned list is empty.

       The unit -> ...  thunking is meant to delay any potentially-slow compu-
       tation  (typically  computing  edit-distance  with many things from the
       current environment) to when the hint message is  to  be  printed.  You
       should   print   an   understandable   error   message  before  calling
       did_you_mean , so that users get a clear notification  of  the  failure
       even if producing the hint is slow.

       val cut_at : string -> char -> string * string

       String.cut_at  s  c returns a pair containing the sub-string before the
       first occurrence of c in s , and the sub-string after the first  occur-
       rence of c in s .  let (before, after) = String.cut_at s c in
           before ^ String.make 1 c ^ after is the identity if s contains c .

       Raise Not_found if the character does not appear in the string

       Since 4.01

       module Color : sig end

       module Error_style : sig end

       val normalise_eol : string -> string

       normalise_eol  s returns a fresh copy of s with any '\r' characters re-
       moved. Intended for pre-processing  text  which  will  subsequently  be
       printed on a channel which performs EOL transformations (i.e. Windows)

       val delete_eol_spaces : string -> string

       delete_eol_spaces s returns a fresh copy of s with any end of line spa-
       ces removed. Intended to normalize  the  output  of  the  toplevel  for
       tests.

       val  pp_two_columns : ?sep:string -> ?max_lines:int -> Format.formatter
       -> (string * string) list -> unit

       pp_two_columns ?sep ?max_lines ppf l prints the lines in l as two  col-
       umns separated by sep ("|" by default).  max_lines can be used to indi-
       cate a maximum number of lines to print -- an ellipsis gets inserted at
       the middle if the input has too many lines.

       Example:

       pp_two_columns  ~max_lines:3  Format.std_formatter  [  "abc",  "hello";
       "def", "zzz"; "a"  , "bllbl"; "bb" , "dddddd"; ]

       prints

       abc | hello ...  bb  | dddddd

       val show_config_and_exit : unit -> unit

       configuration variables

       val show_config_variable_and_exit : string -> unit

       val get_build_path_prefix_map : unit ->  Build_path_prefix_map.map  op-
       tion

       Returns  the map encoded in the BUILD_PATH_PREFIX_MAP environment vari-
       able.

       val debug_prefix_map_flags : unit -> string list

       Returns the list of --debug-prefix-map flags to be passed to the assem-
       bler, built from the BUILD_PATH_PREFIX_MAP environment variable.

       val  print_if : Format.formatter -> bool ref -> (Format.formatter -> 'a
       -> unit) -> 'a -> 'a

       print_if ppf flag fmt x prints x with fmt on ppf if b is true.

       type filepath = string

       type modname = string

       type crcs = (modname * Digest.t option) list

       type alerts = string Stdlib.String.Map.t

       module Magic_number : sig end

OCamldoc                          2023-02-12                          Misc(3o)

Generated by dwww version 1.15 on Sun Jun 23 04:03:06 CEST 2024.