2017-01-10 2 views
3

나는 확장 Ionide-fsharp 다음과 같은 코드를 입력 내가 c공간이 유형을 변경합니까?

let test a b c = a/b +c 
let test a b c = a/b +c 

유형은 int -> (int -> int) -> int -> int된다 전에 공간을 제거하면 해당 유형은, 그러나

let test a b c = a/b + c 

int -> int -> int -> int입니까?

그러나 다음 식은 원래 유형을 가져옵니다.

let test a b c = a/b+c 

비주얼 스튜디오에서 동일한 결과가 발생했습니다. +c은 F # 표현식에서 c으로 처리됩니다.

+1

'-c'는 무엇을합니까? 지금 이해가 되니? 'c '와'+ c'에 대한 통사론을 생각해보십시오. 그러나'-c'에는 모호한 문법적 설탕이 없습니다. –

답변

4

예. 올바른 가정입니다. 공백이없는 용어 앞에 더하기는 단항 연산자가 아닌 이진 연산자로 처리됩니다. 그건 그렇고, 마이너스 기호도 마찬가지예요. b +c 따라서 bint 취하는 함수이어야 인수 +c에 기능 b의 응용 프로그램이 있어야합니다 : 그 결정 후

는 나머지를 해석하는 하나의 방법이있다. 이 응용 프로그램의 결과는 부서에서 분모로 사용되므로 유형이 int이어야합니다. 따라서 bint -> int이어야합니다.

+0

실수로 공간을 쉽게 제거 할 수 있습니다. 그리고 a + b, a * b는 혼란을 더했습니다. 단항 연산자가 필요한 경우 a (+ b)를 선호합니다. – ca9163d9

+1

물론 쉽습니다. 그러나 컴파일러는 즉시 그것을 잡을 것입니다. –

관련 문제