저는 이것에 대해 완전히 분실했습니다. 기능은 오른쪽 맞춤으로 설명되었으므로 let add x y = x + y;;
의 기능 유형은 int -> int -> int
또는 int -> (int -> int)
입니다.OCaml - (int -> int) 타입의 함수를 제공합니다. int>
(int -> int) -> int
유형의 기능을 정의하는 방법을 모르겠습니다. 첫 번째 인수는 int
에 전달되고 int
을 반환하는 함수라고 생각했습니다. 나는 시도했다 :
let add = fun x y -> x + y
--- int -> int -> int
let add = fun f x = (f x) + 3
--- ('a -> int) -> 'a -> int
'add '의 타입은 정상입니다 :'f'는 추가를 수행 할 수있는'int'를 반환하는 한 무엇이든 취할 수 있습니다. 예를 들어'add int_of_string "2"'이 유효합니다. 컴파일러는 가장 일반적인 유형을 생성하며'x'의 유형을 제한하는 것이 없습니다. 만약 당신이''fx = f (x + 1) + 3'을 더하면 쓸만합니다. – ChriS