@haskellru

Страница 738 из 1551
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
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
Validation - интересная штука
ну это как Except только накапливает ошибки, а не валится на первой

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
При первой левой она и станет результатом
Но если типы лефтов разные, то Validation может их собрать в сумму сам ?

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
https://www.ohaskell.guide
Неплохая вещь, но весьма мало написано. Ну и новичкам по ней, как мне кажется, учится сложно будет

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

Pig
12.01.2018
22:14: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


это же множество простых чисел?

Страница 738 из 1551