Evaluation
- Evaluation : νλ‘κ·Έλλ° κ°λ
μμμ νκ°λ ννμ(expression)μ βμ μ(canonical)β κ°μ κ²°μ νλ κ²μ΄λ€.
- ννμ(Expression) :
3 + 5, 11 - 3, 2 * 4 μ κ°μ΄ μ΄λ€ κ°μΌλ‘ μ΄ννλ μμμ μ ν¨ν μ½λ λ¨μμ΄λ€.
- μ ννμμ λͺ¨λ 8μ κ°μ κ°λλ°, evaluationμ μ΄μ²λΌ ννμμ κ°μ κ²°μ νλ κ²μ λ§νλ€.
- Pythonμ eval ν¨μλ₯Ό ν΅ν΄μ ννμμ μ€μ κ°μ μ°Ύλ λ°μ μ¬μ©ν μ μλ€.
>>> eval('8') == eval('3 + 5') == eval('2 * 4')
True
Evaluation Method
- νκ° λ°©λ²μΌλ‘λ 1) μ μ© μμ νκ°, 2) μ κ· μμ νκ° κ° μλ€.
- λ λ°©λ²μ΄ μλ μ½λλ₯Ό μ΄λ»κ² νκ°νλμ§ νμΈν΄λ³΄μ.
(define (h x) (+ x x))
(h (+ 1 1))
μ μ© μμ νκ° (Applicative-Order Evaluation)
(+ 1 1) μ λ¨Όμ νκ°ν΄ 2 κ°μ μ»λλ€.
- ν¨μ νΈμΆ
h(2) κ° λμ΄ (+ 2 2) λ₯Ό νκ°νκ² λλ€.
- κ²°κ³Όμ μΌλ‘ 4κ° λ°νλλ€.
- μ격 νκ°
- λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄μμ μ¬μ©
μ κ· μμ νκ° (Normal-Order Evaluation)
hκ° (+ x x) λ‘ μ κ°λλ€. β (h (+ 1 1)) β (+ (+ 1 1) (+ 1 1))λ‘ λ°λλ€.
- μ κ° ν
(+ 1 1)μ λ λ² νκ°ν΄μΌ νκΈ° λλ¬Έμ μ€λ³΅ νκ°κ° λ°μνλ€.
- μ΅μ’
μ μΌλ‘Β
(+ 2 2)λ₯Ό νκ°νμ¬Β 4λ₯Ό λ°ννλ€.
- λΉμ격 νκ°
- ν¨μν νλ‘κ·Έλλ° μΈμ΄μμ μ±ν
- μ κ· μμ νκ°λ μ€λ³΅ νκ°λ‘ μΈν΄ μλ―Έμλ λΉμ©μ λ°μμν¬ μ μλ€.
Reference
Original
Additional