Search Results for '커링'

1 POSTS

  1. 2008.04.19 Scala에서 Parital Application

Scala에서 Parital Application

Posted 2008. 4. 19. 20:34
scala.user 메일링 리스트에 partial application에 대한 질문이 올라왔군요.

def m(a: Int, b: Int, c: Int) = a + b + c


와 같이 함수 m을 정의한 후에 a와 c의 값을 정해주고 b만 인자로 받는 새로운 함수를 만들어내는 문제입니다.

Scala에서 이 문제에 대한 해답은

scala> def m(a: Int, b: Int, c:Int) = a+b+c
m: (Int,Int,Int)Int

scala> val f=m(1, _:Int, 3)
f: (Int) => Int = <function>

scala> f(2)
res0: Int = 6


Scala에서 _ 는 partial evaluation을 하도록 만들어 줍니다.

참고: partial application과 비슷한 용어로 커링(curring)은 (A, B) => C를 A => (B => C)로 만들어 주는 방법을 말합니다. parital application과 커링은 구분해서 사용해야 합니다. LtU의 Currying != Generalized Partial Application?! 을 참조하세요.