
Denis
27.09.2017
20:40:29

kana
27.09.2017
20:40:47
почему не сделать?
это же обычный объект такой

Kelin
27.09.2017
20:41:08

Google

Maxim
27.09.2017
20:41:29
Мапнуть промапнуть чилдренов сложнее с жыксом

? animufag ?
27.09.2017
20:41:51

kana
27.09.2017
20:42:09
ну в элме мапают неперемаповают

illiatshurotshka❄️
27.09.2017
20:42:32

? animufag ?
27.09.2017
20:43:25
ну это такая частая проблема. мол берут сложную глубокую тему.
в ней проходится по вводному материалу.
и объясняют долго и как дауну с картинками и ебаными аналогий как в хаскель for a great good
и типо в конце вуаля это же легко всё

Maxim
27.09.2017
20:55:48
Меня кстати бесит рекомпоуз не только безумным количеством вложенных хоков на выходе но и адом типизации

kana
27.09.2017
20:55:50
ну типа вот, обобщил
prism :: (small' -> large')
-> (large -> Either large' small)
-> Prism large large' small small'
prism build get = dimap get (either pure (fmap build)) . right'
_Left :: Prism (Either a x) (Either b x) a b
_Left = prism Left (either Right (Left . Right))
_Right :: Prism (Either x a) (Either x b) a b
_Right = prism Right (either (Left . Left) Right)
все пожалуй

Maxim
27.09.2017
20:56:21
Как с выводом типов на флоу для withHandlers например?

kana
27.09.2017
21:03:29
все, кату про линзы засабмитал, теперь могу спокойно работать всю оставшуюсь неделю. А то попросту не выходило: смотрю аниме, а мысли про линзы, ложусь спать, а думаю, что траверсал похож на функтор для линз

Котяй Негодяй
27.09.2017
21:07:29
Вот такая реализация long polling:
const request$ = new Subject()
const subscription = request$
.mapTo(params)
.map(getUpdates)
.subscribe(
resPromise => resPromise.then(
(response) => {
if (response.ok) {
response.result.forEach(emit)
}
request$.next()
},
),
)
request$.next()
Но это вообще нормально — генерировать событие прямо из подписчика?

Maxim
27.09.2017
21:10:25
А почему бы не вайл трухнуть эвэйт респонса с пинком сабжекта ? И emit будто бы чуждая вещь, не из стримов

kana
27.09.2017
21:11:21
видел недавно фразу "ангулярщики думаю, что rx - это такой эвентбас"

Google

Котяй Негодяй
27.09.2017
21:12:08
Не в нём суть.

Maxim
27.09.2017
21:13:25
Думаю стрим пинающий свой сабжект может утечь

Котяй Негодяй
27.09.2017
21:16:51

Denis
27.09.2017
21:17:07

kana
27.09.2017
21:17:34
полное решение https://gist.github.com/kana-sama/abb0c7b513e35fd41ab1d96e3c35e29e

Denis
27.09.2017
21:17:38

kana
27.09.2017
21:17:43
нет
я не знаю что это такое и не хочу знать
пока что

Котяй Негодяй
27.09.2017
21:17:57

kana
27.09.2017
21:17:59
в субботу

Denis
27.09.2017
21:18:39

kana
27.09.2017
21:19:12
решение? Или статью? Если второе, то с радостью
решение никто кроме тех, кто уже знает, не поймет)

illiatshurotshka❄️
27.09.2017
21:19:55
а по линзам статья будет?

Denis
27.09.2017
21:19:55

kana
27.09.2017
21:20:31
не думаю, что это можно передать статьей) Все настолько странно там
Нужно просто написать их и понять

Google

Denis
27.09.2017
21:21:18

kana
27.09.2017
21:21:20
Думаю, я бы смог в статье описать обычные линзы, мб даже с изо, но без призм, фолдов, траверсов (ну последние тоже мб смог бы)
нет, я не про то
Понятно, что траверсал - функтор. Я говорю, что сам по себе травесал похож на функтор ДЛЯ линз. То есть он берет линзу, которая работает на одном объекте и делает из нее линзу, которая работает на многих, как например List.map

Maxim
27.09.2017
21:24:02
Читай его бесконечно с дебонсом

Denis
27.09.2017
21:25:34
нужно тогда какой-то скедулер

