2016-08-08 4 views
5

현재 무료 온라인 리소스로 F #을 배우고 있습니다. 궁금해서 일부 작은 연습에서 배운 내용을 적용하려고하면 MSDN F # 설명서를 자주 참조하십시오.F # 문서 함수 기능 서명 이해

그러나 설명서는 나에게 매우 비현실적인 것처럼 보입니다. 예를 들어 pown 함수의 경우 documentation page을 가져옵니다. 사용법은 꽤 간단하지만 함수 서명을 이해하지 못합니다.

누군가 다음과 같은 것을 설명 할 수 있습니까?

  1. T 이전의^(Circumflex)는 무엇을합니까?
  2. "T"는 무엇을 의미합니까? 일반적인 유형입니까?
  3. 이중>는 무엇을합니까?
  4. 요구 사항은 무엇을 수행합니까?

한 답변에 너무 많이 다루지 않기를 바랍니다.

답변

8
  1. T 이는 정상적인 일반 타입 파라미터 대조적으로 statically resolved type parameter임을 나타낸다 (도 4 이하를 참조).
  2. 예.
  3. ->은 함수의 형식 생성자이며 올바른 연관이므로 ^T -> (int -> ^T)과 같습니다. 즉, ^T 유형의 인수를이 함수에 전달하면 int에서 ^T까지 함수가 반환됩니다. 그래서 pown 2은 힘이 아직 전달되지 않은 2 x 함수입니다. pown 2 8(pown 2) 8과 동일합니다. 2 입니다.
  4. 호출 시점에서 ^T으로 대체되는 구체적인 유형은 이러한 요구 사항을 충족시키기 위해 정적으로 알려져 있어야합니다. 따라서 pown 2 8 (int은 이러한 작업을 지원하므로)은 pown "test" 8이 아니기 때문에 string이 아니기 때문에 호출 할 수 있습니다.
+0

링크를 이용해 주셔서 감사합니다. –

6

처음에는 몇 가지 사항이 있으므로 처음에는 F #에서 서명에 접근하는 것이 좋습니다. 우선, 곡절을 무시하십시오 - 정신적으로 진드기를 대체하십시오. 그렇다면 "필수적"인 부분을 무시할 수 있습니다. 짧은 이야기는 곡절 악센트 때문에 있습니다. - 대문자 'T는 .NET 표준, F 번호는 보통 소문자 'a 사용하고, 'b 등 무엇이 서명 설명하는 것은입니다

// Signature: 
pown : 'T -> int -> 'T 

'T는 일반적인 유형입니다 :

그래서 그 후이 같은 서명이 함수에 'Tint이 사용되고 'T을 반환합니다. 마지막으로 -> 뒤에 오는 유형은 함수의 "반환 유형"입니다. 처음에는 그것에 대해 생각하는 것이 유용합니다.

실제로는 거기에 더 많은 것이 있습니다. F # 함수가 카레트되어 있지만 (부분적으로 적용 가능합니다), 실제로 가지고있는 것은 'T을 취하여 int -> 'T 함수를 반환하는 함수입니다. 이중 -> 인 이유는 분명합니다.

그리고 곡절 악센트는 정적으로 결정된 유형입니다. @kvb에서 이미 자세한 내용을 보았습니다. 존재한다는 것을 알아두면 좋겠지 만, 실제로는 거의 사용되지 않습니다 (핵심 숫자 함수와 연산자에서 볼 수 있습니다).

+1

여러 개의 화살표는 함수가 카레트임을 알 때 훨씬 더 의미가 있습니다, 감사합니다! –