일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 테스트
- Boot Legacy 차이점
- 개발서적
- 조영호
- 객체지향의사실과오해
- Thymeleaf
- 이펙티브코틀린
- 스터디
- 계층형아키텍처
- FP
- 클린아키텍처
- 추상화 설계
- GrokkingFunctionalProgramming
- 헥사고날아키텍처
- web
- 아키텍처
- 테스트주도개발
- 함수형프로그래밍
- TDD
- template
- 도메인 주도 개발 시작하기
- 만들면서배우는클린아키텍처
- DDD
- 책스터디
- Spring
- Kotlin
- Java
- 코틀린
- 개발방법론
- 유지보수
- Today
- Total
김동형수 개발기
Grokking Functional Programming - 2부 9장 본문
Grokking Functional Programming - 2부 9장
김동형수 2023. 1. 19. 00:319장 값 으로 스트리밍
이 장에서는 다음을 수행하는 방법을 배웁니다.
- 복잡한 프로그램 흐름을 선언적으로 설계
- 재귀와 게으름을 사용하여 일부 결정을 연기
- IO 기반 데이터 스트림 처리
- 무한한 값의 흐름 생성 및 처리
- 시간 종속 기능 분리
IO.delay 사용과 immutable map
무한한 수의 IO 호출과 관련하여 해결되지 않은 문제가 너무 많습니다. 우리는 어디서부터 시작해야할지 모를 것입니다. 따라서 대신 상향식 접근 방식을 사용 합니다.
tuple, case class를 이용
zip, drop 함수 이용
8장에서 나온 retry를 이용해서 api 호출
FP에서는 재귀를 사용하여 많은 문제를 해결합니다.
io를 반환하는 재귀함수를 선언하게되면 IO.delay가 호출되는 시점에 재귀가 실행하기 떄문에 성공할때까지 무한재귀함수가 실행된다?
게으른 평가, 재귀 및 잠재적인 무한 실행에는 공통점이 많습니다.
def lastRates(from: Currency, to: Currency, n: Int): IO[List[BigDecimal]] = {
if (n < 1) {
IO.pure(List.empty) ①
} else {
for {
currencyRate <- currencyRate(from, to)
remainingRates <- if (n == 1) IO.pure(List.empty) ①
else lastRates(from, to, n - 1)
} yield remainingRates.prepended(currencyRate)
}
}
어떤 버전을 선택하든 요소 List[BigDecimal]가 n긴 를 얻습니다. 하지만 프로그램은 무한히 실행될 수 있습니다.
데이터 스트림 소개
무한 실행 가능성과 함께 이러한 모든 특성은 일반적으로 다른 아키텍처 접근 방식인 스트림 의 사용을 암시합니다 .
FP의 스트림은 값입니다.
우리는 일하고 있었다변경할 수 없는 값을 사용하며 스트림도 예외는 아닙니다. 이 Stream유형은 두 가지 유형 매개변수를 사용합니다. 둘 다 내부에서 발생하는 일에 대해 많은 것을 설명합니다.
스트림은 재귀 값입니다.
이사하기 전에IO 처리 스트림에 대해 계속 살펴보겠습니다. 기본 값 스트림을 더 많이 사용하고 친숙한 FP 기술을 사용하여 이를 처리하는 방법을 알아보겠습니다.
스트림은 애플리케이션에서 문제를 분리하는 데 도움이 됩니다.
수많은 stream함수가 나온다.. map, filter, append, eval, take, orElse, sliding, zip, zipLeft, repeat (이해포기)
많은 기존 기술은 이러한 이점을 활용하려는 API를 노출합니다. FRP(Functional Reactive Programming)와 같은 용어를 접해보셨을 것입니다.), 반응형 프로그래밍 또는 반응형 API. 이러한 "반응형" API는 일반적으로 느리게 작동하는 연결기가 포함되어 있음을 의미합니다. 그것이 주류에 잠입한 FP의 힘입니다 .
'책 스터디 > [완료] FP - Grokking Funtional Programming' 카테고리의 다른 글
Grokking Functional Programming - 2부 11장 (0) | 2023.02.01 |
---|---|
Grokking Functional Programming - 2부 10장 (0) | 2023.01.26 |
Grokking Functional Programming - 2부 8장 (0) | 2023.01.11 |
Grokking Functional Programming - 2부 7장 (0) | 2023.01.04 |
Grokking Functional Programming - 2부 6장 (0) | 2022.12.21 |