3.0 Generator:Iterator:LISP = IP:OOP:FP

이터레이터 생성 방식의 다양화

3.1 코드가 곧 데이터 - 로직이 담긴 리스트

<aside> 💡

명령형 코드를 리스트 프로세싱 함수로 대체함으로써 더 읽기 쉽고 유지보수하기 좋은 코드를 작성해보자.

</aside>

3.1.1. [for, i++, if, break] - 코드를 리스트로 생각하기

함수형 프로그래밍에서는 코드가 곧 데이터고 데이터가 곧 코드인 특성을 사용하여 더 읽기 쉽고 유지보수하기 좋은 코드를 작성할 수 있다.

리스트 프로세싱: 명령형에서 함수형으로 리팩토링

n개의 홀수를 제곱하여 모두 더하는 함수

function sumOfSquaresOfOddNumbers(limit: number, list: number[]): number {
    let acc = 0
    for (const a of list) {
        if (a % 2 === 1) {
            const b = a * a
            acc += b
            if (--limit === 0) break
        }
    }
    return acc
}

console.log(sumOfSquaresOfOddNumbers(3, [1,2,3,4,5,6,7,8,9]))

if를 filter로 대체