[Haskell] 컀λ§(Currying)
컀λ§μ ν¨μμμ μμ μΈμλ€μ 미리 μ λ¬ν΄λμ λΆλΆ ν¨μλ₯Ό λ§λ€ μ μκ² ν΄μ£Όλ κΈ°λ₯μ΄λ€.
λ§μ½ Intλ₯Ό λκ° λ°κ³ Intλ₯Ό λ°ννλ
{** (Int, Int) -> Int } ν¨μκ° μλ€ μΉμ.
μ¬μ€ μ λ κ² νννκΈ΄ νμ§λ§,
μ 건 { Int -> (Int -> Int) } μ΄λ κ²λ ννλ μ μκ³ , { (Int -> Int -> Int **} μ΄λ κ²λ ννλ μ μλ€.
λλκ²λ νμ€μΌμμ μ νμ
λ€μ μλ‘ κ°λ€!
λλ¬Έμ λκ°μ§λ¦¬ ν¨μμ μΈμλ₯Ό νλλ§ μ λ¬νλλΌλ, κ·Έ ννμμμ λλ¨Έμ§ μΈμλ₯Ό λ°λ ν¨μλ₯Ό λ°ννλ€.
μλλ κ·Έ κ°λ¨ν μ¬μ©λ‘λ€.

add2λ addμ lhsμ 100μ λ°μλμ μ»€λ§ ν¨μλ€. κ·Έλμ λ°μ μΈμμ 100μ μ λν΄μ λ°ννλ ν¨μκ° λλ€...
κ·Έλ¦¬κ³ κ΅³μ΄ μ λ κ² λΆλΆν¨μλ₯Ό μͺΌκ°μ§ μμλ, 컀λ§μ κΈ°λ³Έλμμ΄λ€.
무μ¨μ리λλ©΄

μ΄λ° κ°λ¨ν μ½λμμλ μ¬μ€ 컀λ§μ΄ μνλκ³ μλ κ²μ΄λ€. λκΉ?
add 100 200μ μ¬μ€ ν¨μμ μμ²λ μ°μ μμ λλ¬Έμ (add 100) 200λ‘ νκ°λλ€.
첫λ²μ§Έ μΈμλ₯Ό λ°μ 컀λ§ν¨μλ₯Ό λ§λ€κ³ , κ·Έ 컀λ§ν¨μκ° λ€μ λλ²μ§Έ μΈμλ₯Ό λ°μ κ²μ΄λ€.
νμ€μΌμ ν¨μλ μ΄λ° μμΌλ‘ κ΅΄λ¬κ°λ€.