
A64m
12.01.2018
16:34:28
обычный энкодинг из ТАПЛ

Denis
12.01.2018
16:35:01
вроде считается что вся эта императивщина некая бесконечная коалгебра (привет вам линзы)

A64m
12.01.2018
16:38:50
этот ооп-энкодинг даже в виде библиотеки есть, правда с лицензией, делающей библиотеку бесполезной https://hackage.haskell.org/package/oo-prototypes-0.1.0.0/docs/src/Data-Prototype.html

Google

Denis
12.01.2018
16:40:51

Hot
12.01.2018
17:38:41
А кто такой этот ваш Гонзалес, помимо всего прочего? Чем знаменит?
Пытался гугла спросить, но гугл не понял, кого я имею в виду.

Arseniy
12.01.2018
17:40:30
Haskell for all
http://www.haskellforall.com/?m=1

Hot
12.01.2018
17:41:18
Ок, спасибо.

Ignat
12.01.2018
17:42:06

Hot
12.01.2018
17:42:13
Неа

Sergey
12.01.2018
17:53:55
Ребята, кто видит как такую конструкцию хорошо написать ?
https://gist.github.com/ivanovs-4/30836f0becb67779758f18dce38c98bb#file-compose-io-either-hs

Nikita
12.01.2018
17:54:44
конечно превью фото у гистов это полезно

Sergey
12.01.2018
17:55:40
Что тут можно сделать чтобы не строить лестницы вправо?

Aleksey
12.01.2018
17:57:08
Either - монада. Можно сделать монадически

Denis
12.01.2018
17:57:36
какой нибудь Validation если надо еще накапливать Left

Pavel
12.01.2018
17:57:43
а насколько в данном случае подойдёт трансформер монад?

Google

Sergey
12.01.2018
17:58:00
да, это вопрос

Aleksey
12.01.2018
17:58:06
Без трансформера никак, т.к. тут IO
EitherT IO

Sergey
12.01.2018
17:58:29
предположим, под Left будет один и тот же тип, тогда можно runEitherT ?

Aleksey
12.01.2018
17:59:08
Да, тип ошибки будет один
Но можно сложить варианты в сумму

Denis
12.01.2018
17:59:34
https://www.stackage.org/haddock/lts-10.3/validationt-0.2.0.0/Control-Monad-Validation.html может это?
или https://www.stackage.org/haddock/lts-10.3/validate-input-0.4.0.0/Data-Validator.html

Aleksey
12.01.2018
18:01:11
В IO можно ещё и исключения заюзать

Sergey
12.01.2018
18:02:18
я к сожалению до сих пор путаюсь в исключениях. Похоже, пришло время разобраться пристально
Validation - интересная штука
а начать попробую с трансформера

Denis
12.01.2018
18:03:45

Aleksey
12.01.2018
18:03:55
Трансформер попробовать - правильное решение. Это полезно

Sergey
12.01.2018
18:04:37
хм, а как он может накапливать ошибки, например со второй стадии, если для её запуска используется результат первой ?

Aleksey
12.01.2018
18:04:56
Никак, конечно

Alexander
12.01.2018
18:05:26
validation тут смысла нету особого, тут байнд

kana
12.01.2018
18:05:29
Validation тут не в тему

Alexander
12.01.2018
18:05:33
ошибки не накопишь

Imants
12.01.2018
18:05:36
При первой левой она и станет результатом

Google

Sergey
12.01.2018
18:05:42
во

Alexander
12.01.2018
18:05:43
вон @kana_sama шарит

Aleksey
12.01.2018
18:06:16
В EitherT первый Left прервёт всю цепочку, да

Alexander
12.01.2018
18:06:36
просто EitherT IO имеет не так много бонусов по сравнению с IO + расширяемые исключения

Sergey
12.01.2018
18:06:54

Alexander
12.01.2018
18:07:06
нет
можешь делать какой-нить HSet и враппить значения в него

