[Clojure] ๋ฐ๋ณต๋ฌธ
ํด๋ก์ ๋ ๋๋๊ฒ๋ ๋ช ๋ นํ ์ธ์ด ์คํ์ผ์ ๋ฐ๋ณต๋ฌธ๋ค์ ์ง์ํ๋ค.
while๋ฌธ
๊ธฐ๋ณธ์ ์ธ ํํ์ ๋ฐ๋ณต๋ฌธ์ด๋ค.
์๋์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
(while (์กฐ๊ฑด์)
**ย ย ย (do**
**ย ย ย ย ย ย ย ํํ์๋ค...**
**ย ย ย )**
)
์กฐ๊ฑด์์์ ๋ฐ๋ณต ์กฐ๊ฑด์ ๋ช
์ํ ์๋จ์, ๋ณดํต ์ํฐ ๋ณ์๋ฅผ ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต๋ฌธ์ ๋ฐํ๊ฐ์ผ๋ก nil์ ๋ฑ๋๋ค.
์๋ ์ฝ๋๋ ๊ฐ๋จํ ์์๋ค.


doseq๋ฌธ
๋ฒ์๊ธฐ๋ฐ ๋ฐ๋ณต๋ฌธ์ด๋ค.
๋ฐฐ์ด์ด๋ ๋ฆฌ์คํธ ๋ฑ์ ์ํ์ค ๊ฐ์ ๋ฐ๊ณ , ๊ทธ ์์๋ฅผ ์ํํ๋ฉด์ ๊ตฌ๋ฌธ์ ์ํํ๋ค.
์๋์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
(doseq [์ํ๋ณ์ ์ํ์ค๊ฐ]
**ย ย ย (ํํ์)**
)
์๋ ์ฝ๋๋ ๊ฐ๋จํ ์์๋ค.


dotimes๋ฌธ
๊ต์ฅํ ๋จ์ํ๋ ๋ฐ๋ณต๋ฌธ์ด๋ค.
๋ฐ๋ณต ํ์๋ฅผ ์ ์๋ก ๋ฐ๊ณ , ๋ฑ ๊ทธ๋งํผ๋ง ๋๋ค.
(dotimes [ํ์ฌํ์ ๋ฐ๋ณตํ์๊ฐ]
**ย ย ย (ํํ์)**
)
์๋๋ ์์ ์ฝ๋๋ฅผ ๋์ฑ ๋จ์ํํ ์ฝ๋๋ค.


loop๋ฌธ
๋ฃจํ๋ ๋ฃจํ์ธ๋ฐ ์ฌ๊ท ํ์์ ๊ธฐ๊ดดํ ๋ฃจํ๋ค.
์์์๋ง ์ฌ์ฉํ ๋ฐ๋ณต์ฉ ๋ณ์๋ฅผ ์์ฑํ๊ณ , ์ฌ๊ท์์ ํธ์ถํด์ ๋ณํ์ํค๋ฉฐ ๋ฐ๋ณต์ ์ํํ๋ค.
๋์ถฉ ์ด๋ฐ์์ผ๋ก ์ธ ์ ์๋ค.
(loop [๋ณ์๋ช
๊ฐ]
**ย ย ย ํํ์๋ค...**
)
๊ทผ๋ฐ ์ด๊ฑด ๋ฐ๋ณต์ ์ง์ํ๋ ค๋ฉด recur ํจ์๋ฅผ ํธ์ถํ๋ฉฐ loop์์ ๋ฐ์ธ๋ฉํ ๋ณ์๋ฅผ ๋ณํ์์ผ์ผ ํ๋ค.
๊ทธ๋์ ๋ณดํต when ์กฐ๊ฑด์ ์ ํจ๊ป ์ฌ์ฉํ๋ค.
์ด๋ฐ์์ผ๋ก ๋ง์ด๋ค.

์ด๋ฌ๋ฉด i๊ฐ 5๊ฐ ๋๊ธฐ ์ ๊น์ง๋ง recur๋ฅผ ์ํํ๋ฉฐ ๋ฐ๋ณต์ ์ง์ํ๋ค.
๊ทธ๋ฅ ์ฌ๊ทํจ์
ํด๋ก์ ๋ ํจ์ํ ์ธ์ด์ด๋ฏ๋ก, ๋น์ฐํ ์ฌ๊ทํธ์ถ์ ์ฌ์ฉํ ์ ์๋ค.


์ฐธ์กฐ
https://www.tutorialspoint.com/clojure/clojure_while_statement.htm
https://www.tutorialspoint.com/clojure/clojure_doseq_statement.htm
https://www.tutorialspoint.com/clojure/clojure_dotimes_statement.htm
https://www.tutorialspoint.com/clojure/clojure_loop_statement.htm