@JSlang

Страница 157 из 2237
Богдан
24.08.2016
16:33:09
Мб я что-то не понимаю конечно

Ilya
24.08.2016
16:33:20
ты точно тот элемент выбрал?

Андрей
24.08.2016
18:56:31
не могу не оставить это здесь: https://www.youtube.com/watch?v=Xt5qpbiqw2g

Ilya
24.08.2016
19:06:37
А слайды есть с этой презентации?

Google
Ilya
24.08.2016
19:06:47
Или транскрипт.

В описании что-то не нашёл, а слушать пол часа не хочется.

Андрей
24.08.2016
19:08:28
увы, слайдов не видел, транскрипта тоже. Слушается легко, можно фоном =)

Nikolay
24.08.2016
20:56:45
холиварный вопрос. Под новый проект ReactJS+Redux или Angular2+TS

Дмитрий
24.08.2016
21:01:36
ReactJS+Redux+TS))

Андрей
24.08.2016
21:14:45
Если уж TS, то лучше ReactJS+MobX. Эти штуки отлично сочетаются.

Владислав
24.08.2016
21:17:20
@iamstarkov можешь посмотреть, я правильно понял суть фпшности? https://github.com/5angel/quak/tree/master/src

Андрей
24.08.2016
22:03:48
я про связку с реактом

Taras ?
24.08.2016
22:10:22
извращения))

Дмитрий
24.08.2016
22:50:58
@iamstarkov можешь посмотреть, я правильно понял суть фпшности? https://github.com/5angel/quak/tree/master/src
Как минимум, функции в функциональном стиле можно каррировать, получая от них производные const summ = e1=>e2=>e1+e2 const addThousand = summ(1000) let arr = [0,300,1000] console.log(arr.map(addThousand)) Поэтому желательно данные передавать в самом конце, тогда можно делать целые цепочки преобразований вообще не упоминая изменяемые объекты.

Плюс, функции обязаны быть чистыми для удобства отладки и прочего. Функции с document. внутри этому критерию не особо соответствуют

Google
Дмитрий
24.08.2016
23:04:38
Модуль utils вообще не нужен, это стандартная функциональность ramda и lodash, повторять её смысла нет

По хорошему, твои функции должны выглядеть как-то так https://github.com/iamstarkov/split-keywords/blob/master/index.js

Nikolay
25.08.2016
04:32:25
@ZeroBias @scalder27 @proDO спасибо-с)

Андрей
25.08.2016
05:39:59
холиварный вопрос. Под новый проект ReactJS+Redux или Angular2+TS
Если по серьезному, то не зная специфики проекта, опыта и целей которых хочется добиться попутно, трудно что-то дельное советовать. Мне больше нравится реакт и я бы предпочел ReactJS+MobX+TS. Мне кажется что эта свзяка надежная, очень производительная, мне нравится как выглядит код и решение более зрелое чем Angular2.rcXX. Но есть определенные условия когда я бы выбрал Angular2.

Nikolay
25.08.2016
05:49:42
а когда лучше зайдет ангуляр?

промто я бекбоновод

но чет устал

Grigory
25.08.2016
06:55:43
Nikolay если ты бэкбоновод, то однозначно реакт. Переписывать с бэка на реакт — одно удовольствие, говорю по своему опыту

Каїн
25.08.2016
08:06:16
Даров рибята

Владислав
25.08.2016
08:35:41
Нуу вообще не очень, если честно ?
Собсно, я и пытаюсь научиться (:

Alex
25.08.2016
08:35:51
Шо тут?

Владислав
25.08.2016
08:35:55
ща попробую проникнуться Старковым

Vladimir
25.08.2016
08:36:57
Дмитрий
25.08.2016
08:37:13
а как же зиро дипенденси, не хочу рамды
Для фп это - зиро) Без неё многие вещи неудобно делать

Vladimir
25.08.2016
08:38:19
curry неправильная https://github.com/5angel/quak/blob/master/src/utils.js#L72-L74
православно примерно так https://iamstarkov.com/fp-js-workshop/01-theoretic-intro/#26 const curry = fn => (...args) => args.length < fn.length ? (...newArgs) => curry(fn)(...args.concat(newArgs)) : fn(...args)

Владислав
25.08.2016
08:39:37
Vladimir
25.08.2016
08:40:04
@iamstarkov можешь посмотреть, я правильно понял суть фпшности? https://github.com/5angel/quak/tree/master/src
each, лучше сразу каррировать и data last export each = curry( (cb, collection) => { for (const key in collection) { if (collection.hasOwnProperty(key)) { cb(collection[key], key) } } });