kana
12.01.2018
18:07:37
хм, @astynax тоже говорил, что там, где есть IO, ExceptT в принципе не нужен

Alexander
12.01.2018
18:07:53
и снойман говорил (редкий пост где я с ним согласен)
все говорили
бонус ExceptT то что ты видишь исключения которые могут быть кинуты
но, только подмножества, никакой строгой гарантии что другое там не вылетит нету

Imants
12.01.2018
18:09:00
По моему, левый тип должен быть одинаковым, если монады >>='ть

Sergey
12.01.2018
18:09:05
у меня цепочка запросов servant-клиентом. Они возвращают всякое Either
лефты можно и в текст перевести чтобы собралось

Alexander
12.01.2018
18:09:30
у монады тоже тип должен быть одинаковым

kana
12.01.2018
18:09:32
пробовал из сервантовского Handler ExceptT выкинуть
https://github.com/kana-sama/servant-no-except/blob/master/src/Main.hs

Sergey
12.01.2018
18:09:34
но хотелось бы оставить типизированным

Aleksey
12.01.2018
18:09:38
Делай mapLeft для каждого вызова и складывай в конструкторы общей суммы

Alexander
12.01.2018
18:09:53
mapEither и все такое

Google

Alexander
12.01.2018
18:10:06
просто тебе нужно самому общую сумму типов вводить
и переизобретать расширяемые исключения

Sergey
12.01.2018
18:10:34
расширяемые исключения - это что ?

kana
12.01.2018
18:11:15
в IO можно бросать исключения разных типов и хендлить исключения только нужного типа, а остальные захэндлить выше например

Aleksey
12.01.2018
18:11:24
Control.Exception
с наследованием "как в ООП"

Sergey
12.01.2018
18:12:03
ок

Alexander
12.01.2018
18:12:07
ну не как в ООП все же

Admin
ERROR: S client not available

Alexander
12.01.2018
18:12:23
ну и обычно там 1 слой используется
+ там можно делать intersection
который нельзя в ООП
что одно исключение в 2 иерархии войдет

Aleksey
12.01.2018
18:12:58
В пейтоне можно :)
Множественное наследование же

Alexander
12.01.2018
18:13:35
жуть какая

Aleksey
12.01.2018
18:13:47
Ты даже не представляешь
Я в питоне metod resolution order ломал, бывало. Вот до чего доводит множественное наследование!

Nikita
12.01.2018
21:31:40
https://www.ohaskell.guide
Кто нибудь читал?

Google

Антон
12.01.2018
21:33:22

Alexander
12.01.2018
21:34:21
интересно кстати почему денис не на канале

Pig
12.01.2018
22:14:15
Думаю он работает

Psy
12.01.2018
22:15:15

Alexander
12.01.2018
22:15:35

Nikita
12.01.2018
22:37:43
тогда значит женат

Alexander
12.01.2018
22:38:35
женатых и с детьми (правда в меньшем количестве) тут тоже хватает

kana
12.01.2018
22:40:05
может не знает про чат

Alexander
12.01.2018
22:41:48
блин как же бесит автоподстановка сниппетов в спейсмаксе
причем как гуглить проблему не ясно
о вот и решение нашёл

Антон
12.01.2018
22:43:53

Alexander
12.01.2018
22:44:08
https://github.com/olivierverdier/spacemacs-coq/issues/14
The solution is to put
(setq evil-want-abbrev-expand-on-insert-exit nil)
in your dotspacemacs/user-init (note, it's init, not config). Because this variable is only read on Evil load, putting it in dotspacemacs/user-config or even (with-eval-after-load 'evil (setq evil-want-abbrev-expand-on-insert-exit nil)) will not work.
поохоже правда что в proof general уже включили это
logical foundation зло

Anton
13.01.2018
08:12:37
?

Denis
13.01.2018
08:45:31

Alexander
13.01.2018
08:57:38
я только в 4 лег, пока вторую главу делал

Alister
13.01.2018
13:30:31
это же множество простых чисел?