F#核心库无法编译,结构元组的标志为“";错误FS0039:类型';结构';“未定义”;
这是一个进一步的发展,并根据尊敬的社区成员mydogisbox的建议重新发布 我正试图用标志编译F#Core库,这些标志将生成2元组结构。标志是F#核心库无法编译,结构元组的标志为“";错误FS0039:类型';结构';“未定义”;,f#,F#,这是一个进一步的发展,并根据尊敬的社区成员mydogisbox的建议重新发布 我正试图用标志编译F#Core库,这些标志将生成2元组结构。标志是FX\u NO\u TUPLE和TUPLE\u STRUXT。相关代码开始 TUPLE\u STRUXT出现在prim-types.fs和tastops.fs中,因此我将标志添加到了FSharp.Core.fsproj和FSharp.Compiler.fsprojFX\u NO\u TUPLE仅出现在prim-types.fs中,因此我将其添加到了FSh
FX\u NO\u TUPLE
和TUPLE\u STRUXT
。相关代码开始
TUPLE\u STRUXT
出现在prim-types.fs和tastops.fs中,因此我将标志添加到了FSharp.Core.fsproj
和FSharp.Compiler.fsproj
FX\u NO\u TUPLE
仅出现在prim-types.fs中,因此我将其添加到了FSharp.Core.fsproj
运行build.bat
后,在构建核心库时失败。有两个主要错误:
prim types.fsi(1251,10):错误FS1175:FSharp.Core.dll中的所有记录、联合和结构类型必须显式标记为“StructuralComparison”或“NoComparison”
可以通过在prim-types.fsi中将结构元组标记为StructuralComparison
和StructuralEquality
来处理此错误
prim-types.fs:错误FS0039:未定义类型“Struct”
这个我绕不过去。这涉及到结构元组的定义:
[<Struct>]
type Tuple<'T1,'T2> =
new (v1,v2) = { Item1 = v1; Item2 = v2 }
val Item1 : 'T1
val Item2 : 'T2
[]
类型元组=
新的(v1,v2)={Item1=v1;Item2=v2}
val项目1:'T1
val项目2:'T2
Struct
属性已成功用于同一核心库中的例如seq.fs
。该库可能已经有一段时间没有使用结构元组标志进行编译了,此后发生了一些变化。对这段代码有更好理解的人知道如何解决这个问题吗