Module Extraction_plugin.Common

By default, in module Format, you can do horizontal placing of blocks even if they include newlines, as long as the number of chars in the blocks are less that a line length. To avoid this awkward situation, we attach a big virtual size to fnl newlines.

val fnl : unit -> Pp.t
val fnl2 : unit -> Pp.t
val space_if : bool -> Pp.t
val pp_par : bool -> Pp.t -> Pp.t
val pp_apply : Pp.t -> bool -> Pp.t list -> Pp.t

pp_apply : a head part applied to arguments, possibly with parenthesis

val pp_apply2 : Pp.t -> bool -> Pp.t list -> Pp.t

Same as pp_apply, but with also protection of the head by parenthesis

val pp_tuple_light : (bool -> 'a -> Pp.t) -> 'a list -> Pp.t
val pp_tuple : ('a -> Pp.t) -> 'a list -> Pp.t
val pp_array : ('a -> Pp.t) -> 'a list -> Pp.t
val pp_boxed_tuple : ('a -> Pp.t) -> 'a list -> Pp.t
val pr_binding : Names.Id.t list -> Pp.t
val rename_id : Names.Id.t -> Names.Id.Set.t -> Names.Id.t
type phase =
| Pre
| Impl
| Intf
module State : sig ... end
type env = Names.Id.t list * Names.Id.Set.t
val empty_env : State.t -> unit -> env
val rename_vars : Names.Id.Set.t -> Names.Id.t list -> env
val rename_tvars : Names.Id.Set.t -> Names.Id.t list -> Names.Id.t list
val push_vars : Names.Id.t list -> env -> Names.Id.t list * env
val get_db_name : int -> env -> Names.Id.t
val opened_libraries : State.t -> Names.ModPath.t list
type kind =
| Term
| Type
| Cons
| Mod
val pp_global_with_key : State.t -> kind -> Names.KerName.t -> Miniml.global -> string
val pp_global : State.t -> kind -> Miniml.global -> string
val pp_global_name : State.t -> kind -> Miniml.global -> string
val pp_module : State.t -> Names.ModPath.t -> string

Special hack for constants of type Ascii.ascii : if an Extract Inductive ascii => char has been declared, then the constants are directly turned into chars

val is_native_char : Miniml.ml_ast -> bool
val get_native_char : Miniml.ml_ast -> char
val pp_native_char : Miniml.ml_ast -> Pp.t

Special hack for constants of type String.string : if an Extract Inductive string => string has been declared, then the constants are directly turned into string literals

val is_native_string : Miniml.ml_ast -> bool
val get_native_string : Miniml.ml_ast -> string
val pp_native_string : Miniml.ml_ast -> Pp.t
val sig_type_name : string