I
Size: a a a
I
P
I
I
I
P
P
IM
I
I
P
P
P
I
I
I
P
P
PD
module Option =
let defaultLazy (lz: Lazy<'a>) (x: 'a option) = x |> Option.defaultWith (fun () -> lz.Value)
let ( -? ) x lz = Option.defaultLazy lz x
> (Some 1) -? lazy 3;;
val it : int = 1
> None -? lazy 3;;
val it : int = 3
> (Some 1) -? lazy (printfn "a"; 3);;
val it : int = 1
> None -? lazy (printfn "a"; 3);;
a
val it : int = 3
PD
-?