ν¨μν νλ‘κ·Έλλ°μμ go, pipe, curry λͺ¨λ μ²μλ€μ΄λ΄€λ€. 맀μΌλ§€μΌ μλ‘μ΄ μ§μμ΄ μμμ Έ λμ¨λ€.π μ΄ν΄κ° μ κ°μ§ μμμ νμ°Έμ μ€μ΅ν΄λ³΄μλ€. go, pipe, curryλ₯Ό μ 리ν΄λ³΄λλ‘ νκ² λ€!
ν¨μν νλ‘κ·Έλλ°μ ν¨μλ₯Ό κ°μΌλ‘ λ€λ£° μ μμ΄μ μ½λλ₯Ό κ°λ
μ± μ’κ² μμ±ν μ μλ€.
μ€μ²©λμ΄ μλ μ½λλ κ°λμ±μ΄ λ§μ΄ λ¨μ΄μ§κΈ° λλ¬Έμ go, pipe, curryλ₯Ό μ¬μ©νμ¬ ννλ ₯μ λμ¬ κ°λ
μ±μ μ’κ² λ§λ€μ!
goλ ν¨μμ μΈμλ₯Ό μ λ¬ν΄μ μ¦μ μ΄λ€ κ°μ νκ°νλ ν¨μμ΄λ€.
const reduce = (f, acc, iter) => {
if (!iter) {
iter = acc[Symbol.iterator]();
acc = iter.next().value;
}
for (const a of iter) {
acc = f(acc, a);
}
return acc;
};
const go = (...args) => reduce((a, f) => f(a), args);
go(
0,
a => a + 1,
a => a + 10,
a => a + 100,
log
);
// 111
goμ 첫λ²μ§Έ μΈμμλ μμνκΈ° μν κ°μ λ£κ³ λλ¨Έμ§ μΈμμλ ν¨μλ€μ λ°μ λ€μ ν¨μλ‘ λκΈ°λ©΄μ μ°¨λ‘λλ‘ μ€ννλ κ²μ΄λ€.
ν¨μλ₯Ό 리ν΄νλ ν¨μ
λ‘, ν¨μλ€μ΄ λμ΄λμ΄ μλ ν©μ±λ ν¨μλ₯Ό λ§λ λ€.
νμ΄νλΌμΈμ κ° μμμ μΆλ ₯μ΄ λ€μ μμμ μ
λ ₯μ΄ λλλ‘ λ°°μ΄λ μ²λ¦¬ μμμ 체μΈμΌλ‘ ꡬμ±λ κ²
μ΄λΌκ³ νλ€. μ¦, νμ΄ν ν¨μλ ν¨μλ€μ νλλ‘ ν©μ±ν ν 리ν΄νλ ν¨μλ‘, 리ν΄λ ν¨μλ μΈμλ₯Ό λ°μ ν¨μλ€μ μ μ©νλ©° κ°μ 리ν΄νλ€.
const pipe = (...fs) => (a) => go(a, ...fs);
pipe ν¨μμ ...fs μΈμλ₯Ό λ°κ³ ν¨μλ₯Ό 리ν΄νλ€. 리ν΄λ ν¨μλ μ΄ μΈμλ₯Ό λ°μ ν¨μλ€μ λ°μ ν¨μλ€μ μ μ©νλ©° κ°μ 리ν΄νλ€.
const f = pipe(
a => a + 1,
a => a + 10,
a => a + 100
);
console.log(f(0)); // 111
μ¬λ¬ κ°μ μΈμλ₯Ό κ°κ° νλμ μΈμλ§ μ·¨νλ ν¨μλ₯Ό μΌλ ¨μ ν¨μλ‘ λΆν΄νλ κ²μΌλ‘ λ§νλ€.
const curry = f =>
(a, ..._) => _.length ? f(a, ..._) : (..._) => f(a, ..._);
μ¦, μ¬λ¬ κ°μ μΈμκ° νμνλ° νλμ μΈμλ§ λ°μμ κ²½μ° λ€μ μΈμλ₯Ό λ°μ μ μλλ‘ λΌλ€λ¦¬λ ν¨μλ₯Ό λ§λλ κ²μ΄λ€.
κ°λ¨νκ² λ§νλ©΄ func(1, 2, 3)μ΄ μλ func(1)(2)(3) μ΄λ° λ°©μμ΄λ€.
μ΄μ μ λ§μ°¬κ°μ§λ‘ μ€λ λ°°μ΄ λ΄μ© μ λΆ.. μλ‘κ² μκ²λ λ΄μ©μ΄λ€.^0^
λ무 λ무 λ무 μλ‘μ.. λ무 μλ‘μμ κ·Έλ°κ°..? λ―μ κ°λ¦¬κ² λλλ΄π
go, pipe, curry μ λ§ π€― λκ° ν°μ Έλ²λ¦¬λ μ€ μμλ€.
μ΄κ² λ§λ..? μ¬λ―Έλ μλ€λ§.. νν
μ€λμ ν¨μν νλ‘κ·Έλλ°μ κ°λ
μμ£Όλ‘ λ°°μ μ§λ§ μ€μ΅μ ν΄λ³΄κ³ μμ£Ό μ μ©ν΄λ΄μΌ μ΅μν΄μ§ κ² κ°λ€.ν¨μν νλ‘κ·Έλλ°.. μ§μ§ λ무 μ΄λ ΅λ€.
2μ£Όλμ λ°°μ λ κ°λ
λ€ μ€ μ μΌ μ΄λ €μ λ κ² κ°λ€. λ§€μΌ νλ λ§μ΄μ§λ§ 볡μ΅.. κ·Έλμ 볡μ΅!π ν΄λ ν΄λ μ μ μ ν μμ΄ λμ΄λλκ±ΈκΉ.. 볡μ΅νλ€λ³΄λ©΄ ν΄μΌν κ²μ΄ λ―Έλ€μ§κ³ .. ν΄μΌν κ²μ νλ©΄ 볡μ΅νλ κ²μ΄ λμ΄λκ³ γ
γ
μμΌλ‘ νμΌμλ λ± ν κ²λ§ νκ³ (μ΄κ²λ λ²
μ°Έ..) μ£Όλ§μ 볡μ΅μ ν΄μΌκ² λ€.π
μ€λ μκ³ λ¦¬μ¦ λ¬Έμ λ‘ λ°±νΈλνΉ λ¬Έμ N-Queenκ³Ό DP λ¬Έμ λ¨μ΄νΌμ¦μ νμλ€. μ¬μ€ νΌκ² μλλΌ λ΅μ ν΄μνλ€^^,, μ΄ λ¬Έμ λΌλ λ΄ κ²μΌλ‘ λ§λ€κΈ° μν΄.. λ¬Έμ λ§λ€ 3μκ° μ΄μμ μμ κ² κ°μλ° μ§μ€μ μ λλ‘ λͺ»νκ±΄μ§ νμ΄κ° κ³μ λΉλΉ λλ λλμ΄μλ€. κ²°κ΅ λ΅μ λ³΄κ³ λ§μμ λ§€μ° μμνλ€.π
λλ λ°°μ°λ¬ λ°λΈμ½μ€λ₯Ό λ€μ΄μμΌλκΉ! λ€ νλμ κ³Όμ μ΄κ² μ§!
λͺ¨λ₯΄λ κ²μ μ¨κΈ°μ§ λ§μ! λ€λ€ μΉμ ν λλ΅ν΄μ£Όμ€ν
λ μ§λ¬Ένμ!
λλλ‘ λ΄ νλ¦λλ‘ μνκ³ μμΌλκΉ νλ΄μ!
λͺΈμ΄ μ’ μμ’μλ€. 컨λμ
μ‘°μ !
μμ² μ€μν λΆλΆμ΄μ§ μμκΉ,,
μ λ° κ΅°κ²μ§λ‘ λ°° μ’ μ±μ°μ§λ§κ³ ^^.. λ°₯ μ’ μ μ±κ²¨λ¨Ήμπ
μ€μμλ snap cameraκ° μλ§ λλλ° μ! λμ€μ½λμμλ§ μλλλ λ§μ΄μΌ! λλ νν°γ
γ
μ λ λμ€μ½λ μ€λ
μΉ΄λ©λΌ 맨λ λλ€ μλλ€ νλ€μ... κ²λ€κ° λ λλ μκΎΈ ꡬμμ λ°ν κ°μκ° λλ²λ¦¬λ...γ
γ
γ
γ
μ΄λ €μ΄ κ°λ
μ΄λΌλ λ°°μ΄ νμ, λ€μ 보면 μ΄λ―Έ μκ²½λμ κ°λ
μ΄ λμ΄ μμ κ±°μμ!! νμ΄ν
μ
λλ€~
λ³κ±΄ μλμ§λ§
μ€λ μκ³ λ¦¬μ¦ λ¬Έμ λ‘ λ°±νΈλνΉ λ¬Έμ N-Screenκ³Ό DP λ¬Έμ λ¨μ΄νΌμ¦μ νμλ€.
μ¬κΈ° λ¬Έμ μ΄λ¦ μ€ν λ κ² κ°μμ!
볡μ΅νλ€λ³΄λ©΄ ν΄μΌν κ²μ΄ λ―Έλ€μ§κ³ .. ν΄μΌν κ²μ νλ©΄ 볡μ΅νλ κ²μ΄ λμ΄λκ³ γ γ <<< λλ¬Ό μλ μ€... πππ