4장 함수형 프로그래밍
코틀린 쿡북 4장을 요약한 내용 입니다.
알고리즘에서 fold 사용하기
inline fun <R> Iterable<T>.fold(
initial: R,
operationL (acc: R, T) -> R
): R// 초기값이 0이고 2개의 인자를 받는 람다 함수를 제공한다.
fun sum(vararg nums: Int) =
nums.fold(0) {acc, n -> acc + n }// 구현한 sum 함수의 결과를 intArray에 정의된 sum 함수와 비교해보자
@Test
fun `sum using fold`() {
val numbers = intArrayOf(3, 1, 4, 1, 5 ,9)
assertEquals(numbers.sum(), sum(*numbers)) // true
}재귀 연산으로 표현된 팩토리얼을 fold를 사용한 반복 연산과 비교해보자
fold를 사용해서 피보나치 수 계산하기
reduce 함수를 사용해 축약하기
reduce를 잘못된 방법으로 사용하는 상황이 있다.
꼬리 재귀 적용하기
tailrec 변경자를 적용할 수 있는 함수의 자격 요건
Last updated