感谢您度过这个漫长的Q期,非常感谢您的帮助。 因此,情况是我在模块中嵌套了一部分FSharp代码,并且模块嵌套在其中,还有CSharp代码从这些嵌套模块之一的公共类型中调用方法。请参见下面的代码: Array.Parallel.map 命名空间MachineLearning.Predictions
// refrences to other namespaces/modules
module Sample =
// so this is set at compile
let cons1 = MachinLearning.Example.Calc.comp(something)
module MulRegression =
// this too is set at compile
let cons2 = MachinLearning.Example.Calc.comp(something)
// other code
type public OPrediction() =
// this runs ok and gets the resulting value
let valu0 =
MachinLearning.Example.Calc.comp(something)
let valu1 = cons2 // debugger jumps out as if no cons2 exist
member this.OPred(atp) =
// a bunch of values, functions, etc, from other modules
module LogRegression =
// other code
type public CPrediction() =
member this.CPred(atp) =
// a bunch of values, functions, etc, from other modules
首先,必需的名称空间由using NamespacePath;
“模块打开,” using static ModulePath;
”模块打开,整个解决方案的构建没有任何问题。FSharp代码本身在FSharp环境中生成所需的结果( FSI,从另一个FSharp代码进行调用。)现在,问题出在模块{{1}中的方法prediction.CPred(inp)
和模块MachineLearning.Predictions.LogRegression
中的方法OPrediction.OPred(inp)
的CSharp代码调用中。作为方法的返回值的已知值(例如MachineLearning.Predictions.MulRegression
,inp
或inp + 7
),一切都很好。第一行带有方法范围之外的值(例如2
),执行就简单地跳了出来。没有错误,什么也没有,它没有返回值就跳出来了!
let len = pidz.Length
更新1 :经过...的一天:对我来说,它变得更加奇怪了。在类型//------------------------------------------------------------
// FSharp test script runs perfectly and produces the results.
//------------------------------------------------------------
// #load directives
module Test1 =
// open statements
let op = OPrediction()
let res = op.OPred(717)
do printfn "%A" res
module Test2 =
// open statements
let cp = CPrediction()
let res = cp.CPred(800.)
do printfn "%A" res
//------------------------------------------------------------
// CSharp calling method does not return anything.
//------------------------------------------------------------
// GET: ODetails/OPredict/1
public Int32 OPredict(int id) {
var op = new OPrediction(); // so far, A-OK!
// 1) OPred(id) is defined like OPred(id) = 2. then result is produced.
// 2) OPred keeps its def, then when 'stepping-in', the first line
// involving other than 'id' or constant, debugger jumps out to
// get the next item in queue and the story repeats.
var res = (Int32)op.OPred(id);
return res;
}
// GET: CDetails/CPredict/1
public Int32 CPredict(double point) {
var cp = new CPrediction();
var res = (Int32)cp.CPred(point);
return res;
}
的范围内,好像调试器无法识别使用顶部命名空间OPrediction
中其他命名空间/模块中的东西定义的任何值和标识符,也不包括任何嵌套模块,包括包含类型本身的模块。另一方面,调试器似乎可以通过直接调用类型主体内的所述函数来识别设置的值。
更新2 :在通过FSI逐项检查了整个可恶的东西之后:
MachineLearning.Predictions
数据帧并转换为Deedle
,涉及表达式float
。 Array.Parallel.map
。为了安全起见,我通过将数据帧的每一列显式转换为float
并将结果重构为一个新帧,并采用更长且不太优雅的非并行路径来解决这两个问题,现在代码运行时没有顺利-到目前为止。答案 0 :(得分:1)
1)问题特别是涉及bluemountaincapital RewriteEngine On
RewriteCond %{SERVER_PORT} !=443 [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.medconnect.pl/$1 [R=301,L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
数据帧并转换为Deedle
,涉及表达式float
。
2)我不确定是并行访问数据帧的行还是将数据帧的列转换为Array.Parallel.map
。为了安全起见,我通过将数据帧的每一列显式转换为float
并将结果重构为一个新帧,并采用更长且不太优雅的非并行路径来解决这两个问题,现在代码运行时没有顺利-到目前为止。
3)我不确定明确转换每列并重建框架的过程是否是个好主意。对于非常大的数据帧,可能会出现问题,然后可能再也不会... !!!