@frp_ru

Страница 134 из 420
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 у меня уже есть в проекте

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
А stack-safe профункторы я например тебе уже показывал)
Это тут при чем) cycle подразумевает под собой бесконечно растущую последовательность

Дмитрий
18.08.2017
10:08:35
Это тут при чем) cycle подразумевает под собой бесконечно растущую последовательность
Потому что stack overflow может быть строго от бесконечной глубины вызовов. stack safe может повесить процесс, но никак не выпасть в so)

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 и все такое

Можно сказать что приблизительно хаскель списки это есть в жс генераторы

Вернее можно сделать такое поведение

ну мне просто интересно с ними и без них)
https://jsbin.com/fomefij/10/edit?html,js,output#J:L113-116

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
почему для чего-то что в одну строчку пишется на русте/хаскеле нужно столько размышлений на жс ?
Не нужно, что на хаскеле мы полагаемся на диспатчинг по кейсам/клосам функций, так в js в варианте @ZeroBias мы полагаемся на диспатчинг (ну, прыгаем по прототипу)

Дмитрий
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
в русте нет нкт(

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

Страница 134 из 420