์ด์ ํ์ ๊ฒ์ฌ๊ธฐ ์ง๋ ๋ฐ์๋ ์ต์ํด์ง๊ณ ์๋๋ฐ ๊ฒ์ ์ดํ์ ํ์ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ์ฝ๋ ์์ฑ ๊ณผ์ ์์ ์ ์ฉํํ๋์ง ๋ชจ๋ฅด๊ฒ ๋ค
RanolP
@ranolp@hackers.pub ยท 36 following ยท 52 followers
FunApp
(ฮ โข ๐: Humor โ Happy, ๐ : Humor) / (๐ ๐ : Happy)
GitHub
- @RanolP
Twitter (currently X)
- @RanolP_777
๋ชจ๋ ๋ ธ๋์ ๊ณ ์ ์๋ณ์๋ฅผ ๋ถ์ฌํ๊ณ ์ธ๋ถ์ ๊ฑฐ๋ํ ํด์๋งต Expr โ Type์ ๋ง๋๋ ์๋ฐ์ ์๋?
์ด์ ํ์ ๊ฒ์ฌ๊ธฐ ์ง๋ ๋ฐ์๋ ์ต์ํด์ง๊ณ ์๋๋ฐ ๊ฒ์ ์ดํ์ ํ์ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ์ฝ๋ ์์ฑ ๊ณผ์ ์์ ์ ์ฉํํ๋์ง ๋ชจ๋ฅด๊ฒ ๋ค
Higher-Rank Polymorphism์ด ์์ด์ผ ํ๋๊ฐ์ ๋ํด ๊ณ ๋ฏผํ๋ ์ค ์์ผ๋ฉด unification ๊ตฌํ์ด ๊ท์ฐฎ์์ง๋ค๋ ๊ฑฐ ๊ฐ์๋ฐ
ํด์ปค์คํ์ ํ์ด์ง ๋งจ ์๋ก ๋ฒํผ์ด ์์ผ๋ฉด ์ข๊ฒ ๋ค
Higher-Order Abstract Syntax๊ฐ ์ ์ ์ฉํ์ง ์ดํด๋ณด๊ณ ์๋๋ฐ ์์ง์ ์ ๋ชจ๋ฅด๊ฒ ๋ค ๋ฉํ ์ธ์ด์ ๋์ ์ธ์ด๊ฐ ์๋ค๋ถํฐ ๊ธฐ๊ธฐ๋ฌ๋ฌํ๋ฐ
โ์/์ โ๊ณผ โ๋ค/ํโ์ ๋น๋์นญ์ฑ์ ํ๊ตญ์ด ํ์ต์๋ค์๊ฒ ์ง์ฅ์ ์ ์ฌํ ๊ฒ์ด๋ค.
์ฐธ๊ณ ๋ก ์ด๊ฑฐ ๋ค ๊ตญ๋ฆฝ๊ตญ์ด์์ ์๋ชป์ด ์๋๋ผ ํ๊ตญ์ด์ ์๋ชป์. ์ด๊ฑด ํ์ค๊ตญ์ด๋์ฌ์ ์ด ๊ทธ๋ฅ ํ์ค์ ๋ฐ์ํ์ ๋ฟ์ด๋ค. ์ฆ ์ด ๊ธ์ ์ฝ๊ณ ์๋ ๋น์ ๋ 0.000001% ์ ๋ ์๋ชป์ด ์๋ค.
- โ์์ผโ์ ๋ฏธ๋์ธ๋ฐ(์: ์์ผ์ ์์ธกํ๋ค), โ๋ท์ผโ๋ ๋ฏธ๋๋ค(์: ๋ท์ผ์ ๋ถํํ๋ค). ๋ง์ฃ ?
- ๋ง์ฐฌ๊ฐ์ง๋ก, โ์๊ธธโ์ ๋ฏธ๋๋ค(์: ์๊ธธ์ด ์ฐฝ์ฐฝํ ์ ์์ด). ๊ทธ๋ฐ๋ฐ โ๋ท๊ธธโ๋ ๋ฏธ๋๋ค(์: ์์์ ๋ท๊ธธ์ ์๊ฐํ๋ฉด ๊ฑฑ์ ์ด ์์ ๋ค).
- โ๋ท๋ โ๋ ๋ฏธ๋๊ณ (์: ์ฐ๋ฆฌ๋ ๋ท๋ ๋ ๋ง๋๊ฒ ๋์๋ค), โํ๋ โ๋ ๋ฏธ๋๋ค(์: ํ๋ ์ ๊ธฐ์ฝํ๋ค). ๊ทธ๋ฐ๋ฐ โ์๋ โ๋ ๋ฏธ๋๋ค(์: ์๋ ์ด ์ฐฝ์ฐฝํ๋ค). ํฌํํ๊ฒ โ์ ๋ โ๋ง ๊ณผ๊ฑฐ์ด๋ค.
- ๊ทธ๋ฐ๋ฐ โ์๋ โ์ ๊ฐํน ๊ณผ๊ฑฐ๋ฅผ ๊ฐ๋ฆฌํฌ ์๋ ์๋ค(์: ์ผ์ฐ์ด ์๋ ์ ํญ๊ตฐ์ ์์๊ณ โฆ).
- ๊ดํ์ฌํ์ โ๋คโ๋ โํโ๋ฅผ ๋ถ์ฌ์ ์์ ์ ๋ํ๋ผ ์ ์๋ค(์: โ๊ณ ์น ๋ค์ ๋ชจ์ตโ ๋๋ โ๊ณ ์น ํ์ ๋ชจ์ตโ). ๊ทธ๋ฐ๋ฐ ๋ฐ๋๋ก ํ๋ ค๋ฉด ๊ดํ์ฌํ์ด ์๋๋ผ ๋ช
์ฌํ์ ์จ์ผ ํ๋ค(์: โ๊ณ ์น๊ธฐ ์ ์ ๋ชจ์ตโ). ๊ทธ๋ฆฌ๊ณ , โ์ โ๋ง ์ธ ์ ์๋ค. โ์โ์ ์ฌ๊ธฐ์ ์์ ์ธ ์ ์๋ค.
- โํ์ผโ์ ๋ฏธ๋์ ์๋ฌด ๋ ์ด๋ ๋ค ๊ฐ๋ฆฌํค๋ฉฐ, ํน์ ํ ๋ ์ ๊ฐ๋ฆฌํฌ ์ ์๋ค. ๋ฐ๋ฉด โ์ ์ผโ์ ์ง์ , ์ฆ ์ธ์ ํ ๊ณผ๊ฑฐ์ 1์ผ๋ง ๊ฐ๋ฆฌํจ๋ค.
- ๊ทธ๋ฐ๋ฐ ๋ โ์ ๋ โ์ ์ธ์ ํ ๊ณผ๊ฑฐ์ 1์ผ์ ๊ฐ๋ฆฌํฌ ์๋ ์๊ณ , ๊ณผ๊ฑฐ์ ์๋ฌด ๋ ์ ๊ฐ๋ฆฌํฌ ์๋ ์๋ค.
- ๊ทธ๋ฐ๋ฐ ๋ โํ๋ โ์ ๋ฏธ๋์ ์๋ฌด ๋ ์ ๋ปํ๋ฉฐ, ์ธ์ ํ ๋ฏธ๋์ 1์ผ์ ๊ฐ๋ฆฌํฌ ์ ์๋ค.
- โ์ ๋
โ๊ณผ โํ๋
โ์ ๊ฐ๊ฐ ๊ณผ๊ฑฐ์ ์๋ฌด ํด, ๋๋ ๋ฏธ๋์ ์๋ฌด ํด๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ค. ๋, ๋์นญ์ธ๊ฐ?!
- ํ์ง๋ง ํน์ ํ ํด๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ, โ์ ๋
โ์ ์ธ์ ํ ๊ณผ๊ฑฐ์ ํด๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๋ฐ๋ฉด โํ๋
โ์ โ์ฌํด์ ๋ค์๋ค์ ํดโ์ด๋ค.
- โฆ๋ญ๋ผ๊ณ ? ์๋ํ๋ฉด ๋ฏธ๋์ ํด๋ค์ ์์๋๋ก โ๋ด๋
โ-โํ๋
โ-โ๋ดํ๋
โ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ฑ
์ ์์ด๋ฒ๋ฆฌ๊ณ ์ถ์ฃ ?
- ์ฐธ๊ณ ๋ก โ๋ดํ๋
โ์ ๋์์ด์์ด์ด๋ค. ์ฌํด๊ฐ 2025๋
์ด๋ผ๋ฉด ๋ดํ๋
์ 2027๋
์ ๊ฐ๋ฆฌํฌ ์๋ ์๊ณ 2028๋
์ ๊ฐ๋ฆฌํฌ ์๋ ์๋ค. (์ด๊ฒ ์ธ์ด๋?)
- โํ๋
โ์ด โ์ฌํด์ ๋ค์๋ค์ ํดโ๊ฐ ๋๋ ์ด ์๋ฆฌ๋ ์ค์ง โ๋
โ์๋ง ์ ์ฉ๋๋ค. ์๋ฅผ ๋ค์ด โํ์ผโ, โํ์ฃผโ, โํ์โ ๋ฑ์๋ ๊ทธ๋ฐ ์๋ฏธ๊ฐ ์๋ค.
- โํ์ผโ์ ๋ฏธ๋์ ์๋ฌด ๋ ์ด๋ค. ํ์ง๋ง โํ์ฃผโ์ โํ์โ์ ์ธ์ ํ ๋ฏธ๋์ ๊ฒ ํ๋๋ง ๊ฐ๋ฆฌํจ๋ค.
- โ์ ๋
โ์ ์ธ์ ํ ๊ณผ๊ฑฐ์ ํด์ด์ง๋ง, ๊ณผ๊ฑฐ์ ๋ชจ๋ ํด๋ฅผ ๋ค ๊ฐ๋ฆฌํฌ ์๋ ์๋ค(์: ์ฐ๋ฆฌ๋ ์ ๋
์ ๊ธฐ๋ก๋ค์ ๊ฒํ ํ์ฌ ๊ทธ ์ฌ๋์ ํ์ ์ ์กฐ์ฌํด ๋ณด๊ธฐ๋ก ํ๋ค).
- ๋ฐ๋ฉด โ์ ์ผโ, โ์ ์ฃผโ, โ์ ์โ์ ์ค์ง ์ธ์ ํ ๊ณผ๊ฑฐ์ ํ๋๋ง ๊ฐ๋ฆฌํฌ ์ ์๋ค.
- โ์ ๋ฌโ๊ณผ โํ๋ฌโ๋ ๋น๋์นญ์ด๋ค.
๋๋์ฒด ์ด๊ฑธ ์ด๋ป๊ฒ ๋ฐฐ์์ ์ฐ๋ผ๋ ๊ฒ์ธ์ง. ์๊ฐํด ๋ณด๋ฉด ๋๋ ์ค์ ๋ก ์ด๋ ๊ฒ ์ฐ๊ณ ์๋ค๋ ๊ฒ๋ ๊ธฐ๊ฐ ์ฐฌ๋ค.
๊ทธ๋ฐ์:
- โ์ง๋๋ โ์๋ ํน์ ํ ๋ ์ ๊ฐ๋ฆฌํค๋ ๋ป์ด ์ ํ ์๋ค. ๋ฐ๋ฉด โ์ง๋์ฃผโ, โ์ง๋๋ฌโ, โ์ง๋ํดโ๋ ๋ชจ๋ ๊ณผ๊ฑฐ์ ์ธ์ ํ ํ๋๋ง ๊ฐ๋ฆฌํจ๋ค.
- โ๋ค์ ๋ โ๊ณผ โ๋ค์๋ โ์ ์๋ฏธ๊ฐ ์์ ํ ๋ค๋ฅด๋ค. โ๋ค์๋ โ์ โ์ ํ์ฌ์ง์ง ์๋ํ ๋ฏธ๋์ ์ด๋ค ๋ โ์ด๋ค. ๋ฐ๋ผ์ ์ธ์ ํ ๋ฏธ๋์ 1์ผ์ ๊ฐ๋ฆฌํฌ ๋์๋ โ๋ค์ ๋ โ๋ง ์ธ ์ ์๋ค. (๋์ ํ ๋ชป ์ธ์ฐ์๊ฒ ์ผ๋ฉด ๊ทธ๋ฅ โ์ดํฟ๋ โ๋ก ํผ์ ํ์๋ผโฆ)
์ ๋ณด ๋ฆฌํฐ๋ฌ์ ๊ด๋ จ ์๊ฒฌ์ ๋ณด์กดํ๋ฌ ์๋ค. ์ฐ๋ฆฌ๋ ํํ ์์ด ์๋ฃ๊ฐ ํ๊ตญ์ด ์๋ฃ๋ณด๋ค ๋ซ๋ค๋ ๋ฌธํ์ฌ๋์ฃผ์์ ์๊ฒฌ์ ๊ณต๊ฐํ๊ณค ํ๋ค. ํ์ง๋ง ์ฌ๊ธฐ์ ์จ์ ์๊ฒฌ์ด ์ฌ๋ฟ ์๋ค. ํ๋์ฉ ๊น๋ณด๋ฉฐ ์๋ฏธํด๋ณด์.
์์ด ์๋ฃ๋ ํ๊ตญ์ด ์๋ฃ๋ณด๋ค ๋ซ๋ค. => ์ ๋์๊น? ๋์์ด ๋๊ธฐ ๋๋ฌธ์. ์ ๋์์ด ๋ ๊น? => (์ง์ค์ ๊ฐ๊น๊ธฐ ๋๋ฌธ์, ๋ค์ํ ๊ฒฝํ์ด ์ ์๋์ด ์๊ธฐ ๋๋ฌธ์). ์ ์ง์ค์ ๊ฐ๊น์ธ๊น? => 1์ฐจ ์ถ์ฒ์ ๊ฐ๊น๊ธฐ ๋๋ฌธ์. ์ 1์ฐจ ์ถ์ฒ์ ๊ฐ๊น์ธ๊น? => ์ฌ์ฉ์๊ฐ ๋ค์์ด๊ธฐ ๋๋ฌธ์ ์ง์ ์ฌ์ฉํ๊ฑฐ๋ ๋ฒ์ญ๋์ด 2์ฐจ ์ถ์ฒ๋ก ๊ธฐ๋ฅํ๊ธฐ ๋๋ฌธ์. ์ ๋ค์ํ ๊ฒฝํ์ด ์์๊น? => ์์ฐ์๊ฐ ์๋ฃ ์์ฑ ์ ์์ด๋ฅผ ์ ํํ ํ๋ฅ ์ด ํ๊ตญ์ด๋ณด๋ค ๋๊ธฐ ๋๋ฌธ์.
๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๋ ์์ด ์๋ฃ๊ฐ ๋์ ์ด์ ๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ํํํ ์ ์๋ค.
- (์ผ๋ฐ์ ์ผ๋ก) ํ๊ตญ์ด ์น๋ณด๋ค ์์ด ์น์ด ๋ ํฌ๊ธฐ ๋๋ฌธ์ ์ํ๋ ์๋ฃ๋ฅผ ๊ตฌํ ํ๋ฅ ์ด ๋ ๋๋ค.
- (์ผ๋ฐ์ ์ผ๋ก) ํ๊ตญ์ด ์น๋ณด๋ค ์์ด ์น์์ 1์ฐจ ์ถ์ฒ์ ๊ฐ๊น์ด ์๋ฃ๋ฅผ ๊ตฌํ ํ๋ฅ ์ด ๋ ๋๋ค.
ํ์ ๊ณต๊ฐ์ ๋ํ๊ณ , ์ ๋ณด ์ ํ ๊ณผ์ ์์์ ์๊ณก์ ์ค์ด๊ธฐ ์ํด์ ์์ด ์น ํ์์ด ํจ๊ณผ์ ์ด๋ค. ๋ค๋ง ์์ด ์น์ด "์ธ์ ๋" ์ข์ ๊ฑด ์๋๋ค. ํ์ปด์คํผ์ค ์๋ฃ๊ฐ ๋ฏธ๊ตญ์ ๋ง๊ฒ ๋๊ฐ, ์๋๋ฉด ํ๊ตญ์ ๋ง๊ฒ ๋๊ฐ? 1์ฐจ ์ถ์ฒ์ ๊ฐ๊น์ด ๊ณณ์ ํฅํด ์๊ณก์ ์ค์ด๊ณ , ๊ทธ ์์์ ํ์ ๊ณต๊ฐ์ ์ต๋ํ ํจ์จ์ ์ผ๋ก ๋ํ์ผ ํ๋ค.
์์ด ๊ฒ์์ด๋ผ๋ ํผ์์ ์ธ ํ์์์ ๋ฒ์ด๋ ์ ๋ณด ํ์์ ๋ณธ์ง์ ์ข๋ ๊ฒ์ด ์ข๋ค.
์ค๋๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ด์ผ๊ธฐํ๋ฌ ์๋ค. ์ค๋ ์ฃผ์ ๋ ํ์ ์คํฌ๋ฆฝํธ์ ํต์ฌ ๊ฐ์น๋ค.
๋ง์ ์ฌ๋๋ค์ด ์ ์ ํ์ ์ธ์ด๋ฅผ ๋์ ํ๋ ์ด์ ๋ก ์์ ์ฑ(Soundness)๋ฅผ ์ด์ผ๊ธฐํ๋ค. ๋ง๋ ๋ง์ด๋ค. ํ์ง๋ง ํ์ ์คํฌ๋ฆฝํธ์์ ์์ ์ฑ์ 2๋ฑ ๊ฐ์น๋ค. ๊ทธ๋ผ 1๋ฑ ๊ฐ์น๋ ๋ญ๊น?
๋ฐ๋ก ๊ฐ๋ฐ ๊ฒฝํ ๊ฐ์ ์ด๋ค. ๊ตฌ์ฒด์ ์ผ๋ก, ์ค๋ฅ ๋๊ธฐ ์ฌ์ด ๊ตฌ๋ฌธ์ ์ ๋นํ ์ค์ด๊ณ ์๋ ์์ฑ์ ๊ฐ์ ํ๋ฉฐ ํฐ ๊ท๋ชจ ๋ฆฌํฉํ ๋ง ์ ์ฌ๋ฆฌ์ (๊ทธ๋ฆฌ๊ณ any ๊ฐ์ ๊ธฐ๋ฅ์ ์ ์ผ๋ค๋ ๊ฐ์ ํ์ ๋ฐํ์์๋ ์ ์๋ฏธํ ์์ค์) ์์ ์ฑ์ ์ป๊ฒ ๋ค๋ ๊ฑฐ๋ค.
ํ์ ์คํฌ๋ฆฝํธ ๊ณต์ ์ํค ๋ฌธ์์๋ ์์ ์ฑ์ ๋ชฉํ๊ฐ ์๋๋ผ๊ณ ๋์์๋ค (#). ์ฐ๋ฆฌ๋ ๋๋๋ก ๋๊ตฌ์ ๋ชฉ์ ์ ๋ค์ด๋ง์ง ์๋ ๋ถํ์ํ ๊ธฐ๋๋ฅผ ํ๊ณค ํ๋ค. ํ์ง๋ง ๋๊ตฌ ๊ฐ๋ฐ์์ ์ธ์ฐ๋ ๊ฑด ์ฌ์ฉ์๋ก์ ์ข์ ์ ๋ต์ด ์๋๋ค.
์กฐ๊ฑด๋ถ ํ์ ๊ณผ ์ฌ๊ท ํ์ , ํ ํ๋ฆฟ ๋ฌธ์์ด ํ์ , infer ๋ฑ์ ๋ณด๋ผ. ์ ์ ๋ถ์ ๋์ด๋๊ฐ ์ง์์ ์ผ๋ก ์ฌ๋ผ๊ฐ๋ ํฌํํ ๊ธฐ๋ฅ๋ค์ด ์ธ์ด์ ๊ณ์ ์ถ๊ฐ๋๋ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ. ์ถ๋ก ์ ํฌ๊ธฐํ๊ณ any๊ฐ ๋์ค๊ณค ํ๋ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ.
๊ทธ๋ค์ด ์ถ๊ตฌํ๋ ๊ฒ ์์ ํ ์ธ๊ณ๊ฐ ์๋ ์ค์ฉ์ ์ธ ์ธ๊ณ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์คํ ๋ณด์กด ๋ฒ์น
RanolP @ranolp@hackers.pub
์ด ๊ธ์์๋ ํ๋ก์ ํธ ์งํ ์ ๊ธฐ์ ์คํ ์ ์ ์ ๋ํ ๊ฒฝํ์ ๋ฒ์น์ธ "ํ์คํ ๋ณด์กด ๋ฒ์น"์ ์๊ฐํ๋ฉฐ, ํํ ๊ธฐ์ ์คํ์ ๊ณผ๋ํ๊ฒ ์ ํํ ๊ฒฝ์ฐ ํ๋ก์ ํธ๊ฐ ์ฐ์ผ๋ก ๊ฐ ์ ์์์ ๊ฒฝ๊ณ ํฉ๋๋ค. ์ ์๋ ์ ๊ธฐ์ ๋์ ์ ๋ฐ์ํ๋ ํธํ์ฑ ๋ฌธ์ ์ ๊ทธ๋ก ์ธํ ์ถ๊ฐ ์์ ์ ๋ถ๋ด์ ์ค๋ช ํ๋ฉฐ, ์ปค๋ฎค๋ํฐ๊ฐ ํฌ๊ณ ์ฑ์ํ ๊ธฐ์ ์ ์ค์์ฑ์ ๊ฐ์กฐํฉ๋๋ค. ํํ ๊ธฐ์ ์ ์ฌ์ฉํ๋๋ผ๋ ํ๋ก์ ํธ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ด๋ ์ ์๋ ๋ ๊ฐ์ง ์กฐ๊ฑด, ์ฆ ๊ธฐ์ ์ ์์ ์ฑ๊ณผ ๊ฐ๋ฐ์์ ์๋ จ๋๋ฅผ ์ ์ํ๋ฉฐ, ํ์คํ์ ์ฌ์ฉํ๊ธฐ ์ ์ ์ถฉ๋ถํ ํ์ต๊ณผ ๊ฒฝํ์ ํตํด ๊ธฐ์ ์ ๋ด์ฑ์ ๊ธธ๋ฌ์ผ ํจ์ ์ญ์คํฉ๋๋ค. ์ด ๊ธ์ ๊ธฐ์ ์คํ ์ ํ์ ์ค์์ฑ๊ณผ ๊ฐ๋ฐ์์ ์ญ๋ ๊ฐํ ํ์์ฑ์ ๋์์ ๊ฐ์กฐํ๋ฉฐ, ๊ท ํ ์กํ ๊ธฐ์ ์คํ ์ ํ์ด ํ๋ก์ ํธ ์ฑ๊ณต์ ๋ฏธ์น๋ ์ํฅ์ ์์ฌํฉ๋๋ค.
Read more โJS์์ Promise๋ await์ผ๋ก ๊ฐ์ ์ฝ๋ ๊ฒ ์ธ์, ํ์ฌ pending ์ํ๋ฅผ ์ฝ๋ ๋ฑ์ ๋์์ ํ์ฉํ์ง ์๋๋ค. ์ด๊ฑฐ ์ ์๋๋๊ณ ํ๋ฉด Promise์ ์๋ฏธ๋ก ๊ณผ ๋ฐฐ๊ฒฝ ์ฒ ํ์ด ์ด์ฉ๊ตฌ์ ์ฉ๊ตฌํ๋ ๋๋ต์ด ๋์์จ๋ค. ๋ด ์๊ฐ์ ๊ทธ๊ฑด ํ๋ ธ๋ค. ์ด์ ๋
๊ฐ๋จํ ๋๋ต: ๊ฐ๋ฅํ๋ฉด์ ์ ์ํด์ค?
์ฝ๊ฐ๋ ๋ณต์กํ ๋๋ต
๊ทธ ์ ์ฝ ์กฐ๊ฑด์ Promise๊ฐ callback๊ณผ ๊ฐ์ ์๋ฏธ์ ๋ค๋ฅธ ํํ์ผ๋๋ ์ฑ๋ฆฝํ๋ค. callback์ด ์ ๋ฌํ๋ ๊ฐ์ ํน์ ์์ = t
์ ์กด์ฌํ๋ ๊ฒ์ด๋ค. t
์ดํ์ ๊ทธ ๊ฐ์ ์ฌ์ฉํ๊ธฐ์ํด์ ๋ฐ๋ก ์ ์ฅ์ ํด๋๋๊ฐํด์ ๊ฐ์ ์กด์ฌ์๊ธฐ๋ฅผ >= t
๋ก ๋ฐ๊พธ์ด์ผํ๋ค.
๊ทธ๋ฐ๋ฐ Promise๋ await์ ์ฌ๋ฌ๋ฒ ํ๋๊ฑธ ํ์ฉํ๋ค. await x; await x;
์ด๋ฐ์์ผ๋ก. ๊ฐ์ด ์์ผ๋ฉด ๊ธฐ๋ค๋ฆฌ๊ณ , ๊ฐ์ด ํ๋ฒ ๋ค์ด์ค๋ฉด ๊ทธ๊ฑธ ๊ณ์ํด์ ๋๋ ค์ค๋ค. ์ฌ๊ธฐ์ Promise๊ฐ callback์ด๋ ๋ค๋ฅธ๊ฒ ๋๋ฌ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก callback๊ณผ ๋ค๋ฅด๊ฒ ๋์ํ๊ธฐ์ํด ๊ฐ์ ์ฌ๋ถ ๋ฑ์ ๋ด๋ถ ์ํ๋ก ๊ฐ๊ณ ์์์ ๋ฐ์ ์๋ค.
์์ฝํ๋ฉด, callback๊ณผ ์์ ํ ์ํธํธํ๋ ๋ ์ ๋นํ๋๋ ์ ์ฝ์ callback์ด ์๋๋ฉด์ ๊ฐ์ํ๋๊น ๋ฌธ์ ๋ ์๊ธฐ๋ค.
๋ฌธ๋ฒ ๊ฐ์กฐ๊ฐ ๋ฐ๋ ๋๊ฐ ํ์ฐธ ์ง๋ ๊ฒ ๊ฐ์๋ฐ, AI๊ฐ ๋ณ์๋ณ ๊ฑธ ๋คํ๋ ์ธ์์ ์์ง๋ ๋์ ๋ณด์ด๋ ์์๋ค์ด ์๋ค์.
์๋ฅผ ๋ค๋ฉด, ์๋ณ์(๋ณ์), ํจ์, ๋ฑ ๋ฌธ๋ฒ ์์์ ๋ฐ๋ผ ์์ ์
ํ๋ค๊ฑฐ๋ ํ๋ ๊ฒ ์๋,
์ ์ญ์ด๋, ๋ก์ปฌ์ด๋๋ก ์์ ๋ฌ๋ฆฌ ํ๋ค๋ ์ง,
์ค๋ฅธ์ชฝ ์ฐ์ ๊ฒฐํฉ ์ฐ์ฐ์๋ฉด ๋นจ๊ฐ์, ์ผ์ชฝ ์ฐ์ ๊ฒฐํฉ์ด๋ฉด ํ๋์ ํ๋ค๋ ์ง,
์๋งจํฑ ๋ฌธ๋ฒ ๊ฐ์กฐ๊ฐ ์ผ๋ฐํ ๋ ๋๊ฐ ๋ ๊ฒ ๊ฐ์๋ฐ, ํน์ ์ ๋ง ๋ชจ๋ฅด๊ณ ์๋ ๊ฑด๊ฐ์?
RanolP shared the below article:
How to pass the invisible

ๆดช ๆฐๆ (Hong Minhee) @hongminhee@hackers.pub
This post explores the enduring challenge in software programming of how to pass invisible contextual information, such as loggers or request contexts, through applications without cumbersome explicit parameter passing. It examines various approaches throughout history, including dynamic scoping, aspect-oriented programming (AOP), context variables, monads, and effect systems. Each method offers a unique solution, from the simplicity of dynamic scoping in early Lisp to the modularity of AOP and the type-safe encoding of effects in modern functional programming. The post highlights the trade-offs of each approach, such as the unpredictability of dynamic scoping or the complexity of monad transformers. It also touches on how context variables are used in modern asynchronous and parallel programming, as well as in UI frameworks like React. The author concludes by noting that the art of passing the invisible is an eternal theme in software programming, and this post provides valuable insights into the evolution and future directions of this critical aspect of software architecture.
Read more โโDeprecationโ์ ๅฐๆ๋๋ ้ๅ่ช ็ฟป่ญฏ่ช๊ฐ ๅฎ็ซ๋ ๅฟ ่ฆ๊ฐ ์๋ค.
https://hackers.pub/@hongminhee/01977192-399f-76c5-9d8c-07051a8a803a
@hongminheeๆดช ๆฐๆ (Hong Minhee)
์กฐ๊ธ ๊ธธ์ง๋ง ์ ๊ฑฐ ์์ (์๋ฌธ: Features deprecated / ์ ๊ฑฐ ์์ ์ธ ๊ธฐ๋ฅ)์ด ๊ทธ๋ญ์ ๋ญ ์ธ๋งํ ๋ฒ์ญ์ด์ธ ๊ฑฐ ๊ฐ๊ณ ์.
Gemini๋ฅผ ๊ตด๋ ค๋ณด๋ ์ฌ๋ฐ๋ ๋ฒ์ญ์ด๋ฅผ ๋ช ์ ์ํด์ฃผ๋ค์.
- ํ๊ธฐ ์์ / ํ์ง ์์
- ๋น๊ถ์ฅ / ์ง์ ์ค๋จ ์์
- ๊ตฌ์ / ๋ก์ / ๋ ธํํ๋ / ๋์ฒด๋
- ์ฌ์๊ธธ์ / ์ ๋ฌผ์ด๊ฐ๋ / ์ ํดํ
๋ค๋ง ์ฌ์ ํ ์ ๊ฒ๋ '์ ๊ฑฐ ์์ /์ ๊ฑฐํ '์ด ๊ฐ์ฅ ์๋ฟ๋ค์.
- This is a deprecated feature / ์ ๊ฑฐํ ๊ธฐ๋ฅ์ด์ผ.
- Have you marked it as deprecated? / ์ ๊ฑฐ ์์ ์ด๋ผ ์ ์ด๋จ์ด?
- Removed recently deprecated features / ์ต๊ทผ ์ ๊ฑฐ ์์ ์ด์๋ ๊ธฐ๋ฅ์ ์ง์ ์ต๋๋ค
- Don't use deprecated features / ์ ๊ฑฐ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ๋ง
๋: ๊ฑด์ ํ ์ก์ ์ ๊ฑด์ ํ ์ ์ ์ด ๊น๋ ๋ค(Sound body โ Sound mind) โ ๊ฑด์ ํ์ง ์์ ์ ์ ์ด๋ผ๋ฉด ์ก์ ๋ ๊ฑด์ ํ์ง ์๋ค (ยฌSound mind โ ยฌSound body)
@: ๋น์ ์ ๋ช ์ ์ ๋์ฐ์ ์ฐธ๊ฐ์ด ๊ฐ๋ค๋ ์ฃผ์ฅ์ ํ๋ฉฐ ๋ฐฐ์ค๋ฅ ์ ๊ฐ์ ํ๊ณ ๋ง์์ต๋๋ค!!
๋: ์ ์ง์ฆ๋
์๋ํฐ๊ฐ ํ์ค์ผ์ ํ์ ์๋ฌ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ค๋ ํธ๋ฒ๋ง์ผ๋ก ๋จ๋ ์ฐฝ์ผ๋ก๋ ๋ถ์กฑํ๊ฑฐ ๊ฐ๋ค. ๋ณ๋์ ๋ทฐ๋ฅผ ๋ง๋ค์ด์ ํฌ๊ฒ ๋ณด์ฌ์ฃผ๊ณ ๋ richํ ๊ธฐ๋ฅ(๋ฉ์์ง์ ํฌํจ๋ ์ฌ๋ณผ๋ก์ navigation ๋ฑ)์ ์ ๊ณตํ๋ฉด ์ข๊ฒ ๋ค.
์, ํด์ปค์คํ์์ summary, detail ํ๊ทธ ์ง์๋๋๊ฑฐ ๋ฐฉ๊ธ ์ฒ์๋ดค์ด
๋ญ๋ผ๋ ๊ฑฐ์์ฌ
We eventually end up with constraints of the shape โ
โ and there always exists a and such that we can reduce the constraint to an equivalent constraint .โ (Parreaux and Chau, 2022, p. 10)
์ Ctrl + Enter๋ก ์ฌ๋ฆฌ๊ธฐ ๋๋๊น ๋๋ฌด ํธํ๋ค ์ด๊ฒ SNS์ง
MLstruct ์ฝ๊ณ ์๋๋ฐ ๋คํ์ค๋ฝ๊ฒ๋ Simple-sub ๊ธฐ๋ฐ์ด๋ผ๊ณ ํ๋ค. MLsub ๊ธฐ๋ฐ์ด์์ผ๋ฉด MLsub ์ฝ์ผ๋ฌ ๊ฐ์ผ ํด์ ์ธ์์
@cog25 ๋์ ์ด๋ํ๋ค ํํ
@ranolp ๊ตฌํํ์ต๋๋ค!
@hongminheeๆดช ๆฐๆ (Hong Minhee) ์ต๊ณ ์์
์ด๋ฐ ๋ฉด์์ KDL์ด ์์ฃผ ํ๋ฅญํ๋ค๊ณ ๋๊ผ๋ ๊ฒ /- ์ฃผ์์ด๋ ๊ฒ ์๋ค. AST ๋ ธ๋ ํ๋๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ๋ ๊ฑฐ.
#์๊ธฐ์๊ฐ ๋ฅผ ํด๋ณผ๊น์.
@ranolpRanolโP ์ ๋์ผ์ธ์ ๋๋ค...๋ง ํด๋น ๊ณ์ ์ ๊ทผ์์ผ ๋ด์ ์ด๋ฆด ๊ณํ์ด ์์ต๋๋ค.
@ranolp ๊ณ์ ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก /ํด์ปค์คํ ์ฌ์ฉ๊ธฐ ์์ฃผ ๊ณ์ ์ ๋๋ค.
- ๋ค์ ๋งํ์๋ฉด ๊ทธ ์ธ ์ผ์์ ์ธ ๋ด์ฉ์ ํธ์ํฐ์์ ์ด์ผ๊ธฐํ๋ค๋ ๋ป์ ๋๋ค...
- TypeScript์ ์ผ์ถ ํธํ๋๋ฉด์ ์ ์ ์ ์ธ ํ์
์ถ๋ก ๊ท์น์ ๊ฐ์ง ์ธ์ด๋ฅผ ๋ง๋ค๋ ค๊ณ ํ์
์ด๋ก ์ ๊ณต๋ถํ๊ณ ์์ต๋๋ค.
- ์ข ๋ง์ด ์ ์๋ Bidirectional Typing (J. Dunfield, N. Krishnaswami)์ ์ฝ์์๊ณ ,
- ๋ ์ผ์ ์๋ ํ๋น๊ฒ ๋ํ ๋ด์์ ์ฐ๊ตฌํ๋ ๋์์ ํจ๊ณผ ์ธ์ด Effekt๋ ๊ฐ๋จํ ์ดํด๋ณด์์์ต๋๋ค.
- ์ต๊ทผ์๋ ํ๋ค๋ฆฌ-๋ฐ๋-๋ค๋ง์ค ํ์
์ถ๋ก ์์ ์น์ ๋ถํ์
ํ์ฅ์ ์ดํด๋ณด๊ณ ์์ต๋๋ค.
- ์บ ๋ธ๋ฆฟ์ง ๋ํ ์ฐ๊ตฌ์ธ MLsub (S. Dolan and A. Mycroft)...
- ์ ๋จ์ํํ Simple-sub (L. Parreaux)์ ์์์ผ๋ก MLstruct, Ultimate Conditional Syntax ๋ฑ ํ์ฝฉ๋ ์ฐ๊ตฌ๋ฅผ ๋ง์ด ๋ณด๊ณ ์์ต๋๋ค
- MLscript๊ฐ ์ ๋ง ํฅ๋ฏธ๋ก์ด ์ธ์ด์์ ReScript but more Kotlin์ฒ๋ผ ์๊ฒผ์
- ์ฌํด ๋ค์ด์ An Infinitely Large Napkin์ผ๋ก ๊ตฐ๋ก ๊ณผ ๊ตฐ์ ์์ฉ, ์์์ํ๊ณผ ๋์ ์์(ํธ๋ชจํ ํผ๋ง), ๊ทธ๋ฆฌ๊ณ ๋ฒ์ฃผ๋ก ์ ๋ฐฐ์ ์ต๋๋ค.
- ํ์์ ์ฆ๋ช
๋ณด์กฐ๊ธฐ์๋ ๊ด์ฌ์ด ๋ง์ต๋๋ค.
- Software Foundation์ ํตํด Coq (ํ Rocq)๋ฅผ ์ฝ๊ฐ ๋ฐฐ์ ์ต๋๋ค.
- Lean 4๋ ์ฝ๊ฐ ๋ง๋ณด๊ธฐ๋ฅผ ํ์ต๋๋ค.
- ์์กด ํ์
/๋งํด ๋ขฐํ ํ์
(MLTT)/ํธ๋ชจํ ํผ ํ์
(HoTT) ๋ฑ์ ๋ฐฐ์ ๊ฐ๋จํ ์ฆ๋ช
๋ณด์กฐ๊ธฐ๋ ๋ง๋ค์ด๋ณด๊ณ ์ถ๋ค์.
- ์๋ง An Infinitely Large Napkin ์คํฐ๋๊ฐ ๋๋๋ฉด HoTT ์คํฐ๋๋ฅผ ํ์ง ์์๊น ์ถ๋ค์.
ํจ์ํ ์ธ์ด๋ ๋ญ ์ฌ์ค ์ญ์ฌ์ ์ ํต์ ๋ฆฌ์คํ ๋ฐฉ์ธ์์ ์์ํด์ผ ํ์ง ์๋ (์์)
๋ชจ๋ฐ์ผ ์น์ ๊ทธ๋ฅ ์๋ก ๋์์ธํ๋ ๊ฑธ ๊ฐ์ธ์ ์ผ๋ก ์ ํธํ๋ค. ๋ด๋น๊ฒ์ด์ ๋ฐฉ๋ฒ์ด ๊ฝค๋ ๋ฌ๋ผ์ (๋ฐํ ํญ ๋ด๋น๊ฒ์ด์ ๋ฑ)
@ranolp ๋ณธ๋ฌธ์ ๋งํฌ๋ฅผ ๊ฑธ ์ ์์ด์ ๊ทธ๋ฐ ๊ฒ ๊ฐ๊ธด ํ๋ฐโฆ ์๊ฐํด ๋ณด๋ฉด X๋ ๋ฉ์
์ ๋ฉ์
๋๋ก ๋๋ฅผ ์ ์์๋ ๊ฒ ๊ฐ๋ค์. ๋ชป ํ ์ด์ ๋ ์์ ๊ฒ ๊ฐ๊ธฐ๋โฆ? ๐ค
@hongminheeๆดช ๆฐๆ (Hong Minhee) ๋ญ๊ฐ ๊ตฌ์กฐ์ ํ๊ณ๋ ํ์ค์ ๊ฐ์์ ์๋์๊ตฐ์! ํญ์ ์ฐํฉ์ฐ์ฃผ ์น ํด๋ผ์ด์ธํธ๋ค ์ฐ๋ฉด์ ์ค๋ ๋ ํ์์ด ๋ถํธํ๋๋ฐ ๊ตฌํ์ ๋ฐ๊พธ๋ฉด ์ ๊ธฐ์ค ์ฝ๊ฐ์ ํธํด์ง ๊ฑฐ ๊ฐ๋ค์ ๊ฐ ๋ณด๊ณ ์ ํด๋ผ์ด์ธํธ ๊ธฐ์ฌํด์ผ์ง...
์๊ธฐ์๊ฐ ๊ฐ์ก๊ณ ์ฐ๊ธฐ ๊ท์ฐฎ์
~๋ถ์ ๋ถ๋ถ์ ๋๋ฌ์ผ ์ค๋ ๋ ์๋ก ํ์์ด ๊ฐ๋ฅํ๋ฐ ๊ทธ๋ฅ ํธ์ํฐ์ UX๋ก ์์ชฝ ํธ์ ์์ญ ์ ์ฒด๊ฐ ์ค๋ ๋ ์๋ก ํ์ ๊ธฐ๋ฅ์ด๋ฉด ์๋๋
์๊ฐํด๋ณด๋ฉด ์ฐํฉ์ฐ์ฃผ๋ฅ UX๊ฐ ๋ค ๊ทธ๋ฌ๋ ๊ฑฐ ๊ฐ์๋ฐ ์ด์ ๊ฐ ์๋ ๊ฑด๊ฐ
~๋ถ์ ๋ถ๋ถ์ ๋๋ฌ์ผ ์ค๋ ๋ ์๋ก ํ์์ด ๊ฐ๋ฅํ๋ฐ ๊ทธ๋ฅ ํธ์ํฐ์ UX๋ก ์์ชฝ ํธ์ ์์ญ ์ ์ฒด๊ฐ ์ค๋ ๋ ์๋ก ํ์ ๊ธฐ๋ฅ์ด๋ฉด ์๋๋
2022๋ ๋ ผ๋ฌธ์ด๋ฉด very new thingy์ฃ
๋๋์ด ๊ธฐ๋ณธ ํ์ ์ถ๋ก ์์ด๋์ด๋ฅผ ์ผํํ ์ ์๋ค
MLstruct ๋ ผ๋ฌธ์ ์ฝ์ด์ผ ํ๋๋ฐ ๋๋ฌด ๊ท์ฐฎ๋ค... Simple-sub ๋ ผ๋ฌธ์ Scala ์ฝ๋ ์ค์ ์ฝ๊ณ ๊ตฌํํ๊ธฐ ์ฌ์ ๋จ ๋ง์ผ
ํธ์ํฐ๋ ํธ์น์๊ณ ๋ธ๋ฃจ์ค์นด์ด๋ ๋ธ์น์๋๊น ํด์ปค์คํ์ ํด์น์ ๋ด์ง๋ ํ์น์๊ฒ ๊ตฐ
@ranolp ์ด์ํธ๋์ปค์ ํ๋ ๋ ์์ด๋์๋ฆฌ ใทใท
@kodingwarriorJaeyeol Lee ๋ฐ๋ก ์ด์ ๋ง๋ค์์ต์ฃ
์ฌ๋ ํ์ฌ/๋๋ค์์ ํธ๋ฒํ์ ๋ ํธ๋ฒ ์นด๋ ์๋์ค๋ ๊ฑฐ ์๊ทผ ๋ถํธํ๋ค ์ด๊ธฐ ํ๋ก์ฐ ๊ด๊ณ ๋น๋ฉํ ๋ ํ์๋ผ์ธ ๋ณด๋ฉด์ ์ฌ๋ฐ์ด๋ณด์ด๋ ์ฌ๋ ๋ณด์ด๋ฉด ์ฆ์ ํธ๋ฒ ์นด๋์์ ํ๋กํ๋ฉด ํธํ๋ฐ
์ ctrl + enter ๋๋ฌ๋ ์ ์ฌ๋ผ๊ฐ์ง....
๋ฒจ๋ก๊ทธ์ draft๋ก ๋จ๊ฒจ๋๋ ๋ ผ๋ฌธ ์์ฝ+๋ฒ์ญ ํฌ์คํธ๋ฅผ ์ด๋ ค์ ์ฌ๊ธฐ๋ค๊ฐ ์ฌ๋ฆฌ๋ฉด ๊ด์ฐฎ์ผ๋ ค๋
@ranolp@hackers.pub ํน์ ์ด๋ค ๋ธ๋ผ์ฐ์ ์ฐ์๋์??
@saschanazKAGAMI๐ณ๏ธโ๐๐ณ๏ธโโง๏ธ Firefox Nightly๋ฅผ ์ฌ์ฉํ๊ณ ์์ด์. ํํญ ์ ๋ค์ด PWA ๊ตฌํ์ ํ๋ค ๋ง์์ ๊ฐ๋ฅ์ฑ๋ ๋๊ธด ํ๋ฐ...
ํด์ปค์คํ์ PWA๋ก ์ค์นํ๋๊น ๋ค๋ก๊ฐ๊ธฐํ๋ฉด ์ฑ์ ์ดํํด๋ฒ๋ ค์ ๊ณค๋ํ๋ค
์ฌ๊ธฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ด์ผ๊ธฐ๋ ํด์ผ๊ฒ ๋ค