(* abstract reactive program *) type prg = DoStep of (Value.t list -> Value.t list * prg) let step p = match p with DoStep _p -> _p type prg_ldbg = DoStep_ldbg of (Event.ctx -> Value.t list -> (Event.ctx -> prg_ldbg -> Value.t list -> Event.t) -> (Event.ctx -> Event.t) -> (Event.ctx -> string -> Event.t) -> Event.t) let (step_ldbg : Event.ctx -> prg_ldbg -> Value.t list -> (Event.ctx -> prg_ldbg -> Value.t list -> Event.t) -> (Event.ctx -> Event.t) -> (Event.ctx -> string -> Event.t) -> Event.t) = fun ctx p vl cont fail_cont -> match p with DoStep_ldbg _p -> _p ctx vl cont fail_cont