2011-10-27 11 views

답변

3

정의한대로 factorial은 두 개의 인수를 취하지 만 하나만 전달합니다. 결과적으로이 함수의 두 번째 분기는 에 부분적으로 적용되는 int -> int 함수를 곱하려고 시도합니다.

첫번째 라인

let rec factorial = function 

(산세 n)를 판독한다.

4

구문에 대한 몇 가지 세부 정보를 추가하면 - function 키워드는 암시 적으로 이름을 지정하지 않고 인수를 취한 다음 해당 값에 패턴 일치를 허용하는 함수를 만듭니다. 이 일을 꽤 상응하는 방법이 있습니다

- ildjarn는 설명 function를 사용하여이 : 함수로

let rec factorial = function 
    | 0 -> 1 
    | n -> n * factorial (n - 1) 

또한 선언 할 수 factorialmatchn을 복용 한 후 사용

let rec factorial n = 
    match n with 
    | 0 -> 1 
    | n -> n * factorial (n - 1) 

그리고 완전성을 위해 fun을 사용하여 함수를 만들 수도 있습니다.이 함수는 function의 간단한 버전으로,) 패턴 매칭의 여러 케이스를 작성하기 - 두 번째)이 어떤 이유없이 (약간 더 복잡하다, 그래서 나는 처음 두 중 하나 원합니다

let rec factorial = fun n -> 
    match n with 
    | 0 -> 1 
    | n -> n * factorial (n - 1) 

를 처음 두 옵션은 모두 관용적 F # 코드입니다 .

관련 문제