π
κ°μ²΄μ§ν₯μ λμνλ λΆλΆμ μΊ‘μννμ¬ μ΄ν΄ν μ μκ² νκ³ ,
ν¨μν νλ‘κ·Έλλ°μ λμνλ λΆλΆμ μ΅μνν΄μ μ½λ μ΄ν΄λ₯Ό λλλ€.
- λ§μ΄ν΄ νλμ€. λ κ±°μ μ½λ νμ© μ λ΅δΈ
π νλ‘κ·Έλλ° ν¨λ¬λ€μ
νλ‘κ·Έλλ° ν¨λ¬λ€μμ νλ‘κ·Έλλ¨Έμκ² νλ‘κ·Έλλ°μ κ΄μ μ κ°κ² νκ³ κ²°μ νλ μν μ ν©λλ€.
- λͺ
λ Ήν νλ‘κ·Έλλ° : νλ‘κ·Έλλ°μ μνμ μνλ₯Ό λ³κ²½μν€λ ꡬ문μ κ΄μ μμμ μ°μ°μ μ€λͺ
μ μ°¨ μ§ν₯ νλ‘κ·Έλλ° : μνλμ΄μΌ ν μ°μμ μΈ κ³μ° κ³Όμ μ ν¬ν¨(C, C++)
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° : κ°μ²΄λ€μ μ§ν©μΌλ‘ νλ‘κ·Έλ¨μ μνΈμμ©μ νν(C++, Java, C#) - μ μΈν νλ‘κ·Έλλ° : μ΄λ»κ²(HOW) ν κ²μΈκ° 보λ€λ 무μ(WHAT)μ ν κ²μΈκ°λ₯Ό νν
ν¨μν νλ‘κ·Έλλ° : μμ ν¨μλ₯Ό μ‘°ν©νκ³ νλ‘κ·Έλ¨μ λ§λλ λ°©μ(Clojure, Haskell, Elixir)
π» ν¨μν νλ‘κ·Έλλ°
ν¨μν νλ‘κ·Έλλ°(Functional Programming)μ κ³μ°μ μνμ ν¨μμ νκ°λ‘ μ·¨κΈνκ³ μνμ κ°λ³ λ°μ΄ν°λ₯Ό λ©λ¦¬νλ νλ‘κ·Έλλ° ν¨λ¬λ€μμ λλ€. λΆμ ν¨κ³Ό(Side Effect)λ₯Ό μ κ±°ν κ²½μ° νλ‘κ·Έλ¨μ λμμ μ΄ν΄νκ³ μμΈ‘νκΈ° μ¬μμ§κΈ° λλ¬Έμ λΆμ ν¨κ³Όκ° μλ μμ ν¨μ(Pure Function)λ€λ‘λ§ μμ±λ©λλ€.
- λΆμ ν¨κ³Ό(Side Effect)λ?
- μ½μμ μΆλ ₯νκ±°λ μ¬μ©μμ μ λ ₯μ μ½λ κ²
- λ³μλ₯Ό μμ νκ±°λ, κ°μ²΄μ νλλ₯Ό μ μ₯νλ κ²
- μμΈλ₯Ό λμ§κ±°λ μ€λ₯λ₯Ό λ°μμν€λ©° μ€νμ μ€λ¨νλ κ²
- νμΌμ μ½κ³ μ°λ μμ
π ν¨μν νλ‘κ·Έλλ°μ νΉμ§
μμ ν¨μ(Pure function)
- λΆμ ν¨κ³Όκ° μλ ν¨μ
- ν¨μμ μ€νμ΄ μΈλΆμ μν₯μ λΌμΉμ§ μλ ν¨μ
- κ°μ μ
λ ₯μ μμ΄μ νμ λμΌν μΆλ ₯μ λ
μ°Έμ‘° ν¬λͺ μ±(Referential transparency)
- νλ‘κ·Έλ¨μ λ³κ²½ μμ΄ μ΄λ€ ννμμ κ°μΌλ‘ λ체ν μ μλ€λ μλ―Έ
λΆλ³μ±(Immutable)
- ν¨μ μΈλΆμμ λ°μ΄ν°λ₯Ό μμ νμ§ μμ
- ν¨μμ κ³μ°μ μννλ λμ λ³μμ ν λΉλ κ°λ€μ΄ μ λλ‘ λ³νμ§ μμ
μΌκΈ κ°μ²΄(First object, First class citizen)
- 1κΈ ν¨μλΌκ³ λ ν¨
- λ³μλ μλ£ κ΅¬μ‘°μμ μ½μ κ°λ₯
- νλΌλ―Έν°λ‘ μ λ¬ κ°λ₯
- λμ μΌλ‘ property ν λΉ κ°λ₯
- λ¦¬ν΄ κ°μΌλ‘ μ¬μ© κ°λ₯
κ³ μ°¨ ν¨μ(High order function)
- ν¨μλ₯Ό λ€λ£¨λ ν¨μ
- ν¨μμ μΈμλ‘ ν¨μ μ λ¬ κ°λ₯
- ν¨μμ λ¦¬ν΄ κ°μΌλ‘ ν¨μ μ¬μ© κ°λ₯
μ΅λͺ ν¨μ(Anonymous function)
- μ΄λ¦μ΄ μλ ν¨μ
- λλ€μμΌλ‘ ννλλ ν¨μ ꡬν
κ²μΌλ₯Έ νκ°(Lazy evaluation)
- μ½λ μ€ν μ¦μ κ°μ νκ°νλ κ²μ΄ μλ νμν μμ μ νκ°
π ν¨μν νλ‘κ·Έλλ°μ μ₯μ
- μ¬μ©νλ λͺ¨λ λ°μ΄ν°κ° λ³κ²½ λΆκ°λ₯(immutable)νκ³ ν¨μλ λΆμ ν¨κ³Όλ₯Ό κ°μ§κ³ μμ§ μκΈ° λλ¬Έμ λμμ±κ³Ό κ΄λ ¨λ λ¬Έμ λ₯Ό μμ²μ μΌλ‘ μ°¨λ¨
- ν¨μλ μ λ ₯κ³Ό κ·Έμ λν μΆλ ₯λ§μ μ± μμ§κΈ° λλ¬Έμ ν μ€νΈκ° μ½κ³ κ°λ μ±μ΄ μ’μ
- κ³ μ°¨ ν¨μλ‘ μΈν΄ ν¨μλ€ κ°μ κ²°ν©, μ‘°ν©μ΄ κ°κ²°ν΄μ§λ©°, μ΅λͺ ν¨μλ₯Ό μ¬μ©ν μ μμ
- μ½λ μ¬μ¬μ©μ±μ΄ λμ
- κΉλνκ³ μ μ§λ³΄μκ° μ©μ΄ν¨
π μ°Έκ³
'DEV > CS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Web Serverμ WASμ μ°¨μ΄μ μΉ μλΉμ€ ꡬ쑰 (0) | 2022.04.20 |
---|---|
RESTful API μλ―Έμ μ€κ³ κ·μΉ (0) | 2022.04.20 |