에 대한 사양을 작성합니다. 구체적인 유형을 지정하고 싶습니다. int를 말합니다. 형식 스펙에 함수에 주석을 달 수 있지만 구문을 알 수는 없다는 것을 알고 있습니다.나는 익명 함수를 익명 함수
이 구문에 대한 참조를 얻고 이러한 주석으로이 예제를 확장하는 것이 도움이됩니다.
감사합니다. 이 작품
에 대한 사양을 작성합니다. 구체적인 유형을 지정하고 싶습니다. int를 말합니다. 형식 스펙에 함수에 주석을 달 수 있지만 구문을 알 수는 없다는 것을 알고 있습니다.나는 익명 함수를 익명 함수
이 구문에 대한 참조를 얻고 이러한 주석으로이 예제를 확장하는 것이 도움이됩니다.
감사합니다. 이 작품
가장 일반적인 형태는 다음과 fun x -> x
이후
(fun x -> x : int -> int)
자체에 의한 값으로, 그것은 다른 식으로, 타입으로 주석 할 수있다.
- : int -> int = <fun>
:
(fun x -> x : int -> 'a)
또는
(fun x -> x : 'a -> int)
모두가 발생합니다 : 다른 컴파일러에 의해 유추 할 수 있기 때문에 실제로, 이러한 유형의 주석에서 당신은 int
년대 중 하나를 생략 할 수 있습니다
형식 주석의 'a
은 'a
의 서명과 다른 의미가 있음을 보여줍니다. 유형 주석에서 "나는 상관 없다, 당신이 결정한다"를 의미한다. 그 이유는 타입 어노테이션의 적절한 이름이 타입 제한이기 때문에, 당신은 타입으로 당신의 표현식에 주석을 달지 못하지만, 당신은 타입 유추 시스템을위한 여분의 제한을 부여합니다. 이 예제에서 여러분은 다음과 같이 말하고있는 것입니다 :이 표현식을 가지고 있고 그 타입을 추론 해주십시오. 반환 함수는 int
입니다.
또한, 당신은 당신이 보통의 변수이 작업을 수행 할 수있는 입력 변수 대신 같은 방식으로 _
를 사용할 수 있습니다
(fun x -> x : _ -> int)
결과를 동일합니다.
# fun (x: int) -> x;;
- : int -> int = <fun>
#
이유는
기능 매개 변수 패턴으로 지정되어 있다는 점이다. PATTTERN위한
하나의 대안의 형식이다
: 구문 패턴 Section 6.6 of the OCaml manual 주어진다
(패턴 typexpr).