
Владислав
06.09.2016
17:01:27
Ну я в принципе. Полифилы тоже не тру, потому что если полифилить все фичи, то это охуеть

Vladimir
06.09.2016
17:02:07
Object.keys && Object.values тоже далеко не везде есть
у меня кстати, ещё два доклада готовы
про асинк http://iamstarkov.com/fp-js-workshop/03-async/

Google

Vladimir
06.09.2016
17:03:25
и про контракты https://iamstarkov.com/fp-js-workshop/04-contracts/ (немного холиварная тема)

Дмитрий
06.09.2016
17:03:26

Владислав
06.09.2016
17:03:27

Vladimir
06.09.2016
17:04:00

Владислав
06.09.2016
17:04:03

Дмитрий
06.09.2016
17:04:41
ну вот я и спрашиваю про похожие случаи, если тебе нужно передать пару значений, то что бы это могло быть, например

Владислав
06.09.2016
17:04:44

マイク
06.09.2016
17:04:47
Кстати может кто-нибудь сталкивался, нужен DSL или что-нибудь вроде схемы, для валидации сложных форм

Владислав
06.09.2016
17:04:59
в общем, одно норм, а другое нет (:

Дмитрий
06.09.2016
17:05:04
К тому же, не вижу причины, почему бы не передавать всё в массиве
По нормальному, а не полотном аргументов

Владислав
06.09.2016
17:05:20
но вообще да, проще сразу все со всем

Google

Vladimir
06.09.2016
17:05:48
массивом проще будет
да
и тогда можешь будет использовать каррированый reduce

Dmitry
06.09.2016
17:32:18

Vladimir
06.09.2016
17:32:49
@kozulya
// reduce :: Function -> ( a-> b) -> [a] -> Array -> b
const reduce = curry( (fn, init, arr) => arr.reduce(fn, init) );
// merge :: Object -> Object -> Object
const merge = (one, two) => Object.assign({}, one, two);
// mergeAll :: [Object] -> Object
const mergeAll = reduce(merge, {});
//> arr => reduce(merge, {}, arr);
гугл знает, только не твой персонализированный =))

Dmitry
06.09.2016
17:33:50
Чорт

Roman
06.09.2016
17:37:27

Anton
06.09.2016
17:37:42
Пришла рассылка оО
Это действительно так чтоль?

Ruslan ?
06.09.2016
17:42:00
Хахах, а без флага g нормальная семья будет?

Дмитрий
06.09.2016
17:43:19
Меня больше радует всякое типа const ಠ_ಠ = "abc", что является валидным js кодом ?

hlomzik
06.09.2016
17:58:04

Дмитрий
06.09.2016
17:58:35
arity с неопределенным списком переменных это довольно жестко))
В любом случае, тут или массив, или reduce)

Den
06.09.2016
18:22:45
https://www.youtube.com/watch?v=BcmUOmvl1N8

Vitaly
06.09.2016
18:29:20

Den
06.09.2016
18:30:03
Вэбсервэр

Ruslan ?
06.09.2016
18:32:00

Google

Den
06.09.2016
18:34:00
Он там только четыре слова говорит?

Владислав
06.09.2016
18:35:03
@kozulya
// reduce :: Function -> ( a-> b) -> [a] -> Array -> b
const reduce = curry( (fn, init, arr) => arr.reduce(fn, init) );
// merge :: Object -> Object -> Object
const merge = (one, two) => Object.assign({}, one, two);
// mergeAll :: [Object] -> Object
const mergeAll = reduce(merge, {});
//> arr => reduce(merge, {}, arr);
const mergeArrays = (...args) => {
return reduce((result, array) => {
return reduce((result, value, i) => {
const list = result[i] || []
list.push(value)
result[i] = list
return result
}, result, array)
}, [], args)
}
че-то такое?

Vladimir
06.09.2016
18:44:34
Ааа

Дмитрий
06.09.2016
18:44:49
Ехал редьюс через редьюс)

