๐ Railway-Oriented Programming ์ ์์๋์?
Railway-Oriented Programming ์ ์ฌ์ด๋ ์ดํํธ๋ฅผ ์ ์ดํ๊ธฐ ์ํ ํจ์ํ ํจ๋ฌ๋ค์ ๊ธฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. ์ด ๋ฐฉ๋ฒ๋ก ์ ์ฌ์ค ๋๋ฆฌ ์๋ ค์ง ๋ด์ฉ์ ์๋๋๋ค๋ง, ์ต๊ทผ ๊ธ๋ถ์ํ๊ณ ์๋ Rust ์์ try-catch ๋ฌธ๋ฒ์ ์ง์ํ์ง ์๋๋์ ROP ์ฒ ํ์ ์ผ๋ถ ๋ฐ๋ฅด๊ณ ์์ด ์์๋๋ฉด ๋์์ง ์์ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ต์ฅํ ๋จ์ํ ๋ด์ฉ์ด๊ธฐ ๋๋ฌธ์ ์ค์ ์ด ๋ฐฉ๋ฒ๋ก ์ ๋ชฐ๋ผ๋ ์ด๋ฏธ ์ฐ๊ณ ์๊ฑฐ๋ ํ๋ ์์ํฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ฅผ ํตํด ์ ํด๋ณด์ จ์ ์๋ ์์ต๋๋ค. Railway-Oriented Programming ์ ๊ฐ๋จํ๊ฒ ์์ฝํ๋ฉด, ๋ก์ง์ ์ฑ๊ณต ํน์ ์คํจ๋ก ๋๋๊ณ ๊ทธ์ ๋ฐ๋ผ ์๋ก์ด ์ ๋ก๋ฅผ ์ค์นํด์ ์ ๋ขฐํ ์ ์๋ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๋ค๋ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. Railway-Oriented Programming ์ ๋ค์๊ณผ ๊ฐ์ ์ฒ ํ์ ๋ฐ๋ฆ ๋๋ค. ๐ ๋ชจ๋ ๊ธฐ๋ฅ์ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ค. ๐ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฑ๊ณต ํน์ ์คํจ๋ก ๋๋๋ค. ๐ ํ๋ก๊ทธ๋จ์ ํจ๋์ด ๋ฐ์ํ๋ฉด ์๋๋ค. Railway-Oriented Programming ์ ์ฒ ํ์ ๋ค์ ๊ฐ๋จํ์ง๋ง ๊ทธ์ ๋ฐํด ๋ค์๊ณผ ๊ฐ์ ํฐ ์ฅ์ ์ ๊ฐ์ง๋ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. ํ๋ก๊ทธ๋๋ฐ์ ํ๊ฒ๋๋ฉด ๊ธฐ๋ฅ์ ๋ํ ์ถ์ํ๋ฅผ ๋ง์ด ํ๊ฒ ๋ ํ ๋ฐ์, Railway-Oriented Programming ์์ ๊ธฐ๋ฅ์ ์ ๋ก์ ๋น๋์ด ์ถ์ํํ๋ฉฐ ์ ๋ก๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ๋ฅ๋ค์ ๋ชจ๋ ์ฑ๊ณต ํน์ ์คํจ๋ก ๋๋๊ฒ ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ธฐ๋ฅ์ ๋จ์๋ฅผ ์ฑ๊ณต๊ณผ ์คํจ๋ก ๋๋ ์ ์๋ ์ ์ ํ ํฌ๊ธฐ๋ก ๋๋๊ฒ ๋๋ฏ๋ก ๊ตฌํ๊ณผ ๋ฆฌํฉํ ๋ง ํ๋ ๊ฒ์ด ํธํด์ง๊ฒ ๋ฉ๋๋ค. ๋ํ, ๋ชจ๋ ๊ธฐ๋ฅ์ ์์ฐจ์ ์ผ๋ก ์คํํ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ์ดํดํ๊ธฐ ์ฌ์์ง๊ณ ๊ฐ๋ ์ฑ์ด ์ข์์ง๋ ์ฅ์ ์ด ์์ต๋๋ค. ๊ณต์ ๋๋ฆฐ ๊ธ์์๋ Railway-Oriented Programming ์ ๋ํ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ํ์ํ ๊ฐ๋ ๋ค์ ์์ธํ ๋ค๋ฃจ๊ณ ์์ผ๋ ๊ด์ฌ์์ผ์ ๋ถ๋ค์ ํ๋ฒ ๋ณด์๋ฉด ์ข๊ฒ ์ต๋๋ค. ๐ ์๋ฌธ ๋งํฌ: https://kciter.so/posts/railway-oriented-programming