빈 ꡬ멍 μ±„μš°κΈ°

[ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°] 에타 λ³€ν™˜ eta conversion

⭐⭐기둝 2024. 10. 16. 14:34

좜처

ChatGPT

https://sookocheff.com/post/fp/eta-conversion/

 

Eta Reduction

The purpose of eta reduction (also written \(\eta\)-reduction) is to drop an abstraction over a function to simplify it. This is possible when there is nothing more that a function can do to its argument. For example, imagine that we have a simple function

sookocheff.com

https://library.fiveable.me/key-terms/programming-languages-iii/eta-conversion

 

Eta conversion - (Programming Techniques III) - Vocab, Definition, Explanations | Fiveable

Eta conversion is a process in lambda calculus where a function is considered equivalent to another function if they behave identically when applied to an argument. This concept reflects the principle that a function that takes an argument and returns anot

library.fiveable.me

 


에타 λ³€ν™˜ 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