Anonymous
Андрей
я про связку с реактом
Taras 🦀
извращения))
Дима
Дима
Плюс, функции обязаны быть чистыми для удобства отладки и прочего. Функции с document. внутри этому критерию не особо соответствуют
Дима
Модуль utils вообще не нужен, это стандартная функциональность ramda и lodash, повторять её смысла нет
Дима
По хорошему, твои функции должны выглядеть как-то так
https://github.com/iamstarkov/split-keywords/blob/master/index.js
Nikolay
@ZeroBias @scalder27 @proDO спасибо-с)
Андрей
холиварный вопрос. Под новый проект ReactJS+Redux или Angular2+TS
Если по серьезному, то не зная специфики проекта, опыта и целей которых хочется добиться попутно, трудно что-то дельное советовать. Мне больше нравится реакт и я бы предпочел ReactJS+MobX+TS. Мне кажется что эта свзяка надежная, очень производительная, мне нравится как выглядит код и решение более зрелое чем Angular2.rcXX. Но есть определенные условия когда я бы выбрал Angular2.
Nikolay
а когда лучше зайдет ангуляр?
Nikolay
промто я бекбоновод
Nikolay
но чет устал
Grigory
Nikolay если ты бэкбоновод, то однозначно реакт. Переписывать с бэка на реакт — одно удовольствие, говорю по своему опыту
Serhii
Даров рибята
Vladislav
Alex
Шо тут?
Vladislav
Vladislav
ща попробую проникнуться Старковым
Vlad
Vladislav
Дима
Ilya
Бррр, тернарник со сносами.
Vlad
Ilya
Есть ещё карри который вызывается на аргументы когда последний вызов не содержит аргументов.
Ilya
Типо, бесконечно аккумулирует.
Vladislav
в этом смысл карри, разве нет?
Я тут не слишком разбираюсь (: Значит, когда все аргументы есть, можно просто bind или как в таком случае поступать?
Ilya
Символьная магия разнесённая на несколько строчек.
Дима
Vlad
смысл карри в том, чтобы отложить вычисление функции пока она не получит все аргументы
Vlad
как только получила, запускай
Vlad
все хелперы — каррируй по умолчанию https://github.com/5angel/quak/blob/master/src/utils.js#L72-L74
Vlad
те, что из них чистые — мемоизируй
Ilya
А когда мне рассказывали, что карирование нужно, чтобы сохранить 1-arity у функций потому что это лучше поддаётся анализу или как-то так.
Vladislav
все функции писать через const – это тоже такой православный подход?
Vlad
эта чистая функция не будет вычислать второй раз результат для уже проработонного инпута
Vlad
для просчитанных инпутов функция становится хеш таблицей
Дима
Vlad
Vlad
у меня почти нет переменных, поэтому функции в констах хранить норм
Vlad
define methods мутабельный =(
https://github.com/5angel/quak/blob/master/src/utils.js#L62-L66
Vlad
безопаснее сделать shallow copy и вернуть её
Vlad
ещэ
Vlad
для дефолтного каррирования нужно, чтобы у функции было определённое арити
Vlad
то есть не ...rest
Vlad
и не function() { console.log(arguments) }
Vlad
а function(arg1, arg2, …, argN-1, argN)
Vlad
я бы для простоты тестирования разделил работу с домом/браузером и всё остальное
Vladislav
Vladislav
надо подумать
Vlad
дефолтные аргументы лучше делать через partial application
Vlad
const add = curry( (a, b) => a + b);
const add1byDefault = add(1);
const add100byDefault = add(100);
Vladislav
Я понял, в таком случае получается, что дефолтные аргументы в es2015-синтаксисе вообще не используются
Andrey
дефолтные аргументы о другом и для другого)
Vlad
очень многое не используется
Vlad
из плюсов код становится более языко-агностичным
Damir
hlomzik
плевать, на чем пишешь
Vlad
на сях используешь си фп-библиотеку
Vlad
код примерно такой же
Vlad
дефолтные аргументы о другом и для другого)
они о другом, но с частичным применением они не нужны, смотри:
const map = curry( (fn, arr) => arr.map(fn));
const id = x => x;
const mapIdByDefault = map(id)
const double = x = x * 2;
const mapDoubleByDefault = map(double)
mapIdByDefault([1, 2]); // [1, 2]
mapDoubleByDefault([1, 2]); // [2, 4]
Vlad
зачем тебе зашитое внутри поведение, если его можно пробрасывать снаружи и сохранять в отдельную функцию?
Andrey
да, но это чистое применение карринга и установления переменных с у же пред установленными значениями) но дефолтные значения чуть другое)
Andrey
const map = curry( (fn = x => x, arr) => arr.map(fn));
можно было и так написать и покрыть вариант с дефолтным вызовом)
Vlad
вот модуль https://github.com/iamstarkov/es-deps-from-string
Vlad
принимает строку возвращает массив
Vlad
при одинаковых строках результат будет всегда одинаковый
Vlad
для работы с фс я его мемоизировал https://github.com/iamstarkov/es-deps/blob/master/index.js#L9
Vladislav
https://github.com/ramda/ramda/blob/master/src/internal/_arity.js
Vladislav
wat
hlomzik
ENLARGE YOUR FUNCTION
hlomzik
я так понимаю, это для функций с неопреленной arity
hlomzik
или для ее увеличения, хотя это уже странно