
Gleb
18.08.2017
08:35:57
Да чтото все молчали

andretshurotshka?❄️кде
18.08.2017
08:36:06
Лол

Gleb
18.08.2017
08:36:30
?

andretshurotshka?❄️кде
18.08.2017
08:38:11
cyclejs?

Google

Gleb
18.08.2017
08:38:41
не,я имел ввиду функцию cycle как вот в haskell
на js есть ли у нее реализация , хотел посмотреть
Или cycle.js имплементит как раз встроенные функции фп языков?
Ща гляну
Не не то , rx у меня уже есть в проекте

andretshurotshka?❄️кде
18.08.2017
09:15:18

Denis
18.08.2017
09:27:02

Gleb
18.08.2017
09:27:41
Круто, спасибо!)

Denis
18.08.2017
09:32:35

Gleb
18.08.2017
09:33:11
нене мне без них интересно

Denis
18.08.2017
09:35:01
Без них лени не будет
Энергичность сделает переполнение стека
Можно как-то через ленивый вариант fixed point

Google

Denis
18.08.2017
09:35:55

Gleb
18.08.2017
09:36:15
ну мне просто интересно с ними и без них)

Дмитрий
18.08.2017
09:36:53

Denis
18.08.2017
09:37:05

Дмитрий
18.08.2017
09:40:11
Переполнение и ленивость не связаны напрямую и не противоречат друг другу
А stack-safe профункторы я например тебе уже показывал)

Denis
18.08.2017
09:58:12

Дмитрий
18.08.2017
10:08:35

Denis
18.08.2017
10:09:11
Ну ок) аут оф мемори

Дмитрий
18.08.2017
10:10:20
Без генераторов имплементить в принципе так же как и с ними — это всего лишь протокол Iterator, общий для всех — твой объект должен иметь метод .next() и возвращать { done: boolean, value: any } и тогда для языка не будет разницы между ним и генератором
Но вручную это реализовывать немного больно конечно ?

Denis
18.08.2017
10:13:57
Ну это понятно, я просто сказал что с генераторами это проще и все

Дмитрий
18.08.2017
10:14:11
Ну да
Один yield* чего стоит)

Denis
18.08.2017
10:14:39
Зачем себя ограничивать если тебе даёт такую возможность язык?
И если хорошо понимать генераторы то интуитивно легко написать cycle
И iterate и все такое
Можно сказать что приблизительно хаскель списки это есть в жс генераторы
Вернее можно сделать такое поведение

Google

Gleb
18.08.2017
11:15:46
о нукась
спасибо!!!)
Огромное спасибо!
Могу продолжить спокойно читать "Изучай Haskell во имя добра" поглядывая в такие вот haskell -> js полифилы

Denis
18.08.2017
11:18:09
мб)
кстати если надо сделать цикличность со знанием длины то можно
const cycleFill = curry((length, xs) => Array.from({length}, (_, i) => xs[i % xs.length]))

Gleb
18.08.2017
11:20:50
Во я так изначально и думал
тьогда похоже на take 10 cycle из примера

Denis
18.08.2017
11:37:23
тьогда похоже на take 10 cycle из примера
ага
const takeLazy = R.curry(function * (n, stream) {
for(let x of stream) {
if(n-- === 0) {
return
}
yield x
}
});
const cycle = function *(xs) {
yield * xs
yield * cycle(xs)
}
const lazyFill = R.curry((n, xs) => R.compose(
takeLazy(n),
cycle
)(xs))
[…lazyFill(5, [1,2,3,4])] // => [1, 2, 3, 4, 1]
https://github.com/kwonoj/rx-sandbox

code4aman
20.08.2017
08:59:07
Funfix.org

Дмитрий
20.08.2017
08:59:43
Я уже успел поюзать
И удалить

Дмитрий
20.08.2017
09:00:08
Typescript first ADT — обречены
В них просто в ряде кейсов будет фигово выводиься тип
Я начал делать нормальные тайпинги к нему, но там чот столько всего что нунафиг

code4aman
20.08.2017
09:03:18
По описанию там из коробки, не? ?

Дмитрий
20.08.2017
09:03:32
Я тоже купился
Резолвится фигово
Потому что typescript first опять же. Флоу типы типа есть — и ладно
К тому же у него неправильный, медленный подход к either

Google

