ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด์ ๊ณต๋ถํด๋ณด๋ฉด ๊ผญ ๋์ค๋ ์ฉ์ด๋ค์ด ์๋ค. ์ผ๊ธ ์๋ฏผ, ํจ์ ํฉ์ฑ, ์ปค๋ง ๋ฑ. ์ค๋์ ์ด๋ฌํ ๋จ์ด๋ค์ ๋ํด์ ์ดํดํด๋ณด์.
First Class Function
- function์..
-
argument๋ก ๋ฐ์ ์ ์์
-
returnํ ์ ์์
-
๋ณ์์ ํ ๋นํ ์ ์์
-
anonymous function
-
nested function
-
non-local variable
-
closure
-
equality
- Extensional Equality
- ๋ function์ด ๋์ผํ ์ ๋ ฅ์ ๋ํด ๋์ผํ ์ถ๋ ฅ์ ๊ฐ์ง๋ ๊ฒฝ์ฐ
- Intensional Equality
- ๋ Function์ด ๋์ผํ logic์ ๊ฐ์ง๋ ๊ฒฝ์ฐ
- Reference Equality
- Function ๊ณ ์ ์ Identifier๊ฐ ๋์ผํ ๊ฒฝ์ฐ
- Swift๋ function Equality๋ฅผ ์ง์ํ์ง ์์
- Extensional Equality
-
Function Composition
- function composition
- ๋ ๋ฆฝ์ ์ธ function ์ฌ๋ฌ๊ฐ๋ฅผ ๋๋์ด์ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ
- ์ฆ, ํฉ์ฑํจ์๋ฅผ ๋งํจ
- ๋จ์ํ pure function์ ์ ๋ง๋ค์ด๋๊ณ , ์กฐํฉ/์ฌํ์ฉํ์ฌ ํฉ์ฑ
- Function ๋จ์์ ์ฌํ์ฉ์ฑ์ด ๋์์ง
- Code์ฝ๊ธฐ๊ฐ ์ฉ์ด
- function ๋จ์ ํ ์คํธ ์ฉ์ด
- ๋ฒ๊ทธ ๊ฐ์
Partial Application
- ๋ถ๋ถ ์ ์ฉ
- Multi-argument function์์ ์๋ต๋ argument์ ๊ฐ์, ๋ฏธ๋ฆฌ ์ ํ์ฌ ๋ ์ ์ argument๋ฅผ ๋ฐ๋ function์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ
- default value๋ ๊ฐ์ ๋ํด์ ์ ํด๋๋ ๊ฒ
- ํ์ง๋ง ์ด๊ฑธ ํจ์๋ก ์ ํด๋๋ ๊ฒ์ ๋งํจ
- ์๋นํ ์ฌ๊ณ ์ ์ ํ์ด ํ์ํจ์ ์ ์ ์๋ค.
Currying
-
์ฌ๋ฌ๊ฐ์ argument๋ฅผ ๋ฐ๋ function์ ๋จ์ผ argument๋ฅผ ๋ฐ๋ function chain์ผ๋ก ๋ณํ
-
์ค์ ๋ก ๋ง๋ค์ด์ generic์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ์ฐธ ๋จธ๋ฆฌ์ํ๋ค.
-
currying opensource ์์ผ๋ ์ฌ์ฉํด๋ณด์.
-
์์
-
ํ์ฉ๋
-
๋๋ฒ์งธ argument ํ์ฉ์ ์ง์ฐํ ์ ์๋ค. ์ ์ฐํจ์ ์ ๊ณต
-
Factory for functions
- ์ผ๋ถ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ณ ์ ํด์ ํน์ ์ฉ๋์ ํจ์๋ฅผ ๋ง๋ค์ด๋ผ ์ ์๋ค.
-
- template method pattern
- ๊ฐ์ฒด์ ๊ธฐ๋ณธ ๊ณจ๊ฒฉ์ ๋ง๋ค์ด๋๊ณ (abstract class)
- ์ค์ ์ฌ์ฉํ๋ ํด๋์ค๊ฐ ์์๋ฐ์ ๊ตฌ์ฒดํ ํ์ฌ ์ฌ์ฉํ๋ ํจํด
- partial application์ ์ด์ฉํด ์ด๋ฏธ ์๋ ค์ง ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ๋๋จธ์ง parameter๋ฅผ ๊ตฌํํ๋๋ก ๋จ๊ฒจ๋
- template method pattern
-
๋ฌต์์ ์ธ ๊ฐ
- ์ผ๋ถ parameter๋ฅผ ๊ณ ์ ํด์ default parameter์ฒ๋ผ ๋์ํ๊ฒ ๋ง๋ฆ
-