Ilya
25.08.2016
08:40:20
Бррр, тернарник со сносами.

Google
Дмитрий
25.08.2016
08:40:51
Бррр, тернарник со сносами.
Очень удобно, я сам к такому пришёл

Ilya
25.08.2016
08:41:04
Есть ещё карри который вызывается на аргументы когда последний вызов не содержит аргументов.

Типо, бесконечно аккумулирует.

Владислав
25.08.2016
08:41:42
в этом смысл карри, разве нет?
Я тут не слишком разбираюсь (: Значит, когда все аргументы есть, можно просто bind или как в таком случае поступать?

Ilya
25.08.2016
08:42:08
Очень удобно, я сам к такому пришёл
Ну не знаю, однострочники норм, я защищал и защищаю их, а вот в несколько строчек... if {} else {} как-то очевидней на мой взгляд.

Символьная магия разнесённая на несколько строчек.

Дмитрий
25.08.2016
08:42:27
Vladimir
25.08.2016
08:42:33
смысл карри в том, чтобы отложить вычисление функции пока она не получит все аргументы

как только получила, запускай

все хелперы — каррируй по умолчанию https://github.com/5angel/quak/blob/master/src/utils.js#L72-L74

те, что из них чистые — мемоизируй

Дмитрий
25.08.2016
08:44:12
Ну не знаю, однострочники норм, я защищал и защищаю их, а вот в несколько строчек... if {} else {} как-то очевидней на мой взгляд.
If else, да ещё и со скобками, как мне кажется , это для выполнения нескольких процедур, а когда нужно просто одно из двух значений вернуть это визуальный шум

Ilya
25.08.2016
08:44:13
А когда мне рассказывали, что карирование нужно, чтобы сохранить 1-arity у функций потому что это лучше поддаётся анализу или как-то так.

Владислав
25.08.2016
08:44:20
все функции писать через const – это тоже такой православный подход?

Vladimir
25.08.2016
08:44:50
эта чистая функция не будет вычислать второй раз результат для уже проработонного инпута

для просчитанных инпутов функция становится хеш таблицей

Дмитрий
25.08.2016
08:45:04
Admin
ERROR: S client not available

Google
Vladimir
25.08.2016
08:46:04
у меня почти нет переменных, поэтому функции в констах хранить норм

define methods мутабельный =( https://github.com/5angel/quak/blob/master/src/utils.js#L62-L66

безопаснее сделать shallow copy и вернуть её

ещэ

для дефолтного каррирования нужно, чтобы у функции было определённое арити

то есть не ...rest

и не function() { console.log(arguments) }

а function(arg1, arg2, …, argN-1, argN)

я бы для простоты тестирования разделил работу с домом/браузером и всё остальное

Владислав
25.08.2016
09:14:48
для дефолтного каррирования нужно, чтобы у функции было определённое арити
ну я заметил, что дефолтные аргументы оно тоже не любит

надо подумать

Vladimir
25.08.2016
09:16:52
дефолтные аргументы лучше делать через partial application

const add = curry( (a, b) => a + b); const add1byDefault = add(1); const add100byDefault = add(100);

Владислав
25.08.2016
09:22:29
Я понял, в таком случае получается, что дефолтные аргументы в es2015-синтаксисе вообще не используются

Andrey
25.08.2016
09:23:08
дефолтные аргументы о другом и для другого)

Vladimir
25.08.2016
09:23:23
очень многое не используется

из плюсов код становится более языко-агностичным

Damir
25.08.2016
09:25:26
из плюсов код становится более языко-агностичным
переведите пожалуйста этот термин на русский

hlomzik
25.08.2016
09:25:43
плевать, на чем пишешь

Vladimir
25.08.2016
09:26:05
на сях используешь си фп-библиотеку

Google
Vladimir
25.08.2016
09:26:09
код примерно такой же

дефолтные аргументы о другом и для другого)
они о другом, но с частичным применением они не нужны, смотри: 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]

зачем тебе зашитое внутри поведение, если его можно пробрасывать снаружи и сохранять в отдельную функцию?

Andrey
25.08.2016
09:30:15
да, но это чистое применение карринга и установления переменных с у же пред установленными значениями) но дефолтные значения чуть другое)

const map = curry( (fn = x => x, arr) => arr.map(fn)); можно было и так написать и покрыть вариант с дефолтным вызовом)

Страница 157 из 2237