Дмитрий
20.08.2017
09:06:16
Я плюнул на все эти костыли и начал делать свой, в итоге обнаружил, что подход "в лоб" — неэффективен и можно сделать гораздо быстрее
https://github.com/funfix/funfix/blob/master/src/core/disjunctions.ts#L305
map {
return this._isRight
? Right(f(this._rightRef))
: this.left()
}
https://github.com/zerobias/apropos/blob/master/src/isomer.js#L222
map<R1?/*:: fn: (x: R) => R1*/): Apropos<L, R1> {
return /*:: changeR( */this /*::) */
}
Поясню что тут происходит — я разделил единый either на два типа, и если мы вызываем mapR по L части то не происходит вообще ничего, никаких проверок
Сразу же возвращается this без расчётов вообще

illiatshurotshka❄️
20.08.2017
09:08:23
почему для чего-то что в одну строчку пишется на русте/хаскеле нужно столько размышлений на жс ?

Дмитрий
20.08.2017
09:08:30
Потому что

Admin
ERROR: S client not available

Дмитрий
20.08.2017
09:09:08
Ты не обольщайся, rust не является венцом творения
И реализация этих вещей так же вызывает вопросы

illiatshurotshka❄️
20.08.2017
09:09:56
названия только

Дмитрий
20.08.2017
09:09:59
Нет
Сам синтаксис Maybe в нём — не аа ее

illiatshurotshka❄️
20.08.2017
09:10:51
?

Дмитрий
20.08.2017
09:11:26

illiatshurotshka❄️
20.08.2017
09:12:19
не понимаю что ты хочешь сказать

Дмитрий
20.08.2017
09:12:42
Я хочу сказать, что если нравится rust — пиши на rust

illiatshurotshka❄️
20.08.2017
09:13:24
я так и делаю

Дмитрий
20.08.2017
09:13:28
А врываться в диалог о внутреннем устройстве монадических библиотек потрясывая растом — не ок

illiatshurotshka❄️
20.08.2017
09:14:01
ну я вроде как вопрос задал о жс

Google

Дмитрий
20.08.2017
09:14:23
Это хуйня а не вопрос, я извиняюсь за свой французский
Он не относится ни к контексту, ни к чему
Почему все пыхеры — наркоманы? Давны вы перестали пить коньяк по утрам? Почему в жс всё плохо? — это примеры неконструктивных демагогических вопросов ни о чём

illiatshurotshka❄️
20.08.2017
09:16:12
эммммм
если ты это так видишь то ладно....

Дмитрий
20.08.2017
09:26:26
Я извиняюсь за резкий тон, просто раст был совершенно не в тему ?

kana
20.08.2017
09:31:06

Дмитрий
20.08.2017
09:32:26
Не, у меня без прототипов) Наружу выставлен единый интерфейс под которым скрываются две разных имплементации

kana
20.08.2017
09:33:21
Не суть, все равно диспатчинг) Хотя стоп, там же все равно через прототип мы получаем метод. Это я и имел в виду

Дмитрий
20.08.2017
09:35:00
Этот вариант может работать даже если создавать инстансы через Object.create(null). Прототипы исключительно для того, чтобы не пересоздавать функции каждый раз при создании

kana
20.08.2017
09:36:13
Ну, я про то, что в js в принципе не такой диспатчинг, как обычно, мы просто храним ссылку на объект с методами в прототипе и это и есть диспатчинг. (Кроме случая, когда мы храним функции напрямую в объекте, но это дорого)

? animufag ?
20.08.2017
09:53:37
в русте нет нкт(

Denis
20.08.2017
09:59:20

andretshurotshka?❄️кде
20.08.2017
15:33:40
?

Сергей
21.08.2017
10:08:55

andretshurotshka?❄️кде
21.08.2017
10:24:42
чеж idris в commonjs модуль нельзя скомпилить
лол упал с stack size exceeded

Vadim
21.08.2017
16:46:46
Ребят, подскажите, какой оператор лучше всего подойдёт для следующего кейса:
Есть индикатор загрузки. Статус loading отображается, пока есть, хотя бы, один отправленный http запрос без ответа от сервера.
Т.е. в идеале Это должно быть так:
- Отправка первого запроса, пробрасывание в счётчик, Observable получает событие start
- Отправка второго запроса, пробрасывание в счётчик
- Пришёл первый ответ, пробросил в счётчик
- Пришёл второй ответ, пробросил в счётчик, Observable получил событие finish
Достаточно вербозное описание, но надеюсь, оно понятно.
Полагаю, что что-то для подобного функционала должно быть в rxjs, но в какую сторону копать, не знаю.
Надеюсь на вашу помощь.

Denis
21.08.2017
16:50:13
ну переключать можно через switchMap