@frp_ru

Страница 151 из 420
Таймураз
12.09.2017
13:43:01
пиздец.
Монада- это контейнер над значением, который позволяет применять функции к нему и возвращает измененный контейнер, что позволяет связывать (чередовать) функции

Ilya
12.09.2017
13:43:14
А вот Maybe или Future это структуры?

Aleh
12.09.2017
13:43:31
да любой объект

Ilya
12.09.2017
13:43:34
С теоретической точки зрения.

Google
Aleh
12.09.2017
13:43:41
да

Дмитрий
12.09.2017
13:43:43
Ilya
12.09.2017
13:43:48
Да.

Очень.

? animufag ?
12.09.2017
13:44:00
ну вот можно тут читануть http://ru-lambda.livejournal.com/131849.html
классно выглядит. как бы совсем с другой стороны подход. оно наверное и для конкаренси даёт новые возможности ограничить разработчика? или тот же сраный MVar...

Gleb
12.09.2017
13:44:00
Надо еще сказать что привычный RX это пример монад, я вот сразу понял тогда

illiatshurotshka❄️
12.09.2017
13:44:05
А вот Maybe или Future это структуры?
смотря что считать структурой

в расте maybe это енумерация а future - трейт

лоло

Ilya
12.09.2017
13:44:30
Хороший енам.

Google
Ilya
12.09.2017
13:45:02
RX это пример монад?

Aleh
12.09.2017
13:45:23
в расте maybe это енумерация а future - трейт
ну это хороший пример того, что пофиг на внутреннюю структуру, важны внешние свойства)

illiatshurotshka❄️
12.09.2017
13:45:41
ага

? animufag ?
12.09.2017
13:46:04
Надо еще сказать что привычный RX это пример монад, я вот сразу понял тогда
не уверен как стрим выразить. могу ещё представить промиз

illiatshurotshka❄️
12.09.2017
13:46:13
Бардак
почему

Ҫѐҏӗѫӑ
12.09.2017
13:46:14
Бардак
норм кстати

Дмитрий
12.09.2017
13:46:26
почему
Ну а что даёт это разделение?

Aleh
12.09.2017
13:46:38
оптимизации видать

illiatshurotshka❄️
12.09.2017
13:46:39
разделение чего

Дмитрий
12.09.2017
13:46:59
Тебя не смущает что похожие концепции описываются разными понятиями?

illiatshurotshka❄️
12.09.2017
13:47:16
какие

Дмитрий
12.09.2017
13:47:30
ЮСТАС АЛЕКСУ ПРИЁМ КАК СЛЫШНО

Таймураз
12.09.2017
13:47:36
это функтор
Функтор- это функция, а не контейнер

illiatshurotshka❄️
12.09.2017
13:47:44
приехали

illiatshurotshka❄️
12.09.2017
13:48:08
ЮСТАС АЛЕКСУ ПРИЁМ КАК СЛЫШНО
ну стракт это product тип, а enum это sum

Aleh
12.09.2017
13:48:26
нет ж
нет к “не контейнер”

Kelin
12.09.2017
13:49:06
я спекся

Google
Arcady
12.09.2017
13:50:07
А почему с монад объясняют, а не с функторов?

Таймураз
12.09.2017
13:50:21
нет к “не контейнер”
Ладно, пока на практике не реализую что-нибудь- не буду спрашивать

? animufag ?
12.09.2017
13:50:28
звучит круче

illiatshurotshka❄️
12.09.2017
13:50:43
ну я согласен, с функторов намного правильнее объяснять

Дмитрий
12.09.2017
13:50:48
ну стракт это product тип, а enum это sum
Спорно и по прежнему не резонно

Aleh
12.09.2017
13:50:48
illiatshurotshka❄️
12.09.2017
13:50:56
Дмитрий
12.09.2017
13:51:17
Зачем они, какую задачу решает разделение концепции на две части?

Почему я понял, ок

Но я спрашиваю про мотивы, а не про результаты

? animufag ?
12.09.2017
13:52:04
@marblegarden а реально почему фьчер - трейт? есть разные реализации?

Ilya
12.09.2017
13:52:45
не уверен как стрим выразить. могу ещё представить промиз
Мне почему-то кажется что стрим это всё таки не совсем монада.

illiatshurotshka❄️
12.09.2017
13:52:50
Дмитрий
12.09.2017
13:52:58
Ты не понял

illiatshurotshka❄️
12.09.2017
13:53:01
да

>_>

Дмитрий
12.09.2017
13:53:09
Ты вносишь дополнительную сущность в язык

Ilya
12.09.2017
13:53:10
Т.е. я не уверен что в определение входит обратная связь.

Дмитрий
12.09.2017
13:53:18
Зачем, по какой причине?

Google
illiatshurotshka❄️
12.09.2017
13:53:30
какую именно сущность, енумерации?

