Module Fixed.Pattern

type ('a, 'b) t =
  1. | Assignment of 'a lvalue * UnsizedType.t * 'a
  2. | TargetPE of 'a
  3. | JacobianPE of 'a
  4. | NRFunApp of 'a Fun_kind.t * 'a list
  5. | Break
  6. | Continue
  7. | Return of 'a option
  8. | Skip
  9. | IfElse of 'a * 'b * 'b option
  10. | While of 'a * 'b
  11. | For of {
    1. loopvar : string;
    2. lower : 'a;
    3. upper : 'a;
    4. body : 'b;
    }
  12. | Profile of string * 'b list
  13. | Block of 'b list
  14. | SList of 'b list
  15. | Decl of {
    1. decl_adtype : UnsizedType.autodifftype;
    2. decl_id : string;
    3. decl_type : 'a Type.t;
    4. initialize : 'a decl_init;
    }
and 'e lvalue = 'e lbase * 'e Index.t list
and 'e lbase =
  1. | LVariable of string
  2. | LTupleProjection of 'e lvalue * int
and 'a decl_init =
  1. | Uninit
  2. | Default
  3. | 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
val compare_decl_init : ('a -> 'a -> int) -> 'a decl_init -> 'a decl_init -> 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