Share via


F# Interactive(fsi.exe) 참조

업데이트: 2010년 10월

F# Interactive(fsi.exe)는 콘솔에서 F# 코드를 대화형으로 실행하거나 F# 스크립트를 실행하는 데 사용됩니다. 즉, F# Interactive는 F# 언어에 대한 REPL(Read, Evaluate, Print Loop)을 실행합니다.

F#을 사용한 대화형 프로그래밍

콘솔이나 Visual Studio의 창에서 F# Interactive를 사용하여 코드를 작성할 수 있습니다.

콘솔에서 F# Interactive를 실행하려면 fsi.exe를 실행합니다. 사용할 수 있는 명령줄 옵션에 대한 자세한 내용은 F# Interactive 옵션을 참조하십시오.

Visual Studio 2010을 통해 F# Interactive를 실행하려면 F# Interactive라는 레이블이 있는 적절한 도구 모음 단추를 클릭하거나 Ctrl+Alt+F를 누릅니다. 이렇게 하면 F# Interactive 세션을 실행하는 도구 창인 대화형 창이 열립니다. 대화형 창에서 실행할 코드를 선택하고 Alt+Enter를 눌러도 됩니다. F# Interactive가 F# Interactive라는 레이블의 도구 창에서 시작됩니다.

콘솔을 사용하건 Visual Studio 2010을 사용하건 상관없이 명령 프롬프트가 나타납니다. 해석기를 실행하려면 사용자가 이 명령 프롬프트에 필요한 사항을 입력해야 합니다. 코드 파일에서 작업할 때와 마찬가지로 코드를 입력할 수 있습니다. 코드를 컴파일하고 실행하려면 세미콜론 두 개(;;)를 입력하여 한 줄 또는 여러 줄의 입력을 종료합니다.

F# Interactive에서는 코드를 컴파일하려 시도합니다. 컴파일에 성공하면 코드를 실행하고 컴파일된 형식과 값의 시그니처를 출력합니다. 오류가 발생하면 해석기를 통해 오류 메시지가 출력됩니다.

기존 세션을 그대로 유지한 채 코드를 입력한 경우 앞서 입력했던 모든 구문에 액세스할 수 있습니다. 따라서 한 세션 내에서 이와 같은 방법으로 프로그램을 빌드할 수 있습니다. 도구 창에 할당되는 버퍼 크기가 크므로 필요한 경우 코드를 파일로 복사할 수 있습니다.

Visual Studio에서 F# Interactive를 실행하는 경우 F# Interactive가 프로젝트와는 독립적으로 실행됩니다. 따라서 예를 들어 프로젝트에 정의되어 있는 구문을 F# Interactive에 사용하기 위해서는 함수 코드를 대화형 창으로 복사해야 합니다.

설정을 조정하여 F# Interactive 명령줄 인수(옵션)를 제어할 수 있습니다. 도구 메뉴에서 **옵션...**을 선택하고 F# 도구를 확장합니다. 변경 가능한 두 가지 설정은 F# Interactive 옵션과 fsi.exe 실행 파일의 경로입니다. 실행 파일 경로는 실행하려는 F# 버전이 다른 fsi.exe 파일이 있는 경우에 사용할 수 있습니다.

F#을 사용한 스크립트 작업

스크립트에는 파일 확장명으로 .fsx 또는 .fsscript가 사용됩니다. 소스 코드를 컴파일한 다음 컴파일된 어셈블리를 나중에 실행하는 대신 fsi.exe를 실행하고 F# 소스 코드의 스크립트 파일 이름을 지정하여 F# Interactive에서 코드를 실시간으로 읽고 실행하게 할 수 있습니다.

대화형, 스크립트 및 컴파일 환경의 차이점

F# Interactive에서 코드를 컴파일하는 경우에는 대화형으로 작업을 진행하건 스크립트를 실행하건 상관없이 기호 INTERACTIVE가 정의됩니다. 컴파일러에서 코드를 컴파일할 때는 기호 COMPILED가 정의됩니다. 따라서 컴파일된 모드와 대화형 모드에서 코드가 서로 달라야 하는 경우 조건부 컴파일에 전처리기 지시문을 사용하여 어느 쪽 코드를 사용할지 결정할 수 있습니다.

일부 지시문은 F# Interactive에서 스크립트를 실행할 때만 사용할 수 있고 컴파일러를 실행할 때는 사용할 수 없습니다. 다음 표에는 F# Interactive를 사용할 때 사용할 수 있는 지시문이 요약되어 있습니다.

지시문

설명

#help

사용 가능한 지시문에 대한 정보를 표시합니다.

#I

어셈블리 검색 경로를 따옴표로 묶어서 지정합니다.

#load

소스 파일을 읽고, 컴파일하고, 실행합니다.

#quit

F# Interactive 세션을 종료합니다.

#r

어셈블리를 참조합니다.

#time ["on"|"off"]

#time은 그 자체로 성능 정보를 표시할지 여부를 전환합니다. 설정된 경우 F# Interactive가 해석 및 실행되는 각 코드 섹션에 대해 실시간, CPU 시간 및 가비지 수집 정보를 측정합니다.

F# Interactive에서 파일 또는 경로를 지정할 때는 문자열 리터럴이 필요합니다. 따라서 파일 및 경로는 따옴표로 묶어서 표시해야 하며, 일반적인 이스케이프 문자가 적용됩니다. 또한 F# Interactive가 경로 포함 문자열을 축자 문자열로 해석하도록 @ 문자를 사용할 수 있습니다. 그러면 F# Interactive가 모든 이스케이프 문자를 무시합니다.

컴파일된 모드와 대화형 모드 사이의 차이점 중 하나는 명령줄 인수에 액세스하는 방식에 있습니다. 컴파일된 모드에서는 GetCommandLineArgs를 사용합니다. 반면, 스크립트에서는 fsi.CommandLineArgs를 사용합니다.

아래에는 스크립트에서 명령줄 인수를 읽는 함수를 만드는 방법과 스크립트에서 다른 어셈블리를 참조하는 방법을 보여 주는 코드 예제가 나와 있습니다. 첫째 코드 파일인 MyAssembly.fs는 참조 대상인 어셈블리의 코드입니다. 명령줄에서 fsc -a MyAssembly.fs를 사용하여 이 파일을 컴파일한 다음 명령줄에서 fsi --exec file1.fsx 테스트를 사용하여 둘째 파일을 스크립트로 실행합니다.

// MyAssembly.fs
module MyAssembly
let myFunction x y = x + 2 * y

// file1.fsx
#r "MyAssembly.dll"

printfn "Command line arguments: "

for arg in fsi.CommandLineArgs do
    printfn "%s" arg

printfn "%A" (MyAssembly.myFunction 10 40)

출력은 다음과 같습니다.

file1.fsx
test
60

관련 항목

제목

설명

F# Interactive 옵션

F# Interactive(fsi.exe)의 명령줄 구문과 옵션을 설명합니다.

F# Interactive 라이브러리 참조

F# Interactive에서 코드를 실행할 때 사용할 수 있는 라이브러리 기능을 설명합니다.

변경 기록

날짜

변경 내용

이유

2010년 10월

지원되는 지시문에 대한 표가 추가되었습니다.

향상된 기능 관련 정보