Дмитрий
12.09.2017
13:53:37
Если удобнее, то отвечай на вопрос @vlastachu я к нему присоединяюсь

Таймураз
12.09.2017
13:55:02
Кто-нибудь может подсказать приложение на koa, применяющее fp?

Gleb
12.09.2017
13:55:13
https://medium.com/@luijar/the-observable-disguised-as-an-io-monad-c89042aa8f31

чисто вот кароче

? animufag ?
12.09.2017
13:56:25
Мне почему-то кажется что стрим это всё таки не совсем монада.
ну я буду рад ошибиться. так то я могу себе представить код со стримом типа a <- networkCall "url" b <- networkCall a.url по идее внешне не важно то что вторая строка будет заново вызываться. просто описываем работу с данными, а тип Stream Int подразумевает неопредленное число элементов (всё равно мы их не сможем извлечь)

illiatshurotshka❄️
12.09.2017
13:58:10
@marblegarden а реально почему фьчер - трейт? есть разные реализации?
есть несколько структур фючюров которые появляются в зависимости от комбинатора, все они объединены одним трейтом

но почему несколько структур я хз

Admin
ERROR: S client not available

? animufag ?
12.09.2017
13:58:39
кажется ты зря эту тему вообще поднимал)

Дмитрий
12.09.2017
13:59:26
Я вот кстати вроде понял резон, но тему он всё равно зря поднимал ?

? animufag ?
12.09.2017
13:59:32
не думаю что комбинаторы определяют какая конкретно структура, хотя мб и так (ну ради перфоманса, что-то вроде трандьюсеров)

Дмитрий
12.09.2017
13:59:54
В fluture есть два разных фьючерса по сути — Seq и Par

illiatshurotshka❄️
12.09.2017
14:00:21
ну вызываешь map на одной фьючюре, у тебя выходит структура Map которая тоже фючюр

Дмитрий
12.09.2017
14:00:21
Например

Чёт хз??

А почему Maybe тогда это не требуется

illiatshurotshka❄️
12.09.2017
14:02:38
future::ok::<i32, ()>(1).map(|x| x + 1) // future::Map<FutureResult<i32, ()>, FnOnce(i32) -> i32>

? animufag ?
12.09.2017
14:02:44
ну вызываешь map на одной фьючюре, у тебя выходит структура Map которая тоже фючюр
ну понятно, он тип запоминает что собирался мапать значение футуры и готов принимать дальнейшие указания пока не вызовется block какойнибудь

Дмитрий
12.09.2017
14:03:03
Ох

Google
Дмитрий
12.09.2017
14:03:08
Мне не нравится

? animufag ?
12.09.2017
14:04:32
ну я даже как-то не знаю как это иначе сделать

ну и кстати это обычный ооп-шный интерфейс получается

illiatshurotshka❄️
12.09.2017
14:05:02
ну поэтому информацию о типе убирают и из функции просто выдают как трейт объект

Дмитрий
12.09.2017
14:06:23
ну я даже как-то не знаю как это иначе сделать
Future<empty, number>.map( number -> string ) // => Future<empty, string>

? animufag ?
12.09.2017
14:07:41
Дмитрий
12.09.2017
14:07:41
Не понимаю зачем внутреннюю кухню фьючерса выносить в тип, мне вот как пользователю вообще до лампочки что он там собрался мапать и зачем

? animufag ?
12.09.2017
14:07:55
только на самом деле жесть какая-то

illiatshurotshka❄️
12.09.2017
14:08:07
fn increment(i: i32) -> impl Future<Item = i32, Error = ()> { future::ok::<i32, ()>(i + 1) }

? animufag ?
12.09.2017
14:08:07
// A *simplified* version of the trait, without error-handling trait Future { // The type of value produced on success type Item; // Polls the future, resolving to a value if possible fn poll(&mut self) -> Async<Self::Item>; }

Дмитрий
12.09.2017
14:08:13
Ну это получается растопроблемы

Сами придумали сами огребли

? animufag ?
12.09.2017
14:08:29
почему там тогда до сих пор HKT нету раз можно тип в типе хранить

illiatshurotshka❄️
12.09.2017
14:09:04
fn increment(i: i32) -> impl Future<Item = i32, Error = ()> { future::ok::<i32, ()>(i + 1) }
^ известно только что выданное значение имплементирует Future

? animufag ?
12.09.2017
14:09:35
Дмитрий
12.09.2017
14:10:05
Ну мы же говорили про резон делать трейт, вот он получается мотивирует этим

Дмитрий
12.09.2017
14:11:22
Вывод — внутренняя имплементация фьючерса за каким-то фигом откладывается пользователю в голову как разница между двумя сущностями на которые ему по барабану

Или — или.

illiatshurotshka❄️
12.09.2017
14:11:43


но наверное они потом уберут внутреннюю кухню

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