以下 F# 片段似乎仅在以 ML 兼容模式编译时才有效(在此处运行):
let i = (1 lxor 5)
但是,我无法在 Visual Studio 2012 的一个简单项目中编译它,也无法从命令行使用 fsc.exe。我得到错误:
错误 FS0039:未定义值或构造函数“lxor”
阅读它说的 F# 规范
尽管 F# 保留了几个 OCaml 关键字以供将来使用,但 /mlcompatibility 选项允许将这些关键字用作标识符。
然后它lxor
列为这样的运算符之一。所以我尝试了命令行fsc.exe Program.fs --mlcompatibility
(版本 11.0.60610.1),但它仍然得到同样的错误。
的文档fsc.exe
似乎表明该mlcompatbility
选项仅忽略警告。我在 fsc 的文档或 VS 中的项目选项中没有看到任何其他相关选项以启用兼容性。
关于 F#/ML 兼容性的所有其他 SO 问题似乎都与可以使用哪些语言结构有关,但我所寻找的只是如何在兼容模式下实际编译。我是否必须打开特定的命名空间、引用另一个程序集或执行其他操作?
更新
我还尝试在 Ubuntu 13.04 上的 Mono 上使用开源编译器fsharpc
(F# 3.0)。结果与 相同fsc
。