* - Is valid in the given pred
* - Expects an environment compatible with the first record
* - Modifies it according to the second record *)
- | TNested of pred * pred
+ | TNested of pred * typ
(* Allow nested configuration, in the form of a function from an action
* satisfying the first predicate to an action satisfying the second and
* with the same environment variable IO behavior. *)
(* Get an environment variable *)
| ESeq of exp list
(* Monad sequencer; execute a number of commands in order *)
- | ELocal of exp
- (* Local execution; execute the action and then restore the previous
- * environment. *)
+ | ELocal of exp * exp
+ (* Local execution; like ESeq, but the writes of the first
+ * action are abandoned *)
| EWith of exp * exp
(* Apply a TNested to an action *)
withtype exp = exp' * position