Open sa02045 opened 1 year ago
p286) 고차함수 - 함수를 반환하는 함수
function makeAdder(n){ return function(x){ return n + x } } makeAdder(1)(3) // 4
함수를 반환하는 함수로 볼 수도 있고 커링이라고 볼 수도 있는 것 같다! 책에는 직접적으로 커링에 대해서 언급하고 있진 않지만 살짝 맛보기로 알아보도록 해보자
함수를 반환하는 함수
커링
f(a, b, c) -> f(a)(b)(c)
다중 인수을 갖는 함수를 단일 인수를 갖는 함수들의 함수열로 변환하는 기법 또는 함수
// 커링 변환하는 함수 function curry(func) { return function curried(...args) { if (args.length >= func.length) { return func.apply(this, args); } else { return function(...args2) { return curried.apply(this, args.concat(args2)); } } }; } function foo(a,b,c){ } var curryFunction = curry(foo) // 변환 curryFunction(a)(b)(c)
p287)에 나오듯 고차함수의 장점이 커링의 장점이라고 볼 수 있을것 같습니다.
하지만 책에서 경고하듯이 직관적인 방법과 항상 비교하는 것이 중요한것 같다!
직관적인 방법과 항상 비교
함수형 언어 하스켈은 기본적으로 모든 함수가 커링 변환되어 동작한다
let plus x y = x + y let f = plus(2) f(3) // 5 또는 plus 2 3 // 5
Haskell B. Curry라는 수학자
Haskell B. Curry
Currying을 사용하면 함수의 실행을 늦출 수 있다는 장점이 있다
p286) 고차함수 - 함수를 반환하는 함수
함수를 반환하는 함수
로 볼 수도 있고커링
이라고 볼 수도 있는 것 같다! 책에는 직접적으로커링
에 대해서 언급하고 있진 않지만 살짝 맛보기로 알아보도록 해보자커링(Currying)
커링함수
커링기법의 장점
p287)에 나오듯 고차함수의 장점이 커링의 장점이라고 볼 수 있을것 같습니다.
하지만 책에서 경고하듯이
직관적인 방법과 항상 비교
하는 것이 중요한것 같다!하스켈 커링함수
함수형 언어 하스켈은 기본적으로 모든 함수가 커링 변환되어 동작한다
Haskell B. Curry
라는 수학자참고