
Дмитрий
21.06.2017
12:23:08
чего же?) можно
Ну например .cata / .case я встречал в основном только в daggy и union-type)

Denis
21.06.2017
12:23:27
там это не то
там это как паттерн матчинг
а я говорю про generalized version of fold/unfold

Google

Дмитрий
21.06.2017
12:33:10

Андрей
21.06.2017
12:37:23
+1 очень клевая тема)

Denis
21.06.2017
12:37:39

Сергей
21.06.2017
12:38:09
Monada — рекомендовать другу

Андрей
21.06.2017
13:03:23
@xgrommx ну мы как то общались на fby минском но не думаю что ты меня помнишь :)

Denis
21.06.2017
13:42:00

Андрей
21.06.2017
14:10:09
@xgrommx https://github.com/typeetfunc

Gleb
21.06.2017
14:22:51
Скажите, в чем принципиальная разница между вычислениями при использовании монад и кучи compose'ов?

Сергей
21.06.2017
14:23:12

Gleb
21.06.2017
14:23:33
Ну а кроме шуток
Можно ссылкой в статью, я просто таких не нашел

Vladimir
21.06.2017
14:24:15

Google

Vladimir
21.06.2017
14:24:32

? animufag ?
21.06.2017
14:24:39
Как монада заменяет композ?
Или я не понял формулировку?

Gleb
21.06.2017
14:28:02
Наверняка многие прочли most adequate guide js и там глава с композициями перетекает в монады, и то и то понятно, тем более с примерами близкими к жизни, но я как понял монады это какой то частный случай композиции ведь? я что Maybe что Either могу не менее декларативно описать compos'ами, разве нет?

Дмитрий
21.06.2017
14:30:54
Не совсем. Точнее, описав это всё с той же эффективностью, ты просто ещё раз сделаешь реализацию этих самых монад)

Aleh
21.06.2017
14:32:00
монада для сокрытия вычисления

Gleb
21.06.2017
14:33:20
То есть то что она контейнер и имеет map ит прочее делает ее сокрытой а если это был compose из compose то он не был бы сокрытым?

Aleh
21.06.2017
14:33:32
ну вроде того
потому что map может быть вызван потом(промис) или только в определенном случае

Gleb
21.06.2017
14:33:53
ммм
да
я кажется понял
Да действительно въезжаю, спасибо большое!)

Дмитрий
21.06.2017
14:36:57
Наверняка многие прочли most adequate guide js и там глава с композициями перетекает в монады, и то и то понятно, тем более с примерами близкими к жизни, но я как понял монады это какой то частный случай композиции ведь? я что Maybe что Either могу не менее декларативно описать compos'ами, разве нет?
const filterFarmer = human => human.occupation === 'farmer'
const users = {
230: { name: 'bob', occupation: 'farmer' },
231: { name: 'jerry', occupation: 'doctor' },
232: { name: 'frank', occupation: 'teacher' }
}
const readField = prop => data => data[prop]
const toUpperCase = (text) => text.toUpperCase()
const readName = (id) =>
Maybe(users)
.map(readField(id))
.filter(filterFarmer)
.map(readField('name'))
.map(toUpperCase)
readName(231) // => { type: 'Nothing' }
readName(230) // => { type: 'Just', value: 'BOB' }
readName(NaN) // => { type: 'Nothing' }

Gleb
21.06.2017
14:37:15
Вот и я о том же!

Дмитрий
21.06.2017
14:37:25
Декларативно описываем что нам нужно, а все проверки на корректность запросов скрыты внутри

Aleh
21.06.2017
14:37:56
readName это maybeName?

Дмитрий
21.06.2017
14:38:10
Пардон) Да

Aleh
21.06.2017
14:38:16
?

? animufag ?
21.06.2017
14:41:40
Вот и я о том же!
Вообще не понимаю кто что для себя извлёк.
У тебя есть Just 1. как ты композом прибавишь единицу?

Google

? animufag ?
21.06.2017
14:42:26
(ну да это про функторы, но выше в примере бинда тоже не было)

Aleh
21.06.2017
14:43:08
readField ж bind
ну в смысле a -> Maybe b

Denis
21.06.2017
14:44:12

Gleb
21.06.2017
14:45:18
А можно ситуацию когда мне выбирать между двумя вычислениями в сторону грязных нужно пожалуйста?

