F# 4.7의 새로운 기능

F# 4.7은 F# 언어에 여러 개선 사항을 추가합니다.

시작

F# 4.7은 모든 .NET Core 배포판 및 Visual Studio 도구에서 사용할 수 있습니다. F#을 사용하여 자세히 알아보세요.

언어 버전

F# 4.7 컴파일러는 프로젝트 파일의 속성을 통해 유효한 언어 버전을 설정하는 기능을 소개합니다.

<PropertyGroup>
    <LangVersion>preview</LangVersion>
</PropertyGroup>

4.6, 4.7latestpreview.로 설정할 수 있습니다. 기본값은 latest입니다.

이 기능을 설정 preview하면 컴파일러는 컴파일러에서 구현된 모든 F# 미리 보기 기능을 활성화합니다.

암시적 수율

더 이상 형식을 yield 유추할 수 있는 배열, 목록, 시퀀스 또는 계산 식에 키워드를 적용할 필요가 없습니다. 다음 예제에서는 두 식 모두 F# 4.7 이전의 각 항목에 대한 문이 필요 yield 했습니다.

let s = seq { 1; 2; 3; 4; 5 }

let daysOfWeek includeWeekend =
    [
        "Monday"
        "Tuesday"
        "Wednesday"
        "Thursday"
        "Friday"
        if includeWeekend then
            "Saturday"
            "Sunday"
    ]

단일 yield 키워드를 도입하는 경우 다른 모든 항목도 해당 키워드에 적용해야 yield 합니다.

암시적 생성은 시퀀스 평면화와 같은 작업을 수행하는 데 사용하는 식에서 사용될 yield! 때 활성화되지 않습니다. 이러한 경우 현재에도 계속 사용해야 yield 합니다.

와일드카드 식별자

클래스와 관련된 F# 코드에서 자체 식별자는 항상 멤버 선언에서 명시적이어야 합니다. 그러나 자체 식별자를 사용하지 않는 경우 일반적으로 이중 밑줄을 사용하여 이름 없는 자체 식별자를 나타내는 것이 규칙이었습니다. 이제 단일 밑줄을 사용할 수 있습니다.

type C() =
    member _.M() = ()

루프에도 for 적용됩니다.

for _ in 1..10 do printfn "Hello!"

들여쓰기 이완

F# 4.7 이전에는 기본 생성자 및 정적 멤버 인수에 대한 들여쓰기 요구 사항에 과도한 들여쓰기가 필요했습니다. 이제 단일 들여쓰기 범위만 필요합니다.

type OffsideCheck(a:int,
    b:int, c:int,
    d:int) = class end

type C() =
    static member M(a:int,
        b:int, c:int,
        d:int) = 1