์ถ์ฒ
ChatGPT
https://sookocheff.com/post/fp/eta-conversion/
https://library.fiveable.me/key-terms/programming-languages-iii/eta-conversion
์ํ ๋ณํ Eta Conversion
ํจ์์ ํํ๋ฅผ ์ฝ๊ฐ ๋ณํํด๋ ๊ทธ ํจ์์ ์๋ฏธ๊ฐ ๋ณํ์ง ์์์ ๋ํ๋ด๋ ๊ฐ๋ .
eta๋ ๊ทธ๋ฆฌ์ค ์ํ๋ฒณ η์ด๋ค.
์ํ ๋ณํ์ ํ์ฅ๊ณผ ์ถ์ฝ ๋ ๊ฐ์ง๋ก ๋๋๋ค.
1. ์ํ ํ์ฅ eta expansion
์ฃผ์ด์ง ํจ์ f์ ๋ํด ํจ์์ ์ ์๋ฅผ ๋ช ์์ ์ผ๋ก ํ์ฅํ๋ ๋ฐฉ์์ด๋ค.
2. ์ํ ์ถ์ฝ eta reduction
์ํ ํ์ฅ์ ๋ฐ๋ ๊ฐ๋ ์ผ๋ก, ํจ์ ํํ์์ ๋ถํ์ํ ์ธ์ ์ ์ฉ์ ์ ๊ฑฐํ๋ ๋ณํ์ด๋ค.
์๋ฅผ ๋ค์ด, ๊ฐ๋จํ ํจ์ f x = g x ๋ฅผ ์๊ฐํด๋ณด์. f์ g๋ ๊ฐ์ ์ธ์ x๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ด ํจ์์ ๊ฒฐ๊ณผ ๊ฐ์ ๊ฐ๋ค. f์ g๊ฐ ๊ฐ์ ์ธ์๋ฅผ ๊ฐ์ง๊ณ ๊ฐ์ ๊ฐ์ ์์ฑํ๊ธฐ ๋๋ฌธ์, ์ฐ๋ฆฌ๋ ๋ฐฉ์ ์์ f = g ๋ผ๊ณ ๋จ์ํํ ์ ์๋ค.
์ํ ๋ณํ์ ํต์ฌ
์ํ ๋ณํ์ ๋ ํจ์๊ฐ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด ๋ด๋ ํ, ๋์ผํ ํจ์๋ก ์ทจ๊ธ๋ ์ ์์์ ๋ณด์ฅํ๋ค.
์ด ๋ณํ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์ ์ค์ํ ์ด๋ก ์ ๊ธฐ๋ฐ์ด ๋๋ค. ํนํ ํจ์์ ์ ์์ ์ฌ์ฉ์ ๊ฐ๋จํ๊ฒ ๋ค๋ฃจ๊ธฐ ์ํ ์ต์ ํ ๋ฐ ํจ์ ํฉ์ฑ์์ ์์ฃผ ์ฌ์ฉ๋๋ค.
์์
val f: (Int) -> Int = { x -> x + 1 }
// ์ํ ํ์ฅ: f๋ฅผ ๋ช
์์ ์ผ๋ก ํ์ฅ
val g: (Int) -> Int = { x -> f(x) }
// ์ํ ์ถ์ฝ: g๋ ๊ฒฐ๊ตญ f์ ๋์ผํจ
val h: (Int) -> Int = f
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํจ์ํ ํ๋ก๊ทธ๋๋ฐ][Kotlin] ๊ณ ์ฐจํจ์ HOF High-order Function, Combinator Pattern (1) | 2024.10.17 |
---|---|
[Kotlin][ํจ์ํ ํ๋ก๊ทธ๋๋ฐ] ๋ฉค๋ฒ ์ฐธ์กฐ (0) | 2024.10.17 |
[Java][Kotlin] ๊ฐ์์ฑ ๋ณ๊ฒฝ์ ์ฐจ์ด ๋น๊ต (0) | 2024.10.15 |
[Kotlin] Local Functions ๋ก์ปฌ ํจ์ (3) | 2024.10.15 |
[ํ๋ก๊ทธ๋๋ฐ] ๋ฉ์๋ ์ถ์ถ ๋ฆฌํฉํ ๋ง Extract Method (0) | 2024.10.15 |