diff options
Diffstat (limited to 'library')
-rw-r--r-- | library/states.ml | 2 | ||||
-rw-r--r-- | library/states.mli | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/library/states.ml b/library/states.ml index a06e7ce80..ea4e7d43c 100644 --- a/library/states.ml +++ b/library/states.ml @@ -39,4 +39,4 @@ let with_state_protection f x = with reraise -> (unfreeze st; raise reraise) - +let with_state_protection_on_exception = Future.transactify diff --git a/library/states.mli b/library/states.mli index 0babae6af..fae1bfc02 100644 --- a/library/states.mli +++ b/library/states.mli @@ -27,3 +27,10 @@ val unfreeze : state -> unit val with_state_protection : ('a -> 'b) -> 'a -> 'b +(** [with_state_protection_on_exception f x] applies [f] to [x] and restores the + state of the whole system as it was before applying [f] only if an + exception is raised. Unlike [with_state_protection] it also takes into + account the proof state *) + +val with_state_protection_on_exception : ('a -> 'b) -> 'a -> 'b + |