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 = [
| `Gen of 'st merge * ('st -> 'st * 'a option)
| `Ok
]
type (!'a, !'b) cont = [
| `Continue of 'b
| `Done of 'a
]
type !'st k_exn = 'st Dolmen_loop__Pipeline.Make(State).k_exn = {
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