Denis
21.06.2017
14:45:59
есть категория чистых вычислений, а есть категория Клейсли
и вот в чистых объекты - типы, морфизмы чистые функции. А в категории Клейсли - объекты функторы, морфизмы - натуральные преобразования
еще монады задают порядок композиции эффектов (тут мы можем управлять эффектами в отличии от аппликативой, где эффект заложен в самом контейнере)
думаю всем понятно

Aleh
21.06.2017
14:48:04

Denis
21.06.2017
14:48:28
ну вообще функторы это 2-категории

Дмитрий
21.06.2017
14:48:37
readField ж bind
Даже скорее .filter
Maybe(users)
.map(readField(id))
.chain(
val => filterFarmer(val)
? Just(val)
: Nothing())

Дмитрий
21.06.2017
14:48:51
Это если развернуть так выглядит

Denis
21.06.2017
14:49:06
ну или cata :D

Дмитрий
21.06.2017
14:49:28
Кстати да, так тоже можно

Denis
21.06.2017
14:49:35
или же по нашему reduce/fold
ведь монадку можно почти всегда написать через reduce/fold
для Maybe это maybe метод
это вам не вводные про тройку борзых писать

Gleb
21.06.2017
14:51:55

Google

Gleb
21.06.2017
14:52:22
и там и там порядок ведь

Denis
21.06.2017
14:52:32
c эффектамм
то есть компоузить стрелки вида Monad m => a -> m b
в обычной композиции мы юзаем стрелки вида a -> b
а тут контекст с эффектом (я про Клейсли)

Gleb
21.06.2017
14:54:47
Maybe(users)
.map(readField(id))
.chain(
val => filterFarmer(val)
? Just(val)
: Nothing())
Как в примере выше?

Denis
21.06.2017
14:54:58
да
тут эффект (может бы а может нет)

Gleb
21.06.2017
14:55:11
Блин ну а что я понял

Admin
ERROR: S client not available

Denis
21.06.2017
14:55:20
частичные вычисления или результат с неудачей
если удача, то как обычная Identity монадка иначе эффект
и как ты можешь заметить ты сам можешь контролировать когда упасть
это и есть явное задание пайплайна с эффектами
монада это моноид в категории эндофункторов

Gleb
21.06.2017
14:57:19
Такой тогда вопрос, я могу Rx назвать своего рода монадами?

Denis
21.06.2017
14:57:36
да

Gleb
21.06.2017
14:57:48
Отлично, тогда вообще все понятно

Denis
21.06.2017
14:58:11
ибо Rx родился из Continuation Monad (мать всех монад)

Дмитрий
21.06.2017
14:58:22
Из реактивного расово фп-верным я бы больше посчитал most)

Google

Denis
21.06.2017
14:58:35
эм

Дмитрий
21.06.2017
14:58:52
Ну он просто по спеке FL

Denis
21.06.2017
14:58:59
Эрик Мейер и его пейпер скажут другое)
идея - это все CPS
и все из Continuation monad

Aleh
21.06.2017
14:59:56

Denis
21.06.2017
15:00:17
а еще это дуализм к итератору
пулл вс пуш
уже не помню ссылку
но вот видяха где они с Брайаном обсуждают
https://www.youtube.com/watch?v=looJcaeboBY

Aleh
21.06.2017
15:01:54
пасиб

Denis
21.06.2017
15:02:08
а потом Брайан навалит про монадки)
https://www.youtube.com/watch?v=ZhuHCtR3xq8
ну и где-то там с ними тусит Cаймон Пейтон Джонс
кстати Эрик тоже проектировал хаскелл

Aleh
21.06.2017
15:03:06
ага, на википедии есть про это фраза)

Denis
21.06.2017
15:03:32
я просто их фото видел всей командой, когда они были молоды)
а вот тут почему все что есть в js не может быть frp
ftp://progftp.vub.ac.be/tech_report/2012/vub-soft-tr-12-13.pdf
занятный пейпер

Дмитрий
21.06.2017
15:15:37

? animufag ?
21.06.2017
15:20:17
Gleb можешь как-нибудь подытожить ответ на вопрос "в чем принципиальная разница между вычислениями при использовании монад и кучи compose'ов?"