如何编译与ML兼容的F#代码?
以下F#片段似乎只有在以ML兼容模式编译(运行它)时才有效: 但是,我不能在Visual Studio 2012中的一个普通项目中编译它,也不能从命令行使用fsc.exe。我得到一个错误: 错误FS0039:未定义值或构造函数“lxor” 阅读上面的F#规格说明 尽管F#保留了几个OCaml关键字供将来使用,但/mlcompatibility选项允许将这些关键字用作标识符 然后它将如何编译与ML兼容的F#代码?,f#,F#,以下F#片段似乎只有在以ML兼容模式编译(运行它)时才有效: 但是,我不能在Visual Studio 2012中的一个普通项目中编译它,也不能从命令行使用fsc.exe。我得到一个错误: 错误FS0039:未定义值或构造函数“lxor” 阅读上面的F#规格说明 尽管F#保留了几个OCaml关键字供将来使用,但/mlcompatibility选项允许将这些关键字用作标识符 然后它将lxor列为一个这样的操作符。因此,我尝试了命令行fsc.exe Program.fs--mlcompatibili
lxor
列为一个这样的操作符。因此,我尝试了命令行fsc.exe Program.fs--mlcompatibility
(11.0.60610.1版),但仍然出现了相同的错误
fsc.exe
的文档似乎表明mlcompatibility
选项只忽略警告。我没有在fsc的文档中看到任何其他相关选项,也没有在VS中看到任何项目选项来实现兼容性
关于F#/ML兼容性的所有其他问题似乎都与可以使用哪种语言结构有关,但我要寻找的是如何在兼容模式下实际编译。我必须打开特定的命名空间、引用另一个程序集还是执行其他操作
更新
我还尝试在Ubuntu 13.04的Mono上使用开源编译器fsharpc(F#3.0)。当调用
fsc
(fsharpc
在非Windows系统上)时,编译器选项位于源文件名之前,结果与fsc
相同。因此,正确的称呼方式应该是:
fsc -o:MyProgram.exe --mlcompatibility Program.fs
使用Visual Studio编译时,您可以进入项目的属性并将--mlcompatibility
添加到其他标志
框中:
--mlcompatibility
选项仅关闭警告,因此这看起来像是一种回归。您可以通过在此处搜索源代码中对mlcompatibility
的所有引用来验证这一点。我仍然得到相同的错误。我还尝试了fsharpc
。同样的结果。我尝试了你的确切命令行和其他排列,但没有结果。当我有一个“正常”的F#代码时,编译器选项的顺序似乎并不重要。我怀疑这是一种回归,因为rextester使用的任何版本似乎都可以很好地编译。Rextester正在对您的11.0.60610使用11.0.50727.1。可能是电子邮件fsbugs@microsoft.com如果没有人能提供答案,那么J.PalMe:我会考虑这个问题。
fsc -o:MyProgram.exe --mlcompatibility Program.fs