π° Partial Application
Currying, Compose and Pipe
κΆ κΈ°μ
@doondoony
2019. 2. 16
π λͺ©μ°¨
μμ λκΉμ§ νλ€...
- Partial Application
- Currying
- Compose
- pipe
- go vs pipe
π λͺ©μ°¨
π ν¨μν νλ‘κ·Έλλ°?
map, filter, reduce...
λͺ°λΌ... κ·Έκ² λμΌ λ¬΄μμ...
ν¨μλμ νλ‘κ·Έλλ°μμ? μγ γ
κ·Έκ±° λ λ§ λκ² μ’μκ±°λΌκ³ ...
λΆμν¨κ³Ό... λμμ±... μ€νμμ μ ꡬμ λ°μ§ μλ...
μ€λμ λ± μ£Όμ΄μ§ μ£Όμ μλ§ μΆ©μ€νλ €κ³ ν©λλ€
μ±μκ» ν΄λ³΄λ €κ³ νλ€κ°λ μ κ° μ΄ν΄λ₯Ό λͺ»ν΄μ
Β
λͺ»λ λ°νμλ₯Ό λ μ€ν°λμλ€μκ² λ―Έμνλ€μμμ !
β Pre-requisite
β Pre-requisite
ν¨μν νλ‘κ·Έλλ°μ΄λ?
- μμ ν¨μλ‘ μ΄λ£¨μ΄μ§ ν¨μ λ€μ μ‘°ν©μ ν΅ν ꡬνμ λλͺ¨
- λΆλ³μ±κ³Ό μ°Έμ‘° ν¬λͺ
μ±μ μ μ§νμ¬ λλ²κΉ
, ν
μ€ν
κ·Έλ¦¬κ³ λμμ± μ²λ¦¬μ μ 리 - νλ‘κ·Έλ¨μ λ°μ΄ν°μ κ·Έκ²μ μ²λ¦¬νλ μμ ν¨μλ‘ κ΅¬μ±
β Pre-requisite
ν¨μν νλ‘κ·Έλλ°μ νκΈ° μ μ
μ°λ¦¬ λͺ¨λκ° μκ³ μλ κ°λ λ€
β Pre-requisite
1. Spread Operator ...
μ¬μ€ μ ννκ²λ Spread, Rest Syntax μ λλ€
μ°μ°μμ νΉμ±μ ... μ μ‘΄μ¬ νμ§ μμ΅λλ€
(μ§μ° νκ°, Infix Notation ~ μ€μ νκΈ° ~ λ±)
β Pre-requisite
2. Higher-Order Function
First Class Function κ³Όλ λ€λ₯Έ μλ―Έμ λλ€!
- ν¨μλ₯Ό λ°νν μ μμ΄μΌ νλ€
- ν¨μλ₯Ό λ€λ₯Έ ν¨μμ μΈμλ‘μ¨ μ λ¬ν μ μμ΄μΌ νλ€
β Pre-requisite
3. First Class Function
Higher-Order Function κ³Όλ λ€λ₯Έ μλ―Έμ λλ€!
ν¨μκ° μΌκΈ κ°μ²΄ (First Class Citizen)Β μμ μλ―Έ
μΈμ΄ μ°¨μμμ μ΄λ¬ν κΈ°λ₯μ μ§μ ν΄μ£Όλλμ λ°λΌ κ°λ¦°λ€
- λ³μλ λ°μ΄ν°μ ν λΉν μ μλ€
- κ°μ²΄μ μΈμ κ°μΌλ‘ μ λ¬ν μ μλ€
- κ°μ²΄μ λ¦¬ν΄ κ°μΌλ‘ μ¬μ©ν μ μλ€
β Pre-requisite
4. for ... of
Iterator Protocol μ λ°λ₯΄λ λͺ¨λ Collection κ°μ²΄λ₯Ό μνν μ μμ΅λλ€
β Pre-requisite
Iterable, Iterator, Generator, Iterator Protocol μ λ€λ₯Έ λΆ λ°ν μκ°μ ν€ν€
π° Partial Application
π° Partial Application
π° Partial Application
π° Partial Application
μ°μ , Application μ΄λΌλ λ¨μ΄μ μλ―Έλ
μΉ μ ν리μΌμ΄μ μ λ§λλ μ°λ¦¬κ° μλ κ·Έ μλ―Έκ° μλ
Β
"λΆλΆ μ μ©"
π° Partial Application
무μμ λΆλΆ μ μ© νλ건κ°μ?
"ν¨μμ μΈμλ₯Ό λΆλΆμ μΌλ‘ μ μ©ν©λλ€"
π° Partial Application
Partial Application μ λΆλΆ μ μ© νμλ
λ μ΄μμ papply μμ΄ ν¨μ νΈμΆμ΄ λμ΄μΌ ν©λλ€
π° Partial Application
Note
- Currying κ³Όλ λ€λ₯΄λ€. Currying κ³Όλ!
- λΆλΆμ μ©μ polyadic function(λ€κ° μμ ν¨μ) μ μΈμλ₯Ό 미리 λΆλΆμ μ©
νλ λλ λͺ κ°μ μΈμλ₯Ό μ€μΈ ν¨μλ₯Ό λ°ννλ€
π Currying
π Curry...?
π Curry...?
π Currying
π Currying
μκΉλ³΄λ€λ μ½μλ§ νμμ£ ...?
π Currying
Currying μ "μ¬λ¬κ°μ μΈμλ₯Ό λ°λ ν¨μ" λ₯Ό
λ¨ν ν¨μ(Unary Function) λ‘ μͺΌκ°μ΄
λ¨ν ν¨μλ₯Ό μμ°¨μ μΌλ‘ μ¬μ©νλ κ²μ μλ―Έν©λλ€
π Currying
μλ₯Ό λ€μ΄ μ΄λ κ² μ¨μ
π Compose
π Compose
μμμ μ§ν© X, Y, Z λ° λ ν¨μ
κ° μ£Όμ΄μ‘μλ, μ΄ λ ν¨μμ ν©μ±
λ λ€μκ³Ό κ°λ€
π Compose
π Compose
μ΄ λΆλΆΒ
λ§νΌμ μ΅μν©λλ€.
μ€μ²©ν΄μ ν¨μ μ¬μ©ν κ±°
π Compose
Compose λ ν¨μλ₯Ό 쑰립νμ¬
μλ‘μ΄ κΈ°λ₯μ νλ ν¨μλ₯Ό ꡬμ±νλ κ²
π Compose
κ·Όλ° add10 μ΄ μλλΌ λ΄κ° λ°λ‘ μ λ¬νκ³ μΆλ€λ©΄?
π Compose
κ·Όλ° add10 μ΄ μλλΌ λ΄κ° λ°λ‘ μ λ¬νκ³ μΆλ€λ©΄?
π Compose
Currying μ ν΅ν΄μ ν¨μλ₯Ό λ€μ ν λ² μ‘°ν©!
π° pipe
π° pipe
ν¨μ ν©μ±μ μν ν¨μλ‘λ
pipe, compose κ° μμ΅λλ€
Β
ν° μ°¨μ΄λ ν¨μ ν©μ±μ λ°©ν₯μΈλ°
pipeλ LEFT β RIGHT
composeλ RIGHT β LEFT
μ μ°¨μ΄κ° μμ΅λλ€
π° pipe
λ λ€λ₯Έ νΉμ§μ
pipe λ μ€ν κ²°κ³Όλ₯Ό λ°ννμ§ μκ³
ν©μ±λ ν¨μλ₯Ό λ°νν©λλ€
π° compose
π° pipe
π° pipe
pipe μ ꡬν μ½λ λ§λ³΄κΈ°
π go vs pipe
π go vs pipe
μμ μ½λμμ λ³΄μ ¨κ² μ§λ§
go λ μ€ν κ²°κ³Όλ₯Ό λ°ν
pipe λ ν©μ±λ ν¨μλ₯Ό λ°ν ν©λλ€
π Appendix / RxJS
π Appendix / RxJS
λ
κ°μ¬ν©λλ€
Partial Application, Currying, Pipe
By Doon Doon
Partial Application, Currying, Pipe
A slide for 1st week presentation
- 1,037