open System let getdisposable () = {new IDisposable with member x.Dispose() = printfn "I am disposed"} type Atype () = let d = getdisposable () interface IDisposable with member x.Dispose() = d.Dispose() let f ()= use l = getdisposable () printfn "hello" f()//hello -> I am disposed let f2 ()= use a = new Atype() printfn "hello" f2()//hello -> I am disposed