밤에 쓴 코드

FP) Currying - 커링 본문

FP

FP) Currying - 커링

붱이🦉 2019. 5. 13. 19:38

FP) Currying - 커링


여러개의 인수를 받는 함수를 하나의 인수를 받는 여러 함수로 쪼개는 작업을 커링 이라고 합니다.

커링이 왜 필요할까요 ? ㅡ ?

함수의 꼬리물기(함수의 합성)를 할때 , 특정함수A의 output을 특정함수B의 Input 으로 넣어서 함수가 꼬리에 꼬리를 물어 결과값을 도출하는 프로그래밍을 할 수 있습니다.

이렇게 함수를 합성할 때에 쉽게 함수의 합성을 이루어 내기 위해서는 함수의 인자가 하나이면 함수의 합성이 원활하게 이루어 질수 있습니다.

func multifly(_ n1: Int,_ n2: Int) -> Int {
    return n1*n2
}

인수를 하나만 받는 함수로 줄여보겠습니다.

func multifly(_ n1: Int) -> (Int) -> Int {
  func multi(_ n2: Int) -> Int {
    return n1 * n2
  }
  return multi
}
multifly(10)(20)  // Print:200
// n1 으로 10이 고정되는 함수를 반환합니다. 
// 반환된 함수에 20 을 넣어서 함수의 합성처럼 동작하게 되었습니다.

인자를 하나만 받고 반환도 하나만 하는 메소드로 커링이 완료되어 함수 합성에 더 유연한 구조를 가질 수 있게 되었습니다.

Comments