Skip to content

Instantly share code, notes, and snippets.

@michael-newton-15below
Created January 18, 2013 16:29
Show Gist options
  • Save michael-newton-15below/4565812 to your computer and use it in GitHub Desktop.
Save michael-newton-15below/4565812 to your computer and use it in GitHub Desktop.
Corrected error handling interface and helper types/functions
open System
type AuditedProcess<'T> = unit -> Option<'T>
let runAuditedProcess (auditedProcess : AuditedProcess<_>) =
auditedProcess ()
let doAuditedProcess (auditedProcess : AuditedProcess<_>) =
runAuditedProcess auditedProcess |> ignore
type IAuditBuilder =
abstract Bind : AuditedProcess<'T> * ('T -> AuditedProcess<'U>) -> AuditedProcess<'U>
abstract Delay : (unit -> AuditedProcess<'T>) -> AuditedProcess<'T>
abstract Return : 'T -> AuditedProcess<'T>
abstract ReturnFrom : AuditedProcess<'T> -> AuditedProcess<'T>
abstract TryFinally : AuditedProcess<'T> * (unit -> unit) -> AuditedProcess<'T>
abstract Using : 'T * ('T -> AuditedProcess<'U>) -> AuditedProcess<'U> when 'T :> IDisposable
abstract Zero : unit -> AuditedProcess<'T>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment