
Андрей
05.04.2018
09:02:06
помню, тоже в одном чате удивил присутсвующих заявлением, что ИО - не монада. потребовали объяснений )))

Denis
05.04.2018
09:02:18

Андрей
05.04.2018
09:02:21
выйти из монады - невозможно (С) же ))

Aleksey
05.04.2018
09:02:27
Ио - спутник

Google

Dmitry
05.04.2018
09:02:46
Для взлома матрицы

Denis
05.04.2018
09:03:02

Anatolii
05.04.2018
09:03:09

Denis
05.04.2018
09:03:10
Emacs-монада
EmacsMonad

Андрей
05.04.2018
09:03:19
картинки не приветствуются - http://ratbag.vkomi.ru/files/2015/01/help-me-get-out-from-dog.jpg

Denis
05.04.2018
09:03:28

Aleksey
05.04.2018
09:03:42
"ViM - Vim is (a) Monad"

Anatolii
05.04.2018
09:03:49
товарищи, а помошите картинку найти там где велосипедист и String -> String -> String -> String

Leonid
05.04.2018
09:03:54
@catamorphism калька кода для Verb из Servant
instance {-# OVERLAPPABLE #-} (ToJSON (ErrUnion e), ToJSON r)
=> HasServer (RPC e r) ctx where
type ServerT (RPC e r) m = m (Either (OpenUnion e) r)
hoistServerWithContext _ _ nt = nt
route Proxy _ = methodRouter' $ \x -> (getHeaders x, getResponse x)
instance {-# OVERLAPPING #-} (ToJSON (ErrUnion e), ToJSON r, GetHeaders (Headers h r))
=> HasServer (RPC e (Headers h r)) ctx where
type ServerT (RPC e (Headers h r)) m = m (Headers h (Either (OpenUnion e) r))
hoistServerWithContext _ _ nt = nt
route Proxy _ = methodRouter' ([],)

Denis
05.04.2018
09:04:00

Denis
05.04.2018
09:04:03

Google

Anatolii
05.04.2018
09:04:09
вот кстати у Yi проблем нет - там вроде 3 монады целых
и есть YiM
не дурят людей хотя бы
мне она была нужна когда я увидел как флаги парсят ребята
тут конечно другой случай
interface{} -> interface{} -> interface{}

Leonid
05.04.2018
09:06:25
@catamorphism тут красивее https://gist.github.com/sopvop/1b6bdbf35dc1d5105a061ef295836e15

Denis
05.04.2018
09:06:33
но я не уверен

Leonid
05.04.2018
09:06:50

Aleksey
05.04.2018
09:07:08

Hot
05.04.2018
09:07:34
Кккк

Alexander
05.04.2018
09:07:34
да вы издеваетесь!

A
05.04.2018
09:07:37
только в руби)

Hot
05.04.2018
09:07:39
Я так пишу :(
Простите.

Leonid
05.04.2018
09:08:37

Denis
05.04.2018
09:08:52

Leonid
05.04.2018
09:09:23
может нужно не включить, а выключить какие-то расширения...
нет :(

Google

Denis
05.04.2018
09:10:36
а ошибку покажи?

Leonid
05.04.2018
09:11:05
src/Servant/API/RPC.hs:74:8-55: error: …
Conflicting family instance declarations:
ServerT (RPC e r) m = m (Either (OpenUnion e) r)
-- Defined at /home/lonokhov/work/stagex-store/stagex-api/src/Servant/API/RPC.hs:74:8
ServerT (RPC e (Headers h r)) m = m (Headers
h (Either (OpenUnion e) r))
-- Defined at /home/lonokhov/work/stagex-store/stagex-api/src/Servant/API/RPC.hs:81:8

Denis
05.04.2018
09:11:41
а ты уверен что именно эти две конфликтуют?
а хотя тут строки

Leonid
05.04.2018
09:12:07
а больше некому

Denis
05.04.2018
09:12:09
в ошибке

Андрей
05.04.2018
09:13:38
Если некто перманентно пребывает в контексте непонимания монад, но при этом способен внспринимать информацию снаружи, причем независимо от степени ее разделения на отдельные части, то можно ли утверждать, что он уже в двух шагах от понимания?

Hot
05.04.2018
09:22:43
Кажется, вы про меня сейчас.
Но я не уверен.

Aleksey
05.04.2018
09:26:36
все так

Alexander
05.04.2018
09:27:21

Leonid
05.04.2018
09:27:55
к вечеру всё должно быть в продакшене. кек. Пойду на фриноду искать помощи

Denis
05.04.2018
09:28:13
я тут слепил репро-модуль
какое-то тайпфемильное свойство нарушаем
а вообще я пытаюсь понять почему в серванте работает

Андрей
05.04.2018
09:30:38

Hot
05.04.2018
09:30:57
Да что ж, блин, не так со мной.
Что есть функтор, а что монада?
Что-то одно из этого - частный случай другого?

Alexander
05.04.2018
09:31:48
Headers это что?

Google

Dmitry
05.04.2018
09:31:55
ЧИТАЙ TYPECLASSOPEDIA

Alexander
05.04.2018
09:32:51
кстати был сайт с контрпримерами к тайпклассопедии

Denis
05.04.2018
09:33:02
промоученный тип

Alexander
05.04.2018
09:33:02
вообще учебники с контрагентами примерами прекрасны

Denis
05.04.2018
09:33:10
про Headers

Dmitry
05.04.2018
09:33:11
Давай

Denis
05.04.2018
09:33:22
data Headers bla abl lab
такое

Yuuri
05.04.2018
09:34:02

Hot
05.04.2018
09:34:17
Ну так IO - это монада всё же?

Dmitry
05.04.2018
09:34:28
А какая разница?

Leonid
05.04.2018
09:34:40
мне на фриноде объяснили

Alexander
05.04.2018
09:34:51

Denis
05.04.2018
09:35:04
и в чем дело?

Yuuri
05.04.2018
09:35:44

Leonid
05.04.2018
09:36:05
в случае серванта выходит: m a и m (Headers h a) и в пересекающемся инстансе a ~ Headers h a. у меня же не так

Dmitry
05.04.2018
09:36:31

Yuuri
05.04.2018
09:37:12

Leonid
05.04.2018
09:37:17

Denis
05.04.2018
09:38:30

Google

Leonid
05.04.2018
09:38:35
да
решение - вынести Either e a в голову инстанса
https://gist.github.com/sopvop/1b6bdbf35dc1d5105a061ef295836e15#file-overlap-hs-L64
уродски

Denis
05.04.2018
09:40:52
после этого компилится?

Leonid
05.04.2018
09:43:09
да
если в итоге сваггером никто пользоваться не будет, я возненавижу сервант совсем сильно и буду всем советовать не трогать его

Denis
05.04.2018
09:45:37
скомпилилось у меня тоже, но я чего-то суть не понял

Leonid
05.04.2018
09:46:51
суть в том что m (Either e a) ~ m (Headers h (Either e a)) vs m a ~ m (Headers h a). первное невозможно а второе возможно
одно тайп фэмили согласовывается, а второе нет
не унифицируются

Denis
05.04.2018
09:49:16
постойте ка
ошибка говорит что о том что LHS у двух тайп фемили друг с другом унифицируемы

Leonid
05.04.2018
09:50:02
может сделать класс class RpcResult e a r | r -> e, r -> a where rpcResult :: r -> Either (OpenUnion e) a для красоты?
ошибка говорит что они конфликтуют

Denis
05.04.2018
09:50:28
хотя должно быть пофиг, наверное, т.к. тип ассоциирован с инстансом, а инстанс выбирается до этого

Leonid
05.04.2018
09:50:36
головы одинаковые, а RHS не оверлапятся
головы оверлапятся а хвосты нет
муть