Use a maybe monad to be able abort an analysis.
[master-thesis.git] / Parasitemia / Logger / Logger.fs
index 552e37d..1f029d5 100644 (file)
@@ -139,12 +139,14 @@ type Log () =
     static member AddListener (listener: IListener) = instance.AddListener(listener)
     static member RmListener (listener: IListener) = instance.RmListener(listener)
 
-    static member LogWithTime (message: string, severity: Severity, f: unit -> 'a, [<ParamArray>] args: Object[]) : 'a =
+    static member LogWithTime (message: string, severity: Severity, f: unit -> 'a option, [<ParamArray>] args: Object[]) : 'a option =
         let sw = Stopwatch()
         sw.Start()
         let res = f ()
         sw.Stop()
-        instance.Write(String.Format(message, args) + sprintf " (time: %d ms)" sw.ElapsedMilliseconds, severity)
+        if res.IsSome
+        then
+            instance.Write(String.Format(message, args) + sprintf " (time: %d ms)" sw.ElapsedMilliseconds, severity)
         res
 
     static member Debug (message: string, [<ParamArray>] args: Object[]) =