230131(ν)
π μ±μ₯μΌμ§ 3.1
μ±
ν볡ν μ΄κΈ°μ£Όμμ(μ¨μΈ λ€μ΄μ΄)
μ λ΄μ©μ μκ·Ήλ°μ μμνλ μλ°ν μ±μ₯κΈ°λ‘
μ΄μμλ κ½κ³Ό μ£½μ κ½μ μ΄λ»κ² ꡬλ³νλκ°?
μ±μ₯νκ³ μλ κ²μ΄ μ΄μ μλ κ²μ΄λ€.
μλͺ μ μ μΌν μ¦κ±°λ μ±μ₯μ΄λ€!
π³ ν€μλ (1.0)
μ΅λν κ°λ¨νκ² μ 리, μΆνμ 보면μ μ€μ€λ‘ μ€λͺ
π κ²½ν μμ£Όλ‘ (2.0)
λ¨μ μ 보λ₯Ό μ λ¬νκΈ°λ³΄λ€ λ¬΄μμ λ°°μ κ³ μ΄λ»κ² ν΄κ²°νλμ§ μ§§κ³ κ°λ¨νκ² μμ±
βοΈ μ ν΄μ§ ν νλ¦Ώμ λ§μΆ°μ (3.0)
ν€μλ, κ²½ν λͺ¨λ μ’λ€. λ€λ§ λ§€μΌ μμ±νκΈ°λ‘ λ§μ λ¨Ήμλ§νΌ ν΅μ¬λ§ κ°κ²°νκ² μ 리ν μ μκ² ν νλ¦Ώμ μμ± (3.1) 230102λΆν° μμλλ νμ΅μ κ΄ν λ΄μ© μΆκ°
π μ€λμ ν€μλ
λͺ¨λλ
- μνμ λ²μ£Όλ‘ μμ μ¬μ©λλ κ΅¬μ‘°λ‘ Haskel, Scalaμμ μ΄λ₯Ό νλ‘κ·Έλλ°μ μ μ©
- λΉλκΈ° μ°μ° μ²λ¦¬ => Promiseκ° μ¬μ€ Monadμ μΌμ’
- κ°μ΄ λ―Έλμ μ‘΄μ¬νκ±°λ κ°μ΄ nullμΈ κ²½μ°λ₯Ό λͺ¨λΈλ§ν λ Monadλ₯Ό μ¬μ©νλ€.
flatMap()
- map() λ©μλμ λμΌνλ κ·Έ λ€μ κ° μμ λ³λ‘ flat()μ μ°λ¬μ μ€ννλ€.
- λ°°μ΄μ μμ κ°―μλ₯Ό λ릴 μ μλ€λ μ μμ filter()μ λ°λμ μν μ΄κΈ°λ νλ€!
컀λ§(Currying)
- 컀λ§μ f(a, b, c)μ²λΌ λ¨μΌ νΈμΆλ‘ μ²λ¦¬νλ ν¨μλ₯Ό f(a)(b)(c)μ κ°μ΄ κ°κ°μ μΈμκ° νΈμΆ κ°λ₯ν νλ‘μΈμ€λ‘ νΈμΆλ ν λ³ν©λλλ‘ λ³ννλ κ²
- ν¨μν νλ‘κ·Έλλ°μμ 맀κ°λ³μλ‘ μ λ¬ν΄μΌν κ°μ΄λ ν¨μλ₯Ό κ°μΆλ μν λ‘ μ°μ΄λ λλ!(ν΄λ‘μ λ‘ μ μ₯ν΄λλ λλ)
// μΌλ° ν¨μ
const a = (b, c, d) => b + c + d;
// μ»€λ§ ν¨μ
const e = (f) => (g) => (h) => f + g + h;
μ°Έκ³ μλ£
π μμ½ λ° ν루 κ°λ¨ νκ³
ν¨μν νλ‘κ·Έλλ°μ νλ°κ°λ½ μ λ κ°κΉμ΄ κ° κ² κ°λ€. κ·Όλ° μμ§ν μΌλ§μ λΆν° μ§κΈκΉμ§λ κ°μ²΄μ§ν₯μ λͺ°μ
ν΄μμ΄μ κ·Έλ°κ°..?! μμ§μ ν¨μν νλ‘κ·Έλλ°μ λν΄μ μ°μ
νλ 건 μλ λ―νλ€.
ν¨μνμ μ¬λ¬ μ₯μ (μμ ν¨μ, 컀λ§, μνλ₯Ό 곡μ νμ§ μλ κ² λ±λ±)μ μ κ² κ°λ€. λ€λ§ μμ§ κ·Έ λλ ·νκ² μ€μ©μ μΈ νμ©λ²μ λͺ¨λ₯΄κ² λ€. κΌ μ΄λΆλ²μ μΌλ‘ κ°μ²΄μ§ν₯μ΄λ, ν¨μνμ΄λλ₯Ό λλμ§λ§κ³
ꡬννκ³ μ νλ λͺ©μ μ λ§κ² μ μ ν λꡬλ‘μ κ·Έ ν¨λ¬λ€μμ νμ©νλ©΄ λ κ² κ°λ€. κ·Έμ μ΄ ν¨λ¬λ€μμ λ°λΌ μ½λμ ꡬμ±κ³Ό μ§νμ΄ λ¬λΌμ§λ κ² λ무 μ¬λ―Έμκ³ λλ λ°°μ°κ³ μΆμ μμ¬μ΄ λλ€!
μ€λμ μν μ
- ν¨μν νλ‘κ·Έλλ°μ λν΄μ λ κΉκ² λ€μ΄κ°λ³΄λ € λ Έλ ₯ν μ !
- νΌκ³€νμ§λ§..! κ·Έλλ μ΄λμ λ μ€λ ν루 κ³ν μμν μ !
μ€λμ μμ¬μ΄ μ
- μΌμ° μκ³ μΌμ° μΌμ΄λμ!!!!!!!!! μλ©΄μ μ λ§μ λ§ μ€μνλ€!!!!