4

次の F# フラグメントは、ML 互換モードでコンパイルされた場合にのみ有効のようです (ここで実行します)。

   let i = (1 lxor 5)

ただし、Visual Studio 2012 の簡単なプロジェクトで、またはコマンド ラインから fsc.exe を使用してコンパイルすることはできません。エラーが発生します:

エラー FS0039: 値またはコンストラクター 'lxor' が定義されていません

それが言うF#仕様を読む

F# は将来の使用のためにいくつかの OCaml キーワードを予約していますが、 /mlcompatibility オプションを使用すると、これらのキーワードを識別子として使用できます。

lxor次に、そのような演算子の 1 つとしてリストします。コマンドラインfsc.exe Program.fs --mlcompatibility(バージョン11.0.60610.1)を試しましたが、それでも同じエラーが発生します。

のドキュメントは、オプションが警告のみを無視fsc.exeすることを示しているようです。mlcompatbility互換性を有効にするための fsc のドキュメントや VS のプロジェクト オプションには、他の関連するオプションはありませんでした。

F#/ML の互換性に関する他の SO の質問はすべて、使用できる言語構造に関連しているように見えますが、私が探しているのは、互換モードで実際にコンパイルする方法だけです。特定の名前空間を開く、別のアセンブリを参照する、または何か他のことを行う必要がありますか?

アップデート

fsharpcまた、Ubuntu 13.04 の Mono でオープン ソース コンパイラ (F# 3.0) を使用してみました。結果は と同じfscです。

4

2 に答える 2

2

fsc( Windows 以外のシステムで)を呼び出す場合fsharpc、コンパイラ オプションはソース ファイル名の前に置かれます。したがって、それを呼び出す正しい方法は次のようになります。

fsc -o:MyProgram.exe --mlcompatibility Program.fs

Visual Studio でコンパイルする場合、プロジェクトのプロパティに移動し--mlcompatibilityて、Other flagsボックスに追加できます。

「mlcompatibility」フラグを F# プロジェクトに追加する方法のデモンストレーション

于 2013-10-28T01:21:44.550 に答える