함수형 프로그래밍은 세가지 도전을 효과적으로 처리할 수 있는 기법을 제공하면서 주목받고 있다.
불변성을 사용한 코드를 작성하는 것은 튼튼한 동시성 프로그램을 작성하기 위한 필수적인 도구며, 불변성을 활용한 코드를 작성하는 가장 좋은 방법은 FP를 사용하는 것이다. 불변성, 그리고 더 일반적으론느 함수형 사고방식의 엄격함은 수학에 뿌리를 두고 있고 프로그램 오류를 더 적게 만들어낸다.
스칼라는 혼합 패러다임 언어이기 때문에 함수형 프로그래밍의 규칙을 따르도록 요구하지는 않는다. 하지만 가능하면 그런 규칙을 따를 것을 권고한다.
함수형 프로그래밍은 함수와 값의 동작에 대한 수학적 규칙에 기반한다.
함수 내부에서 다른 전역상태를 일체 변경하지 않는 함수를 부수효과가 없다고 하거나 순수하다고 말한다
순수성은 함수를 분석, 테스트, 디버깅하는 과정을 극적으로 단순화시켜준다. 함수를 호출하는 주위 환경을 고려하지 않고 그 모든 것을 수행할 수 있다.
주변환경과 관계 없이 명확하다는 특성은 참조 투명성을 낳는다.
함수혀 ㅇ프로그래밍에서는 다른 일반적인 데이터 값과 마찬가지로 함수도 1급 계층값이다. 함수를 다른 함수로부터 합성할 수 있다. 함수를 변수에 대입할 수도 있다. 함수를 다른 함수에 인자로 넘길수도 있고 어떤 함수가 다른 함수를 값으로 반환할수도 있다.
함수가 다른 함수를 인자로 받거나 함수를 반환할때 이를 고차함수라고 부른다. 수학에서 고차 함수의 예로 미분과 적분을 들 수 있다.
대표적으로 map이 고차함수이다. 하나의 함수를 인자로 받아서 컬렉션의 모든 원소에 적용한 새 컬렉션을 반환한다.
변수라는 말은 함수형 프로그래밍에서는 새로운 의미를 갖는다. 우선 변수의 값이 변하지 않는다.