Параметры F# Interactive

В этой статье описываются параметры командной строки, поддерживаемые 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. Чтобы задать эти параметры в интегрированной среде разработки Visual Studio, откройте меню "Сервис" , выберите пункт "Параметры", разверните узел инструментов F# и выберите F# Interactive.

Где списки отображаются в аргументах параметра F# Interactive, элементы списка разделены точкой с запятой (;).

Вариант Описание
-- Используется для указания F# Interactive рассматривать оставшиеся аргументы как аргументы командной строки программе или скрипту F#, доступ к которому можно получить в коде с помощью списка fsi. CommandLineArgs.
--проверка ed[+|-] Аналогично параметру компилятора fsc.exe . Дополнительные сведения см. в разделе Параметры компилятора.
--codepage:<int> Аналогично параметру компилятора fsc.exe . Дополнительные сведения см. в разделе Параметры компилятора.
--consolecolors[+|-] Выводит предупреждения и сообщения об ошибках в цвете.
**--компиляторtool:<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# интерактивный выход после загрузки файлов или запуска файла скрипта, заданного в командной строке.
--fullpaths Аналогично параметру компилятора fsc.exe . Дополнительные сведения см. в разделе Параметры компилятора.
--gui[+|-] Включает или отключает цикл событий Windows Forms. По умолчанию этот параметр включен.
--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).
--Тихий Подавление выходных данных F# Interactive в поток stdout .
--кавычки-debug Указывает, что дополнительные сведения об отладке следует выдавать для выражений, производных от литерала кавычек F# и отраженных определений. Сведения об отладке добавляются в настраиваемые атрибуты узла дерева выражений F#. См . кавычки кода и expr.CustomAttributes.
--readline[+|-] Включение или отключение завершения вкладки в интерактивном режиме.
--reference:<filename>

-r:<filename>
Аналогично параметру компилятора fsc.exe . Дополнительные сведения см. в разделе Параметры компилятора.
--tailcalls[+|-] Включите или отключите использование инструкции tail IL, что приводит к повторному использованию кадра стека для рекурсивных функций хвоста. Этот параметр по умолчанию включен.
--targetprofile:<string> Указывает профиль целевой платформы этой сборки. Допустимые значения: mscorlib, netcore или netstandard. Значение по умолчанию — mscorlib.
--use:<filename> Сообщает интерпретатору использовать указанный файл при запуске в качестве начального ввода.
--utf8output Аналогично параметру компилятора fsc.exe. Дополнительные сведения см. в разделе Параметры компилятора.
--warn:warning:<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

Настройка с помощью AddPrinter и AddPrintTransformer

Печать в интерактивных выходных данных F# можно настроить с помощью fsi.AddPrinter и fsi.AddPrintTransformer. Первая функция предоставляет текст для замены печати объекта. Вторая функция возвращает суррогатный объект для отображения. Например, рассмотрим следующий код 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.AddPrintTransformernullвозвращаемой, преобразователь печати игнорируется. Это можно использовать для фильтрации любого входного значения, начиная с типа 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"]
Заголовок Description
Параметры компилятора Описание параметров командной строки, доступных для компилятора F#, fsc.exe.