this.CutAVericalLine 0.f || this.CutAVericalLine width ||
this.CutAnHorizontalLine 0.f || this.CutAnHorizontalLine height
- member this.Scale (factor: float32) =
+ member this.Scale (factor: float32) : Ellipse =
Ellipse(this.Cx, this.Cy, this.A * factor, this.B * factor, alpha)
// Approximation of Ramanujan.
member this.A = a
member this.B = b
+type MaybeBuilder () =
+ member this.Bind (x, f) =
+ match x with
+ | None -> None
+ | Some a -> f a
+ member this.ReturnFrom (x) = x
+
+ member this.TryFinally (body, compensation) =
+ try
+ this.ReturnFrom(body())
+ finally
+ compensation()
+
+ member this.Using (disposable: 'a when 'a :> IDisposable, body) =
+ let body' = fun () -> body disposable
+ this.TryFinally(body', fun () ->
+ match disposable with
+ | null -> ()
+ | disp -> disp.Dispose())
+
+ member this.Zero () =
+ None
+
+ member this.Return (x) =
+ Some x
+
+let maybe = MaybeBuilder()
\ No newline at end of file