F # 대화 형에서 다음 코드를 시도하고 'FS0001 오류가 발생했습니다 :'int -> int '유형이'int '유형과 일치하지 않습니다. 여기에 내가 시도한 코드가있다함수 호출이 오류를 반환하는 이유는 무엇입니까?
이것은 'F3 과학자'서적 예에서 벗어난 것이다. 감사합니다,
F # 대화 형에서 다음 코드를 시도하고 'FS0001 오류가 발생했습니다 :'int -> int '유형이'int '유형과 일치하지 않습니다. 여기에 내가 시도한 코드가있다함수 호출이 오류를 반환하는 이유는 무엇입니까?
이것은 'F3 과학자'서적 예에서 벗어난 것이다. 감사합니다,
정의한대로 factorial
은 두 개의 인수를 취하지 만 하나만 전달합니다. 결과적으로이 함수의 두 번째 분기는 에 부분적으로 적용되는 int -> int
함수를 곱하려고 시도합니다.
첫번째 라인
let rec factorial = function
(산세 n
)를 판독한다.
구문에 대한 몇 가지 세부 정보를 추가하면 - function
키워드는 암시 적으로 이름을 지정하지 않고 인수를 취한 다음 해당 값에 패턴 일치를 허용하는 함수를 만듭니다. 이 일을 꽤 상응하는 방법이 있습니다
- ildjarn는 설명 function
를 사용하여이 : 함수로
let rec factorial = function
| 0 -> 1
| n -> n * factorial (n - 1)
또한 선언 할 수 factorial
이 match
을 n
을 복용 한 후 사용
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 # 코드입니다 .