
함수형 프로그래밍
- 인풋, 아웃풋이 있음
- 외부 환경으로부터 철저히 독립적(주어진 것들에 대해서만 정해진 작업)
- 같은 인풋에 있어 언제나 동일한 아웃풋을 만들어냄
- 부수효과로부터 자유로움(어느 함수의 동작에 의해 프로그램 내 특정 상태가 변경되는 상황으로부터 자유로움)
특징
- 함수형 프로그래밍은 '선언형' (~는 ~다!)
- 함수도 '값'이다. (인풋으로 하는 일은 일정하기에, 절대 예측 가능한 값을 냄)
- 고계함수 : 인자로 다른 함수를 받아 다른 함수로 내보내는 함수 (매개변수로서) 또는 다른 함수를 반환하는 함수
- 커링(카링) : 여러 인자를 받는 함수에 일부 인자만 넣어서 나머지 인자를 받는 다른 함수를 만드는 기법
- 모든 인자들이 준비되지 않았을 때 부분적용된 상태의 함수를 만들어 마련하거나 다른 함수에 인자로 넘겨주는 등의 방식 고려할 수 있음
- 함수 컴비네이터 : 함수형 언어나 함수형 프로그래밍을 위한 라이브러리에는 컬렉션 내 요소들을 다양하고, 연속적으로 처리할 수 있는 라이브러리