F# インタラクティブとは
場合によっては、アプリケーションの作成、パッケージ化、配布というプロセスを実行したくないことがあります。 F# インタラクティブは、対話型プログラミングとスクリプトの環境です。 コンソールやスタンドアロンのスクリプト ファイルを使ってリアルタイムでコードを記述し、評価できるため、アイデアを簡単にコードへと反映できます。
F# インタラクティブの開始
F# インタラクティブは .NET SDK に組み込まれています。 .NET CLI dotnet fsi
コマンドを使って開始できます。
dotnet fsi
Read-Evaluate-Print Loop (REPL)
F# インタラクティブを起動すると、read-evaluate-print loop (REPL) セッションが開始され、コンソールで F# コードを記述して、その出力をすぐに評価できます。
Microsoft (R) F# Interactive version 11.4.2.0 for F# 5.0
Copyright (c) Microsoft Corporation. All Rights Reserved.
For help type #help;;
>
式の実行と評価
入力を評価するには、>
文字の後に入力する必要があります。
> #help;;
たとえば、#help
コマンドを実行すると、出力に F# インタラクティブのヘルプ メニューが表示されます。
F# Interactive directives:
#r "file.dll";; // Reference (dynamically load) the given DLL
#i "package source uri";; // Include package source uri when searching for packages
#I "path";; // Add the given search path for referenced DLLs
#load "file.fs" ...;; // Load the given file(s) as if compiled and referenced
#time ["on"|"off"];; // Toggle timing on/off
#help;; // Display help
#r "nuget:FSharp.Data, 3.1.2";; // Load Nuget Package 'FSharp.Data' version '3.1.2'
#r "nuget:FSharp.Data";; // Load Nuget Package 'FSharp.Data' with the highest version
#quit;; // Exit
F# Interactive command line options:
See 'dotnet fsi --help' for options
式の末尾は ;;
文字で区切ります。 ;;
文字を入力するまで、コードは評価されません。 コードが改行文字で区切られないので、この構造は複数行の式を記述するときに便利です。
F# コードの評価も同じように動作します。 次のコードでは、コンソールにメッセージが出力されます。
> printfn "Hello World!";;
評価された出力は次のようになります。
Hello World!
val it : unit = ()
最初の行には評価されたコードからの出力が表示され、2 行目には出力の型の情報が表示されます。 この場合は、コンソールに出力される値の型は unit
です。これは ()
トークンによって表され、名前 it
にバインドされています。 さらに操作を実行するときは、後でプログラムで it
の値にアクセスできます。
REPL の終了
F# インタラクティブの REPL を使ったら、#q
または #quit
コマンドを使って終了します。
> #q;;
fsx スクリプト ファイル
さらにコードを記述するときは、fsx ファイル拡張子を使用してスクリプトにコードを保存できます。
コンソールにメッセージを出力する同じ例を使うと、my-script.fsx というファイルを作成してコードを書き込むことができます。
printfn "Hello World!"
ただし、1 つ注意が必要な点は、fsx ファイルでは式の末尾で ;;
を使う必要がなくなるということです。 不要になる理由は、スクリプト ファイルの場合、F# インタラクティブではインデントや改行などの標準的な F# コード書式設定ガイドラインを使用できるためです。
ソース コードをコンパイルした後にそのコンパイル済みのアセンブリを実行する代わりに、dotnet fsi
を実行して F# コードが含まれているスクリプト ファイルの名前を指定するだけで、F# インタラクティブによってリアルタイムでコードが読み取られ、実行されます。
dotnet fsi my-script.fsx
このスクリプトを実行すると、次の出力が生成されます。
Hello World!