커링 ?
: f(a, b, c)처럼 단일 호출로 처리하는 함수를 f(a)(b)(c)처럼 각각의 인수가 호출 가능한 프로세스로 호출된 후 병합될 수 있게 변환
: 함수를 호출하는 것이 아닌 변환하는 것
: 함수와 함께 사용하는 고급기술, JS뿐 아니라 다른 언어에도 존재


sum 같은 경우 단일 호출로 값들이 다 들어가있기에 결괏값 반환
curriedSum 같은 경우 커링으로 x라는 함수 내 y라는 함수로 x + y를 반환하는 구조
(10)만 한 경우 y에 대한 값이 없어 정의를 반환
(10)(20)인 경우 x와 y에 대한 값이 들어와서 x + y에 대한 값을 반환
tenPlus로 보면 curriedSum에 대한 x = 10, y = x + y이라는 값이 들어있다
tenPlus(100)을 하면 x = 10, y = 100으로 110을 반환하게 된다
클린 코드 구조

이렇게 리턴을 중첩으로 하기보다는

커링으로 깔끔하게 표현 가능


역시나 커링은 하나씩 호출하게 된다면 함수를 리턴하고, ingredient2, ingredient3 필요하단걸 표현


모든 파라미터를 다 넣어줘야 원하는 값이 리턴
partial
: 기준으로 하고자 하는 값을 고정하는 것

해당 매개변수에 맞게 출력해주는 log함수가 있다고 할 때

log 함수 호출 전 커링 변환해주는 curry함수에서 new Date()는 고정으로 나머지 매개변수에 변동 한다면

이렇게 첫 번째 인수 new Date()를 고정으로 나머지에 대해 매개변수 부르면 된다