ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ JavaScript ES6+ ์์ฉํธ
์ด ๊ฐ์ข๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ JavaScript ES6+์ ์๋ฆฌ์ฆ ๊ฐ์ข๋ก ๋ค์ํ ์์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃน๋๋ค.
์๊ฐ์ 3,348๋ช
๋์ด๋ ์ค๊ธ์ด์
์๊ฐ๊ธฐํ ๋ฌด์ ํ

ใ์ฝํ๋ฆฐ ๋ฉํฐํจ๋ฌ๋ค์ ์ดํฐ๋ ์ด์ ใ์ ใ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐใ์ ๋ถ๋ก์ผ๋ก, ๋ณธ์์ ์ผ๋ถ ๋ด์ฉ์ ์ฝํ๋ฆฐ ์ธ์ด์ ํนํํ์ฌ ํ์ด๋ธ ์๋ฃ์ ๋๋ค. ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ์ ํน์ ์ธ์ด์ ๊ตญํ๋์ง ์๋ ์ธ์ด ๋ ๋ฆฝ์ ์ธ ๊ฐ๋ ์ผ๋ก, ํ๋์ ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ๋ก ์ด์ ๊ธฐ์ ์ ๋๋ค.
๋ณด๋ฌ๊ฐ๊ธฐ: https://github.com/marpple/kotlin-multi-paradigm-iteration
ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค์ ์ดํฐ๋ ์ด์ (Iteration)์ ๋ํด ๊ฐ์ฒด ์งํฅ, ํจ์ํ, ๋ช ๋ นํ ๊ฐ๋ ์ ํตํฉํ๊ณ , ์ด๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ๋์ํ๊ฒ ํ๋ ๊ท์ฝ์ ์ ๊ณตํฉ๋๋ค. ใ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐใ์์๋ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ค์ฌ์ผ๋ก ํจ์ํยท๋ช ๋ นํยท๋ฆฌ์คํธ ํ๋ก์ธ์ฑยท๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์กฐํฉํด ํ์ฉํ๋ ์ฌ๋ก๋ค์ ์ดํด๋ดค์ต๋๋ค. ์ด๋ฒ์๋ ๋ฉํฐํจ๋ฌ๋ค์ ์ธ์ด์ธ ์ฝํ๋ฆฐ(Kotlin)์ ๋ฉํฐํจ๋ฌ๋ค์ ์ดํฐ๋ ์ด์ ์ ์ค์ฌ์ผ๋ก ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์์ฉ ๋ฅ๋ ฅ์ ๋์ฑ ํ์ฅํด๋ณด๊ณ ์ ํฉ๋๋ค.
์ฝํ๋ฆฐ์ ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค. ์ค๋ผ์ผ๋ฆฌ ๋ฏธ๋์ด์ ๋ถ์ฌ์ฅ์ด์ ์ฌ๋ฌ ๊ธฐ์ ์์ ์ ์ ์์ธ ๋ง์ดํฌ ๋ฃจํค๋ฐ์ค๋ ์ต๊ทผ ๊ทธ์ ๊ธ์์ "์ฐ๋ฆฌ๋ ํจ์ํ, ๊ฐ์ฒด ์งํฅ, ๋ช ๋ นํ ํจ๋ฌ๋ค์์ ์ ๊ณตํ๋ ๋ฉํฐํจ๋ฌ๋ค์ ์ธ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฒ์ ๋ํด ๋ฐฐ์์ผ ํ๋ค"๋ฉด์ "๋ง์ ํด๋ค์ด ๊ฐ์ ๋์๊ณ ์ด์ ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ ์ ์ฌ์ฉํ ์ง๋ฅผ ๋ฐฐ์ธ ์ฐจ๋ก๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ ์ค๋ซ๋์ ๊ฐ๊ฐ ํน๋ณํ ๊ณ ์ ํ๊ณ ์ฌ์ง์ด ๊ฐ๋ฑ ์์ ์๋ ํจ๋ฌ๋ค์๋ค์ ์์ด์ผ ํ ๋๋ค"๋ผ๊ณ ํ์ต๋๋ค.
์ด๋ฌํ ํ๊ฒฝ์ด ๊ฐ์ถฐ์ง ์ง๊ธ, ์ด๋ ํ์ชฝ ํจ๋ฌ๋ค์๋ง ์ฌ์ฉํ๋ ๊ฒ์ ์ด์ฉ๋ฉด ํฐ ๊ธฐํ๋ฅผ ๋์น๋ ๊ฒ์ผ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ํด๊ฒฐํด์ผ ํ๋ ๋ฌธ์ ์ค์๋ ํจ์ํ์ผ๋ก ํด๊ฒฐํ๋ ๊ฒ์ด ์ฐ์ธํ ๊ฒฝ์ฐ๊ฐ ์๊ณ , ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํด๊ฒฐํ๋ ๊ฒ์ด ๋ ์ฐ์ธํ ๊ฒฝ์ฐ๋ค๋ ์์ต๋๋ค. ํ๋ก๊ทธ๋๋จธ๋ค์ ์ด์ ๋ ์ด์ ํจ์ํ์ด ์ข์์ง, ๊ฐ์ฒด ์งํฅ์ด ์ข์์ง, ์ ์ ํ์ ์ด ์ข์์ง, ๋์ ํ์ ์ด ์ข์์ง ๋ ผ์ํ ํ์๊ฐ ์์ต๋๋ค. ์ธ์ด๋ฅผ ๋ง๋ค๊ณ ํ์ค์ ์ ์ํ๋ ๋จ์ฒด์ ๊ธฐ์ ๋ค์ด ์ด๋ฏธ ํ๋์ ์ธ์ด์ ํ๋ซํผ์์ ์ฌ๋ฌ ํจ๋ฌ๋ค์์ ์ง์ํ๋๋ก ๋ง๋ค์ด์ฃผ์๊ณ , ์ฐ๋ฆฌ๋ ํ๋์ ํ๋ก์ ํธ, ์ฌ์ง์ด๋ ํ๋์ ํจ์ ์์์๋ ์ฌ๋ฌ ํจ๋ฌ๋ค์์ ์กฐํฉํ์ฌ ํ๋ก๊ทธ๋๋ฐํ ์ ์๊ฒ ๋์์ต๋๋ค.
์ฝํ๋ฆฐ์ Iterable, Iterator, Sequence, Flow, Channel ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ํตํด ์ง์ฐ ํ๊ฐ(lazy evaluation)์ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ์ ๊ตํ๊ณ ์ ์ฐํ๊ฒ ๋ค๋ฃฐ ์ ์๋ค๋ ์ ์ด ํน์ง์ ๋๋ค. ์ฌ๊ธฐ์ ํ์ฅ ํจ์์ ํ๋ถํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฌํผ ํจ์๊ฐ ๊ฒฐํฉ๋์ด, ๋จ์ํ ๋ฆฌ์คํธ ์ํ ์ด์์ ๋ค์ํ ํจํด์ ๋์ฑ ๊ฐ๊ฒฐํ๊ฒ ํํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด๋ ๋์ ์์ค์ ๋ฆฌ์คํธ ํ๋ก์ธ์ฑ์ ์คํํ ์ ์์ต๋๋ค. ์ฝํ๋ฆฐ ํน์ ์ ์ ๊ตํ๊ฒ ๋ง๋ฌผ๋ฆฐ ๊ตฌ์กฐ์ ์ ์ฐํ ํ์ฅ์ฑ, ํ๋ถํ ํธ์ ๊ธฐ๋ฅ๋ค์ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์์๊ฒ ๋ง์ ์๊ฐ๊ณผ ์ฆ๊ฑฐ์์ ์๊ฒจ์ค๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ผ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ถฉ๋ถํ ํ์ฉํ์ง ๋ชปํ๊ณ ์๋ค๋ฉด, ์ฝํ๋ฆฐ ํ๋ก๊ทธ๋๋ฐ์ด ์ฃผ๋ ์ฆ๊ฑฐ์์ ์จ์ ํ ๋๋ฆฌ๊ณ ์์ง ๋ชปํ ๊ฒ์ผ์ง๋ ๋ชจ๋ฆ ๋๋ค.
ใ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐใ์ ๋ถ๋ก ์ปจํ ์ธ ์ธ ใ์ฝํ๋ฆฐ ๋ฉํฐํจ๋ฌ๋ค์ ์ดํฐ๋ ์ด์ ใ์์๋ ใ๋ฉํฐํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐใ์ ์ผ๋ถ ๋ด์ฉ์ ์ฝํ๋ฆฐ ์ดํฐ๋ฌ๋ธ, ์ดํฐ๋ ์ดํฐ, ์ํ์ค๋ฅผ ๊ฐ์ฒด ์งํฅยทํจ์ํยท๋ช ๋ นํ ํจ๋ฌ๋ค์์ ์ฐ๊ฒฐํ๋ ๊ด์ ์ผ๋ก ํ์ด๋ ๋๋ค. ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์ค๊ณ๋ ์ดํฐ๋ ์ดํฐ์ ๋ช ๋ นํ ์คํ์ผ๋ก ์์ฑํ๋ ์ํ์ค์ ๊ด๊ณ๋ฅผ ์์๋ณด๊ณ , ํจ์ํ ํ์ฅ ํจ์๋ก ์ํ์ค์ด์ ์ดํฐ๋ ์ดํฐ์ธ ๊ฐ์ฒด๋ฅผ ๋ค๋ฃจ๋ ์ฝ๋๋ฅผ ์ดํด๋ด ๋๋ค. ๋ํ ํจ์ํ ํ์ฅ ํจ์๋ก ์ฐ์ฐ์ ์์ ์ํ์ค๋ฅผ ๋ช ๋ นํ์ผ๋ก ๋ค๋ฃจ์๋ค๊ฐ ๋ค์ ํจ์ํ์ผ๋ก ์ ํํ๋ฉด์, ์ฝํ๋ฆฐ ์ดํฐ๋ ์ด์ ์ด ์ง๋ ํจ๋ฌ๋ค์ ์ ํ ๋ฅ๋ ฅ์ ํ์ธํด๋ด ๋๋ค.
์์ธ๋ฌ ์ํ์ค์ ์ดํฐ๋ ์ดํฐ์ ์ง์ฐ ํ๊ฐ๋ฅผ ๊น์ด ํ์ ํ๊ณ , LISP์ ์ฒ ํ์ ์ฐจ์ฉํด ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ์ตํฉํ๋ ์๊ฐ์ ํ๊ตฌํ๋ฉฐ, ์ด๋ฌํ ๊ธฐ๋ฒ๋ค์ ์ค์ ์์ฉ๋ ฅ์ ๋์ด๋ ๋ด์ฉ๋ ๋ค๋ฃน๋๋ค. ๋ํ ์ ์ฐํ๊ณ ๊ฒฌ๊ณ ํ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๊ณ ํจ์จ์ ์ด๋ฉฐ ์ ํํ๊ณ ์์ ํ๊ฒ ๋์ํ๋ ์ฝ๋๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ํ๊ตฌํ๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ฉํฐํจ๋ฌ๋ค์ ์ธ์ด ์ฝํ๋ฆฐ์ ๋ค์ํ ๊ฐ๋ฅ์ฑ์ ์ค๊ฐํ๊ณ , ์ํํธ์จ์ด ๊ณตํ๊ณผ ํ๋ก๊ทธ๋๋ฐ์ ์ฆ๊ฑฐ์์ ํ์ธต ๊น์ด ๋๋ฆด ์ ์๋ ๊ณ๊ธฐ๊ฐ ๋๊ธธ ๋ฐ๋๋๋ค.






