次の方法で共有


F# 対話型オプション

この記事では、F# Interactive、fsi.exeでサポートされるコマンド ライン オプションについて説明します。 F# Interactive は、F# コンパイラと同じコマンド ライン オプションの多くを受け入れますが、いくつかの追加オプションも受け入れます。

F# Interactive を使用してスクリプトを作成する

F# Interactive (dotnet fsi) は、対話形式で起動することも、コマンド ラインから起動してスクリプトを実行することもできます。 コマンド ライン構文は次のとおりです。

dotnet fsi [options] [ script-file [arguments] ]

F# スクリプト ファイルのファイル拡張子は .fsxです。

F# 対話型オプションの表

次の表は、F# Interactive でサポートされるオプションをまとめたものです。 これらのオプションは、コマンド ラインまたは Visual Studio IDE を使用して設定できます。 Visual Studio IDE でこれらのオプションを設定するには、[ツール] メニューを開き、[オプション]を選択し、[F# ツール] ノードを展開して、F# 対話型 選択します。

リストが F# Interactive オプション引数に表示される場合、リスト要素はセミコロン (;) で区切られます。

回答内容 説明
-- 残りの引数を F# プログラムまたはスクリプトのコマンド ライン引数として扱うように F# Interactive に指示するために使用します。この引数は、fsi リストを使用してコード内でアクセスできます。CommandLineArgs.
--checked[+|- fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプションの」を参照してください。
--checknulls[+|-] fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプションの」を参照してください。
--codepage:<int> fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプションの」を参照してください。
--consolecolors[+|-] 警告メッセージとエラー メッセージを色で出力します。
**--compilertool:<extensionsfolder> デザイン時ツールを含むアセンブリまたはディレクトリを参照します (短い形式: -t)。
--クロスオプティマイズ[+|-] モジュール間の最適化を有効または無効にします。
--debug[+|-]

--debug:[full|pdbonly|portable|embedded]

-g[+|-]

-g:[full|pdbonly|portable|embedded]
fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプションの」を参照してください。
--define:<string> fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプションの」を参照してください。
-deterministic[+|-] 決定論的アセンブリ (モジュール バージョン GUID とタイムスタンプを含む) を生成します。
--exec ファイルを読み込んだ後、またはコマンド ラインで指定されたスクリプト ファイルを実行した後に終了するように F# 対話型に指示します。
--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# Interactive の出力を抑制します。
--quotations-debug F# の引用符リテラルと反映された定義から派生した式に対して、追加のデバッグ情報を出力する必要があることを指定します。 デバッグ情報は、F# 式ツリー ノードのカスタム属性に追加されます。 「コード引用符」と「Expr.CustomAttributes」を参照してください。
--readline[+|-] 対話型モードでタブ補完を有効または無効にします。
--reference:<filename>

-r:<ファイル名>
fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプションの」を参照してください。
--tailcalls[+|-] テール IL 命令の使用を有効または無効にします。これにより、スタック フレームが末尾再帰関数に再利用されます。 このオプションは既定で有効になっています。
--targetprofile:<string> このアセンブリのターゲット フレームワーク プロファイルを指定します。 有効な値は、mscorlibnetcore、または netstandardです。 既定値は mscorlibです。
--use:<filename> 最初の入力として、起動時に指定されたファイルを使用するようにインタープリターに指示します。
--utf8output fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプションの」を参照してください。
--warn:<warning-level> fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプションの」を参照してください。
--warnaserror[+|-] fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプションの」を参照してください。
--warnaserror[+|-]:<int-list> fsc.exe コンパイラ オプションと同じです。 詳細については、「コンパイラ オプションの」を参照してください。

F# 対話型構造化印刷

F# Interactive (dotnet fsi) では、構造化プレーンテキスト書式設定 の拡張バージョンを使用して値を報告します。

  1. %A プレーン テキスト書式設定のすべての機能がサポートされており、一部は追加でカスタマイズ可能です。

  2. 出力コンソールで色がサポートされている場合、印刷は色分けされます。

  3. その文字列を明示的に評価しない限り、表示される文字列の長さに制限が設定されます。

  4. ユーザー定義可能な設定のセットは、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

AddPrinterAddPrintTransformer を使用してカスタマイズする

F# 対話型出力での印刷は、fsi.AddPrinterfsi.AddPrintTransformerを使用してカスタマイズできます。 最初の関数は、オブジェクトの印刷を置き換えるテキストを提供します。 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# Interactive でこの例を実行すると、書式設定オプション セットに基づいて出力されます。 この場合、日付と時刻の書式設定に影響します。

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"]
タイトル 説明
コンパイラ オプション F# コンパイラで使用できるコマンド ライン オプションについて説明 fsc.exe