我发现有几个,通常是2年和更早的堆栈溢出问题有关此错误。但在检查了其他问题的样本后,这个问题并不重复。其他问题主要是关于具有布局属性的结构。就我而言,代码没什么特别的 - 除了它也会产生这个错误:
[<Struct>]
type Vertex =
val x : float
val y : float
val z : float
new(_x:float,_y:float,_z:float) = { x = _x; y = _y; z = _z}
[<Struct>]
type Triangle =
val v0 : Vertex
val v1 : Vertex
val v2 : Vertex
new(_v0:Vertex,_v1:Vertex,_v2:Vertex) = { v0 = _v0; v1 = _v1; v2 = _v2 }
let v0 = Vertex(0.0,0.0,0.0)
let v1 = Vertex(0.0,1.0,0.0)
let v2 = Vertex(1.0,1.0,0.0)
let t0 = Triangle(v0,v1,v2)
最后一行(实例化一个三角形)在fsi中产生错误:
错误FS0193:内部错误:无法从程序集'FSI-ASSEMBLY,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'加载类型'Triangle'。
请注意,Vertex
(具有浮动成员)按预期工作。
有Vertex
成员的三角形没有。
跟进各自的github f#bug,我得到的印象很久以前就有了修复。但我明白了:
Microsoft(R)F#Interactive版本14.0.23413.0
我没有尝试它是否在编译的程序集(F#项目)中工作,但我的猜测是,它会工作。
现在问题是:我是否只是做了一些愚蠢的疏忽错误,或者这是一个错误还是结构内禁的结构成员?