将C#'using'关键字转换为F#

pro*_*rth 3 f# c#-to-f# ilnumerics

在尝试将以下C#代码翻译为F#时,我正在努力使用'using'关键字.以下代码段来自ILNumerics库.如何翻译以下内容?

ILRetArray<double> ObjFuncBFGS2D(ILInArray<double> X) {
    using (ILScope.Enter(X)) {
        return X[0] * X[0] + X[1] * X[1] + 2; 
    }
} 
Run Code Online (Sandbox Code Playgroud)

另外,F#人们倾向于使用哪些库进行优化?我一直在使用NLoptNet,但是在Matlab,Julia和Python中正确收敛的例程存在非常奇怪的收敛问题.所以问题在于我的F#翻译(更有可能授予)或优化库.这是我希望确定的.坦率地说,我对互联网上缺乏与F#相关的数值优化材料感到有些惊讶.

Van*_*oiy 8

有关F#中资源管理的MSDN文档与此相关.要自动处理,F#中的常用方法是:

  • use,let一旦绑定超出范围,它将替换并处置
  • using,一个在完成时占用资源的函数和在处理之前执行的函数,它将一次性对象作为输入.

代码use可能如下所示:

let ObjFuncBFGS2D (X : ILInArray<double>) =
    use myEnteredScope = ILScope.Enter(X)
    X.[0] * X.[0] + X.[1] * X.[1] + 2
Run Code Online (Sandbox Code Playgroud)

或者,using像这样:

let ObjFuncBFGS2D (X : ILInArray<double>) =
    using (ILScope.Enter(X)) <| fun _ ->
        X.[0] * X.[0] + X.[1] * X.[1] + 2
Run Code Online (Sandbox Code Playgroud)

我不使用ILNumerics并且无法对此进行语法检查,但我希望这个想法很明确.