const a = 10;
const add10 = a => a + 10;
const r = add10(a);
// log(r);
const add5 = a => a + 5;
log(add5);
log(add5(5));
const f1 = () => () => 1;
log(f1());
const f2 = f1(); // 함수의 결과값으로 함수가 될수 있다
log(f2);
log(f2());
함수를 값으로 다루는 함수
// case1
const apply1 = f => f(1);
const add2 = a => a + 2;
log(apply1(add2)); // 3, 함수를 받아서 안에서 실행하고 있다
log(apply1(a => a - 1)); // 0
// case2
// 어플리케이티브 프로그래밍
const times = (f, n) => {
let i = -1;
while (++i < n) f(i); // 숫자만큼 함수를 실행
};
times(log, 3); // 0 1 2
times(a => log(a + 10), 3);
const addMaker = a => b => a + b; // a 를 클로저
const add10 = addMaker(10);
log(add10(5)); // 15
log(add10(10)); // 20