Alexander
или ещё кого
Alexander
опять же эффекты в реальной жизни у меня не взлетели, в проекте где они использовались до нас пришлось их выпилить, т.к. они тормозили и не приносили пользы
Alexander
а для всяких экспериментов и мелочей экосистема на тот момент была ужасна
Alexander
типа популярного пакета, который можно было с -XSafe отправить в segfault за 1 минуту анализа кода
Alexander
сейчас экосистема подрасширилась
Λrtem
Alexander
Algebraic Effects
Alexander
extensible-effects, freer и все это
Alexander
там целая пачка либ, но нужно внимательно смотреть что ещё поддерживают
Alexander
недавно в Haskell cafe был тред на эту тему
Alexander
но в целом mtl (tagless) подход и free/effect (tagged) выражаются друг через друга
Alexander
freer ближе к free, но tagless если мне не изменяет память
Alexander
эти вещи потормознее, т.к. тащут интерпретатор эффектов с собой
Alexander
но там наверняка есть место для исследований, как сделать это быстрее
Alexander
зачем они могут быть нужны можно смотреть в статье олега про extensible-effects
Alexander
он там показывает как некоторые юзкесы с mtl,tf выражаются излишне сложно в отличии от эффектов
Alexander
как-то так
Dmitrii
Есть еще одно решение от @int_index для решения проблемы расширяемых эффектов (если я правильно понимаю): https://github.com/int-index/caps
Мы даже писали быструю маму для зависимых типов, чтобы caps работал получше и побыстрей: https://github.com/kowainik/typerep-map
Надеюсь, что Влад когда-нибудь опишет более подробно свое решение, я не использовал, но хотелось бы узнать сравнение с другими подходами...
Anonymous
Victor будет жить. Поприветствуем!
Anonymous
Хай бледнолицые!
Anonymous
И сразу офтоп, может кто знает что с русскоязычным чатом о Rust случилось? Не могу его найти.
Alexander
может в @haskell_blah кто знает
Alexander
а тут обойдёмся без оффтопа, спасибо
Anonymous
Ок )
Alexander
Aleksey
А кто как решает проблему error "FIXME: implement later" ?
Aleksey
постоянно забываю воткнуть реализацию а компилятор никак не предупреждает
Aleksey
можно конечно ревью, но хочется автоматически
Andrey
undefined + -Wall
Aleksey
Wall воткнут
Aleksey
а он внезапно ругается на undifined но не ругается на error ?
Alexander
{-# DEPRECATED fixme "is not allowed in production #-}
Alexander
тогда сборка с -О0 или ghci будет работать
Aleksey
Aleksey
прикольно
Anatolii
можно оставлять "_"
Aleksey
вот бы эту функцию еще в отдельном пакете найти
Alexander
Alexander
или 1 на поиск?
Alexander
у меня где-то (!) не могу найти валялась структура с O(1) доступом, но О(n) модификацией
Alexander
ну и boxed только
Alexander
меня в рассылке наругали что мол с ленивостью давай лучше дерево
Alexander
это там где функция baal была для генерации меняющих тип линз
Alexander
потому что иначе ее не назовешь
Alexander
и я думаю я его пару раз вызвал
Alexander
надо будет найти и побенчмаркать
Alexander
хотя может и не надо
Alexander
но она была по типу рекордов с полями на уровне типов и.е. не то, что typemap
Aleksey
не комильфо в целой прелюдии такое
Alexander
A64m
с ключем каким-то будет собираться
Aleksei (astynax)
лучше тогда WARNING прагму юзать
Aleksei (astynax)
депрекейшн не для этого всё же
Alexander
да, можно warning
Alexander
хотя стоп, я не уверен, что у warning и deprecation одно и тоже поведение везде
Aleksei (astynax)
В доке написано, то это одно и то же
Alexander
ну ок
Aleksei (astynax)
> Causes a warning to be emitted when a module, function or type with a WARNING or DEPRECATED pragma is used.
Aleksei (astynax)
это про -Wdeprecations
Alexander
точнее чуть побольше действий
Alexander
fixme = id
{-# NOINLINE fixme #-}
{-# RULE do/fixme forall a . fixme a = warning a #-}
warning = id
{-# WARNING warning "..." #-}
Alexander
что-то такое
Alexander
assert наоборот
Alexander
там кстати через smallarray это получше
Alexander
хотя не помню поверх чего у меня было
A64m
в виниле теперь тоже есть вариант на массивах
Alexander
@chshersh спасибо кстати за ссылку на пакет, я чего-то про него и забыл сильно и похоже в некоторых местах я его с удовольствием заюзаю
Alexander
а может просто typeremap использую, если у него есть бесплатное сужение
Alexander
т.е. из R [A,B,C] мы можем получить R [A,C] бесплатно
Зигохистоморфный
есть еще type-row или как-то так
Alexander
ну я помню дизайн typeremap он мне понравился (я бы делал так же)
Зигохистоморфный
https://github.com/target/row-types
Alexander
а что там было с экстеншеном компилятора?
Alexander
не, это не то, что мне нужно
A64m
с плагином?