[F#] ๋ฆฌ์ŠคํŠธ

[์›๋ณธ ๋งํฌ]

๋ฆฌ์ŠคํŠธ๋Š” F#์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ณตํ•ฉ ํƒ€์ž… ์ค‘ ํ•˜๋‚˜๋‹ค. ๋ฆฌ์ŠคํŠธ์˜ ๋ฆฌํ„ฐ๋Ÿด์€ ๋Œ€๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์ธ, ;๋กœ ๊ตฌ๋ถ„๋œ ์‹œํ€€์Šค๋กœ ํ‘œํ˜„๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํƒ€์ž…์€ T list์˜ ํ˜•ํƒœ๋กœ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ ‡๊ฒŒ ๋ง์ด๋‹ค. image

image

ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ํ–‰์— ๊ฑธ์ณ ์š”์†Œ๋ฅผ ์จ์ฃผ๊ณ ์‹ถ๋‹ค๋ฉด, ์„ธ๋ฏธ์ฝœ๋ก ์„ ๋บ„ ์ˆ˜ ์žˆ๋‹ค. image

image


์š”์†Œ ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ::
:: ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์— ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์—ฐ๊ฒฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
**A :: B **
์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ์š”์†Œ, ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ๋ฆฌ์ŠคํŠธ๊ณ , ๋ณ‘ํ•ฉํ•œ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.
์ค‘์ฒฉ๋œ ๋ณ‘ํ•ฉ๋ฌธ์ผ ๊ฒฝ์šฐ์—๋„ ๋งจ ์˜ค๋ฅธ์ชฝ์— ๋ฆฌ์ŠคํŠธ๊ฐ€ ๊ผญ ํ•˜๋‚˜ ์žˆ์–ด์•ผํ•œ๋‹ค. image

image


๋ฒ”์œ„ ํ‘œํ˜„์‹
๋ฆฌ์ŠคํŠธ๋Š” ๋ฒ”์œ„ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•ด์„œ ์‹œํ€€์Šค๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค. image

image


๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜
๋ฆฌ์ŠคํŠธ ๋ฆฌํ„ฐ๋Ÿด์‹์— ๋ฐ˜๋ณต๋ฌธ์„ ์‘ค์…”๋†“๊ณ , ๊ทธ๋ฅผ ํ†ตํ•ด ์‹œํ€€์Šค๊ฐ’์„ ๊ฐ€๊ณตํ•˜๊ฑฐ๋‚˜, ์„ ๋ณ„์ ์œผ๋กœ ์ถ”์ถœํ•ด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.
๋ฆฌ์ŠคํŠธ๋กœ์˜ ๊ฐ’์˜ ์‚ฝ์ž…์€ yield ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•œ๋‹ค.
์•„๋ž˜ ์ฝ”๋“œ๋Š” 1..10์— ๊ฐ๊ฐ 2๋ฅผ ๊ณฑํ•œ ๊ฐ’์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ ๋‹ค. image

image

๊ทผ๋ฐ yield๋Š” ํ•˜๋‚˜์”ฉ๋งŒ ๋ฆฌ์ŠคํŠธ๋กœ ์ง‘์–ด๋„ฃ๋Š”๋‹ค.
ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ์ง‘์–ด๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด yield!๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. image

image


๊ธฐ๋ณธ ํ”„๋กœํผํ‹ฐ, ํ•จ์ˆ˜๋“ค.
๋ฆฌ์ŠคํŠธ์—๋Š” ์ˆ˜๋งŽ์€, ์œ ์šฉํ•œ ๋ฉ”์„œ๋“œ๋“ค์ด ๋‚ด์žฅ๋˜์–ด์žˆ๋‹ค.
๊ทธ์ค‘์—์„œ๋„ ๊ฐ€์žฅ ์ž์ฃผ ์“ฐ์ด๋Š” ๊ฒƒ์ด '๋จธ๋ฆฌ'์™€ '๊ผฌ๋ฆฌ'๋‹ค. ๋จธ๋ฆฌ๋Š” ๋งจ ์•ž์˜ ์ธ์ž๋ฅผ, ๊ผฌ๋ฆฌ๋Š” ๊ทธ ๋‚˜๋จธ์ง€์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. image

image

์ด๋ฅผ ์žฌ๊ท€ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‘์šฉํ•˜๋ฉด, ์•„์ฃผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ฆฌ์ŠคํŠธ์˜ ์ˆœํ™˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. image

image

์ด์™ธ์—๋„ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋“ค์ด ๋งŽ์œผ๋‹ˆ, ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค. image

image


์ฐธ์กฐ
https://docs.microsoft.com/ko-kr/dotnet/fsharp/language-reference/lists
https://www.tutorialspoint.com/fsharp/fsharp_lists.htm