Что не так с каррированием на JavaScript?

preview_player
Показать описание
#soer #itubeteam

Рекомендации по теме
Комментарии
Автор

Олдфаги: - Ваше каррирование чистая фальшь сударь!
Любой JS Ньюфаг: - Это фишка языка, у нас такого добра много

**Звуки уезжающего в закат гироскутера**

Kira-ivio
Автор

Почувствовал себя снова в универе. Подробнейшая теория какой-то странной функции без каких-либо объяснений для чего это вообще нужно. Пишу на JS уже 8 лет, ни разу вообще не слышал про каррирование. Зашел узнать, что это. Узнал. Но зачем узнал не узнал.

HeroRc
Автор

Идея с рукописным вводом с планшета понравилась, возможно стоит попробовать чуть более затенить правую часть экрана и сделать шрифт белым. Спасибо за контент!)

unknyver
Автор

Не понятно зачем оно нужно, но очень интересно. Спасибо :-)

ScrambleCracker
Автор

"Важно понимать как правильно, но отвечать как ожидают" - мудро)))

ДжахангирЭрешов-шэ
Автор

Услышал о каррировании, попытался что-то найти, включил данный видос и не понял о чем вообще речь :) *так как не был осведомлен о бэкграунде данного вопроса. Закрыл видос и пообещал вернуться сильнее :))). И вот пару дней спустя я возвращаюсь и понимаю смысл и уместность каждой высказанной автором фразы !). обещание сдержал) ухожу с чистой совестью). П.С. Хотя нет, надо вернуться еще разок еще сильнее :)) с умением влёгкую составлять примеры и отличать слёту друг от друга Каррирование и Частичное Применение Функций 🎳💡

Albert_Hall
Автор

Такой вариант каррирования не подойдет?
const curry = (fn) => {
const arity = fn.length;
const cFn = (...args) => (x) => {
const iArgs = [...args, x];
return iArgs.length === arity ? fn(...iArgs) : cFn(...iArgs);
};
return cFn();
};

Epicn
Автор

Текст голубой с тенью конечно хорош, но, думаю, белый с тенью, был бы лучше. По поводу подачи материала - сложно. Сложно тому, кто 1 раз слышит о каком-то каррировании (а видео, как я понял, для таких людей и предназначено). Я бы шел от простого к сложному - это как ребенку объяснять алфавит. Из деревянных кубиков строим дом. Каждый кубик - буква алфавита, а дом - слово. Из одних и тех же букв можно собрать разные слова, как и разные дома можно построить из одних и тех же кубиков. Дети вы все поняли? Дааа! .... Соер: Итак, представьте что буквы - это стройматериалы для постройки дома, а дом - это слово. Теперь рассчитаем кубатуру железобетона и сечение арматуры для монолитных конструкций. Ученики: ЧТООО??? Да ну нахер, пойду в проститутки!

hjetwd
Автор

Ничего не понял, но крайне интересно, кажись потом придется пересматривать еще раз

ДмитрийПономарев-дю
Автор

За 9+ лет разработки пока так и не довелось использовать и встретить в коде коллег ни каррирование, ни частичное применение на практике.
Каковы типичные юзкейсы? Какая-то инициализация?

HeavyOnTheMagick
Автор

Horoshaja podacha i interesno, no ja vsjo tak i ne ponjal zachem mnje eto v praktike. Gde mnje eto stoit ispolzovatj (krome interview)?

Oswee
Автор

Интересный материал. Обьясняет доходчиво. Проще мне кажется не передать. Тема с планшетом вообще огонь!

BahtiyarBasharov
Автор

спасибо, наконец-то понял ) а то читал перевод стать о каррировании на hubr ничего не понятно было )

nomadgari
Автор

Формат видео очень крутой! Тема тоже интересная, хотелось бы немного практических примеров. Я сам знаю только один пример, чтобы в реакте в обработчике события вместо (e) => func(e) можно было бы писать просто func, а сама функция уже возвращала бы другую с эвентом. Но и то этот пример скорее визуально делает код может быть более красивым, но с унарными вычислениями ничего общего не имеет. Так зачем нам каррирование в JS?)

A-n-d-y-y-y
Автор

На самом деле не вижу причины использовать утилити-функции из библиотек (например ramda.js) для имитации каррирования, когда можно просто вручную записать const f = x => y => z => x + y + z. Благодаря стрелкам можно по-настоящему каррировать функции без библиотек и кучи return

yrurunning
Автор

Есть же варианты каррирования с использованием .valueOf, они будут отрабатывать корректнее, с учетом того что они определяют нужно ли сейчас вернуть функцию или результат ее выполнения.

Как пример:
var add = function (orig) {
var inner = function (val) {
return add(parseInt(val+'', 10) == val ? orig+val : orig);
};
inner.valueOf = function () {return orig;};

return inner;
};

ensox
Автор

Ааа дошло, это типо такая же бесполезная фигня, как в математике умножение бесконечностей?

atlasua
Автор

@
S0ER
Так вроде можно легко написать такую функцию каррирования, которая разложит функцию любой арности на унарные, без всяких curryN или eval:
```
const curry = original => {
const _curry = (length, args) => length
? arg => _curry(length - 1, [...args, arg])
: original(...args)
return _curry(original.length, [])
}

const original = (x, y, z) => x + y + z
const curried = curry(original)
console.log(curried(1)(2)) // function
arg => ...
console.log(curried(1)(2)(3)) // 6
console.log(curried(1)(2, 'anything')(3)) // 6
```
Проблема только в потере имени параметров функции, но если использовать TypeScript то хотя бы типы удастся сохранить

Denis.Zhelnerovich
Автор

Многие пишут в коментах, что ничего не понял, или зачем это нужно.

А вот Я - ПОНЯЛ! Я и раньше знал о частичном применении.

Но никогда сам так не писал, не было смысла. Может пригодится когда-то - посмотрим.

olezhonnv
Автор

Ничерта не понял, но оочень интересно

adskfksefn