Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编译与ML兼容的F#代码?_F# - Fatal编程技术网

如何编译与ML兼容的F#代码?

如何编译与ML兼容的F#代码?,f#,F#,以下F#片段似乎只有在以ML兼容模式编译(运行它)时才有效: 但是,我不能在Visual Studio 2012中的一个普通项目中编译它,也不能从命令行使用fsc.exe。我得到一个错误: 错误FS0039:未定义值或构造函数“lxor” 阅读上面的F#规格说明 尽管F#保留了几个OCaml关键字供将来使用,但/mlcompatibility选项允许将这些关键字用作标识符 然后它将lxor列为一个这样的操作符。因此,我尝试了命令行fsc.exe Program.fs--mlcompatibili

以下F#片段似乎只有在以ML兼容模式编译(运行它)时才有效:

但是,我不能在Visual Studio 2012中的一个普通项目中编译它,也不能从命令行使用fsc.exe。我得到一个错误:

错误FS0039:未定义值或构造函数“lxor”

阅读上面的F#规格说明

尽管F#保留了几个OCaml关键字供将来使用,但/mlcompatibility选项允许将这些关键字用作标识符

然后它将
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