]> matita.cs.unibo.it Git - helm.git/commitdiff
added finally function
authorStefano Zacchiroli <zack@upsilon.cc>
Mon, 29 May 2006 20:33:30 +0000 (20:33 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Mon, 29 May 2006 20:33:30 +0000 (20:33 +0000)
DEVEL/ocaml-http/http_misc.ml
DEVEL/ocaml-http/http_misc.mli

index abe6702c2a0aedb11541ffd09b672248a633083f..daa81f3b7085d342f94d53e7a45a63eabce224f0 100644 (file)
@@ -144,3 +144,11 @@ let list_assoc_all key pairs =
 let warn msg  = prerr_endline (sprintf "ocaml-http WARNING: %s" msg)
 let error msg = prerr_endline (sprintf "ocaml-http ERROR:   %s" msg)
 
+let finally at_end f arg =
+  let res =
+    try f arg
+    with exn -> at_end (); raise exn
+  in
+  at_end ();
+  res
+
index b6e28e2bcbdc3a3782dfe5d73481dc3ff1d9906a..bb6a86fbb1d3de5824800930a1713e01d3894e63 100644 (file)
@@ -86,3 +86,9 @@ val list_assoc_all: 'a -> ('a * 'b) list -> 'b list
 val warn: string -> unit (** print a warning msg to stderr. Adds trailing \n *)
 val error: string -> unit (** print an error msg to stderr. Adds trailing \n *)
 
+  (** @param finalizer finalization function (execution both in case of success
+   * and in case of raised exception
+   * @param f function to be invoked
+   * @param arg argument to be passed to function *)
+val finally: (unit -> unit) -> ('a -> 'b) -> 'a -> 'b
+