Кто на ТС пишет? Я правильно каррирую в ТС? Вот отрывок из обсуждения:
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪:
> кстати, до сих пор спрашивают на собесах, и я не понимаю, зачем
Я бы сразу с такого собеса валил бы, и не ждал бы от них оффера - искал бы другую контору
Прочитал по поводу "++" выше (и в моём примере он используется)... Я видел, что админ попросил не возвращаться к этой теме, но я хочу показать, как можно ещё гибче сделать дополнительным каррированием в предложенном решении, заодно избавившись от (ненавистного) "++" через функцию - с разворачиванием типов в комментах:
https://bit.ly/2Gu5BgR... вот так мы превратили "3 строчки" (ссылаюсь на слова выше) хардкода -> в 21 строчку (5 - реализация + 3 - сборка + 3 - выполнение + 10 комментов которые IDE и без них подсветит) гибко-настраиваемого getId - дублирую:
const getId = (init: number) =>
(next: (c: number) => number) =>
(id: (c: number) => string) => {
let c = init;
return () => id(c = next(c));
} // const getId: (init: number) =>
// (next: (c: number) => number) =>
// (id: (c: number) => string) =>
// () => string - inferred
const init2 = getId(2);
// const init2: (next: (c: number) => number) =>
// (id: (c: number) => string) =>
// () => string
const myNextInit2 = init2(c => c * 2 + 1); // c => c + 1 - no "++"
// const myNextInit2: (id: (c: number) => string) =>
// () => string
const myIdNextInit2 = myNextInit2(c => prefix_${c}_postfix);
// const myIdNextInit2: () => string
console.log(myIdNextInit2());
console.log(myIdNextInit2());
console.log(myIdNextInit2());
Andrei Kurosh:
ФП, которое мы заслужили - с каррированием по самое не балуй и при этом с сайд-эффектами
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪:
Энкапсулированными - не надо путать - никто к внутреннему состоянию прямого доступа не имеет - а вы думали как пишется трамплины? - через цикл while. Теми же генераторами больше кода реализовывать