F# インタラクティブのオプション
この記事では、F# インタラクティブ (fsi.exe
) でサポートされているコマンド ライン オプションについて説明します。 F# インタラクティブでは、F# コンパイラと同じコマンド ライン オプションを数多く使用できますが、その他にもいくつかのオプションを使用できます。
スクリプトに F# インタラクティブを使用する
F# インタラクティブ (dotnet fsi
) は、対話形式で起動することも、コマンド ラインから起動してスクリプトを実行することもできます。 コマンド ラインの構文は次のとおりです
dotnet fsi [options] [ script-file [arguments] ]
F# スクリプト ファイルのファイル拡張子は .fsx
です。
F# Interactive のオプションの表
次の表は、F# Interactive でサポートされるオプションの一覧です。 これらのオプションは、コマンド ラインまたは Visual Studio IDE で設定できます。 Visual Studio IDE でこれらのオプションを設定するには、 [ツール] メニューを開き、 [オプション] を選択し、 [F# ツール] ノードを展開して、 [F# インタラクティブ] を選択します。
F# Interactive オプションの引数でリストを指定する場合は、リストの要素をセミコロン (;
) で区切ります。
オプション | 説明 |
---|---|
-- | 残りの引数を F# のプログラムまたはスクリプトへのコマンド ライン引数として扱うよう、F# インタラクティブに指示するために使用します。これらの引数には、リスト fsi.CommandLineArgs を使用してコードでアクセスできます。 |
--checked[+|-] | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--codepage:<int> | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--consolecolors[+|-] | 警告メッセージとエラー メッセージを色つきで表示します。 |
**--compilertool:<extensionsfolder> | デザイン時ツールを含むアセンブリまたはディレクトリを参照します (短い形式: -t)。 |
--crossoptimize[+|-] | モジュール間の最適化を有効または無効にします。 |
--debug[+|-] --debug:[full|pdbonly|portable|embedded] -g[+|-] -g:[full|pdbonly|portable|embedded] |
fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--define:<string> | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--deterministic[+|-] | 決定論的アセンブリを作成します (モジュール バージョン GUID やタイムスタンプなど)。 |
--exec | ファイルを読み込んだ後、またはコマンド ラインで指定したスクリプトを実行した後に F# Interactive を終了するように指示します。 |
--fullpaths | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--gui[+|-] | Windows フォーム イベントのループを有効または無効にします。 既定値は有効です。 |
--help -? |
各オプションのコマンド ライン構文と簡単な説明を表示するために使用します。 |
--lib:<folder-list> -I:<folder-list> |
fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--load:<filename> | 指定したソース コードを起動時にコンパイルし、コンパイルされた F# の構成要素をセッションに読み込みます。 |
--mlcompatibility | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--noframework | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください |
--nologo | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--nowarn:<warning-list> | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--optimize[+|-] | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--preferreduilang:<lang> | 優先する出力用言語のカルチャ名を指定します (例: es-ES、ja-JP)。 |
--quiet | stdout ストリームへの F# インタラクティブの出力を抑制します。 |
--quotations-debug | 追加のデバッグ情報が F# 引用符リテラルとリフレクション定義から派生した式に対して生成されるように指定します。 デバッグ情報は F# 式ツリー ノードのカスタム属性に追加されます。 「コード引用符」と「Expr.CustomAttributes」を参照してください。 |
--readline[+|-] | 対話モードでのタブ補完を有効または無効にします。 |
--reference:<filename> -r:<filename> |
fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--tailcalls[+|-] | tail IL 命令の使用を有効または無効にします。有効にすると、スタック フレームが tail 再帰関数で再利用されます。 既定では、このオプションは有効になっています。 |
--targetprofile:<string> | このアセンブリのターゲット フレームワーク プロファイルを指定します。 有効な値は、mscorlib 、netcore 、または netstandard です。 既定値は、mscorlib です。 |
--use:<filename> | 指定したファイルを起動時に最初の入力として使用するよう、インタープリターに指示します。 |
--utf8output | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--warn:<warning-level> | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--warnaserror[+|-] | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
--warnaserror[+|-]:<int-list> | fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプション」を参照してください。 |
F# インタラクティブの構造化された出力
F# インタラクティブ (dotnet fsi
) での値の報告には、構造化されたプレーンテキストの書式設定の拡張バージョンが使用されます。
%A
プレーンテキスト書式設定のすべての機能がサポートされており、さらにカスタマイズも可能です。出力コンソールで色がサポートされている場合、出力は色付けされます。
文字列を明示的に評価しない限り、表示される文字列の長さには制限が適用されます。
fsi
オブジェクトを介して、ユーザー定義可能な一連の設定を使用できます。
報告される値のプレーンテキスト出力をカスタマイズするために使用できる設定は次のとおりです。
open System.Globalization
fsi.FormatProvider <- CultureInfo("de-DE") // control the default culture for primitives
fsi.PrintWidth <- 120 // Control the width used for structured printing
fsi.PrintDepth <- 10 // Control the maximum depth of nested printing
fsi.PrintLength <- 10 // Control the length of lists and arrays
fsi.PrintSize <- 100 // Control the maximum overall object count
fsi.ShowProperties <- false // Control whether properties of .NET objects are shown by default
fsi.ShowIEnumerable <- false // Control whether sequence values are expanded by default
fsi.ShowDeclarationValues <- false // Control whether values are shown for declaration outputs
AddPrinter
と AddPrintTransformer
を使用してカスタマイズする
F# インタラクティブの出力の印刷は、fsi.AddPrinter
と fsi.AddPrintTransformer
を使用してカスタマイズできます。
1 つ目の関数を使用して、オブジェクトの印刷を置き換えるテキストを提供します。 2 つ目の関数からは、代わりに表示するサロゲート オブジェクトが返されます。 たとえば、次の F# コードについて考えます。
open System
fsi.AddPrinter<DateTime>(fun dt -> dt.ToString("s"))
type DateAndLabel =
{ Date: DateTime
Label: string }
let newYearsDay1999 =
{ Date = DateTime(1999, 1, 1)
Label = "New Year" }
F# インタラクティブで例を実行すると、書式設定オプションのセットに基づいて出力されます。 この場合、日付と時刻の書式設定に影響します。
type DateAndLabel =
{ Date: DateTime
Label: string }
val newYearsDay1999 : DateAndLabel = { Date = 1999-01-01T00:00:00
Label = "New Year" }
fsi.AddPrintTransformer
を使用すると、印刷のサロゲート オブジェクトを指定できます。
type MyList(values: int list) =
member _.Values = values
fsi.AddPrintTransformer(fun (x:MyList) -> box x.Values)
let x = MyList([1..10])
これにより、以下が出力されます。
val x : MyList = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
fsi.AddPrintTransformer
に渡したトランスフォーマー関数から null
が返される場合、印刷トランスフォーマーは無視されます。
これは、obj
型で始まる入力値をフィルター処理するために使用できます。 次に例を示します。
fsi.AddPrintTransformer(fun (x:obj) ->
match x with
| :? string as s when s = "beep" -> box ["quack"; "quack"; "quack"]
| _ -> null)
let y = "beep"
これにより、以下が出力されます。
val y : string = ["quack"; "quack"; "quack"]
関連トピック
Title | 説明 |
---|---|
コンパイラ オプション | F# コンパイラ fsc.exe で使用できるコマンド ライン オプションについて説明します。 |
.NET