Alexander
просто EitherT IO имеет не так много бонусов по сравнению с IO + расширяемые исключения
Alexander
нет
Alexander
можешь делать какой-нить HSet и враппить значения в него
кана
хм, @astynax тоже говорил, что там, где есть IO, ExceptT в принципе не нужен
Alexander
и снойман говорил (редкий пост где я с ним согласен)
Alexander
все говорили
Alexander
бонус ExceptT то что ты видишь исключения которые могут быть кинуты
Alexander
но, только подмножества, никакой строгой гарантии что другое там не вылетит нету
Anonymous
По моему, левый тип должен быть одинаковым, если монады >>='ть
Сергей
у меня цепочка запросов servant-клиентом. Они возвращают всякое Either
Сергей
лефты можно и в текст перевести чтобы собралось
Alexander
у монады тоже тип должен быть одинаковым
кана
пробовал из сервантовского Handler ExceptT выкинуть
https://github.com/kana-sama/servant-no-except/blob/master/src/Main.hs
Сергей
но хотелось бы оставить типизированным
Aleksei (astynax)
Делай mapLeft для каждого вызова и складывай в конструкторы общей суммы
Alexander
mapEither и все такое
Alexander
просто тебе нужно самому общую сумму типов вводить
Alexander
и переизобретать расширяемые исключения
Сергей
расширяемые исключения - это что ?
кана
в IO можно бросать исключения разных типов и хендлить исключения только нужного типа, а остальные захэндлить выше например
Aleksei (astynax)
Control.Exception
Aleksei (astynax)
с наследованием "как в ООП"
Сергей
ок
Alexander
ну не как в ООП все же
Alexander
ну и обычно там 1 слой используется
Alexander
+ там можно делать intersection
Alexander
который нельзя в ООП
Alexander
что одно исключение в 2 иерархии войдет
Aleksei (astynax)
В пейтоне можно :)
Aleksei (astynax)
Множественное наследование же
Alexander
жуть какая
Aleksei (astynax)
Ты даже не представляешь
Aleksei (astynax)
Я в питоне metod resolution order ломал, бывало. Вот до чего доводит множественное наследование!
Nikita
https://www.ohaskell.guide
Nikita
Кто нибудь читал?
Антон
https://www.ohaskell.guide
Неплохая вещь, но весьма мало написано. Ну и новичкам по ней, как мне кажется, учится сложно будет
Alexander
интересно кстати почему денис не на канале
Кабачок
Думаю он работает
PsyDebug
Nikita
тогда значит женат
Alexander
женатых и с детьми (правда в меньшем количестве) тут тоже хватает
кана
может не знает про чат
Alexander
блин как же бесит автоподстановка сниппетов в спейсмаксе
Alexander
причем как гуглить проблему не ясно
Alexander
о вот и решение нашёл
Alexander
https://github.com/olivierverdier/spacemacs-coq/issues/14
Alexander
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.
Alexander
поохоже правда что в proof general уже включили это
Alexander
logical foundation зло
NC
?
Denis
Alexander
я только в 4 лег, пока вторую главу делал
Aliester
Aliester
это же множество простых чисел?
Aragaer
да
Vladislav
Challenge: у меня есть библиотека для монадических эффектов, написанная с несколькими unsafeCoerce, но я хотел бы, чтобы их не было. У кого есть настроение побороться с компилятором?
Dmitry
компилятор всё равно победит
Vladislav
Ну я его пока что победил через unsafeCoerce, а хочется как-то по-честному.
Aliester
Зигохистоморфный
Vladislav
Да, но это один 'unsafeCoerce'. А сейчас я еще один использовал, и мне стало немного печально.
Зигохистоморфный
Vladislav
Ну я начинал с coerce, но оно там не сошлось как-то
Vladislav
К тому же с использованием Any об этом речи идти не может.
Vladislav
Так что надо для начала придумать, как от Any избавиться.
кана
Vladislav
https://github.com/int-index/caps
кана
это чтобы тайпклассы не делать?
Зигохистоморфный
кана
а, хм, идея в том, чтобы разбивать один эффект на много разных? И чтобы потом подменять один логгер над IO на другой?
кана
как в пурсе Eff вместо IO
Nikita
Vladislav
это чтобы тайпклассы не делать?
оно экспрессивнее тайпклассов, потому что не обязательно чтобы инстансы были на топ-левеле, их можно составлять в рантайме
Vladislav
Vladislav
то есть это такой fixed point над ReaderT мапы из словарей с эффектами
Vladislav
То есть если имеем эффекты E1, E2, E3, то это эквивалент
ReaderT
( E1 '[E1, E2, E3],
E2 '[E1, E2, E3],
E3 '[E1, E2, E3] )
Vladislav
А основная проблема, которую решает фреймворк, это возможность такую мапу расширять (чтобы добавить E4) или менять эффекты так, чтобы это отразилось на других.