ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ JavaScript ES6+
ES6+์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ธ ์ ์๋ ๊ฐ์์ ๋๋ค. ์ด ๊ฐ์ข์์๋ ES6+์ ์ดํฐ๋ฌ๋ธ/์ดํฐ๋ ์ดํฐ/์ ๋๋ ์ดํฐ ํ๋กํ ์ฝ์ ์์ธํ ๋ค๋ฃจ๊ณ ์์ฉํฉ๋๋ค. ์ดํฐ๋ฌ๋ธ์ ๊ธฐ๋ฐ์ผ๋กํ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ, map/filter/reduce, ํ์ดํ๋ผ์ธ, ์ ๋๋ ์ดํฐ๋ฅผ ํตํ ์ง์ฐ ํ๊ฐ, Promise ํฉ์ฑ, ๋์์ฑ/๋ณ๋ ฌ์ฑ, async/await์ ๋น๋๊ธฐ ์๋ฌ ํธ๋ค๋ง ๋ฑ์ ๋ฐฐ์ธ ์ ์์ต๋๋ค. ์ด ๊ฐ์ข๋ฅผ ์ต๋ํ๊ณ ์ฐ์ตํ์ฌ ์ค๊ธ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์๋ก ์ฑ์ฅํ์ธ์!
์๊ฐ์ 5,562๋ช
๋์ด๋ ์ด๊ธ
์๊ฐ๊ธฐํ ๋ฌด์ ํ

