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#相关的数值优化材料感到有些惊讶.
有关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并且无法对此进行语法检查,但我希望这个想法很明确.