type ('a, 'b) t =
| Assignment of 'a lvalue * UnsizedType.t * 'a
| TargetPE of 'a
| JacobianPE of 'a
| NRFunApp of 'a Fun_kind.t * 'a list
| Break
| Continue
| Return of 'a option
| Skip
| IfElse of 'a * 'b * 'b option
| While of 'a * 'b
| For of {
loopvar : string;
lower : 'a;
upper : 'a;
body : 'b;
}
| Profile of string * 'b list
| Block of 'b list
| SList of 'b list
| Decl of {
decl_adtype : UnsizedType.autodifftype;
decl_id : string;
decl_type : 'a Type.t;
initialize : 'a decl_init;
}
and 'e lbase =
| LVariable of string
| LTupleProjection of 'e lvalue * int
and 'a decl_init =
| Uninit
| Default
| Assign of 'a
val sexp_of_lvalue : ('e -> Sexplib0.Sexp.t) -> 'e lvalue -> Sexplib0.Sexp.t
val sexp_of_lbase : ('e -> Sexplib0.Sexp.t) -> 'e lbase -> Sexplib0.Sexp.t
val sexp_of_decl_init :
('a -> Sexplib0.Sexp.t) ->
'a decl_init ->
Sexplib0.Sexp.t
val lvalue_of_sexp : (Sexplib0.Sexp.t -> 'e) -> Sexplib0.Sexp.t -> 'e lvalue
val lbase_of_sexp : (Sexplib0.Sexp.t -> 'e) -> Sexplib0.Sexp.t -> 'e lbase
val decl_init_of_sexp :
(Sexplib0.Sexp.t -> 'a) ->
Sexplib0.Sexp.t ->
'a decl_init
val hash_fold_lvalue :
(Ppx_hash_lib.Std.Hash.state -> 'e -> Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
'e lvalue ->
Ppx_hash_lib.Std.Hash.state
val hash_fold_lbase :
(Ppx_hash_lib.Std.Hash.state -> 'e -> Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
'e lbase ->
Ppx_hash_lib.Std.Hash.state
val hash_fold_decl_init :
(Ppx_hash_lib.Std.Hash.state -> 'a -> Ppx_hash_lib.Std.Hash.state) ->
Ppx_hash_lib.Std.Hash.state ->
'a decl_init ->
Ppx_hash_lib.Std.Hash.state
val compare_lvalue : ('e -> 'e -> int) -> 'e lvalue -> 'e lvalue -> int
val compare_lbase : ('e -> 'e -> int) -> 'e lbase -> 'e lbase -> int
include Common.Pattern.S2 with type ('a, 'b) t := ('a, 'b) t
val fold : ('c -> 'a -> 'c) -> ('c -> 'b -> 'c) -> 'c -> ('a, 'b) t -> 'c
val map : ('a -> 'c) -> ('b -> 'd) -> ('a, 'b) t -> ('c, 'd) t
include Ppx_compare_lib.Comparable.S2 with type ('a, 'b) t := ('a, 'b) t
val compare :
'a Base__Ppx_compare_lib.compare ->
'b Base__Ppx_compare_lib.compare ->
('a, 'b) t Base__Ppx_compare_lib.compare
include Ppx_hash_lib.Hashable.S2 with type ('a, 'b) t := ('a, 'b) t
val hash_fold_t :
'a Base__Ppx_hash_lib.hash_fold ->
'b Base__Ppx_hash_lib.hash_fold ->
('a, 'b) t Base__Ppx_hash_lib.hash_fold
include Sexplib0.Sexpable.S2 with type ('a, 'b) t := ('a, 'b) t
val t_of_sexp :
(Sexplib0__.Sexp.t -> 'a) ->
(Sexplib0__.Sexp.t -> 'b) ->
Sexplib0__.Sexp.t ->
('a, 'b) t
val sexp_of_t :
('a -> Sexplib0__.Sexp.t) ->
('b -> Sexplib0__.Sexp.t) ->
('a, 'b) t ->
Sexplib0__.Sexp.t
include Common.Foldable.S2 with type ('a, 'b) t := ('a, 'b) t
val fold_left :
f:('c -> 'a -> 'c) ->
g:('c -> 'b -> 'c) ->
init:'c ->
('a, 'b) t ->
'c
val fold_right :
f:('a -> 'c -> 'c) ->
g:('b -> 'c -> 'c) ->
init:'c ->
('a, 'b) t ->
'c
val any :
pred_first:('a -> bool) ->
pred_second:('b -> bool) ->
?init:bool ->
('a, 'b) t ->
bool
val all :
pred_first:('a -> bool) ->
pred_second:('b -> bool) ->
?init:bool ->
('a, 'b) t ->
bool
include Common.Pretty.S2 with type ('a, 'b) t := ('a, 'b) t
val pp :
(Stdlib.Format.formatter -> 'a -> unit) ->
(Stdlib.Format.formatter -> 'b -> unit) ->
Stdlib.Format.formatter ->
('a, 'b) t ->
unit