2016-08-23 5 views
0

최근 스칼라의 함수 프로그래밍 으로 작업하기 시작했으며 그 과정에서 스칼라를 배웠습니다. 다른 기능을 커링 함수를 정의하기 위해 제 2 장 운동을하는 동안, 나는이에 달렸다 : 내가 쓰는 경우스칼라 고차 함수와 암시 적 타이핑

def curry[A,B,C](f: (A,B) => C): A => B => C = 
    a: A => b: B => f(a, b) 

그때 내가

Chapter2.scala:49: error: ';' expected but ':' found.
a: A => b: B => f(a, b)
_______^
one error found

얻을하지만 작성하는 경우

def curry[A,B,C](f: (A,B) => C): A => B => C = 
    a => b => f(a, b) 

경고없이 경고없이 잘 컴파일되고 작동합니다. 차이점이 뭐야?

+3

음의 차이는 첫 번째 예는 문법적으로 정확하지 않은 것이 분명하다. – SamTebbs33

답변

4

변수를 괄호로 묶으면됩니다. 당신의 예에서, 당신은 쓸 수 있습니다 :

def curry[A,B,C](f: (A,B) => C): A => B => C = 
    (a: A) => (b: B) => f(a, b) 
+0

이것은 나에게 버릇이다. 명백한 이유는 무엇입니까? –

+1

일반적으로 괄호는'a : A => ...'형식에서 필요합니다; 블록의 마지막 표현식 일 때만 생략 할 수 있습니다. http://www.scala-lang.org/files/archive/spec/2.11/06-expressions.html#anonymous-functions를 참조하십시오. –