Size: a a a

(F|R|FR)P - русскоговорящее сообщество

2018 December 17

TK

Tim Khazamov in (F|R|FR)P - русскоговорящее сообщество
Котяй Негодяй
Насчёт понятия хз. Но имплементация вот:

wtf.reduce(reducer, initial)
Чуть явнее actions.reduce(reducer, initAction)
источник

m

mg901 in (F|R|FR)P - русскоговорящее сообщество
// makeBreakpointsProcess :: Object -> Array
export const makeBreakpointsProcess = config =>
 Array.prototype.concat
   .call([], createBreakpoints(config))
   .map(toPxValue)
   .map(basePropProcess)
   .reduce(inheritProps, [])
   .map(
     R.compose(
       setPropRoot,
       calcRatioProcess,
     ),
   );
источник

m

mg901 in (F|R|FR)P - русскоговорящее сообщество
вот на эту функцию сморю и думаю, что можно её как редьюсер описать
источник

m

mg901 in (F|R|FR)P - русскоговорящее сообщество
она же принимает объект, применяет все фукнции к нему и выводит массив
источник

m

mg901 in (F|R|FR)P - русскоговорящее сообщество
а в начале конкатинирует результат первой функции с пустым массивом
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
Tim Khazamov
Чуть явнее actions.reduce(reducer, initAction)
Это слишком конкретно. Я намекал, что reducer, по сути, есть везде, где есть Foldable.

https://github.com/fantasyland/fantasy-land/blob/master/README.md#foldable
источник

m

mg901 in (F|R|FR)P - русскоговорящее сообщество
очень похожее поведение на reduce
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
mg901
она же принимает объект, применяет все фукнции к нему и выводит массив
Чёт не то.
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
Редьюсер принимает некий аккумулятор и следующее значение, а возращает новый аккумулятор.
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
Или мутированный. 🌚
источник

m

mg901 in (F|R|FR)P - русскоговорящее сообщество
ок
источник

m

mg901 in (F|R|FR)P - русскоговорящее сообщество
значит у меня всё норм
источник

m

mg901 in (F|R|FR)P - русскоговорящее сообщество
загнался просто
источник
2018 December 20

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
Есть у меня Stream<string>. В каждом значении может встречаться символ, который считается разделителем. Задача состоит в том, чтобы создать. новый стрим, в котором новые значения созданы из старых с использованием разделителя. Например, у нас есть стрим:

from([
 '123 456',
 '789 0',
])


где пробел — это разделитель. И он должен превратиться в такой стрим:

from([
 '123',
 '456789',
 '0',
])
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
Как бы вы это сделали? =)
источник

AK

Anton Kotenko in (F|R|FR)P - русскоговорящее сообщество
fold/reduce
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
Anton Kotenko
fold/reduce
А если стрим слишком большой или бесконечный?
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
Вот решение, но оно не умеет в последнее значение, если за ним не идёт разделитель:

from([
 'ABCD\nEFGH',
 'wtf',
 'IJKL\nMNOP',
 'QRST\nUVWX',
])
 .scan(
   (acc, data: string) => {
     const rows = data.split('\n')
     const queue = rows.slice(0, -1)
     const lastRow = last(rows) || ''

     if (queue.length) {
       queue[0] = acc.buff + queue[0]
       acc.queue = queue
       acc.buff = ''
     } else {
       acc.queue = []
     }

     if (data.endsWith('\n')) {
       acc.queue.push(
         `${acc.buff}${lastRow}`,
       )
     } else {
       acc.buff += lastRow
     }

     return acc
   },
   { buff: '', queue: [] },
 )
 .chain(acc => from(acc.queue))
 .subscribe({
   next: console.log,
 })
источник

AK

Anton Kotenko in (F|R|FR)P - русскоговорящее сообщество
Котяй Негодяй
А если стрим слишком большой или бесконечный?
Это уже забота реализации стрима, они все по умолчанию большие и бесконечные
источник

К

Котяй Негодяй in (F|R|FR)P - русскоговорящее сообщество
Anton Kotenko
Это уже забота реализации стрима, они все по умолчанию большие и бесконечные
Но суть в том, что в этом случае редьюс не подходит. 🤷‍♂️
источник