함수형 프로그래밍

OneTwoThree·2022년 7월 25일
0

부스트코스 코틀린

목록 보기
3/26

글이 너무 길면 임시저장이 안되서 글을 분리했다.

[부스트코스]함수형 프로그래밍

순수함수

부작용이 없는 함수 : 부작용 = 같은 인자를 넣었는데 반환값이 다른 것

  • 같은 인자에 대해 항상 같은 값을 반환한다
  • 함수 외부의 어떤 상태도 바꾸지 않는다
fun sum(a:Int, b:Int):Int{
    return a+b
}

sum은 인자로 같은 a,b를 받으면 같은 값을 반환하고 외부의 어떤 상태도 바꾸지 않는 순수함수다.

람다식

이름이 없는 함수

{x,y -> x+y}

{인자,인자... -> 반환값} 의 형태로 정의한다.

일급 객체

  • 함수의 인자로 전달할 수 있다
  • 함수의 반환값에 사용할 수 있다
  • 변수에 담을 수 있다

Kotlin에서는 함수가 일급 객체이다.

고차함수

  • 다른 함수를 인자로 사용하거나 반환하는 함수
package chap4.section1

fun main() {
    val res = highLevelFunc(10,20) {x,y->x+y}
    println(res)
}

fun highLevelFunc(a:Int, b:Int, sum : (Int,Int)->Int) : Int{
    return sum(a,b)
}

highLevelFunc는 Int형 매개변수 a,b와 sum 함수를 매개변수로 갖는다.
함수 매개변수 이름 : (매개변수 자료형, 자료형.. ) -> 반환형) 의 형태로 정의한다.

고차함수를 정의할 때 매개변수에 함수를 이용하면 함수를 맨 뒤에 위치하는 것이 바람직하다. 이렇게 정의하면 main에서 함수를 호출할 때 다른 인자들은 () 에 넣고 람다식만 {}로 빼서 뒷 부분에 작성할 수 있다.

함수형 프로그래밍

함수형 프로그래밍은 순수 함수를 조합해 상태 데이터 변경이나 부작용이 없는 루틴을 만들어 내며 람다식을 이용해 함수를 변수처럼 매개변수, 인자, 반환값에 사용하는 고차함수를 이용해 생산성을 높인 프로그래밍 방식

  • 프로그램을 모듈화 해 디버깅, 테스트가 쉬움
  • 간략한 표현식을 사용해 생산성이 높음
  • 람다식, 고차함수를 이용해 다양한 함수 조합 가능

0개의 댓글