ใ์ฝํ๋ฆฐ ๋ฉํฐํจ๋ฌ๋ค์ ์ดํฐ๋ ์ด์ ใ์ ใ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐใ์ ๋ถ๋ก์ผ๋ก, ๋ณธ์์ ์ผ๋ถ ๋ด์ฉ์ ์ฝํ๋ฆฐ ์ธ์ด์ ํนํํ์ฌ ํ์ด๋ธ ์๋ฃ์ ๋๋ค. ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ์ ํน์ ์ธ์ด์ ๊ตญํ๋์ง ์๋ ์ธ์ด ๋ ๋ฆฝ์ ์ธ ๊ฐ๋ ์ผ๋ก, ํ๋์ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ๋ก ์ด์ ๊ธฐ์ ์ ๋๋ค.
๋ณด๋ฌ๊ฐ๊ธฐ: https://github.com/marpple/kotlin-multi-paradigm-iteration
ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค์ ์ดํฐ๋ ์ด์ (Iteration)์ ๋ํด ๊ฐ์ฒด ์งํฅ, ํจ์ํ, ๋ช ๋ นํ ๊ฐ๋ ์ ํตํฉํ๊ณ , ์ด๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ๋์ํ๊ฒ ํ๋ ๊ท์ฝ์ ์ ๊ณตํฉ๋๋ค. ใ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐใ์์๋ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ค์ฌ์ผ๋ก ํจ์ํยท๋ช ๋ นํยท๋ฆฌ์คํธ ํ๋ก์ธ์ฑยท๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์กฐํฉํด ํ์ฉํ๋ ์ฌ๋ก๋ค์ ์ดํด๋ดค์ต๋๋ค. ์ด๋ฒ์๋ ๋ฉํฐํจ๋ฌ๋ค์ ์ธ์ด์ธ ์ฝํ๋ฆฐ(Kotlin)์ ๋ฉํฐํจ๋ฌ๋ค์ ์ดํฐ๋ ์ด์ ์ ์ค์ฌ์ผ๋ก ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์์ฉ ๋ฅ๋ ฅ์ ๋์ฑ ํ์ฅํด๋ณด๊ณ ์ ํฉ๋๋ค.
์ฝํ๋ฆฐ์ ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค. ์ค๋ผ์ผ๋ฆฌ ๋ฏธ๋์ด์ ๋ถ์ฌ์ฅ์ด์ ์ฌ๋ฌ ๊ธฐ์ ์์ ์ ์ ์์ธ ๋ง์ดํฌ ๋ฃจํค๋ฐ์ค๋ ์ต๊ทผ ๊ทธ์ ๊ธ์์ "์ฐ๋ฆฌ๋ ํจ์ํ, ๊ฐ์ฒด ์งํฅ, ๋ช ๋ นํ ํจ๋ฌ๋ค์์ ์ ๊ณตํ๋ ๋ฉํฐํจ๋ฌ๋ค์ ์ธ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฒ์ ๋ํด ๋ฐฐ์์ผ ํ๋ค"๋ฉด์ "๋ง์ ํด๋ค์ด ๊ฐ์ ๋์๊ณ ์ด์ ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ ์ ์ฌ์ฉํ ์ง๋ฅผ ๋ฐฐ์ธ ์ฐจ๋ก๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ ์ค๋ซ๋์ ๊ฐ๊ฐ ํน๋ณํ ๊ณ ์ ํ๊ณ ์ฌ์ง์ด ๊ฐ๋ฑ ์์ ์๋ ํจ๋ฌ๋ค์๋ค์ ์์ด์ผ ํ ๋๋ค"๋ผ๊ณ ํ์ต๋๋ค.
์ด๋ฌํ ํ๊ฒฝ์ด ๊ฐ์ถฐ์ง ์ง๊ธ, ์ด๋ ํ์ชฝ ํจ๋ฌ๋ค์๋ง ์ฌ์ฉํ๋ ๊ฒ์ ์ด์ฉ๋ฉด ํฐ ๊ธฐํ๋ฅผ ๋์น๋ ๊ฒ์ผ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ํด๊ฒฐํด์ผ ํ๋ ๋ฌธ์ ์ค์๋ ํจ์ํ์ผ๋ก ํด๊ฒฐํ๋ ๊ฒ์ด ์ฐ์ธํ ๊ฒฝ์ฐ๊ฐ ์๊ณ , ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํด๊ฒฐํ๋ ๊ฒ์ด ๋ ์ฐ์ธํ ๊ฒฝ์ฐ๋ค๋ ์์ต๋๋ค. ํ๋ก๊ทธ๋๋จธ๋ค์ ์ด์ ๋ ์ด์ ํจ์ํ์ด ์ข์์ง, ๊ฐ์ฒด ์งํฅ์ด ์ข์์ง, ์ ์ ํ์ ์ด ์ข์์ง, ๋์ ํ์ ์ด ์ข์์ง ๋ ผ์ํ ํ์๊ฐ ์์ต๋๋ค. ์ธ์ด๋ฅผ ๋ง๋ค๊ณ ํ์ค์ ์ ์ํ๋ ๋จ์ฒด์ ๊ธฐ์ ๋ค์ด ์ด๋ฏธ ํ๋์ ์ธ์ด์ ํ๋ซํผ์์ ์ฌ๋ฌ ํจ๋ฌ๋ค์์ ์ง์ํ๋๋ก ๋ง๋ค์ด์ฃผ์๊ณ , ์ฐ๋ฆฌ๋ ํ๋์ ํ๋ก์ ํธ, ์ฌ์ง์ด๋ ํ๋์ ํจ์ ์์์๋ ์ฌ๋ฌ ํจ๋ฌ๋ค์์ ์กฐํฉํ์ฌ ํ๋ก๊ทธ๋๋ฐํ ์ ์๊ฒ ๋์์ต๋๋ค.
์ฝํ๋ฆฐ์ Iterable, Iterator, Sequence, Flow, Channel ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ํตํด ์ง์ฐ ํ๊ฐ(lazy evaluation)์ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์ ๊ตํ๊ณ ์ ์ฐํ๊ฒ ๋ค๋ฃฐ ์ ์๋ค๋ ์ ์ด ํน์ง์ ๋๋ค. ์ฌ๊ธฐ์ ํ์ฅ ํจ์์ ํ๋ถํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฌํผ ํจ์๊ฐ ๊ฒฐํฉ๋์ด, ๋จ์ํ ๋ฆฌ์คํธ ์ํ ์ด์์ ๋ค์ํ ํจํด์ ๋์ฑ ๊ฐ๊ฒฐํ๊ฒ ํํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด๋ ๋์ ์์ค์ ๋ฆฌ์คํธ ํ๋ก์ธ์ฑ์ ์คํํ ์ ์์ต๋๋ค. ์ฝํ๋ฆฐ ํน์ ์ ์ ๊ตํ๊ฒ ๋ง๋ฌผ๋ฆฐ ๊ตฌ์กฐ์ ์ ์ฐํ ํ์ฅ์ฑ, ํ๋ถํ ํธ์ ๊ธฐ๋ฅ๋ค์ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์์๊ฒ ๋ง์ ์๊ฐ๊ณผ ์ฆ๊ฑฐ์์ ์๊ฒจ์ค๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ผ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ถฉ๋ถํ ํ์ฉํ์ง ๋ชปํ๊ณ ์๋ค๋ฉด, ์ฝํ๋ฆฐ ํ๋ก๊ทธ๋๋ฐ์ด ์ฃผ๋ ์ฆ๊ฑฐ์์ ์จ์ ํ ๋๋ฆฌ๊ณ ์์ง ๋ชปํ ๊ฒ์ผ์ง๋ ๋ชจ๋ฆ ๋๋ค.
ใ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐใ์ ๋ถ๋ก ์ปจํ ์ธ ์ธ ใ์ฝํ๋ฆฐ ๋ฉํฐํจ๋ฌ๋ค์ ์ดํฐ๋ ์ด์ ใ์์๋ ใ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐใ์ ์ผ๋ถ ๋ด์ฉ์ ์ฝํ๋ฆฐ ์ดํฐ๋ฌ๋ธ, ์ดํฐ๋ ์ดํฐ, ์ํ์ค๋ฅผ ๊ฐ์ฒด ์งํฅยทํจ์ํยท๋ช ๋ นํ ํจ๋ฌ๋ค์์ ์ฐ๊ฒฐํ๋ ๊ด์ ์ผ๋ก ํ์ด๋ ๋๋ค. ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์ค๊ณ๋ ์ดํฐ๋ ์ดํฐ์ ๋ช ๋ นํ ์คํ์ผ๋ก ์์ฑํ๋ ์ํ์ค์ ๊ด๊ณ๋ฅผ ์์๋ณด๊ณ , ํจ์ํ ํ์ฅ ํจ์๋ก ์ํ์ค์ด์ ์ดํฐ๋ ์ดํฐ์ธ ๊ฐ์ฒด๋ฅผ ๋ค๋ฃจ๋ ์ฝ๋๋ฅผ ์ดํด๋ด ๋๋ค. ๋ํ ํจ์ํ ํ์ฅ ํจ์๋ก ์ฐ์ฐ์ ์์ ์ํ์ค๋ฅผ ๋ช ๋ นํ์ผ๋ก ๋ค๋ฃจ์๋ค๊ฐ ๋ค์ ํจ์ํ์ผ๋ก ์ ํํ๋ฉด์, ์ฝํ๋ฆฐ ์ดํฐ๋ ์ด์ ์ด ์ง๋ ํจ๋ฌ๋ค์ ์ ํ ๋ฅ๋ ฅ์ ํ์ธํด๋ด ๋๋ค.
์์ธ๋ฌ ์ํ์ค์ ์ดํฐ๋ ์ดํฐ์ ์ง์ฐ ํ๊ฐ๋ฅผ ๊น์ด ํ์ ํ๊ณ , LISP์ ์ฒ ํ์ ์ฐจ์ฉํด ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ์ตํฉํ๋ ์๊ฐ์ ํ๊ตฌํ๋ฉฐ, ์ด๋ฌํ ๊ธฐ๋ฒ๋ค์ ์ค์ ์์ฉ๋ ฅ์ ๋์ด๋ ๋ด์ฉ๋ ๋ค๋ฃน๋๋ค. ๋ํ ์ ์ฐํ๊ณ ๊ฒฌ๊ณ ํ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๊ณ ํจ์จ์ ์ด๋ฉฐ ์ ํํ๊ณ ์์ ํ๊ฒ ๋์ํ๋ ์ฝ๋๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ํ๊ตฌํ๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ฉํฐํจ๋ฌ๋ค์ ์ธ์ด ์ฝํ๋ฆฐ์ ๋ค์ํ ๊ฐ๋ฅ์ฑ์ ์ค๊ฐํ๊ณ , ์ํํธ์จ์ด ๊ณตํ๊ณผ ํ๋ก๊ทธ๋๋ฐ์ ์ฆ๊ฑฐ์์ ํ์ธต ๊น์ด ๋๋ฆด ์ ์๋ ๊ณ๊ธฐ๊ฐ ๋๊ธธ ๋ฐ๋๋๋ค.์ด๋ฒ์ ์ ํฌ ํ์ฌ ๊ฐ๋ฐ์ ์ด๋ํ ๋, ์กฐํ์ฐ๋์ด ํ์ ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ ํจ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ fxts๋ฅผ ๋ง๋ค์ด ๊ณต๊ฐํ์ต๋๋ค.
๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๋ณด๋ค ํ์ ์ถ๋ก ์ด ์๋๊ณ , ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ด ์ฝ๊ณ , ํ์ค ECMAScript์ ๋ฑ ๋ง๊ณ , ์๋ฌ ํธ๋ค๋ง์ ์ ๋ฆฌํฉ๋๋ค!
์๋ fxts ์ฌ์ดํธ์ ๊ฐ์ ์ ์ด๋ค ์ปจ์ ๊ณผ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํด์ฃผ์๊ณ , ๊นํ์ ๋ฐฉ๋ฌธํ์ ์ ๋ํ๋๊ณผ ํ์ฐ๋์ ์ฝ๋ ๋ ธํ์ฐ๋ ํ์ธํด๋ด์ฃผ์๊ณ , ์ฌ๋์ ์ค์ ์ ๋ง์ ๊ธฐ์ ๋ ธํ์ฐ ์ด์ผ๊ธฐ ๋๋ ์ ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค!!
Github: https://github.com/marpple/fxts
Site: https://fxts.dev
Slack: https://join.slack.com/t/fx-ts/shared_invite/zt-yw1x81zq-pNa8nM40X6mQAsu2L4m1Fw
์๋ ํ์ธ์.
ํจ์ํ ES6+์ ํ์ํธ์ธ ์์ฉํธ ๊ฐ์ข๋ฅผ ์คํํ์ด์. 6์ 18์ผ๊น์ง ํ ์ธ ์ค์ด์์.
https://www.inflearn.com/course/ํจ์ํ_ES6_์์ฉํธ
ํจ์ํ ES6+ 3ํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃฐ ์์ ์ ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
์๋ ํ์ธ์. ์ ์ธ๋์ ๋๋ค.
์ ๊ฐ์๋ฅผ ๋ค์ด์ฃผ์ ์ฌ๋ฌ๋ถ ์ ๋ง ๊ณ ๋ง์ต๋๋ค.
์ ๊ฐ ์ง๊ธ๊น์ง ๋ ํธ์ ๊ฐ์๋ฅผ ๋ง๋ค์๋๋ฐ์.
1. ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์๋ณด๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ (๋ฌด๋ฃ)
- https://www.inflearn.com/course/ํจ์ํ-ํ๋ก๊ทธ๋๋ฐ
2. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ JavaScript ES6+
- https://www.inflearn.com/course/functional-es6
์ด ๋ฒ์ ํ์ ํธ์ธ 'ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ JavaScript ES6+ ์์ฉํธ'์ ์ ์ํ๊ฒ ๋์์ต๋๋ค.
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ด๋ป๊ฒ ์์ฉํ๊ณ , ์ดํฐ๋ฌ๋ธ ํ๋ก๊ทธ๋๋ฐ์ ์ด๋๊น์ง ์ธ ์ ์๋์ง ๋ค์ํ๊ฒ ์ค๋นํ์ผ๋ ๋ง์ ๊ด์ฌ ๋ถํ๋๋ฆฝ๋๋ค.
ํ์ฌ 6๊ฐ์ ์น์ ๊น์ง ์์ฑ ๋์์ด์.
๋ฏธ๋ฆฌ ๊ตฌ๊ฒฝํ๊ณ ์ถ์ผ์ ๋ถ์ ์ฝ๋๋ ๋ณด์ค ์ ์์ต๋๋ค.
https://github.com/indongyoo/functional-javascript-02
์ ์์ด ์๋ฃ๋๋๋๋ก ๋ ๊ณต์ง๋๋ฆฌ๋๋ก ํ ๊ป์.
๊ฐ์ฌํฉ๋๋ค.






