F# 대화형 옵션

이 문서에서는 F# Interactive에서 지원하는 명령줄 옵션에 대해 fsi.exe설명합니다. F# Interactive는 F# 컴파일러와 동일한 많은 명령줄 옵션을 허용하지만 몇 가지 추가 옵션도 허용합니다.

스크립팅에 F# 대화형 사용

F# Interactive는 dotnet fsi대화형으로 시작하거나 명령줄에서 시작하여 스크립트를 실행할 수 있습니다. 명령줄 구문은 입니다.

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

F# 스크립트 파일의 파일 확장명은 .입니다 .fsx.

F# 대화형 옵션 표

다음 표에는 F# Interactive에서 지원하는 옵션이 요약되어 있습니다. 명령줄 또는 Visual Studio IDE를 통해 이러한 옵션을 설정할 수 있습니다. Visual Studio IDE에서 이러한 옵션을 설정하려면 도구 메뉴를 열고 옵션을 선택하고F# 도구 노드를 확장한 다음 F# 대화형을 선택합니다.

목록이 F# 대화형 옵션 인수에 표시되는 경우 목록 요소는 세미콜론(;)으로 구분됩니다.

옵션 설명
-- F# 대화형에서 나머지 인수를 F# 프로그램 또는 스크립트에 대한 명령줄 인수로 처리하도록 지시하는 데 사용됩니다. 이 인수는 목록 fsi를 사용하여 코드에서 액세스할 수 있습니다 . CommandLineArgs.
--checked[+|-] fsc.exe 컴파일러 옵션과 동일합니다. 자세한 내용은 컴파일러 옵션을 참조하세요.
--codepage:<int> fsc.exe 컴파일러 옵션과 동일합니다. 자세한 내용은 컴파일러 옵션을 참조하세요.
--consolecolors[+|-] 경고 및 오류 메시지를 색으로 출력합니다.
--crossoptimize[+|-] 모듈 간 최적화를 사용하거나 사용하지 않도록 설정합니다.
--debug[+|-]

--debug:[fullpdbonlyportableembedded|||]

-g[+|-]

-g:[fullpdbonlyportableembedded|||]
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)을 지정합니다.
--quiet stdout 스트림에 대한 F# Interactive의 출력을 표시하지 않습니다.
--quotations-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-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.AddPrintTransformer을 사용하여 fsi.AddPrinter 사용자 지정할 수 있습니다. 첫 번째 함수는 개체의 인쇄를 대체할 텍스트를 제공합니다. 두 번째 함수는 대신 표시할 서로게이트 개체를 반환합니다. 예를 들어 다음 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]

변환기 함수가 반환null되도록 fsi.AddPrintTransformer 전달된 경우 인쇄 변환기는 무시됩니다. 형식으로 시작하여 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사용할 수 있는 명령줄 옵션에 대해 설명합니다.