MakeSI.Hoist
val pp_binding :
Ppx_deriving_runtime.Format.formatter ->
binding ->
Ppx_deriving_runtime.unit
val show_binding : binding -> Ppx_deriving_runtime.string
val pp :
Ppx_deriving_runtime.Format.formatter ->
t ->
Ppx_deriving_runtime.unit
val show : t -> Ppx_deriving_runtime.string
val zero : t
val flbs : t -> binding Prelude.list
val feff : t -> SideEffects.t
val no_lbs : SideEffects.t -> t
class 's monoid : object ... end
class 's bool_monoid : object ... end
module CollectContext : sig ... end
module HoistSeq : sig ... end
val lets_of_bindings : (pat * expr) Prelude.list -> expr -> expr
val collect_and_hoist_effects_object :
< visit_F__arbitrary_lhs :
CollectContext.t ->
F.arbitrary_lhs ->
F.arbitrary_lhs * t
; visit_F__as_pattern : CollectContext.t -> F.as_pattern -> F.as_pattern * t
; visit_F__block : CollectContext.t -> F.block -> F.block * t
; visit_F__break : CollectContext.t -> F.break -> F.break * t
; visit_F__construct_base :
CollectContext.t ->
F.construct_base ->
F.construct_base * t
; visit_F__continue : CollectContext.t -> F.continue -> F.continue * t
; visit_F__dyn : CollectContext.t -> F.dyn -> F.dyn * t
; visit_F__early_exit : CollectContext.t -> F.early_exit -> F.early_exit * t
; visit_F__fold_like_loop :
CollectContext.t ->
F.fold_like_loop ->
F.fold_like_loop * t
; visit_F__for_index_loop :
CollectContext.t ->
F.for_index_loop ->
F.for_index_loop * t
; visit_F__for_loop : CollectContext.t -> F.for_loop -> F.for_loop * t
; visit_F__lifetime : CollectContext.t -> F.lifetime -> F.lifetime * t
; visit_F__loop : CollectContext.t -> F.loop -> F.loop * t
; visit_F__macro : CollectContext.t -> F.macro -> F.macro * t
; visit_F__match_guard :
CollectContext.t ->
F.match_guard ->
F.match_guard * t
; visit_F__monadic_action :
CollectContext.t ->
F.monadic_action ->
F.monadic_action * t
; visit_F__monadic_binding :
CollectContext.t ->
F.monadic_binding ->
F.monadic_binding * t
; visit_F__mutable_pointer :
CollectContext.t ->
F.mutable_pointer ->
F.mutable_pointer * t
; visit_F__mutable_reference :
CollectContext.t ->
F.mutable_reference ->
F.mutable_reference * t
; visit_F__mutable_variable :
CollectContext.t ->
F.mutable_variable ->
F.mutable_variable * t
; visit_F__nontrivial_lhs :
CollectContext.t ->
F.nontrivial_lhs ->
F.nontrivial_lhs * t
; visit_F__question_mark :
CollectContext.t ->
F.question_mark ->
F.question_mark * t
; visit_F__quote : CollectContext.t -> F.quote -> F.quote * t
; visit_F__raw_pointer :
CollectContext.t ->
F.raw_pointer ->
F.raw_pointer * t
; visit_F__reference : CollectContext.t -> F.reference -> F.reference * t
; visit_F__slice : CollectContext.t -> F.slice -> F.slice * t
; visit_F__state_passing_loop :
CollectContext.t ->
F.state_passing_loop ->
F.state_passing_loop * t
; visit_F__trait_item_default :
CollectContext.t ->
F.trait_item_default ->
F.trait_item_default * t
; visit_F__unsafe : CollectContext.t -> F.unsafe -> F.unsafe * t
; visit_F__while_loop : CollectContext.t -> F.while_loop -> F.while_loop * t
; visit_Local_ident__t :
CollectContext.t ->
Local_ident.t ->
Local_ident.t * t
; visit_arm :
CollectContext.t ->
Hax_engine__Ast.Make(F).arm ->
Hax_engine__Ast.Make(F).arm * t
; visit_arm' :
CollectContext.t ->
Hax_engine__Ast.Make(F).arm' ->
Hax_engine__Ast.Make(F).arm' * t
; visit_attr : CollectContext.t -> Ast.attr -> Ast.attr * t
; visit_attrs : CollectContext.t -> Ast.attrs -> Ast.attrs * t
; visit_binding_mode :
CollectContext.t ->
Hax_engine__Ast.Make(F).binding_mode ->
Hax_engine__Ast.Make(F).binding_mode * t
; visit_bool : CollectContext.t -> Base.bool -> Base.bool * t
; visit_borrow_kind :
CollectContext.t ->
Hax_engine__Ast.Make(F).borrow_kind ->
Hax_engine__Ast.Make(F).borrow_kind * t
; visit_cf_kind :
CollectContext.t ->
Hax_engine__Ast.Make(F).cf_kind ->
Hax_engine__Ast.Make(F).cf_kind * t
; visit_char : CollectContext.t -> Base.char -> Base.char * t
; visit_concrete_ident :
CollectContext.t ->
Ast.concrete_ident ->
Ast.concrete_ident * t
; visit_dyn_trait_goal :
CollectContext.t ->
Hax_engine__Ast.Make(F).dyn_trait_goal ->
Hax_engine__Ast.Make(F).dyn_trait_goal * t
; visit_expr :
CollectContext.t ->
Hax_engine__Ast.Make(F).expr ->
Hax_engine__Ast.Make(F).expr * t
; visit_expr' :
CollectContext.t ->
Hax_engine__Ast.Make(F).expr' ->
Hax_engine__Ast.Make(F).expr' * t
; visit_field_pat :
CollectContext.t ->
Hax_engine__Ast.Make(F).field_pat ->
Hax_engine__Ast.Make(F).field_pat * t
; visit_float_kind : CollectContext.t -> Ast.float_kind -> Ast.float_kind * t
; visit_generic_constraint :
CollectContext.t ->
Hax_engine__Ast.Make(F).generic_constraint ->
Hax_engine__Ast.Make(F).generic_constraint * t
; visit_generic_param :
CollectContext.t ->
Hax_engine__Ast.Make(F).generic_param ->
Hax_engine__Ast.Make(F).generic_param * t
; visit_generic_param_kind :
CollectContext.t ->
Hax_engine__Ast.Make(F).generic_param_kind ->
Hax_engine__Ast.Make(F).generic_param_kind * t
; visit_generic_value :
CollectContext.t ->
Hax_engine__Ast.Make(F).generic_value ->
Hax_engine__Ast.Make(F).generic_value * t
; visit_generics :
CollectContext.t ->
Hax_engine__Ast.Make(F).generics ->
Hax_engine__Ast.Make(F).generics * t
; visit_global_ident :
CollectContext.t ->
Ast.global_ident ->
Ast.global_ident * t
; visit_guard :
CollectContext.t ->
Hax_engine__Ast.Make(F).guard ->
Hax_engine__Ast.Make(F).guard * t
; visit_guard' :
CollectContext.t ->
Hax_engine__Ast.Make(F).guard' ->
Hax_engine__Ast.Make(F).guard' * t
; visit_impl_expr :
CollectContext.t ->
Hax_engine__Ast.Make(F).impl_expr ->
Hax_engine__Ast.Make(F).impl_expr * t
; visit_impl_expr_kind :
CollectContext.t ->
Hax_engine__Ast.Make(F).impl_expr_kind ->
Hax_engine__Ast.Make(F).impl_expr_kind * t
; visit_impl_ident :
CollectContext.t ->
Hax_engine__Ast.Make(F).impl_ident ->
Hax_engine__Ast.Make(F).impl_ident * t
; visit_impl_item :
CollectContext.t ->
Hax_engine__Ast.Make(F).impl_item ->
Hax_engine__Ast.Make(F).impl_item * t
; visit_impl_item' :
CollectContext.t ->
Hax_engine__Ast.Make(F).impl_item' ->
Hax_engine__Ast.Make(F).impl_item' * t
; visit_int_kind : CollectContext.t -> Ast.int_kind -> Ast.int_kind * t
; visit_item :
CollectContext.t ->
Hax_engine__Ast.Make(F).item ->
Hax_engine__Ast.Make(F).item * t
; visit_item' :
CollectContext.t ->
Hax_engine__Ast.Make(F).item' ->
Hax_engine__Ast.Make(F).item' * t
; visit_item_quote_origin :
CollectContext.t ->
Ast.item_quote_origin ->
Ast.item_quote_origin * t
; visit_lhs :
CollectContext.t ->
Hax_engine__Ast.Make(F).lhs ->
Hax_engine__Ast.Make(F).lhs * t
; visit_list :
'a. (CollectContext.t -> 'a -> 'a * t) ->
CollectContext.t ->
'a Base.list ->
'a Base.list * t
; visit_literal : CollectContext.t -> Ast.literal -> Ast.literal * t
; visit_local_ident :
CollectContext.t ->
Ast.local_ident ->
Ast.local_ident * t
; visit_loop_kind :
CollectContext.t ->
Hax_engine__Ast.Make(F).loop_kind ->
Hax_engine__Ast.Make(F).loop_kind * t
; visit_loop_state :
CollectContext.t ->
Hax_engine__Ast.Make(F).loop_state ->
Hax_engine__Ast.Make(F).loop_state * t
; visit_modul :
CollectContext.t ->
Hax_engine__Ast.Make(F).item Prelude.list ->
Hax_engine__Ast.Make(F).item Prelude.list * t
; visit_mutability :
'mut_witness. (CollectContext.t -> 'mut_witness -> 'mut_witness * t) ->
CollectContext.t ->
'mut_witness Ast.mutability ->
'mut_witness Ast.mutability * t
; visit_option :
'a. (CollectContext.t -> 'a -> 'a * t) ->
CollectContext.t ->
'a Base.option ->
'a Base.option * t
; visit_param :
CollectContext.t ->
Hax_engine__Ast.Make(F).param ->
Hax_engine__Ast.Make(F).param * t
; visit_pat :
CollectContext.t ->
Hax_engine__Ast.Make(F).pat ->
Hax_engine__Ast.Make(F).pat * t
; visit_pat' :
CollectContext.t ->
Hax_engine__Ast.Make(F).pat' ->
Hax_engine__Ast.Make(F).pat' * t
; visit_prim___tuple_2 :
't0 't1. (CollectContext.t -> 't0 -> 't0 * t) ->
(CollectContext.t -> 't1 -> 't1 * t) ->
CollectContext.t ->
('t0 * 't1) ->
('t0 * 't1) * t
; visit_prim___tuple_3 :
't0 't1 't2. (CollectContext.t -> 't0 -> 't0 * t) ->
(CollectContext.t -> 't1 -> 't1 * t) ->
(CollectContext.t -> 't2 -> 't2 * t) ->
CollectContext.t ->
('t0 * 't1 * 't2) ->
('t0 * 't1 * 't2) * t
; visit_prim___tuple_4 :
't0 't1 't2 't3. (CollectContext.t -> 't0 -> 't0 * t) ->
(CollectContext.t -> 't1 -> 't1 * t) ->
(CollectContext.t -> 't2 -> 't2 * t) ->
(CollectContext.t -> 't3 -> 't3 * t) ->
CollectContext.t ->
('t0 * 't1 * 't2 * 't3) ->
('t0 * 't1 * 't2 * 't3) * t
; visit_projection_predicate :
CollectContext.t ->
Hax_engine__Ast.Make(F).projection_predicate ->
Hax_engine__Ast.Make(F).projection_predicate * t
; visit_quote :
CollectContext.t ->
Hax_engine__Ast.Make(F).quote ->
Hax_engine__Ast.Make(F).quote * t
; visit_quote_content :
CollectContext.t ->
Hax_engine__Ast.Make(F).quote_content ->
Hax_engine__Ast.Make(F).quote_content * t
; visit_safety_kind :
CollectContext.t ->
Hax_engine__Ast.Make(F).safety_kind ->
Hax_engine__Ast.Make(F).safety_kind * t
; visit_span : CollectContext.t -> Ast.span -> Ast.span * t
; visit_string : CollectContext.t -> Base.string -> Base.string * t
; visit_supported_monads :
CollectContext.t ->
Hax_engine__Ast.Make(F).supported_monads ->
Hax_engine__Ast.Make(F).supported_monads * t
; visit_todo : CollectContext.t -> Ast.todo -> Ast.todo * t
; visit_trait_goal :
CollectContext.t ->
Hax_engine__Ast.Make(F).trait_goal ->
Hax_engine__Ast.Make(F).trait_goal * t
; visit_trait_item :
CollectContext.t ->
Hax_engine__Ast.Make(F).trait_item ->
Hax_engine__Ast.Make(F).trait_item * t
; visit_trait_item' :
CollectContext.t ->
Hax_engine__Ast.Make(F).trait_item' ->
Hax_engine__Ast.Make(F).trait_item' * t
; visit_ty :
CollectContext.t ->
Hax_engine__Ast.Make(F).ty ->
Hax_engine__Ast.Make(F).ty * t
; visit_variant :
CollectContext.t ->
Hax_engine__Ast.Make(F).variant ->
Hax_engine__Ast.Make(F).variant * t >
val collect_and_hoist_effects : expr -> expr * SideEffects.t