ν¨μν νλ‘κ·Έλλ°μ μλ£ μ²λ¦¬λ₯Ό μνμ ν¨μμ κ³μ°μΌλ‘ μ·¨κΈνκ³ μνμ κ°λ³ λ°μ΄ν°λ₯Ό λ©λ¦¬νλ νλ‘κ·Έλλ° ν¨λ¬λ€μμ νλμ΄λ€.
μμ ν¨μμ λΆλ³μ±μ κ°μ‘°νλ©°, μν λ³κ²½μ μ΅μν νλ κ²μ΄ λͺ©νμ΄λ€.
<aside> β λͺ λ Ήν νλ‘κ·Έλλ° How?
무μμ ν κ²μΈμ§ λνλ΄κΈ° 보λ€λ μ΄λ»κ² ν μ§λ₯Ό μ€λͺ νλ λ°©μμ΄λ€.
μ μΈν νλ‘κ·Έλλ° What?
μ΄λ»κ² ν μ§λ₯Ό λνλ΄κΈ° 보λ€λ 무μμ ν μ§λ₯Ό μ€λͺ νλ λ°©μ
βFunctional Programming is programming without assignment statements. β βν¨μν νλ‘κ·Έλλ°μ λμ λ¬Έμ΄ μλ νλ‘κ·Έλλ°μ΄λ€.β β Robert C.Martin
ν¨μν νλ‘κ·Έλλ°μ λμ λ¬Έμ΄ μλ νλ‘κ·Έλλ°μ΄λ©°, μμ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν ν¨μλ₯Ό μμ±νλ κ²μ΄λ€.
μμ ν¨μ β Pure Functions μμ ν¨μλ λμΌν μ λ ₯μ λν΄ λμΌν μΆλ ₯μ λ°ννλ©°, μΈλΆ μνμ μν₯μ μ£Όμ§ μλ ν¨μλ₯Ό μλ―Ένλ€. μμ ν¨μλ κ²°κ³Όλ₯Ό μμΈ‘νκΈ° μ½κ³ , ν μ€νΈμ λλ²κΉ μ΄ μ©μ΄ν΄μ§λ€.
λΆλ³μ± β Immutability ν¨μν νλ‘κ·Έλλ°μμλ λ°μ΄ν°μ μνλ₯Ό λ³κ²½νλ λμ , λ³κ²½λ μλ‘μ΄ λ°μ΄ν°λ₯Ό μμ±νλ€. μ΄λ₯Ό ν΅ν΄ μν λ³κ²½μΌλ‘ λ°μνλ λ²κ·Έμ κ°λ₯μ±μ μ€μΈλ€.
κ³ μ°¨ ν¨μ β Higher Order Functions κ³ μ°¨ ν¨μλ ν¨μλ₯Ό μΈμλ‘ λ°κ±°λ ν¨μλ₯Ό λ°νν μ μλ ν¨μμ΄λ€. μ΄λ₯Ό ν΅ν΄ μ½λλ₯Ό λ κ°κ²°νκ² μμ±νκ³ , μ€λ³΅μ μ€μ΄κ³ μ¬μ¬μ©μ±μ λμΌ μ μλ€.
컀리 β Currying μ¬λ¬ κ°μ μΈμλ₯Ό κ°μ§ ν¨μλ₯Ό νλμ μΈμλ‘ λ°λ ν¨μλ‘ λ³ννλ κΈ°λ²μ΄λ€. 컀리λ₯Ό μ¬μ©ν΄ ν¨μλ₯Ό λ μ μ°νκ² μ‘°ν©νκ³ , μ½λλ₯Ό κ°κ²°νκ² μμ±νλ κ²μ΄λ€.
βλΆμ ν¨κ³Όκ° μλ μμ ν¨μλ₯Ό 1κΈ κ°μ²΄λ‘ κ°μ£Όνμ¬ νλΌλ―Έν°λ λ°νκ°μΌλ‘ μ¬μ©ν μ μμΌλ©° ν¬λͺ μ±μ μ§ν¬ μ μλ€.β