This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
41
unikernel/duniverse/ppx_sexp_conv/expander/helpers.mli
Normal file
41
unikernel/duniverse/ppx_sexp_conv/expander/helpers.mli
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
open! Base
|
||||
open! Ppxlib
|
||||
|
||||
(** Constructs a branch of a [match] or [function] expression with no guard. *)
|
||||
val ( --> ) : pattern -> expression -> case
|
||||
|
||||
(** Replace all type variables like ['a] with wildcard ([_]) types. *)
|
||||
val replace_variables_by_underscores : core_type -> core_type
|
||||
|
||||
(** Create a binding for a derived function, adding a type annotation if required. *)
|
||||
val constrained_function_binding
|
||||
: location (** location to use for the binding *)
|
||||
-> type_declaration (** type declaration used to derive the function *)
|
||||
-> core_type (** type of the function *)
|
||||
-> tps:string loc list (** names of type parameters in the declaration *)
|
||||
-> func_name:string (** name to bind the function to *)
|
||||
-> expression (** expression representing the function *)
|
||||
-> value_binding
|
||||
|
||||
(** Wraps an expression in layers of non-recursive [let] bindings, with the bindings
|
||||
sorted from outermost to innermost. *)
|
||||
val with_let : loc:location -> binds:value_binding list list -> expression -> expression
|
||||
|
||||
(** Wraps an expression in [let open] containing type declarations, if non-empty. *)
|
||||
val with_types : loc:location -> types:type_declaration list -> expression -> expression
|
||||
|
||||
(** Constructs a lambda of a fresh variable. Passes a reference to that variable as [arg]
|
||||
to construct the lambda's body. *)
|
||||
val fresh_lambda : loc:location -> (arg:expression -> expression) -> expression
|
||||
|
||||
(** Conservative approximation of which expressions are syntactically values, i.e.
|
||||
constants, variables, or lambdas. When [true], these expressions have no effects
|
||||
(other than possibly closure allocation) and can be used in [let rec] definitions.
|
||||
When [false], they may need to be eta-expanded or wrapped in [lazy]. *)
|
||||
val is_value_expression : expression -> bool
|
||||
|
||||
(** Shadows [Ppxlib.really_recursive] with a version that respects the [[@opaque]]
|
||||
attribute. *)
|
||||
val really_recursive_respecting_opaque : rec_flag -> type_declaration list -> rec_flag
|
||||
|
||||
val strip_attributes : Ast_traverse.map
|
||||
Loading…
Add table
Add a link
Reference in a new issue