
Таймураз
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

illiatshurotshka❄️
12.09.2017
13:43:37

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

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

illiatshurotshka❄️
12.09.2017
13:44:05
в расте maybe это енумерация а future - трейт
лоло

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

Aleh
12.09.2017
13:44:32
я б еще чего получше почитал конечно

Google

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

Aleh
12.09.2017
13:45:23

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

Дмитрий
12.09.2017
13:45:58

? animufag ?
12.09.2017
13:46:04

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
приехали

Aleh
12.09.2017
13:47:56

illiatshurotshka❄️
12.09.2017
13:48:08

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

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
но почему несколько структур я хз

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

Дмитрий
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

? 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

? animufag ?
12.09.2017
14:09:35

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

illiatshurotshka❄️
12.09.2017
14:11:11

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

illiatshurotshka❄️
12.09.2017
14:11:43
но наверное они потом уберут внутреннюю кухню