F# Interactive (fsi.exe) のリファレンス

更新 : 2010 年 10 月

F# Interactive (fsi.exe) は、コンソールで F# コードを対話形式で実行したり、F# スクリプトを実行したりするために使用します。 つまり、F# Interactive は、F# 言語の REPL (Read、Evaluate、Print Loop) を実行します。

F# による対話型プログラミング

F# Interactive (fsi.exe) を使用すると、コンソールまたは Visual Studio のウィンドウでコードを記述できます。

コンソールから F# Interactive を実行するには、fsi.exe を実行します。 使用できるコマンド ライン オプションについては、「F# Interactive オプション」を参照してください。

Visual Studio 2010 で F# Interactive を実行するには、ツール バーの [F# Interactive] というボタンをクリックするか、Ctrl + Alt + F キーを使用します。 この操作により、対話形式のウィンドウが開きます。このウィンドウは、F# Interactive セッションを実行するツール ウィンドウです 対話形式のウィンドウで実行するコードを選択し、Alt + Enter キーの組み合わせを押す方法もあります。 F# インタラクティブが [F# Interactive] というツール ウィンドウで開始されます。

コンソールと Visual Studio 2010 のどちらを使用している場合でも、コマンド プロンプトが表示され、入力待ちの状態になります。 コード ファイルと同じようにコードを入力できます。 コードをコンパイルして実行するには、2 つのセミコロン (;;) を入力して、入力行を終了します。

F# Interactive によってコードがコンパイルされ、成功すると、コードが実行され、コンパイルされた型のシグネチャと値が出力されます。 エラーが発生した場合は、エラー メッセージが出力されます。

同じセッションで入力したコードからは、前に入力したどの構成要素にもアクセスできるため、プログラムの構築が可能です。 ツール ウィンドウには十分なバッファーが用意されており、必要に応じてコードをファイルにコピーできます。

Visual Studio で実行する場合、F# Interactive はプロジェクトとは独立して動作します。このため、たとえば、プロジェクトで定義された構成要素を F# Interactive で使用することはできません。使用するには、関数のコードを対話形式のウィンドウにコピーする必要があります。

設定を調整することで、F# Interactive コマンド ライン引数 (オプション) を制御できます。 [ツール] メニューの [オプション] をクリックし、[F# ツール] を展開します。 F# Interactive オプションと fsi.exe 実行可能ファイルのパスの 2 つの設定を変更できます。パスの設定は、別のバージョンの F# に付属している fsi.exe を実行する場合に使用できます。

F# によるスクリプト

スクリプトで使用されるファイル拡張子は .fsx または .fsscript です。 ソース コードをコンパイルし、後でそのコンパイル済みのアセンブリを実行する代わりに、fsi.exe を実行し、F# ソース コードのスクリプトのファイル名を指定するだけで、F# Interactive によってコードを読み取り、リアルタイムで実行することができます。

対話型、スクリプト、およびコンパイル型の環境の相違

F# Interactive でのコードのコンパイル時には、対話形式で実行しているか、スクリプトを実行しているかにかかわらず、シンボル INTERACTIVE が定義されます。 コンパイラでのコードのコンパイル時には、シンボル COMPILED が定義されます。 したがって、コンパイル モードと対話モードでコードを別にする必要がある場合は、条件付きコンパイルを行うプリプロセッサ ディレクティブを使用して、どちらを有効にするかを決定できます。

F# Interactive でスクリプトを実行するときに使用できるディレクティブの中には、コンパイラを実行するときには使用できないものがあります。 次の表に、F# Interactive で使用できるディレクティブの概要を示します。

ディレクティブ

説明

#help

使用できるディレクティブに関する情報を表示します。

#I

アセンブリ検索パスを引用符で囲んで指定します。

#load

ソース ファイルを読み取り、コンパイルして実行します。

#quit

F# Interactive セッションを終了します。

#r

アセンブリを参照します。

#time ["on"|"off"]

#time 単独で、パフォーマンス情報を表示するかどうかを切り替えます。 有効にすると、解釈および実行されるコードのセクションごとに、実時間、CPU 時間、およびガベージ コレクションの情報が F# Interactive によって計測されます。

F# Interactive でファイルまたはパスを指定するときは、リテラル文字列が想定されます。 したがって、ファイルとパスは引用符で囲む必要があり、通常のエスケープ文字が適用されます。 また、@ 文字を使用して、パスを含む文字列が F# Internactive で逐語的文字列として解釈されるように指示することもできます。 この場合、F# Interactive はエスケープ文字を無視するようになります。

コンパイル モードと対話モードの違いの 1 つは、コマンド ライン引数にアクセスする方法です。 コンパイル モードでは、GetCommandLineArgs を使用します。 スクリプトでは、fsi.CommandLineArgs を使用します。

次のコードは、スクリプトでコマンド ライン引数を読み取る関数を作成する方法と、スクリプトから別のアセンブリを参照する方法を示しています。 最初のコード ファイル MyAssembly.fs は、参照先となるアセンブリのコードです。 このファイルをコマンド ラインでコンパイルし (fsc -a MyAssembly.fs)、2 番目のファイルをスクリプトとしてコマンド ラインで実行します (fsi --exec file1.fsx test)。

// MyAssembly.fs
module MyAssembly
let myFunction x y = x + 2 * y

// file1.fsx
#r "MyAssembly.dll"

printfn "Command line arguments: "

for arg in fsi.CommandLineArgs do
    printfn "%s" arg

printfn "%A" (MyAssembly.myFunction 10 40)

出力は次のとおりです。

file1.fsx
test
60

関連トピック

タイトル

説明

F# Interactive オプション

F# Interactive (fsi.exe) のコマンド ラインの構文やオプションについて説明します。

F# Interactive ライブラリ リファレンス

F# Interactive でコードを実行するときに使用できるライブラリ機能について説明します。

履歴の変更

日付

履歴

理由

2010 年 10 月

サポートされているディレクティブの表を追加。

情報の拡充