함수형 프로그래밍

함수란?

입력과 어떤 ※ 매개 변수에 따라서 ※인자를 넣어주면 해당 기능을 수행한 다음에 결과를 반환 시켜주는 작은 실행 단위라고 보면 된다

함수형 프로그래밍이란?

함수형 프로그래밍은 프로그래밍 패라다임 중 하나로, 계산을 수학 함수의 평가로 간주하고 상태와 변경 가능한 데이터를 피하는 것에 중점을 둔다. 함수형 프로그래밍은 불변성, 순수함수, 고차함수, 람다 와 같은 핵심 개념을 가지고 있다.

함수형 프로그래밍은 순수 함수를 작성하여 프로그램의 부작용을 줄이는 기법을 의미 대표적인 함수형 프로그래밍으로 람다식과 고차 함수가 있다.

불변성

함수형 프로그래밍에서는 한 번 생성된 데이터 구조는 변경되지 않는다. 대신 새로운 데이터 구조를 생성하여 결과를 반환한다. 이로 인하여 사이드 이펙트(Side Effects)를 최소화할 수 있다.

순수 함수란?

어떤 함수가 같은 인자에 대해서 항상 같은 결과를 반환하면 부작용이 없는 함수 그리고 부작용이 없는 함수가 함수의 어떤 상태도 바꾸지 않는다면 순수 함수

fun sum(a : Int, b: Int) = a + b

위에 코드는 똑같은 함수의 인자가 전달 되면 그 값을 덧셈해서 반환 하는 과정이 항상 같다. 그리고 이 함수를 호출함에 따라 외부의 변수 또는 하수 등의 상태 변화를 일으키지 않아 순수 함수의 조건을 만족시키므로 위의 코드의 함수는 순수 함수라고 부를 수 있다.

var num3 = 10
fun sum(num1: Int, num2: Int) = num1 + num2 + num3

다음 코드는 순수하지 않다 결과 값은 num3의 값에 따라서 변경이 되기 때문이다

fun sum(num1 : Int, num2: Int){
	num1 += 10
	return num1 + num2
}