# function composition
커링(Currying)과 함수합성(Function composition)
1. 커링(Currying) > 커링(Currying)은 함수형 프로그래밍에서 매우 중요한 개념 중 하나입니다. 커링은 함수를 더 작은 함수로 분리하는 기술로, 이를 통해 함수를 재사용 가능한 모듈로 만들 수 있습니다. 간단히 설명하면, 하나 이상의 인자를 받는 함수를 인자 하나만 받는 함수로 변환하는 것입니다. 이를 통해 인자 중 일부를 미리 설정하고, 나중에 나머지 인자를 전달하여 함수를 호출할 수 있습니다. 예를 들어, 두 수를 더하는 함수 add가 있다고 가정해보겠습니다. 이 함수를 커링을 사용하여 변환하면 아래와 같이 작성할 수 있습니다. addCurry 함수는 인자 x를 받아서 내부에서 익명 함수를 반환합니다. 이 익명 함수는 인자 y를 받아서 x + y 값을 반환합니다. addCurry 함수를 사용하여 다음과 같이 add 함수를 만들 수 있습니다. 이제 add 함수는 addCurry 함수로부터 인자 2를 받아서 내부적으로 인자 y와 더해서 값을

Functional Programming Attributes
함수형 프로그래밍에 대해서 공부해보면 꼭 나오는 용어들이 있다. 일급 시민, 함수 합성, 커링 등. 오늘은 이러한 단어들에 대해서 이해해보자. First Class Function function은.. argument로 받을 수 있음 return할 수 있음 변수에 할당할 수 있음 anonymous function nested function non-local variable closure equality Extensional Equality 두 function이 동일한 입력에 대해 동일한 출력을 가지는 경우 Intensional Equality 두 Function이 동일한 logic을 가지는 경우 Reference Equality Function 고유의 Identifier가 동일한 경우 **Swift는 function Equ
함수형 프로그래밍
함수형 프로그래밍이란 무엇을까? 정의 함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고, 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다. 문이 아닌 식이나 선언으로 수행되는 선언형 프로그래밍 패러다임을 따르고 있다. 출처:위키백과 내가 이해한 바로는 순수 함수들을 조합하여 프로그래밍하는 방법으로, 명령형이 아닌 선언형 프로그래밍 방식을 따르고 있다. 순수함수들은 오직 출력(return)만 수행하기 때문에, 입력된 값들이 변경되지 않는다. 따라서 최종 Output이 발생할 수 있도록 순수 함수들을 엮어서 호출해야 한다. 참고로, 명령형은 에 집중하고, 선언형은 에 집중한다. 예를 들어, 최종적인 목표가 '물을 마시기' 라고 해보자. 은 왜 필요