F#核心库源代码有一个标志,用于将元组编译为结构,但我无法使其工作

时间:2014-07-28 11:05:51

标签: f#

这是this proposal的后续问题。

显然,F#Core库源有一个标志,允许将2元组编译为结构。见here。我做了以下事情:

  • TUPLE_STRUXTFSharp.Core.fsproj添加了一个定义FSharp.Compiler.fsproj标记。
  • 使用build.bat
  • 构建
  • C:\Program Files (x86)\Microsoft SDKs\F#\3.1\Framework\v4.0C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.3.1.0的内容替换为适当的内置文件。

我的项目编译并引用了正确的(新建的)FSharp.Core.dll。但是,2元组仍然被编译为类。

我做错了吗?或者这个代码分支实际上是不相关的?事件是将元组编译为System.Tuple而不是在此代码中声明的类型(是否设置了TUPLE_STRUXT标志)这一事实将指示后者。有没有办法让它发挥作用?

编辑:在设置标志FX_NO_TUPLE之后,源代码无法编译。我无法解决的错误是prim-types.fs <527,7>: error FS0039: The type 'Struct' is not defined。也就是说,违规行是struct tuple定义中的第一个:

[<Struct>]
type Tuple<'T1,'T2> = 
    new (v1,v2) = { Item1 = v1; Item2 = v2 }
    val Item1 : 'T1 
    val Item2 : 'T2

有谁知道是什么原因引起的?

1 个答案:

答案 0 :(得分:4)

TUPLE_STRUXT取决于另一个标志FX_NO_TUPLE,该标志也应设置。