Module D_loop.Pipeline

type ('st, 'a, 'b) op = ('st, 'a, 'b) Dolmen_loop__Pipeline.Make(State).op
type ('st, 'a, 'b) t = ('st, 'a, 'b) Dolmen_loop__Pipeline.Make(State).t
type !'st merge = 'st -> 'st -> 'st
type (!'st, !'a) fix = [
  1. | `Gen of 'st merge * ('st -> 'st * 'a option)
  2. | `Ok
]
type (!'a, !'b) cont = [
  1. | `Continue of 'b
  2. | `Done of 'a
]
type !'st k_exn = 'st Dolmen_loop__Pipeline.Make(State).k_exn = {
  1. k : 'a. 'st -> Stdlib.Printexc.raw_backtrace -> exn -> 'a;
}
val op : ?name:string -> ('st -> 'a -> 'st * 'b) -> ('st, 'a, 'b) op
val apply : ?name:string -> ('a -> 'b) -> ('c, 'a, 'b) op
val iter_ : ?name:string -> ('a -> unit) -> ('b, 'a, 'a) op
val f_map : ?name:string -> ?test:('st -> 'a -> bool) -> ('st -> 'a -> 'st * 'b) -> ('st, 'a, ('a, 'b) cont) op
val _end : ('b, 'a, 'a) t
val (@>>>) : ('st, 'a, 'b) op -> ('st, 'b, 'c) t -> ('st, 'a, 'c) t
val (@>|>) : ('st, 'a, ('b, 'c) cont) op -> ('st, 'c, 'b) t -> ('st, 'a, 'b) t
val (@|||) : ('st, 'a, 'b) t -> ('st, 'b, 'c) t -> ('st, 'a, 'c) t
val fix : ('st, 'a, ('st, 'a) fix) op -> ('st, 'a, unit) t -> ('st, 'a, unit) t
val eval : exn:'st k_exn -> ('st, 'a, 'b) t -> 'st -> 'a -> 'st * 'b
val run : finally:(State.t -> (Stdlib.Printexc.raw_backtrace * exn) option -> State.t) -> ?alarm:Dolmen_loop.Alarm.t -> (State.t -> State.t * 'a option) -> State.t -> (State.t, 'a, unit) t -> State.t