이 질문은 F #에서 객체 지향 프로그래밍 (예 : 복합 클래스 계층 구조)을 사용한다고 가정합니다. OO 개념을 사용하면 .NET 라이브러리에서 F # 기능을 랩핑하거나 상호 운용성을 위해 주로 유용합니다.
코드를 이해하십시오. 타입 추론은 코드를 함수 스타일로 작성할 때 훨씬 유용합니다. 코드가 짧아 지지만 진행 상황을 이해하는데도 도움이됩니다. 당신이 (LINQ의 Select
방법) 목록을 통해 map
기능을 작성하는 경우 예를 들어, :
는
let map f list =
seq { for el in list -> f el }
유형의 추론은 함수 유형이 있음을 알려줍니다 :
val map : f:('a -> 'b) -> list:seq<'a> -> seq<'b>
이 우리 일에 대해 우리의 기대와 일치 쓰기를 원한다 - 인수 f
은 'a
유형의 값을 'b
유형의 값으로 변환하고 map
기능은 'a
값의 목록을 취하여 'b
값 목록을 작성하는 함수입니다. 따라서 형식 유추를 사용하여 코드가 기대하는 바를 쉽게 수행하는지 확인할 수 있습니다.
일반화. 자동 일반화 (주석에 언급)는 위의 코드가 자동으로 최대한 재사용 될 수 있음을 의미합니다. C#에서, 당신은 작성할 수 있습니다
IEnumerable<int> Select(IEnumerable<int> list, Func<int, int> f) {
foreach(int el in list)
yield return f(el);
}
이 방법은 일반적인 아니다 - 그것은 단지 int
값의 컬렉션에서 작동 Select
입니다. 그러나 int
으로 제한해야하는 이유는 없습니다. 동일한 코드가 모든 유형에서 작동합니다. 타입 유추 메커니즘은 그러한 일반화를 발견하는 데 도움이됩니다.
자세한 내용은. 마지막으로 추론 덕분에 F # 언어는 모든 유형을 명시 적으로 작성해야 할 때보 다 더 많은 것을 쉽게 확인할 수 있습니다. 이 언어의 여러 측면에 적용하지만, 최고의 측정 단위 사용하여 설명된다 :
이
let l = 1000.0<meter>
let s = 60.0<second>
let speed = l/s
은 F # 컴파일러는 speed
이 유형 float<meter/second>
을 가지고 추론 - 그것은 이해하는 방법을 측정 작업 단위 및 유형을 포함하여 장치를 추론을 정보. 이 기능은 정말 유용하지만 유형이 오래 걸리기 때문에 모든 단위를 직접 작성해야한다면 사용하기가 어렵습니다. 일반적으로 더 정확한 유형을 사용할 수 있습니다 (항상 입력 할 필요가 없기 때문에).
이것은 일종의 광범위한 질문입니다. 질문을 좀 더 구체적으로 편집 할 수 있을까요? –