Maxim
27.09.2017
21:26:16
Дебонс же
Таймаут, или как там он называется

Котяй Негодяй
27.09.2017
21:26:30

Котяй Негодяй
27.09.2017
21:26:42
Мне таймаут не нужно реализовывать.

Denis
27.09.2017
21:26:47

Котяй Негодяй
27.09.2017
21:26:58

Denis
27.09.2017
21:27:08
юзай скедулер типа реквестанимейшенфрейм

Maxim
27.09.2017
21:27:18
Что бы подождал секунду другую, прежде чем прочитает следующее значение из безконечного источника

Котяй Негодяй
27.09.2017
21:27:22
Сервер отвечает секунду минимум. Я могу сказать, чтобы дольше.

kana
27.09.2017
21:27:23
ладно, не могу удержаться, пора смотреть на профункторную оптику

Google

Котяй Негодяй
27.09.2017
21:27:50
http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-repeat
Та только количество повторений.
А у меня... эээ.. Инфинити?

Denis
27.09.2017
21:28:36
ну или скедулер

Maxim
27.09.2017
21:29:41

Котяй Негодяй
27.09.2017
21:30:14
Следующий запрос только после того, как сервак ответит. Сервак ждёт столько, сколько скажу.

Denis
27.09.2017
21:30:43

Admin
ERROR: S client not available

kana
27.09.2017
21:30:49
вау, я думал, что инварианты никак нельзя мапать. Как же я ошибался. Я про ExpFunctor

Denis
27.09.2017
21:31:17

Котяй Негодяй
27.09.2017
21:32:50
Во:
const request$ = new Subject()
const subscription = request$
.startWith(null)
.mapTo(params)
.map(getUpdates)
.mergeMap(Observable.fromPromise)
.do(request$)
.subscribe((response) => {
if (response.ok) {
response.result.forEach(emit)
}
})

kana
27.09.2017
21:33:04
Ковариантные типы можно мапать функтором. Контрвариативные вещи можно мапать кофунктором. А инвариантные я думал мапать нельзя, но решение же очевидно, нужно просто сразу смапать и влево, и в право)
имея a -> a мы можем превратить его в b -> b, прикомпозив справа b -> a, а слева a -> b. Это и есть ExpFunctor f

Maxim
27.09.2017
21:33:58
Котяй, попробуй most js, если не поздно. Делает тоже самое, но проще и понятнее. Ещё и data-last , фэнтези спеки поддерживает и т.д.

Denis
27.09.2017
21:33:59
.mergeMap(Observable.fromPromise) зачем это?

Алексей
27.09.2017
21:34:34

Denis
27.09.2017
21:34:45

Google

Denis
27.09.2017
21:34:56

kana
27.09.2017
21:35:07
xmap :: (a -> b) -> (b -> a) -> f a -> f b

Котяй Негодяй
27.09.2017
21:35:37

Denis
27.09.2017
21:35:43

kana
27.09.2017
21:35:53
https://hackage.haskell.org/package/category-extras-0.53.0/docs/Control-Functor-Exponential.html

Котяй Негодяй
27.09.2017
21:36:04
И не захотел .do(request$)

kana
27.09.2017
21:36:04
http://comonad.com/reader/2008/rotten-bananas/

Котяй Негодяй
27.09.2017
21:36:48

Denis
27.09.2017
21:39:53

Котяй Негодяй
27.09.2017
21:40:41

Denis
27.09.2017
21:40:54
ох

Котяй Негодяй
27.09.2017
21:41:32
И вызывать в мапе Observable.fromPromise(getUpdates(params))

Denis
27.09.2017
21:41:36
да ты тут смешал и сайдэффекты и прочее в одном месте
mergeMapTo(getUpdates(params))

Котяй Негодяй
27.09.2017
21:42:34
.mapTo(params)
.mergeMap(getUpdates)
А так он дёргается только 1 раз при вызове mergeMapTo.

Denis
27.09.2017
21:43:41
ага

Котяй Негодяй
27.09.2017
21:44:01
Если по твоему, то
mergeMapTo(() => getUpdates(params))
Но в два вызова проще читать.
Так. Значит map промисы не резолвит, а mergeMap резолвит. Спасибо. Не знал.