본문 바로가기

IT/코틀린으로 배우는 함수형 프로그래밍

[코틀린으로 배우는 함수형 프로그래밍] 4장 고차함수 안녕하세요 남갯입니다. 함수형프로그래밍에서는 함수를 객체처럼 다룬다. 고차함수를 통해 함수를 더 유연하게 다루는 방법에 대해 알아보고 고차함수의 장점을 살펴보자. 고차함수란? 코틀린의 함수들은 함수를 인자로 받거나 반환값으로 반환하는 것이 가능하다. 코틀린에서 함수는 일급함수이기 때문. 고차함수의 조건 - 함수를 매개변수로 받는 함수 - 함수를 반환하는 함수 명령형 언어는 문제를 해결하기 위해 상태를 변경 혹은 반복문을 사용하여 단계별 정의하지만 함수형 언어에서는 문제를 해결할 때 반드시 고차 함수를 사용해야 한다. fun highOrderFunction1(func : () -> Unit) : Unit { func() } fun highOrderFunction2() : () -> Unit{ return ..
[코틀린으로 배우는 함수형 프로그래밍] 3장 재귀 fun repeat(n: Int) : Sequence = sequenceOf(n) + repeat(n) 안녕하세요 남갯입니다. 오늘은 코틀린으로 배우는 함수형 프로그래밍 3장 재귀에 대해 포스팅 해보려고합니다. 3.1 함수형 프로그래밍에서 재귀가 가지는 의미 재귀란? 재귀는 어떤 함수의 구현 내부에서 자기 자신을 호출하는 함수를 정의하는 방법을 말한다. 피보나치 수열의 경우 F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) 로 정의된다. 즉 매번 호출된 자기자신을 통해 다음의 식들을 호출했기 때문에 이 점화식은 재귀이다. 피보나치를 통한 DP private fun fiboDynamic(n: Int, fibo: IntArray): Int { fibo[0] = 0 fibo[1] =..
[코틀린으로 배우는 함수형 프로그래밍] 2장 코틀린으로 함수형 프로그래밍 시작하기 안녕하세요 남갯입니다. 프로퍼티 선언 val value: Int = 10 var variable : Int = 10 var value = 10 // 타입추론 val value = 10 // 타입추론 val value :Int? = null //널처리 함수 선언 fun twice(value : Int) : Int{ return value*2 } fun twice2(value : Int) : Int = value *2 fun twice3(value : Int) = value *2 함수의 매개변수가 2개인것과 기본 디폴트값을 설정 가능하다. 매개변수가 여러개일경우 특정 값에 대한 '변수명 = 5'와 같이 가능하다. 익명함수 실제 구현부를 작성하지 않고 표현하는 방식 fun sum(x: Int, y: Int, ..
[코틀린으로 배우는 함수형 프로그래밍] 1장 함수형 프로그래밍이란? 안녕하세요 남갯입니다 오늘은 코틀린으로 배우는 함수형 프로그래밍에 대해 포스팅 해보려고합니다. 1.1 함수형 프로그래밍의 특징 함수형 프로그래밍은 데이터 처리의 참조 투명성을 보장하고 상태와 가변데이터 생성을 피하는 프로그래밍의 패러다임. 특징 1. 불변성 (순수함수) 2. 참조 투명성 3. 일급함수 4. 게으른 평가 장점 1. 부수효과가 없는 프로그램을 만들 수 있어 동시형 프로그래밍에 적함 2. 복잡도가 낮아, 간결한 코드 생성 및 모듈성이 높아 유지보수에 좋다. 3. 예측성을 높여서 컴파일러가 효율적으로 실행되는 코드를 만들어준다. 1.2 순수함수한 무엇인가? 간단하게 말하자면 말그대로 함수인것이다. y = f(x) 에서 항상 동일한 x값에 대해서는 동일한 y값의 결과를 내려준다. 즉 항상 동일한 ..