Владислав
06.09.2016
18:45:07
ну вот да, че-то меня смущает такое кол-во редьюсов на квадоратную линию кода (:

Vladimir
06.09.2016
18:45:35
Аа понял
Напиши конкат для двух массивов
Потом зареюзай редьюс из предыдущего сообщения и прокинь в него конкат для двух и пустой массив

Дмитрий
06.09.2016
18:50:22

Владислав
06.09.2016
18:52:17

Владислав
06.09.2016
18:52:34
Напиши конкат для двух массивов
const joinArrays = (a, b) => {
const length = Math.max(a.length, b.length)
const result = new Array(length)
return map((v, i) => [a[i], b[i]], result)
}
у меня получилось вот так
хотя оно плохо расширяется, хммм

Дмитрий
06.09.2016
18:54:05
чочо
R.unnest([1, [2], [[3]]]); //=> [1, 2, [3]]
R.unnest([[1, 2], [3, 4], [5, 6]]); //=> [1, 2, 3, 4, 5, 6]
R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]);
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
На твой вкус ??

Владислав
06.09.2016
18:54:44
не, это вообще не то
это [1,2] + [3,4] = [[1,3], [2,4]]

Дмитрий
06.09.2016
18:55:35
Уверен?)
Энивей, там же есть и concat [1,2]+[3,4] = [1,2,3,4]
На твой вкус всё, опять же

Google

Владислав
06.09.2016
18:57:10
слушай, мне нужна конкретная операция
а именно слить массивы так, чтобы получился двумерный массив

Дмитрий
06.09.2016
18:57:54
Ты меня не понимаешь. Напиши конкретные входные данные и выходные
Бестолку описывать данные на словах)

Владислав
06.09.2016
18:58:42
in a = [1,2]
in b = [3,4]
out = [[1,3], [2,4]]

Vitaly
06.09.2016
19:01:23
a.map((e, i) => [a[i], b[i]])

Admin
ERROR: S client not available

Дмитрий
06.09.2016
19:01:41
Да ну, бросьте ?
А, чорт
R.zip

Владислав
06.09.2016
19:02:35

Vitaly
06.09.2016
19:03:14
это псевдокод, гуглите zip из любой библиотеки

Владислав
06.09.2016
19:03:34
теперь надо сделать суперзип на все массивы

Дмитрий
06.09.2016
19:05:07
Что значит суперзип?)) Напиши такой случай, чтобы не склеить его зипом, и желательно сразу с твоим граничным условием
ну типа
in a = [1,2]
in b = [3,4,5,6]
in c = [7,,,,9]
out ....
Правильная постановка задачи - половина ответа ?

Владислав
06.09.2016
19:06:13
Что значит суперзип?)) Напиши такой случай, чтобы не склеить его зипом, и желательно сразу с твоим граничным условием
ну типа
in a = [1,2]
in b = [3,4,5,6]
in c = [7,,,,9]
out ....
я уже написал, теперь вопрос в том, чтобы не писать редьюс через редьюс
для двух массивов – не проблема, как видишь

Дмитрий
06.09.2016
19:07:57
Так оно вообще не проблема, просто ты формулируешь задачу поочерёдно или сразу в виде кода))
Так то есть и transpose

Google

Дмитрий
06.09.2016
19:08:54
Частным случаем которого является zip

Владислав
06.09.2016
19:10:16
господь всемогущий, я же сформировал: хочу слить n массиввов в один двумерный массив
подскажите, пожалуйста, как это оптимально написать

hlomzik
06.09.2016
19:18:44

Vladimir
06.09.2016
19:19:10

hlomzik
06.09.2016
19:19:12
Ааааа. Так это в пхп есть. Ща вспомню
combine
Транспонирование, да

Vladimir
06.09.2016
19:20:11
const joinArrays = (a, b) => {
const length = Math.max(a.length, b.length)
const result = new Array(length)
return map((v, i) => [a[i], b[i]], result)
}
const joinArraysAll = arrs => arrs.reduce(joinArrays, []);

Владислав
06.09.2016
19:22:38
оно?
проблема в оригинальной, функции

Vladimir
06.09.2016
19:22:46
аа

Владислав
06.09.2016
19:22:46
она всегда возвращает сдвоенный массив

Vladimir
06.09.2016
19:25:24
А что делать в случае неодинаковых массивов?

Владислав
06.09.2016
19:26:17
выше был пример
Math.max от всех длин

hlomzik
06.09.2016
19:26:52
Это не джойн ни разу

Владислав
06.09.2016
19:27:25
ну пусть будет хуйойн
const huyoin