Alexander
Да, делается. Но с freer моки - это паттерн-матчинг.
Правда, если много бизнес-логики вовлечено, то там все начинает плохо выглядеть
Alexander
там для специализаций отлючения было что-то
Alexander
Alexander
я кстати ищу кейсы где freer будет лучше, пока знаю 0
Alexander
freer+effects
Alexander
А я, в свою очередь, не вижу предмета спора. Дело вкуса. По крайней мере до тех пор, пока сообщество прочно не поймет плюсы и минусы
Alexander
какой спор, я ж вроде вопрос задал и интересуюсь
Alexander
Не вижу в сообщении знака вопроса ;)
Alexander
Я человек простой, - вижу вопрос, отвечаю. Не вижу - не отвечаю
Alexander
...я кстати ищу кейсы где freer будет лучше, пока знаю 0 <- не спор а призвание делиться такими кейсами
Alexander
free(r) <-> final tagless конвертируются в обе стороны
Alexander
Я все же не смогу ответить удовлетворительно, потому что это ж надо несколько кейсов иметь, сравнивать их, понимать. У меня пока только 1.
Alexander
т.е. из одного другое можно легко сделать
Alexander
(На самом деле, больше, но то уже из другой оперы)
Alexander
тогда возникает вопрос, может один из вариантов лучше
Alexander
Просто для информации: наши freer-языки - это такие:
OrderL
RestaurantL
CompanyL
...
Каждый из них что-то умеет по своему контексту. А есть контексты более верхнего уровня, они уже пользуют эти вот языки
кана
у олега точно был пейпер, показывающий проблемы инициальных интерпретаторов (фри[р]) и как терминальные интерпретаторы (финал тэглесс) их решают
Alexander
MonadOrder, MonadRestaurant, MonadCompany
Alexander
Alexander
@kana_sama у него было и наоброт
Alexander
exteff.pdf
Alexander
когда он extensible-effects вводил, показывал как в mtl у нас чепуха получается, а с эффектами и free все хорошо
кана
ну эксэфф это пара страниц, а там было штук 50 наверное
Alexander
12
Alexander
одна из проблем freer что они тормозят
кана
а ты вычел код, референсы, опен юнионы и прочее подводящее к теме?
там про плюсы/минусы фри-эффектов пара страниц, но цифра таки с головы
Alexander
Если искать проблемы, то их для любого подхода, наверное можно найти пачку на 50 страниц. Но это ж все лирика.
Alexander
нет, то если вычитать то будет 9
Alexander
вот тормозит это чисто практическая проблема
Alexander
при этом если нужен внешний интерпретатор то ради этого интерпретатора можно теги втянуть
Alexander
одним простым инстансом
Alexander
Вон, про С++ целый талмуд на 1300 страниц проблем наскребли, но ведь никого же это не останавливает
Oleg
А вот этот ваш 8.2 с джойн-пойнтами не решает "тормозит" хотя бы частично?
Alexander
писать не удобно (субьективно(, тормозит, подход не популярный
Alexander
Да, мы пьем смузи и катаемся на гироскутерах
Alexander
:/
Alexander
Александр, вы слишком много времени проводите в fprog_spb похоже
Ю ли я? 🤔
Настоящие хаскелисты пьют борщ и катаются на штангах?
Ю ли я? 🤔
На санках, во.
Alexander
на санках это старкрафт какой-то
Alexander
вот хочешь про haskell поговорить и обсудить чужие взгляды, а там все в штыки воспринимают и про смузи говорят
кана
все дело в токсичности
Alexander
я токсично спрашивал?
Alexander
тут проблема в самом интерпретаторе, у нас на каждый чих аллоцированы данные которые мы матчим
Alexander
если я верно понимаю
A64m
тут дело не в аллокациях, а в сравнении матчинга в рантайме и отсуствия матчинга
Alexander
в отличии от таглес где этого нету
A64m
но вообще, с джойн-пойнтами "интерпретаторы" лучше должны оптимизироваться, особенно стримы всякие где "интерпретируемый" алгдт не рекурсивный, но все равно, проверка в рантайме есть проверка в рантайме
Oleg
Опять же, крайне не уверен в своих словах, но разве джойн-пойнты не смогут превратить паттерн-матчи в почти что джампы в интерпретаторе, ну т.е. почти то же самое, как если бы вы дикт с методами передавали?
Oleg
A64m
так в ТФ словари остаются в худшем случае, в нормальном там вообще инлайнится все и специализируется, ничего не остается
A64m
а ТФ на модулях в любом случае ничего не остается
A64m
Alexander
@graninas кстати у вас free или freer?
A64m
но "лучше" не в смысле что они раньше так не оптимизировались,
джойн-пойнты (пока) ничего нового не дают в этом смысле, они просто не дают испортить одни оптимизации другими, что раньше случалось
Alexander
@A64m_qb0 а у foldFree mmorph интересно есть ли шанс заинлайниться и убрать прыжки по тегам, если все развернуть
A64m
Oleg
Oleg
или в 7.8
A64m
Alexander
а такт форкнуло и ещё 30 коммитов добавили
Alexander
Alexander
норм ребята
Alexander
5 месяцев ещё код подабавляли
Alexander
https://github.com/TaktInc/freer
Alexander
спасибо.
Alexander
если что я уже третью минуту смотрю диф того что у них и того что на hackage
Alexander
/me слоупок, ничего не поделать
Alexander
регионы запилили, молодцы
Alexander
кстати там расширяемые исключения поддерживаются или все ещё нет?
Alexander
Я не уверен, что значит "расширяемые исключения". Можно бросать и перехватывать свои собственные.
Alexander
https://simonmar.github.io/bib/papers/ext-exceptions.pdf
Alexander
Но там есть заморочки с тем, где и как исключения перехватываются. Если бросить в логике, то дальнейший код уже без шансов выполнить. Перехват теперь возможен только в интерпретаторе.